Раскладка клавиатуры в hal или «Не так страшен чёрт...»

Всё-таки решил перевести управления раскладкой клавиатурой на hal. Как оказалось, всё не так страшно как казалось раньше. Собственно всё почти так же как и раньше, только в другом файле (/etc/hal/fdi/policy/10-keymap.fdi, а xorg.conf теперь для графики), а так как я не пользую гномокеды, то пришлось всё настраивать ручками.

Для начала удаляем из xorg.conf строки отвечающие за то что бы настройки раскладок брались из иксового конфига
   Section "ServerFlags"
     Option "AutoAddDevices" "False"
   EndSection

Естественно, если такие строки были. Потом в файле 10-keymap.fdi пишем примерно следующее
<?xml version="1.0" encoding="UTF-8"?"?> <!-- -*- XML -*- -->
<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</merg>
<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:caps_toggle</merge>

Что равносильно строкам из xorg.conf в секции InputDevice с идентификатором клавиатуры.
Option      "XkbLayout" "us,ru(winkeys)"
Option      "XkbOptions" "grp:caps_toggle"

Для переключиения по альт+шифт grp:alt_shift_toggle
Ну и закрываем все xml теги.
</match>
</device>
</deviceinfo>

Как видно всё не так уж и страшно, почти не отличается от настройки раскладки в иксах. В общем как решил настроить переключение раскладки с помощью hal и узнал как это сделать, так сразу изменил своё отношение к выносу некоторой функциональной части иксов на hal. Хотя по поводу xml в конфигах моё мнение не изменилось.
kolebas 09-03-2009
а насчет <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --> вы уверены? раньше было <?xml version="1.0" encoding="UTF-8"?>
muhas 09-03-2009
Вообще-то практической разницы нет, ибо и так и так работает :)
Просто когда выдирал откуда-то файлик 10-keymap.fdi то он был в ISO-8859-1, так я туда iso и написал. но перепишу в посте, на всякий пожарный
Dworak 09-03-2009
проще драйвер заменить с kbd на evdev. при этом Option "AutoAddDevices" "False" можно спокойно удалить
Dworak 09-03-2009
Section "InputDevice"
Identifier "Keyboard0"
Driver "evdev"
Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:rwin_switch,grp:ctrl_shift_toggle,grp_led:scroll"
EndSection
muhas 09-03-2009
Dworak, ну если Option "AutoAddDevices" "False" выставлять, то хотплаг устройств не работает. я делал сие только потому что меняю клавы мышки в последнее время относительно часто
Dvorak 09-04-2009
ВНИМАТЕЛЬНО ПОВТОРЮ

при этом Option "AutoAddDevices" "False" можно спокойно удалить
Гость 09-04-2009
Настройки эти пробовал как только обновились x-ы, там была одна проблема - досбокс нехотел понимать половину клавиатуры, включая стрелки. Пришлось установить AutoAddDevices False. Интересно с тех пор что-нибудь пофиксили?
anonimec 09-10-2009
а у меня этот файл не подхватывается..
по крайней мере hal-device | grep winkeys (напрмер) ни чего не показывает...
muhas 09-10-2009
Вот не знаю что у тебя с халом и с файликом.
Дабы не мучится сделай по старинке
setxkbmap -layout us,ru -variant ,winkeys -option grp:caps_toggle,grp_led:scroll
anonimec 09-10-2009
Хорошо, а как сделать, чтобы для каждого приложения была своя раскладка?
muhas 09-10-2009
@anonimec xxkb вестимо, вроде по слухом гном умеет запоминать раскладки конкретных приложений.
manager 09-11-2009
muhas, спасибо, дико вам благодарен.
dfs 10-01-2010
У меня не получилось ни средствами xorg.conf ни через вышеупомянутый 10-keymap.fdi.
Временно решил проблему установкой gxneur и добавлением в автозагрузку..
hexkey 10-11-2010
Плюсую! :) Как раз только изучаю арч, столкнулся с подобной проблемой... :) Спасибо за setxkbmap.