12/29/2008

brainfuck: X.org и HAL

После обновления X.org сервера до версии 1.5.3, и его перезапуска обнаружилось, что клавиатура и мышка напрочь отказываются работать. Причем зависания были такими, что систему привести в чувства можно было лишь при помощи Magic Sysrq клавиш.

Все оказалось очень просто, разработчики X.org'a решили отдать всю работу с устройствами ввода, на откуп подсистеме hal (Hardware Abstraction Layer).

Теперь для того, чтобы заработали иксы, нужно демону hal сказать, как управляться с устройствами. Для этого нужно создать файл /etc/hal/fdi/policy/10-x11-input.fdi
с вот таким вот содержанием:

<?;xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.mouse">
<merge key="input.x11_driver" type="string">evdev</merge>
</match>

<match key="info.capabilities" contains="input.keyboard">
<!--merge key="input.x11_driver" type="string">evdev</merge> -->
<merge key="input.xkb.model" type="string">evdev</merge>
<merge key="input.xkb.rules" type="string">xorg</merge>
<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="strlist">grp:toggle,grp_led:scroll</merge>
</match>
</device>
</deviceinfo>



Все эелементы этого XML файда соттветствуют секциям InputDevice для мышки и клавиатуры из конфигурационного файла X.org. Следовательно, эти секции из конфиг файла иксов можно удалить.

По умолчанию иксы все равно пытаются получать информацию об устройствах ввода из своего конфиг файла, и тогда начинается просто кошмар. У меня в системе курсор начинает метаться по экрану, и клавиатура перестает работать.Чтобы это вылечить, нужно указать иксам получать устройства от hal. Делается это с помощью добавления в конфиг файл X11 (/etc/X11/xorg.conf) дополнительной секции:

Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection

Однако, у меня так и не получилось заставить иксы переключать раскладку клавиатуры, на русский, хотя правила для этого определены.

Вот костыль, который я применяю, для решения этой проблемы:
после рестарта иксов, установить правило для переключения раскладки через xkb:
setxkbmap -layout "us,ru(winkeys)" -option "grp:switch,grp:toggle,grp_led:scroll"
Ввиду того, что комп я перезагружаю очень и очень редко, то это мне это не очень сильно мешает.

И все таки, проблема так и остается не решенной. Если у кого-то получилось ее решить, отпишите пожалуйста.

P.S. Разработчикам, конечно видней, но вот зачем было переходить с использования удобного и понятного конфигурационного файла, на использования не очень внятного xml, мне совершенно непонятно. Ведь удобство пользователя должно цениться превыше всего,
а мучиться пол дня с этим HAL как то совсем не хочется.

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

  1. в строчке, где описываются xkboptions, следует поменять type="strlist" на string

    ОтветитьУдалить
  2. Переключение раскладки лечится правкой файла /etc/default/console-setup

    Теперь кодировка и раскладка определены для всей системы в одном месте, и не надо по отдельности настраивать консоль и иксы.

    Пишем в файл:
    CHARMAP="UTF-8"
    CODESET="CyrSlav" (это для консоли)
    XKBMODEL="pc105"
    XKBLAYOUT="us,ru"
    XKBVARIANT=",winkeys"
    XKBOPTIONS="grp:toggle,grp_led:scroll"

    Довольно логично, и с XML возиться не надо. А вот то, что в старом Xorg.conf относится непосредственно к устройствам, действительно теперь идет в /etc/hal/fdi/policy/ лучше отдельным .fdi файлом. В моем случае мне нужна была опция SHM для тачпада, сделал файлик отдельный, все ок.

    ОтветитьУдалить
  3. Who knows where to download XRumer 5.0 Palladium?
    Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!

    ОтветитьУдалить