Nobody about something

Настройка устройств ввода через hal

Написано 24 мая 2009 в 11:32 - Рубрики: *nix

С недавних пор иксы получают все настройки устройств ввода через 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 комментария на запись “Настройка устройств ввода через hal”

  1. sunx.org.ru пишет 17 сентября 2009 в 10:18

    Кстати насчет мышки и порядка кнопок, то, если я ничего не путаю, их можно не местами, например, поменять, а сделать 2 одинаковые кнопки =), иногда удобнее

  2. tuupic пишет 17 сентября 2009 в 17:31

    sunx.org.ru написал:

    сли я ничего не путаю, их можно не местами, например, поменять, а сделать 2 одинаковые кнопки =)

    Как раз нет. Ругаются иксы и xmodmap