Настройка устройств ввода через hal
С недавних пор иксы получают все настройки устройств ввода через hal, если они кончено скомпилированы соответствующе(про остальные устройства не знаю). К примеру, в модной убунте сейчас вообще нету даже самого xorg.conf.
Но бывает нужно изменить настройки. Как это делается.
Начнём с самого конфига иксов. Надо вычистить всё, что имеет отношение к InputDevice.
А в секцию “ServerLayout” добавим cледующую опцию
Option "AutoAddDevices" "True"
Далее идём в директорию /etc/hal/fdi/policy/ и создаём файлик, к примеру 11-x11-keyboard.fdi. В нём, как можно догадаться, будут настройки клавиатуры. У меня данный файл имеет следующее содержание
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<match key="info.capabilities" contains="input.keys">
<merge key="input.xkb.model" type="string">evdev</merge>
<merge key="input.xkb.layout" type="string">us,ru(winkeys)</merge>
<merge key="input.xkb.options" type="string">grp:ctrl_shift_toggle,compose:rwin</merge>
<merge key="input.x11_driver" type="string">evdev</merge>
</match>
</deviceinfo>
В этом файле теперь можно изменить способ переключения раскладки, да и саму раскладку, также как это делалось в конфиге xorg.conf
Далее тачпад. У меня это файл 11-x11-synaptics.fdi. Названия значения не играет. Главное, чтобы расширение fdi было.
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<!-- Опция, чтобы можно было управлять тачпадом через synclient -->
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
<!-- Различные, используемые мною, настройки -->
<merge key="input.x11_options.HorizEdgeScroll" type="string">0</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<!-- При старте выключаю тачпад. Если надо кнопкой включу -->
<merge key="input.x11_options.TouchpadOff" type="string">1</merge>
<!-- узнать какие есть опции их можно вызвав synclient -l, ну и в манах каких либо -->
</match>
</device>
</deviceinfo>
Ну и в конце мышь. Мышь у меня мультимедийная. Кнопок много. Но я привык, что при работе через драйвер mouse, у такой же мыши, нажатие одной из доп. кнопок, расположенной наверху, генерировался сигнал как при нажатии на колёсико мыши. А при работе через evdev у этой кнопки был свой отделный сигнал. Что же делать? Я решил просто поменять кнопки местами
Вот такой файл 11-x11-mouse.fdi
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<match key="info.capabilities" contains="input.mouse">
<merge key="input.x11_driver" type="string">evdev</merge>
<!-- Вот этот параметр и отвечает за смену кнопок -->
<merge key="input.x11_options.ButtonMapping" type="string">1 10 3 4 5 6 7 8 9 2 11 12</merge>
</match>
</deviceinfo>
Кнопок у меня не 12, как можно подумать. 4 и 5 зарезервированы для вертикальной прокрутки, а 6 и 7 для горизонтальной(которой у меня нет). Как видно местами я поменял кнопки 2 и 10. А собственно, номера можно узнать через всё тот же xev
Чтобы настройки вступили в силу надо перезапустить hal и иксы.
После я выяснил, что “умные” KDE при старте сбрасывают порядок кнопок мыши на умолчальный. Связано это с тем, что в kde есть свояя настройка порядка кнопок (для правшей/левшей). То есть, если вначале воткнуть мышь, а потом запустить KDE, то настройки сбрасываются. Если вначале запустить KDE, а потом воткнуть мышь, то всё как надо. Чтобы не заниматься подобным жонглированием, я установил утилиту xmodmap и добавил в автозапуск (в самих KDE же
) следующую команду
/usr/bin/xmodmap -e "pointer = 1 10 3 4 5 6 7 8 9 2 11 12"
И теперь всё работает как надо.
О настройке дополнительных клавиш мыши напишу позже



Кстати насчет мышки и порядка кнопок, то, если я ничего не путаю, их можно не местами, например, поменять, а сделать 2 одинаковые кнопки =), иногда удобнее
sunx.org.ru написал:
Как раз нет. Ругаются иксы и xmodmap