2

Я использую Aquamacs на Mac OS Lion. Режим ввода установлен на родной.

Когда я переключаю язык ввода на русский, все горячие клавиши перестают работать. Поскольку все ключи интерпретируются как русские ключи. Есть ли простой способ заставить ^ C работать независимо от того, какой у меня язык ввода?

Переключение в режим ввода emacs и изменение языка ввода emacs на русский решает проблему, но тогда я не могу использовать переключение родного языка ОС. А с тремя системными языками это большая проблема для меня.

1 ответ1

0

Я использую следующую функцию, адаптированную из публикации ru_emacs:

(defun reverse-input-method (input-method)
  "Build the reverse mapping of single letters from INPUT-METHOD."
  (interactive
   (list (read-input-method-name "Use input method (default current): ")))
  (if (and input-method (symbolp input-method))
      (setq input-method (symbol-name input-method)))
  (let ((current current-input-method)
        (modifiers '(nil (control) (meta) (control meta))))
    (when input-method
      (activate-input-method input-method))
    (when (and current-input-method quail-keyboard-layout)
      (setq normal-local-function-key-map (copy-keymap local-function-key-map))
      (dolist (map (cdr (quail-map)))
        (let* ((to (car map))
               (from (quail-get-translation
                      (cadr map) (char-to-string to) 1)))
          (when (and (characterp from) (characterp to))
            (dolist (mod modifiers)
              (define-key local-function-key-map
                (vector (append mod (list from)))
                (vector (append mod (list to)))))))))
    (when input-method
      (activate-input-method current))))

(defadvice* ignore-reverse-input-method around (read-passwd quoted-insert)
  (let ((local-function-key-map normal-local-function-key-map))
    ad-do-it))

(reverse-input-method 'russian-computer)

Предостережение: некоторые ранее несвязанные комбинации в английской раскладке также будут переназначены таким образом, например, от M-" до M-@ . Поскольку это не распространяется на какие-либо уже связанные комбинации, это не большая проблема IMO.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .