# evdev als Keyboardtreiber -> Keytouch funktioniert nicht

## neuling

Hallo,

wenn ich X mit hal (ohne DeviceSections) initialisiere, erkennt keytouch meine Multimediatasten nicht mehr. Wobei er sie weniger nicht erkennt, als die verknüpften Befehle einfach nicht auszuführt. Denn keytouch-editor erkennt immer noch alle gedrückten Spezialtasten und keytouchd unterbricht im Terminal das Cursorblinken bzw. lässt sogar das Helligkeitsfensterchen aufpoppen (nur tut sich eben nichts). Kronkret scheint das mit dem Einsatz von evdev als Keyboardtreiber zusammenzuhängen. Wenn ich ihn statt kbd in die xorg.conf eintrage, funktionieren die Tasten nicht mehr, sonst schon. Es lag natürlich nahe, einfach kbd statt evdev mit hal laden zu lassen. Das hab ich auch getan mit einer angepassten 10-x11-input.fdi und einer eigenen 10-keyboard.fdi Policy. Diese liegen in /etc/hal/fdi/policy/ (ordnungsgemäß) und sehen wie folgt aus:

```

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- /etc/hal/fdi/policy/10-x11-input.fdi -->

<deviceinfo version="0.2">

  <device>

    <!-- KVM emulates a USB graphics tablet which works in absolute coordinate mode -->

    <match key="input.product" contains="QEMU USB Tablet">

       <merge key="input.x11_driver" type="string">evdev</merge>

    </match>

    <!-- FIXME: Support tablets too. -->

    <match key="info.capabilities" contains="input.mouse">

      <merge key="input.x11_driver" type="string">mouse</merge>

      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"

             string="Linux">

        <merge key="input.x11_driver" type="string">evdev</merge>

      </match>

    </match>

    <match key="info.capabilities" contains="input.tablet">

      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"

             string="Linux">

        <merge key="input.x11_driver" type="string">evdev</merge>

      </match>

    </match>

    <match key="info.capabilities" contains="input.touchpad">

      <merge key="input.x11_driver" type="string">mouse</merge>

      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"

             string="Linux">

        <merge key="input.x11_driver" type="string">synaptics</merge>

      </match>

    </match>

    <match key="info.capabilities" contains="input.keys">

      <!-- If we're using Linux, we use evdev by default (falling back to

           keyboard otherwise). -->

      <merge key="input.x11_driver" type="string">keyboard</merge>

      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"

             string="Linux">

     <match key="info.capabilities" contains_not="input.keyboard">

        <merge key="input.x11_driver" type="string">evdev</merge>

     </match

      </match>

    </match>

  </device>

</deviceinfo>

```

[code=/etc/hal/fdi/policy/10-keyboard.fdi]

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<!-- /etc/hal/fdi/policy/10-keyboard.fdi -->

<deviceinfo version="0.2">

  <device>

	<match key="info.capabilities" contains="input.keyboard">

	   <merge key="input.x11_driver" type="string">kbd</merge>

	   <merge key="input.x11_options.XkbModel" type="string">pc105</merge>

	   <merge key="input.x11_options.XkbLayout" type="string">de</merge>

	   <merge key="input.x11_options.XkbVariant" type="string">nodeadkeys</merge>

	   <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>

	</match>

  </device>

</deviceinfo>

[/code]

Die Ausgabe dazu im Xorg-log sieht ziemlich gleich aus.

Xorg.log mit hal-Initialisierung

```

(II) config/hal: Adding input device AT Translated Set 2 keyboard

(II) LoadModule: "kbd"

(II) Loading /usr/lib64/xorg/modules/input/kbd_drv.so

(II) Module kbd: vendor="X.Org Foundation"

   compiled for 1.7.6, module version = 1.4.0

   Module class: X.Org XInput Driver

   ABI class: X.Org XInput driver, version 7.0

(**) AT Translated Set 2 keyboard: always reports core events

(**) Option "Protocol" "standard"

(**) AT Translated Set 2 keyboard: Protocol: standard

(**) Option "Device" "/dev/input/event4"

(**) Option "XkbRules" "base"

(**) AT Translated Set 2 keyboard: XkbRules: "base"

(**) Option "XkbModel" "pc105"

(**) AT Translated Set 2 keyboard: XkbModel: "pc105"

(**) Option "XkbLayout" "de"

(**) AT Translated Set 2 keyboard: XkbLayout: "de"

(**) Option "XkbVariant" "nodeadkeys"

(**) AT Translated Set 2 keyboard: XkbVariant: "nodeadkeys"

(**) Option "XkbOptions" "terminate:ctrl_alt_bksp"

(**) AT Translated Set 2 keyboard: XkbOptions: "terminate:ctrl_alt_bksp"

(**) Option "CustomKeycodes" "off"

(**) AT Translated Set 2 keyboard: CustomKeycodes disabled

(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)

```

Ausgabe mit xorg.conf

```

(**) Option "SendCoreEvents"

(**) Keyboard0: always reports core events

(**) Option "Protocol" "standard"

(**) Keyboard0: Protocol: standard

(**) Option "XkbRules" "base"

(**) Keyboard0: XkbRules: "base"

(**) Option "XkbModel" "pc105"

(**) Keyboard0: XkbModel: "pc105"

(**) Option "XkbLayout" "de"

(**) Keyboard0: XkbLayout: "de"

(**) Option "XkbVariant" "nodeadkeys"

(**) Keyboard0: XkbVariant: "nodeadkeys"

(**) Option "XkbOptions" "terminate:ctrl_alt_bksp"

(**) Keyboard0: XkbOptions: "terminate:ctrl_alt_bksp"

(**) Option "CustomKeycodes" "off"

(**) Keyboard0: CustomKeycodes disabled

(II) XINPUT: Adding extended input device "Keyboard0" (type: KEYBOARD)

(**) Option "SendCoreEvents" "true"

(**) Option "CoreKeyboard"

(**) Keyboard0: always reports core events

(**) Option "Protocol" "standard"

(**) Keyboard0: Protocol: standard

(**) Option "XkbRules" "base"

(**) Keyboard0: XkbRules: "base"

(**) Option "XkbModel" "pc105"

(**) Keyboard0: XkbModel: "pc105"

(**) Option "XkbLayout" "de"

(**) Keyboard0: XkbLayout: "de"

(**) Option "XkbVariant" "nodeadkeys"

(**) Keyboard0: XkbVariant: "nodeadkeys"

(**) Option "XkbOptions" "terminate:ctrl_alt_bksp"

(**) Keyboard0: XkbOptions: "terminate:ctrl_alt_bksp"

(**) Option "CustomKeycodes" "off"

(**) Keyboard0: CustomKeycodes disabled

(II) XINPUT: Adding extended input device "Keyboard0" (type: KEYBOARD)

```

InputDevice-Section:

```

Section "InputDevice"

        Identifier  "Keyboard0"

        Driver      "kbd"

        Option      "XkbModel" "pc105"

        Option      "XkbLayout" "de"

        Option      "XkbVariant" "nodeadkeys"

        Option      "XkbOptions" "terminate:ctrl_alt_bksp"

        Option      "SendCoreEvents" "true"

EndSection

```

Jedenfalls hab ich folgendes Problem, wenn ich mit hal kbd initialisiere: Jeder Tastendruck gibt einen ganzen Haufen Events aus, nur nicht das der Taste (gelegentlich ist schon mal eins drunter). KeyboardEvents können außerdem MouseEvents auslösen, die Maus verschwindet dann in irgendeine Ecke und kehrt dahin zurück, sollte man die Frechheit haben, die Physische zu bewegen. KeyReleaseEvents werden vergessen, sodass der Fenstermanager entweder in einem Alt+Tab festhängt oder MausklickEvents vor lauter KeyEvents übersieht. Alles in allem ist der Fenstermanager damit nicht wirklich benutzbar, aber ich hab es geschafft, einen Screenshot von einem Terminal nach fünfmaligem Drücken der Taste 's' zu machen.

http://www.abload.de/img/testscreenshotq6zs.png

Software-versionen:

keytouch-2.4.1

