HOWTO hal и устройства ввода

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск


Пожалуйста приведите эту статью в соответствиe с wiki разметкой, и затем удалите {{Wikify}} из текста статьи


Содержание

[править] hal-0.5.10

В связи с выходом hal-0.5.10 и включении поддержки hal в xorg возникло много вопросов: где раскладки, где мышка, где тачпад, и прочее.

Сейчас xorg использует hal для устройств ввода и xorg.conf игнорирует Данное руководство предназначенно для безболезненного перехода на новую систему

В данном руководстве используются пакеты из ~x86(~amd64) ветки. Посему заботу о keywords оставляю на вашей совести.

[править] Обновляем portage

# emerge --sync

(# eix-sync -v)

[править] Обновляем установку xorg

#emerge -avDNt  xorg-x11

убеждаемся в наличии флага hal. При отсутствии — включаем. / В окончании сборки пакета xorg-server выведется список пакетов для пересборки, их надо пересобрать. Если не заметили или пропустили его, вот комманда для получения списка пакетов:

emerge portage-utils; qlist -I -C x11-drivers/

[править] Клавиатура

Правила(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

со следующим содержимым:

Файл: /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="strlist">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.

ВАЖНО: Если у вас остались проблемы с расположением клавиш, то возможно так и следует сделать?

ВАЖНО: Ещё можно перейти по ссылке внизу страницы и почитать про переопределение keymap, но это материал для отдельной страницы.


например:

Option "XkbRules" "xorg"

тоже самое что:

       <merge key="input.xkb.rules" type="string">xorg</merge>
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)
...

Если так и есть, то дело сделано. Если нет--внимательно перечитываем до просветления.

[править] Перезапускаем X-ы

После чего можно перезапустить X-ы(перезагрузить компьтер, перезапустить xdm). Проверяем. Радуемся. Если не получаеться, то внимательно читаем лог Xorg, Скорее всего там можно найти ответ.

[править] Мышка

Пока проблема одна. Hal по умолчанию использует драйвер evdev,которые не всегда корректно работает в полноэкранных приложениях(игры)

#echo "SDL_VIDEO_X11_DGAMOUSE=0" >>/etc/env.d/02locale
#env-update
#source /etc/profile

Должно решить эту проблему.

[править] Узнать подробности можно тут

Основные спецификации,но про xkb там почемуто ничего нет.

Лучше собрать hal c USE=doc, все подробности тут:

file:///usr/share/doc/hal-0.5.10/spec/hal-spec.html#device-properties-input-xkb

Если вам надо keymap поправить

Личные инструменты