понедельник, 30 марта 2009 г.

Xorg и hal (снова про руссификацию)

Затеялся я обновить драйвер intel для видео на ноутбуке. Меня донимали некоторые артефакты при отрисовке. Последние драйверы, доступные для установки в Gentoo, запросили обновление xorg-server до версии от 1.5 и выше.

Всё как обычно, поставил, перезагрузил и опаньки =). Нет ни мыши ни клавиатуры. Заход по ssh и чтение Xorg.0.log ни чего не дали, за исключением того, что xorg больше не читает настройки про устройства ввода.

Шаманское Gуgленье выдало простой до безобразия ответ. В новой версии xorg для работы с устройствами ввода использует hal и в следствии этого, по умолчанию, игнорирует настройки в xorg.conf касающиеся устройст ввода.

В результате имею свой личнфй ХовТу (howto =) ):
1. В make.conf установлен USE=hal
2. В make.conf установлен INPUT_DEVICES="evdev"
3. Xorg-server и xf86-input-evdev собран с поддержкой hal
4. Установлена политика в хал, которая настраивает действие xkb. Далее, для примера, мой файл политики, сделанный на основе примера из /usr/share/hal (правки отмеченны красным):

# /etc/hal/fdi/policy/10-russian-keymap.fdi
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<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.keys">
<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(winkeys)</merge>
<merge key="input.xkb.options" type="string">grp:rctrl_toggle</merge>
<merge key="input.xkb.variant" type="string" />
</match>
</device>
</deviceinfo>

5. Для touchpad раньше я не ставил ни каких драйверов, но с hal драйвер evdev вел себя не не предсказуемо, по этому потребовалось установить xf86-input-synaptics и в скопировать соответствующую политику в /etc/hal/fdi/policy/11-x11-synaptics.fdi из примеров /usr/share/hal/fdi.

Не совсем мне ясен глубинный смысл необходимости работы с hal, точнее вынос настроек из xorg.conf во внешний файл. Меня обычно радовал linux простотой конфигурации, но в последнее время все чаще случаются приступы шизофрении у разработчиков (или у меня).

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