Emacs: раскладка на meta-space
Извечная проблема пользователей емакса (и вима) с переключением раскладки и мне изрядно попортила жизнь. Долгое время выходом из положения, если это так можно назвать, для меня было банальное переключение системной раскладки для ввода небольшого количества русского текста и последующее переключение раскладки обратно. А для случаев когда нужно вводить много кириллических символов вполне подходит встроенный в емакс механизм input-method
. Но иметь одну комбинацию для переключения системной раскладки, а другую для переключения раскладки в редакторе (ctrl-\
) ну ни как не способсвует психическому спокойствию. Перепробывав миллион методов, я пришел к следующему решению. Для начала, чтобы кисти рук не выгибались я перенес ctrl
на место caps'a
. С переключением раскладки все интересней. На данный момент все устроено так: переключение на правом alt'e
и на meta-space
. Плюс за неимением лучших вариантов и для того чтобы не было соблазна пользоваться старыми хоткеями, левый ctrl
включает латинскую раскладку, а правый кириллическую. (для ubuntu: правим файлик /etc/default/keyboad
XKBOPTIONS="grp_led:scroll,compose:rwin,grp:toggle,grp:alt_space_toggle,grp:lctrl_rctrl_switch,caps:none,ctrl:nocaps"
Основной хоткей для переключения раскладки — meta-space
. Теперь для того чтобы пользоваться им же в емаксе добавляем в ~/.emacs
следующий код:
;; for this to work kbdd must be installed
(global-set-key (kbd "M-SPC")
(lambda ()
"Toggle input method"
(interactive)
(toggle-input-method)
(start-process "dbus-send"
nil
"dbus-send"
"--dest=ru.gentoo.KbddService"
"/ru/gentoo/KbddService"
"ru.gentoo.kbdd.set_layout"
"uint32:1")))
Решение требует того, чтобы был услановлен kbdd
.
sudo aptitude install kbdd
Который кстати умеет сохранять раскладку для каждого приложения, что тоже весьма удобно, особенно для легких окружений типа Awesome
. В результате: системная раскладка переключается по meta-space
, зажигая при этом лампочку scroll lock'a
при включении кириллической раскладки.
В емаксе input-method
включается точно так же. При этом, правда, системная раскладка остается английской, и поэтому scroll lock
не загорается. Что вполне приемлемо на фоне остальных решений этого вопроса.