Можете ли вы сказать, какие раскладки клавиатуры вы используете в своей ОС и какие методы ввода вы используете в Emacs? На данный момент в вашем посте недостаточно информации. Моя проблема была, например, в том, что я использовал Colemak и русскую пишущую машинку в качестве макетов ОС и русскую пишущую машинку в качестве вторичного метода ввода Emacs. Комбинация Colemak (OS) -Russian (Emacs) испортила мой ввод, потому что метод ввода Emacs - это отображение английского символа, полученного из OS, в некоторый русский символ, а все методы ввода в Emacs основаны на отображении из QWERTY. Например, то, что должно было быть «йцукен», было напечатано как «йцазпо». Я решил это, запустив следующий код:
(require 'quail)
(quail-define-package
"colemak-russian" "Russian" "ru" nil
"Russian-typewriter keyboard layout assuming that your default
keyboard layout is Colemak"
nil t t t t nil nil nil nil nil t)
(quail-define-rules
("1" ?№) ("2" ?-) ("3" ?/) ("4" ?\") ("5" ?:) ("6" ?,) ("7" ?.) ("8" ?_) ("9" ??)
("0" ?%) ("-" ?!) ("=" ?\;) ("q" ?й) ("w" ?ц) ("f" ?у) ("p" ?к) ("g" ?е) ("j" ?н)("l" ?г)
("u" ?ш) ("y" ?щ) (";" ?з) ("[" ?х) ("]" ?ъ) ("\\" ?\)) ("a" ?ф) ("r" ?ы) ("s" ?в)
("t" ?а) ("d" ?п) ("h" ?р) ("n" ?о) ("e" ?л) ("i" ?д) ("o" ?ж) ("'" ?э) ("z" ?я) ("x" ?ч)
("c" ?с) ("v" ?м) ("b" ?и) ("k" ?т) ("m" ?ь) ("," ?б) ("." ?ю) ("/" ?ё) ("~" ?+) ("!" ?1)
("@" ?2) ("#" ?3) ("$" ?4) ("%" ?5) ("^" ?6) ("&" ?7) ("*" ?8) ("\(" ?9) ("\)" ?0) ("_" ?=)
("+" ?\\) ("Q" ?Й) ("W" ?Ц) ("F" ?У) ("P" ?К) ("G" ?Е) ("J" ?Н) ("L" ?Г) ("U" ?Ш) ("Y" ?Щ)
(":" ?З) ("{" ?Х) ("}" ?Ъ) ("|"?\() ("A" ?Ф) ("R" ?Ы) ("S" ?В) ("T" ?А) ("D" ?П) ("H" ?Р)
("N" ?О) ("E" ?Л) ("I" ?Д) ("O" ?Ж) ("\"" ?Э) ("Z" ?Я) ("V" ?Ч) ("X" ?С) ("C" ?М) ("B" ?И)
("K" ?Т) ("M"?Ь) ("<" ?Б) (">" ?Ю) ("?" ?Ё))
и затем использовал colemak-russian
вместо russian-typewriter
. Вы можете изменить связанные пары с соответствующими вашим макетам.
РЕДАКТИРОВАТЬ: Конечно, это не самое правильное решение. Как заметил Максим , символы, общие для обоих языков, переводятся даже тогда, когда это не нужно. Например, я установил системную компоновку на Colemak, а метод ввода Emacs на «colemak-russian» - тогда я не могу использовать запятые, которые становятся «б».
Чтобы Emacs игнорировал структуру системы, вы можете интегрировать ее со сторонним программным обеспечением, таким как xxkb , SCIM или IBus . Когда вы говорите по-русски, вы можете попробовать этот учебник .
Лично я использую хакерский обходной путь , чтобы переводить русские символы внутри сочетаний клавиш и вообще игнорировать методы ввода Emacs.