Для начала удаляем из 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 в конфигах моё мнение не изменилось.