Заставьте Emacs игнорировать системную раскладку клавиатуры - PullRequest
10 голосов
/ 28 февраля 2012

При наборе текста в Emacs я использую его внутренний переключатель раскладки клавиатуры.

Иногда я переключаю раскладку системной клавиатуры при работе с другими приложениями.

Если внутренняя и системная компоновка Emacs не на английском языке, они мешают работе и работать невозможно. Например, у меня есть два способа набрать какую-нибудь букву, но нет способа набрать запятую.

Я хочу, чтобы Emacs игнорировал раскладку системной клавиатуры. Возможно ли это?

EDIT:
Моя ОС - Linux Mint 10 (64-битная)
Я использую Emacs 24

1 Ответ

5 голосов
/ 05 июня 2012

Можете ли вы сказать, какие раскладки клавиатуры вы используете в своей ОС и какие методы ввода вы используете в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...