keytouch-editor-3.1.3

xf86-input-keyboard-1.4.0

xf86-input-evdev-2.4.0

xorg-server-1.7.7-r1

Weiß jemand, wie es dazu kommen könnte?

Zum Schluss noch mal das komplette X-Log von hal mit kbd (ohne den Grafik-Kram).

```

X.Org X Server 1.7.7

Release Date: 2010-05-04

X Protocol Version 11, Revision 0

Build Operating System: Linux 2.6.35-gentoo x86_64 

Current Operating System: Linux tuz 2.6.36-gentoo-r1 #1 SMP Sun Nov 14 16:42:37 CET 2010 x86_64

Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.36-gentoo-r1 root=/dev/sda5 ro splash=silent,theme:livecd-2007.0 console=tty1

Build Date: 08 August 2010  11:22:14PM

 

Current version of pixman: 0.18.2

   Before reporting problems, check http://wiki.x.org

   to make sure that you have the latest version.

Markers: (--) probed, (**) from config file, (==) default setting,

   (++) from command line, (!!) notice, (II) informational,

   (WW) warning, (EE) error, (NI) not implemented, (??) unknown.

(==) Log file: "/var/log/Xorg.0.log", Time: Wed Nov 17 15:43:45 2010

(==) Using config file: "/etc/X11/xorg.conf"

(==) No Layout section.  Using the first Screen section.

(==) No screen section available. Using defaults.

(**) |-->Screen "Default Screen Section" (0)

(**) |   |-->Monitor "<default monitor>"

(==) No monitor specified for screen "Default Screen Section".

   Using a default monitor configuration.

(**) Option "DRI2" "on"

(==) Automatically adding devices

(==) Automatically enabling devices

(==) FontPath set to:

   /usr/share/fonts/misc/,

   /usr/share/fonts/TTF/,

   /usr/share/fonts/OTF,

   /usr/share/fonts/Type1/,

   /usr/share/fonts/100dpi/,

   /usr/share/fonts/75dpi/

(==) ModulePath set to "/usr/lib64/xorg/modules"

(II) Cannot locate a core pointer device.

(II) Cannot locate a core keyboard device.

(II) The server relies on HAL to provide the list of input devices.

   If no devices become available, reconfigure HAL or disable AutoAddDevices.

(II) Loader magic: 0x7bd220

(II) Module ABI versions:

   X.Org ANSI C Emulation: 0.4

   X.Org Video Driver: 6.0

   X.Org XInput driver : 7.0

   X.Org Server Extension : 2.0

(--) using VT number 7

(--) PCI:*(0:1:5:0) 1002:9612:103c:30e3 ATI Technologies Inc RS780M/RS780MN [Radeon HD 3200 Graphics] rev 0, Mem @ 0x80000000/268435456, 0x92300000/65536, 0x92200000/1048576, I/O @ 0x00003000/256

(II) Open ACPI successful (/var/run/acpid.socket)

(II) LoadModule: "extmod"

(II) Loading /usr/lib64/xorg/modules/extensions/libextmod.so

(II) Module extmod: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.0.0

   Module class: X.Org Server Extension

   ABI class: X.Org Server Extension, version 2.0

(II) Loading extension MIT-SCREEN-SAVER

(II) Loading extension XFree86-VidModeExtension

(II) Loading extension XFree86-DGA

(II) Loading extension DPMS

(II) Loading extension XVideo

(II) Loading extension XVideo-MotionCompensation

(II) Loading extension X-Resource

(II) LoadModule: "dbe"

(II) Loading /usr/lib64/xorg/modules/extensions/libdbe.so

(II) Module dbe: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.0.0

   Module class: X.Org Server Extension

   ABI class: X.Org Server Extension, version 2.0

(II) Loading extension DOUBLE-BUFFER

(II) LoadModule: "glx"

(II) Loading /usr/lib64/xorg/modules/extensions/libglx.so

(II) Module glx: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.0.0

   ABI class: X.Org Server Extension, version 2.0

(==) AIGLX enabled

(II) Loading extension GLX

(II) LoadModule: "record"

(II) Loading /usr/lib64/xorg/modules/extensions/librecord.so

(II) Module record: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.13.0

   Module class: X.Org Server Extension

   ABI class: X.Org Server Extension, version 2.0

(II) Loading extension RECORD

(II) LoadModule: "dri"

(II) Loading /usr/lib64/xorg/modules/extensions/libdri.so

(II) Module dri: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.0.0

   ABI class: X.Org Server Extension, version 2.0

(II) Loading extension XFree86-DRI

(II) LoadModule: "dri2"

(II) Loading /usr/lib64/xorg/modules/extensions/libdri2.so

(II) Module dri2: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.1.0

   ABI class: X.Org Server Extension, version 2.0

(II) Loading extension DRI2

(==) Matched ati for the autoconfigured driver

(==) Assigned the driver to the xf86ConfigLayout

(II) LoadModule: "ati"

(II) Loading /usr/lib64/xorg/modules/drivers/ati_drv.so

(II) Module ati: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 6.13.2

   Module class: X.Org Video Driver

   ABI class: X.Org Video Driver, version 6.0

(II) LoadModule: "radeon"

(II) Loading /usr/lib64/xorg/modules/drivers/radeon_drv.so

(II) Module radeon: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 6.13.2

   Module class: X.Org Video Driver

   ABI class: X.Org Video Driver, version 6.0

(II) Loading sub module "fb"

(II) LoadModule: "fb"

(II) Loading /usr/lib64/xorg/modules/libfb.so

(II) Module fb: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 1.0.0

   ABI class: X.Org ANSI C Emulation, version 0.4

(II) Loading sub module "ramdac"

(II) LoadModule: "ramdac"

(II) Module "ramdac" already built-in

(II) Initializing built-in extension Generic Event Extension

(II) Initializing built-in extension SHAPE

(II) Initializing built-in extension MIT-SHM

(II) Initializing built-in extension XInputExtension

(II) Initializing built-in extension XTEST

(II) Initializing built-in extension BIG-REQUESTS

(II) Initializing built-in extension SYNC

(II) Initializing built-in extension XKEYBOARD

(II) Initializing built-in extension XC-MISC

(II) Initializing built-in extension XINERAMA

(II) Initializing built-in extension XFIXES

(II) Initializing built-in extension RENDER

(II) Initializing built-in extension RANDR

(II) Initializing built-in extension COMPOSITE

(II) Initializing built-in extension DAMAGE

(II) AIGLX: enabled GLX_MESA_copy_sub_buffer

(II) AIGLX: enabled GLX_SGI_make_current_read

(II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control

(II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects

(II) AIGLX: Loaded and initialized /usr/lib64/dri/r600_dri.so

(II) GLX: Initialized DRI2 GL provider for screen 0

(II) RADEON(0): Setting screen physical size to 444 x 277

(II) config/hal: Adding input device SynPS/2 Synaptics TouchPad

(II) LoadModule: "synaptics"

(II) Loading /usr/lib64/xorg/modules/input/synaptics_drv.so

(II) Module synaptics: vendor="X.Org Foundation"

   compiled for 1.7.6, module version = 1.2.1

   Module class: X.Org XInput Driver

   ABI class: X.Org XInput driver, version 7.0

(II) Synaptics touchpad driver version 1.2.1

(**) Option "Device" "/dev/input/event7"

(II) SynPS/2 Synaptics TouchPad: x-axis range 1472 - 5560

(II) SynPS/2 Synaptics TouchPad: y-axis range 1408 - 4778

(II) SynPS/2 Synaptics TouchPad: pressure range 0 - 255

(II) SynPS/2 Synaptics TouchPad: finger width range 0 - 15

(II) SynPS/2 Synaptics TouchPad: buttons: left right

(**) Option "HorizEdgeScroll" "true"

(**) Option "CircularScrolling" "true"

(**) Option "CircScrollTrigger" "2"

(--) SynPS/2 Synaptics TouchPad: touchpad found

(**) SynPS/2 Synaptics TouchPad: always reports core events

(II) XINPUT: Adding extended input device "SynPS/2 Synaptics TouchPad" (type: TOUCHPAD)

(**) SynPS/2 Synaptics TouchPad: (accel) keeping acceleration scheme 1

(**) SynPS/2 Synaptics TouchPad: (accel) acceleration profile 0

(--) SynPS/2 Synaptics TouchPad: touchpad found

(II) config/hal: Adding input device AT Translated Set 2 keyboard

(II) LoadModule: "kbd"

(II) Loading /usr/lib64/xorg/modules/input/kbd_drv.so

(II) Module kbd: vendor="X.Org Foundation"

   compiled for 1.7.6, module version = 1.4.0

   Module class: X.Org XInput Driver

   ABI class: X.Org XInput driver, version 7.0

(**) AT Translated Set 2 keyboard: always reports core events

(**) Option "Protocol" "standard"

(**) AT Translated Set 2 keyboard: Protocol: standard

(**) Option "Device" "/dev/input/event4"

(**) Option "XkbRules" "base"

(**) AT Translated Set 2 keyboard: XkbRules: "base"

(**) Option "XkbModel" "pc105"

(**) AT Translated Set 2 keyboard: XkbModel: "pc105"

(**) Option "XkbLayout" "de"

(**) AT Translated Set 2 keyboard: XkbLayout: "de"

(**) Option "XkbVariant" "nodeadkeys"

(**) AT Translated Set 2 keyboard: XkbVariant: "nodeadkeys"

(**) Option "XkbOptions" "terminate:ctrl_alt_bksp"

(**) AT Translated Set 2 keyboard: XkbOptions: "terminate:ctrl_alt_bksp"

(**) Option "CustomKeycodes" "off"

(**) AT Translated Set 2 keyboard: CustomKeycodes disabled

(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)

(II) config/hal: Adding input device CKF7037

(II) LoadModule: "evdev"

(II) Loading /usr/lib64/xorg/modules/input/evdev_drv.so

(II) Module evdev: vendor="X.Org Foundation"

   compiled for 1.7.7, module version = 2.4.0

   Module class: X.Org XInput Driver

   ABI class: X.Org XInput driver, version 7.0

(**) CKF7037: always reports core events

(**) CKF7037: Device: "/dev/input/event6"

(II) CKF7037: Found keys

(II) CKF7037: Configuring as keyboard

(II) XINPUT: Adding extended input device "CKF7037" (type: KEYBOARD)

(**) Option "xkb_rules" "evdev"

(**) Option "xkb_model" "evdev"

(**) Option "xkb_layout" "us"

(II) config/hal: Adding input device Sleep Button

(**) Sleep Button: always reports core events

(**) Sleep Button: Device: "/dev/input/event0"

(II) Sleep Button: Found keys

(II) Sleep Button: Configuring as keyboard

(II) XINPUT: Adding extended input device "Sleep Button" (type: KEYBOARD)

(**) Option "xkb_rules" "evdev"

(**) Option "xkb_model" "evdev"

(**) Option "xkb_layout" "us"

(II) config/hal: Adding input device Video Bus

(**) Video Bus: always reports core events

(**) Video Bus: Device: "/dev/input/event3"

(II) Video Bus: Found keys

(II) Video Bus: Configuring as keyboard

(II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD)

(**) Option "xkb_rules" "evdev"

(**) Option "xkb_model" "evdev"

(**) Option "xkb_layout" "us"

(II) config/hal: Adding input device Power Button

(**) Power Button: always reports core events

(**) Power Button: Device: "/dev/input/event2"

(II) Power Button: Found keys

(II) Power Button: Configuring as keyboard

(II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD)

(**) Option "xkb_rules" "evdev"

(**) Option "xkb_model" "evdev"

(**) Option "xkb_layout" "us"

(II) Power Button: Close

(II) UnloadModule: "evdev"

(II) Video Bus: Close

(II) UnloadModule: "evdev"

(II) Sleep Button: Close

(II) UnloadModule: "evdev"

(II) CKF7037: Close

(II) UnloadModule: "evdev"

(II) UnloadModule: "kbd"

(II) UnloadModule: "synaptics"

```

----------

