Tips & tricks Единообразное переключение раскладки в emacs и xorg

В этой заметке я опишу небольшой костыль, который я сделал, что-бы переключение языка ввода в emacs и xorg происходило по одной и той-же комбинации клавиш.
Собственно я хотел, что-бы в иксах переключение языка происходило по C-\ а в окне емакса язык не переключался, а C-\ передавлся самому емаксу.
Для этого была установлена xxkb (http://pascal.tsu.ru/other/xxkb/)
со следующим конфигом (~/.xxkbrc):

XXkb.mainwindow.enable:No
XXkb.controls.add_when_change:Yes
XXkb.controls.focusout:Yes
XXkb.app_list.wmlass_class.ignore:∗emacs∗∗Emacs∗
XXkb.app_list.wmlass_class.alt_group1:∗emacs∗∗Emacs∗
XXkb.button.enable:Yes
XXkb.button.geometry:15x15−60+10

Основное, что задано в этом файле — не переключать язык в окне емакса.
Теперь настроим переключение в иксах. Сдесь всё несколько сложнее. Подробную документацию на русском можно найти на pascal.tsu.ru/other/xkb/
Я не пытался зделать всё прямо и красиво, главное что-бы работало.
в rules/base добавил

  grp:lctrl_backslash_toggle  =  +group(lctrl_backslash_toggle)

а в symbols/group

partial modifier_keys 
xkb_symbols "lctrl_backslash_toggle" {
    key <BKSL> {
   type[Group1]="LOCAL_EIGHT_LEVEL",
   symbols[Group1]= [ backslash, Semicolon, NoSymbol, NoSymbol, ISO_Next_Group, NoSymbol, NoSymbol, NoSymbol ]
    };
};

а также удалил все упоминания о BKSL из symbols/ru, тк они перекрывали моё правило и недавали переключаться с руского языка.
Теперь добавим в опции xkb lctrl_backslash_toggle, то мы получим желаемый эффект. По C-\ переключается язык ввода и в иксах и в emacs.
  • +1
  • 9 февраля 2010, 18:35
  • lexa_

Комментарии (1)

RSS свернуть / развернуть
+
0
Любые коменты как добиться того-же эфекта более правильном путём приветвуются.
avatar

lexa_

  • 9 февраля 2010, 18:59

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.