Mac OS LionでAquamacsを実行しています。入力モードはネイティブに設定されます。
入力言語をロシア語に切り替えると、すべてのホットキーが機能しなくなります。すべてのキーはロシア語のキーとして解釈されるため。どの入力言語を使用していても^ Cを動作させる簡単な方法はありますか?
emacs入力モードに切り替えてemacs入力言語をロシア語に変更すると問題は解決しますが、OSのネイティブ言語の切り替えは使用できません。そして、3つのシステム言語では、私にとって大きな問題です。
Mac OS LionでAquamacsを実行しています。入力モードはネイティブに設定されます。
入力言語をロシア語に切り替えると、すべてのホットキーが機能しなくなります。すべてのキーはロシア語のキーとして解釈されるため。どの入力言語を使用していても^ Cを動作させる簡単な方法はありますか?
emacs入力モードに切り替えてemacs入力言語をロシア語に変更すると問題は解決しますが、OSのネイティブ言語の切り替えは使用できません。そして、3つのシステム言語では、私にとって大きな問題です。
回答:
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の問題はあまりありません。