20 мая 2011 г.

Переключение раскладки клавиатуры в Linux под X window

На своем HTPC возникла проблема с переключением раскладки клавиатуры после того как был отключен оконный менеджер(LXDE) и происходил запуск непосредственно XBMC. Решением дааной проблеммы стала правка файла /etc/X11/xorg.conf и добавлением в секцию Section "InputDevice"(в которой описывается клавиатура) следующих строк:
  Option "XkbRules" "xorg"  
  Option "XkbLayout" "us,ru"  #необходимые языки
  Option "XkbVariant" ",winkeys"  #необходимая вариация раскладки для каждого языка(для us - стандартная, для ru - winkeys
  Option "XkbOptions" "grp:ctrl_shift_toggle" # переключение раскладки при помощи нажатия ctrl+shift

После рестарта X-ов раскладка все равно не переключалась а лог фал показал следующее:
.........
[ 141.694] (==) Using config file: "/etc/X11/xorg.conf"
[ 141.694] (==) Using config directory: "/etc/X11/xorg.conf.d"
..........
[ 141.697] (WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
...........
[ 150.835] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event2)
[ 150.835] (**) AT Translated Set 2 keyboard: Applying InputClass "evdev keyboard catchall"
[ 150.835] (**) AT Translated Set 2 keyboard: Applying InputClass "LocalKeyboard"
[ 150.835] (**) AT Translated Set 2 keyboard: always reports core events
[ 150.835] (**) AT Translated Set 2 keyboard: Device: "/dev/input/event2"
[ 150.853] (II) AT Translated Set 2 keyboard: Found keys
[ 150.853] (II) AT Translated Set 2 keyboard: Configuring as keyboard
[ 150.853] (II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
[ 150.853] (**) Option "xkb_rules" "evdev"
[ 150.854] (**) Option "xkb_model" "evdev"
[ 150.854] (**) Option "xkb_layout" "us"
[ 151.018] (II) XKB: reuse xkmfile /tmp/server-A9ACCDF38EB1446AC7992CE0B930842F0AD908B1.xkm
.............
Данный лог навел на мыслль, что правила для клавиатуры не загружаются из xorg.conf, а беруться из других конфигурационных файлов в папке /etc/X11/xorg.conf.d . Просмотрев  данную папку был найден файл 90-keytable.conf , куда и были продублированы необходимые настройки клавиатуры из xorg.conf, в результате чего он обрел следующий вид:
Section "InputClass"
Identifier "LocalKeyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSection

Всевозможные варианты layout, variant, option для клавиатуры можно посмотреть в файле /usr/share/X11/xkb/rules/base.lst

Комментариев нет: