Как правильно использовать в Emacs горячие клавиши в русской раскладке?

Я пользуюсь GNU Emacs 24 в ubuntu 14.04.
Источники ввода в системе: Английская (США) и Русская (печатная машинка).

Для использования горячих клавиш в 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)
      (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 read-passwd (around my-read-passwd act)
  (let ((local-function-key-map nil))
    ad-do-it))

 (reverse-input-method 'russian-typewriter)


При этом, когда системная раскладка Английская (США), при нажатии горячих клавиш, некоторые буквы оказываются перепутаны. Например, вместо C-, нажимается C-6.

Как это поправить? Или нужно пользоваться другим методом для использования горячих клавиш в русской раскладке?
  • Вопрос задан
  • 4627 просмотров
Пригласить эксперта
Ответы на вопрос 2
@thenno
Проектирую, разрабатываю, преподаю.
На самом деле, правильнее переключать раскладку в самом emacs'е через C-\ и не городить костыли:)
Ответ написан
dunmaksim
@dunmaksim
Технический писатель
(set-language-environment 'Russian)

Подробности здесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы