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">
заменить на:
<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
