Xorg устройства ввода через hal
Материал из Gentoo Linux Wiki
Содержание |
[править] Введение
В новых версиях Xorg появилась возможность отказаться от традиционного описания устройств ввода в xorg.conf, как в данной статье Xorg. Переключение_раскладок и возложить обнаружение устройств на ядро (читай udev), а конфигурирование на hal. Внятного пошагового рецепта я нигде не нашёл (плохо искал?), поэтому работал методом проб и ошибок (несколько раз получал иксы не желающие со мной общаться). В итоге родился следующий рецепт.
[править] Модуль evdev
Начать стоит с проверки наличия модуля evdev. В случае его отсутствия поправить в ядре
| Конфигурация ядра Linux: Input Device Support |
-> Device Drivers
-> Input device support
-> Generic input layer (needed for keyboard, mouse, ...)
<*> Event interface
|
и пересобрать ядро.
[править] Правим конфигурационный файл
В /etc/make.conf секцию устройств ввода нужно привести к следующему виду: INPUT_DEVICES="evdev" (без mouse и keyboard); а также убедиться в наличии флага hal в секции USE
[править] Пересобираем все пакеты с новым флагом
После этого запустить[править] Поправляем конфиг xorg
В xorg.conf удалить (или закомментировать) секции касающиеся устройств ввода, а также добавить (исправить) указанные строки:
#Section "InputDevice"
# Identifier "Keyboard0"
# Driver "kbd"
# Option "AutoRepeat" "500 30"
# Option "XkbVariant" "base"
# Option "XkbRules" "xorg"
# Option "XkbModel" "pc105"
# Option "XkbLayout" "us,ru(winkeys)"
# Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
#EndSection
#Section "InputDevice"
# Identifier "Mouse0"
# Driver "mouse"
# Option "Protocol" "Auto"
# Option "Device" "/dev/input/mice"
# Option "ZAxisMapping" "4 5 6 7"
## Option "Protocol" "Xqueue"
## Option "Resolution" "256"
## Option "BaudRate" "9600"
## Option "SampleRate" "150"
## Option "Emulate3Buttons"
## Option "Emulate3Timeout" "50"
## Option "ChordMiddle"
#EndSection
Section "ServerLayout"
Identifier "Simple Layout"
Screen "Screen0"
# InputDevice "Mouse0" "CorePointer"
# InputDevice "Keyboard0" "CoreKeyboard"
Option "AIGLX" "true"
EndSection
Section "ServerFlags"
Option "AllowEmptyInput" "on"
Option "AutoAddDevices" "on"
Option "AutoEnableDevices" "on"
EndSection
[править] Настройка hal
На самом деле hal можно не настраивать, и KDE и Gnome прекрасно умеют переключать раскладки клавиатуры своими силами (а настройка сводится именно к этому), но если всё же решили настраивать через hal:
Создать файл с примерно таким содержанием
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<!-- Mouse configuration -->
<match key="info.capabilities" contains="input.mouse">
<merge key="input.x11_driver" type="string">evdev</merge>
</match>
<!-- Keyboard configuration
Section "InputDevice"
Driver "evdev"
Option "XkbLayout" "en_US,ru(winkeys)"
Option "XkbVariant" ",winkeys"
Option "XkbRules" "xorg"
Option "XkbModel" "pc104"
Option "XkbOptions" "grp:shift_toggle,grp_led:scrool"
EndSection
-->
<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">xorg</merge>
<merge key="input.x11_driver" type="string">evdev</merge>
<merge key="input.xkb.layout" type="string">en_US,ru</merge>
<merge key="input.xkb.model" type="string">pc104</merge>
<merge key="input.xkb.variant" type="string">,winkeys</merge>
<merge key="input.xkb.options" type="string">grp:shift_toggle,grp_led:scroll</merge>
</match>
</device>
</deviceinfo>Настройка input.xkb.rules нужна для поддержки расширений клавиатуры, вроде регулятора громкости и т.п.
А input.xkb.variant по умолчанию теперь уже содержит winkeys, так что его можно убрать вообще.
конфиг выше не работает cо старым hal, у меня заработал этот:
<?xml version="1.0" encoding="utf-8"?><!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_driver" type="string">evdev</merge>
<merge key="input.x11_options.XkbModel" type="string">pc105</merge>
<!--merge key="input.x11_options.XkbModel" type="string">evdev</merge-->
<merge key="input.x11_options.XkbLayout" type="string">us,ru(winkeys)</merge>
<merge key="input.x11_options.XkbVariant" type="string">winkeys</merge>
<merge key="input.x11_options.XkbOptions" type="strlist">grp:alt_shift_toggle</merge>
<append key="input.x11_options.XkbOptions" type="strlist">grp:switch</append>
<append key="input.x11_options.XkbOptions" type="strlist">grp_led:scroll</append>
<append key="input.x11_options.XkbOptions" type="strlist">compose:ralt</append>
</match>
</device>
</deviceinfo>
[править] Reboot
Перезагружаем X и смотрим глюки в /var/log/Xorg.0.log