Aquamacs, MacOS e teclas de atalho específicas de idioma

2

Estou executando o Aquamacs no Mac OS Lion. O modo de entrada está definido como nativo.

Quando eu alterno o idioma de entrada para o russo, todas as teclas de atalho param de funcionar. Como todas as chaves são interpretadas como chaves russas. Existe uma maneira simples de fazer o ^ C funcionar, não importa qual idioma de entrada eu tenha?

Mudar para o modo de entrada do emacs e alterar o idioma de entrada do emacs para o russo resolve o problema, mas não consigo usar a troca de idioma nativo do sistema operacional. E com três linguagens de sistema, é um grande problema para mim.

    
por Slava Nadvorny 09.07.2012 / 15:00

1 resposta

0

Estou usando a seguinte função, adaptada de uma postagem do 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)

Ressalva: algumas combinações anteriormente não combinadas no layout em inglês também serão remapeadas dessa maneira, por exemplo. M-" to M-@ . Como ele não se estende a nenhuma combinação já vinculada, não é um problema de IMO.

    
por 07.02.2013 / 19:28