xkb
Материал из Xgu.ru
xkb — расширение X Window System, отвечающее за клавиатуру.
Основные возможности xkb:
- расширенная поддержка модификаторов клавиш (ctrl, shift и т.д.);
- улучшенная работа с группами клавиш;
- обработка индикаторов клавиатуры (caps, scroll, num) и звукового сигнала;
- привязка определённых действий к клавишам.
Чаще всего пользователь X Window System встречается с настройкой xkb при настройке поддержки русского ввода.
Содержание |
[править] Быстрый старт
Добавить русский язык с переключением по caps lock, индикацией scroll lock и compose-режимом по alt:
setxkbmap -layout "us,ru" setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"
или
wget -qO- xgu.ru/xkb | sh
[править] Примеры
Раскладки.
Переключаться между двумя раскладками: американской (us) и русской (ru).
%$ setxkbmap -layout "us,ru"
Опции.
Переключение между двумя раскладками выполнять с помощью комбинации клавиш Ctrl-Shift; использовать лампочку Scroll Lock в качестве индикатора раскладки:
%# setxkbmap -option "grp:ctrl_shift_toggle,grp_led:scroll"
Или, для использования Caps Lock:
%# setxkbmap -option "grp:caps_toggle,grp_led:scroll"
Использовать в качестве клавиши Compose правый alt:
%# setxkbmap -option "compose:ralt"
Или вместе:
%# setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"
Поменять местами ctrl и caps (что особенно интересно пользователям Emacs) можно следующим образом:
setxkbmap -option grp:swapcaps
Другие аналогичные комбинации клавиш можно посмотреть здесь:
grep -E "(ctrl|caps):" /usr/share/X11/xkb/rules/base.lst
Если для переключения языка используется caps и хочется в то же время поменять местами ctrl и caps, то можно перенести переключение языка на какую-то другую комбинацию клавиш, например, на alt-caps:
setxkbmap -option grp:alt_caps_toggle
Или правый ctrl:
setxkbmap -option grp:rctrl_toggle
Итого полная комбинация опций будет выглядеть следующим образом:
setxkbmap -option "grp:rctrl_toggle,grp_led:scroll,compose:ralt,grp:swapcaps"
[править] Compose
Клавиша compose используется тогда, когда вам нужно набрать относительно редко использующийся символ, которого нет ни в основной, ни в дополнительной раскладках, но которому в соответствие поставлено определённая последовательность символов.
Наиболее часто это используется, если вам периодически требуется вставлять в текст символы, отсутствующие в английском алфавите (и, соответственно, в английской раскладке), но не настолько часто, чтобы переходить на другую раскладку.
Как минимум, compose может потребоваться, если вы хотите ставить настоящее тире — красивое, или типографские «кавычки-ёлочки».
Набираются compose-последовательности так:
- нужно нажать compose-клавишу и отпустить её. После этого начать набирать последовательность. Символы на экране появляться не будут, результат появится только тогда, когда последовательность будет набрана полностью.
Примеры последовательностей:
- « <<
- » >>
- € e=
- — --
- ß ss
- ° ^0
- ² ^2
- è `e
- ü "u
Другие последовательности: [1]
[править] Использование shift третьего уровня
Для примера выполним совмещение русской, дореволюционной русской и украинской раскладок в одной русской раскладке. Будем использовать shift уровня 3. В качестве такой клавиши будем использовать, например, клавишу MENU.
При нажатии этой клавиши и какой-то русской клавиши из перечисленных ниже, будет вводиться соответствующий символ:
- Ъъ — Її
- Ыы — Іі
- Ээ — Єє
- Ьь — Ѣѣ
- Фф — Ѳѳ
Для включения shift уровня 3 нужно в файле /etc/X11/xorg.conf указать опцию lv3:
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll,compose:ralt,lv3:menu_switch"
Изменения, которые сделаны в файле symbols/ru:
--- /usr/share/X11/xkb/symbols/ru 2008-07-04 14:56:33.000000000 +0300 +++ /usr/share/X11/xkb/symbols/ru.ORIG 2008-07-04 13:33:13.000000000 +0300 @@ -52,26 +52,14 @@ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; - key <AD07> { [ - Cyrillic_ghe, Cyrillic_GHE, - Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN - ] }; + key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <AD12> { [ - Cyrillic_hardsign,Cyrillic_HARDSIGN, - Ukrainian_yi, Ukrainian_YI - ] }; - key <AC01> { [ - Cyrillic_ef, Cyrillic_EF, - U0473, U0472 - ] }; - key <AC02> { [ - Cyrillic_yeru, Cyrillic_YERU, - Ukrainian_i, Ukrainian_I - ] }; + key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] }; + key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; @@ -80,20 +68,14 @@ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; - key <AC11> { [ - Cyrillic_e, Cyrillic_E, - Ukrainian_ie, Ukrainian_IE - ] }; + key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; - key <AB07> { [ - Cyrillic_softsign,Cyrillic_SOFTSIGN, - U0463, U0462 - ] }; + key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
[править] См. также
[править] Дополнительная информация
- http://www.linux.org.ru/profile/devigor/view-message.jsp?msgid=1752670&page=3
- http://hektor.umcs.lublin.pl/~mikosmul/computing/articles/custom-keyboard-layouts-xkb.html
- http://process-of-elimination.net/wiki/Means_of_Composing_Accented_Characters_in_X_Window_System
- http://webcvs.freedesktop.org/xorg/xc/nls/Compose/en_US.UTF-8?view=co
- http://en.wikipedia.org/wiki/Compose_key
- http://pascal.tsu.ru/other/xkb/
- Заметки на полях клавиатуры (рус.) — очень интересная статья, посвящённая продвинутым настройкам xkb (обсуждение)
- Как задавать произвольные Compose-последовательности (рус.) — заметка, повествующая о том, как создавать свои собственные compose-последовательности для столь необходимых символов как ї, ѳ, ѣ и прочих ∀ε>0 ∃δ>0 ∀x,|x-x₀|<δ : …