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

[править] Пересобираем все пакеты с новым флагом

После этого запустить
emerge -uND world
для вступления в силу изменений, а также
emerge --depclean
для удаления ставших ненужными пакетов

[править] Поправляем конфиг xorg

В xorg.conf удалить (или закомментировать) секции касающиеся устройств ввода, а также добавить (исправить) указанные строки:

Файл: /etc/x11/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:

Создать файл с примерно таким содержанием

Файл: /etc/hal/fdi/policy/10-x11-input.fdi
<?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

/etc/init.d/hald restart

Перезагружаем X и смотрим глюки в /var/log/Xorg.0.log

поддержка по wiki