В начало → HOWTO hal и устройства ввода → Клавиатура |
Правила(rules) пользователя можно разместить в каталогах:
/usr/share/hal/fdi/policy/20thirdparty/
или аналогичном /etc/hal/fdi/policy
получить список устройств "узнанных" hal можно командой lshal у меня системе(ноутбук с мультимедийными клавишами) оказалось несколько устройств которые совместимы с понятием "клавиатура", но основная была описана так:
udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input' info.addons.singleton = {'hald-addon-input'} (string list) info.capabilities = {'input', 'input.keyboard', 'input.keypad', 'input.keys', 'button'} (string list) info.category = 'input' (string) info.parent = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string) info.product = 'AT Translated Set 2 keyboard' (string) info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input' (string) input.device = '/dev/input/event2' (string) input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string) input.physical_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string) input.product = 'AT Translated Set 2 keyboard' (string) input.x11_driver = 'evdev' (string) input.xkb.layout = 'us' (string) input.xkb.model = 'evdev' (string) input.xkb.rules = 'base' (string) input.xkb.variant = (string) linux.device_file = '/dev/input/event2' (string) linux.hotplug_type = 2 (0x2) (int) linux.subsystem = 'input' (string) linux.sysfs_path = '/sys/devices/platform/i8042/serio0/input/input2/event2' (string)
Заметно что
input.xkb.layout = 'us' input.xkb.rules = 'base' input.xkb.variant =
нас не устраивает
Создаём новый файл
#
nano /usr/share/hal/fdi/policy/20thirdparty/10russian-layout.fdi
со следующим содержимым:
Листинг 1. Файл: /usr/share/hal/fdi/policy/20thirdparty/10russian-layout.fdi
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --> <match key="input.product" contains="AT Translated Set 2 keyboard"> <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:alt_shift_toggle,grp_led:scroll</merge> </match>
если у вас одно устройство ввода типа "клавиатура",то можно сточку
<match key="input.product" contains="AT Translated Set 2 keyboard">
заменить на
<match key="info.capabilities" contains="input.keyboard">
Так мы получим более универсальное правило. Можно заметить что названия опций перекликается с аналогами xorg.conf. Так и есть, в принципе здесь можно записать все те параметры которые вы использовали в xorg.conf только в приложении к XML.
Если у вас остались проблемы с расположением клавиш, то возможно так и следует сделать?
например:
Option "XkbRules" "xorg"
тоже самое что
<merge key="input.xkb.rules" type="string">xorg</merge>
Если по каким-то причинам драйвер evdev(он используется по умолчанию) вас не устраивает, то его тоже можно изменить:
Driver "kbd"
=
<merge key="input.x11_driver" type="string">kbd</merge>
Сохраняем файл.
#
/etc/init.d/hald restart
Проверяем системный лог и убеждаемся, что правило успешно добавленно.
#
lshal
должно вывести следующие строчки:
... input.x11_driver = 'evdev' (string) input.xkb.layout = 'us,ru' (string) input.xkb.model = 'evdev' (string) input.xkb.options = 'grp:alt_shift_toggle,grp_led:scroll' (string) input.xkb.rules = 'base' (string) input.xkb.variant = ',winkeys' (string) ...
Если так и есть, то дело сделано. Если нет--внимательно перечитываем до просветления.
В начало → HOWTO hal и устройства ввода → Клавиатура |