Aquamacs, MacOS und sprachspezifische Tastenkombinationen

388
Slava Nadvorny

Ich verwende Aquamacs unter Mac OS Lion. Der Eingabemodus ist auf nativ eingestellt.

Wenn ich die Eingabesprache auf Russisch umstelle, funktionieren alle Hotkeys nicht mehr. Da alle Schlüssel als russische Schlüssel interpretiert werden. Gibt es eine einfache Möglichkeit, ^ C zu arbeiten, egal welche Eingabesprache ich habe?

Das Umschalten in den Emacs-Eingabemodus und das Ändern der Emacs-Eingabesprache auf Russisch behebt das Problem. Ich kann jedoch keine OS-Sprachumschaltung verwenden. Und mit drei Systemsprachen ist das ein großes Problem für mich.

2

1 Antwort auf die Frage

0
dgutov

Ich verwende die folgende Funktion, die aus einem ru_emacs-Posting angepasst wurde :

(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) 

Caveat: einige zuvor ungebundene Kombinationen in dem englischen Layout wird auch auf diese Weise neu zugeordnet werden, zB M-"an M-@. Da es sich nicht auf bereits gebundene Kombinationen erstreckt, ist das IMO kein großes Problem.