Xorg evdev madness

November 14, 2008 in en, linux, open source, problem, software

It is really astonishing how easy it is to find topics for blogging when one looks around :)

I recently upgraded my Xorg installation to latest ~x86 version. For Gentoo virgins, this means unstable version, although it is usually considered stable upstream, just integration with other apps can be sometimes problematic. Stable version was really old and had problems with recent kernel versions. I was very happy with the upgrade, which made my 5 year old Thinkpad more alive than ever. I decided to recreate my xorg.conf because most of the stuff that was there was not needed anyway, since XRandR 1.2 is used.

What is my problem then? Well after the upgrade some features of my touchpad stopped working (most notably circular scrolling) and I could not switch between different layouts of my keyboard. First thing I did was of course look at Xorg.0.log. Important part follows:

(II) XINPUT: Adding extended input device “AT Translated Set 2 keyboard” (type: KEYBOARD)
(**) Option “xkb_rules” “base”
(**) AT Translated Set 2 keyboard: xkb_rules: “base”
(**) Option “xkb_model” “evdev”
(**) AT Translated Set 2 keyboard: xkb_model: “evdev”
(**) Option “xkb_layout” “us”
(**) AT Translated Set 2 keyboard: xkb_layout: “us”
(II) config/hal: Adding input device ThinkPad Extra Buttons
(**) ThinkPad Extra Buttons: always reports core events
(**) ThinkPad Extra Buttons: Device: “/dev/input/event3″
(II) ThinkPad Extra Buttons: Found keys
(II) ThinkPad Extra Buttons: Configuring as keyboard
(II) XINPUT: Adding extended input device “ThinkPad Extra Buttons” (type: KEYBOARD)
(**) Option “xkb_rules” “base”
(**) ThinkPad Extra Buttons: xkb_rules: “base”
(**) Option “xkb_model” “evdev”
(**) ThinkPad Extra Buttons: xkb_model: “evdev”
(**) Option “xkb_layout” “us”
(**) ThinkPad Extra Buttons: xkb_layout: “us”

As it happened evdev found additional “keyboards” and IGNORED my layout settings for keyboard. I found few forum posts dealing with the same problem on Gentoo and Arch Linux. I will not go into details, if you really want to know all the crazy solutions people found, read the forums. But easiest solution? Uninstall evdev driver for now if you don’t need it (you probably don’t). Similar effect could be probably reached by adding Option AutoAddDevices “boolean” to Serverflags section of xorg.conf, however I didn’t try this approach.