2009-05-20

Клавиатура определяется HAL

Решил-таки перейти на определение раскладки клавиатуры HAL'ом. Задолбался каждый раз заново настраивать xorg.conf при новой установке. Да и вообще запарило возиться с xorg'гом, ведь прогресс не стоит на месте.
Почитав у настроивших до меня, извлек для себя некоторую весьма полезную информацию.
В /usr/share/hal/fdi/policy/10osvendor находятся шаблоны XML-конфигов для HAL, нам нужен 10-keymap.fdi. В файле /usr/share/X11/xkb/rules/base.lst находятся опции настройки раскладки клавиатуры.
Собственно, начнем с xorg.conf. Удаляем в секции:

Section "ServerLayout"
Identifier "Xorg Configured"
Screen 0 "aticonfig-Screen[0]-0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "USB Mouse" "CorePointer"
EndSection


упоминание об устройстве ввода Keyboard0. Удаляем, соответственно, саму секцию:

Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru"
Option "XkbVariant" "winkeys"
Option "XkbOptions" "grp:toggle,grp_led:scroll"
EndSection

выписав, естественно, свои настройки :) Разрешаем автодобавление новых устройств:

Section "ServerFlags"
Option "AutoAddDevices" "true"
EndSection

Или можно вообще удалить эту секцию, так как она была создана именно для блокирования HAL. Далее копируем указанный выше 10-keymap.fdi в каталог /etc/hal/fdi/policy/. Приводим этот файл к виду:


<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keymap">
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
</match>

<match key="info.capabilities" contains="input.keyboard">

<merge key="input.xkb.rules" type="string">base</merge>

<!-- If we're using Linux, we use evdev by default (falling back to keyboard otherwise). -->
<merge key="input.xkb.model" type="string">keyboard</merge>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">

<merge key="input.xkb.model" type="string">evdev</merge>
</match>

<merge key="input.xkb.layout" type="string">us,ru</merge>
<merge key="input.xkb.variant" type="string">,winkeys</merge>
<merge key="input.xkb.options" type="string">grp:toggle,grp_led:scroll,caps:internal</merge>

</match>
</device>
</deviceinfo>


Чтобы настройки вступили в силу, надо перезапустить HAL и рестартануть X-сервер. После такой настройки мы хотя бы немного разгрузим xorg.conf от "лишней" информации. Огорчает только, что до сих пор не пофиксена "фича" с отсутствием реакции на двойной клик тачпада...

2 комментария:

stanislav комментирует...

xorg.conf можно и от мышиных настроек избавить, в 10-x11-input.fdi прописав настройки как для неё, так и для клавиатуры.

mao(tm) комментирует...

Обязательно попробую :)