После обновления 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 как то совсем не хочется.
в строчке, где описываются xkboptions, следует поменять type="strlist" на string
ОтветитьУдалитьСпасибо за наводку ;-)
ОтветитьУдалитьПереключение раскладки лечится правкой файла /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 для тачпада, сделал файлик отдельный, все ок.