X.Org, evdev und HAL

Gentoo-Technobabble-Warnung

Vor ein paar Tagen habe ich ein Update meines Gentoo-Systems gemacht, und mit einem Mal war nichts mehr so wie vorher (ok, ich übertreibe). Zuerst stürzte der X-Server ab, wenn ich meine USB-Tastatur (Microsoft Comfort Curve Keyboard 2000) angeschlossen habe. Vernünftig, was lasse ich auch Microsoft-Hardware an mein Laptop dran. Dennoch merkwürdig, denn vom X-Server wurde nichts aktualisiert, nur das Paket in der selben Version (x11-base/xorg-server-1.4.2) neu gebaut. Auch am Kernel wurde nichts geändert. Ich war also schon ziemlich erstaunt an dieser Stelle.

Schnell konnte ich den "evdev"-Treiber als Verursacher ausfindig machen. Ein Update auf x11-drivers/xf86-input-evdev-1.2.0 hat dieses Problem auch wieder behoben, ich konnte die Tastatur wieder anschließen. Nun gab es aber zwei neue Probleme: das Tastatur-Layout war auf einmal 'us' (also amerikanisch) und die mittlere Maustaste funktionierte nicht mehr.

Diese Symptome haben mich auf den richtigen Weg gebracht: Ich hatte bis vor kurzem die Regel 'x11-base/xorg-server -hal' in der Datei /etc/portage/package.use stehen, und diese leichtsinnigerweise entfernt. Deshalb überließ der X-Server nun die Anbindung von Tastatur und Maus dem "Hardware Abstraction Layer" HAL. Gut, das kann ja nicht so falsch sein, dachte ich, und fand auch schnell heraus, wie ich das korrekte Layout einstellen kann. Es genügt, die Datei /etc/hal/fdi/policy/10-x11-input.fdi mit folgendem Inhalt befüllen:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <deviceinfo version="0.2">
  3. <device>
  4. <match key="info.capabilities" contains="input.mouse">
  5. <merge key="input.x11_driver" type="string">evdev</merge>
  6. </match>
  7.  
  8. <match key="info.capabilities" contains="input.keyboard">
  9. <merge key="input.x11_driver" type="string">evdev</merge>
  10. <merge key="input.xkb.model" type="string">evdev</merge>
  11. <merge key="input.xkb.layout" type="string">de</merge>
  12. <merge key="input.xkb.rules" type="string">xorg</merge>
  13. </match>
  14. </device>
  15. </deviceinfo>

Nächstes Problem: Die Spezialtasten funktionieren nicht mehr, lineakd (ein Programm, mit welchem man die Sondertasten unabhängig von der Desktopoberfläche belegen kann), meldete nur:

*** Xlib error caught *** 
Major opcode of failed request: 33 (XKEYBOARD) 
Minor opcode of failed request: 0 (XkbSetMap) 
Resource ID of failed request: 127 
Serial number of failed request: 38 
Error code: 10 
Type: 0 
Maybe we should exit now?

Ein Test mit dem alternativen Programm keytouch half auch nicht weiter. Der keytouch-editor erkannte keine der "Special Keys". Besonders seltsam daran ist, dass durchaus die richtigen Tastencodes gesendet werden, wie man mit dem Hilfsprogramm xev schnell feststellen kann. Und dann war da noch das Problem mit der mittleren Maustaste. In der KDE-Konsole arbeitete sie korrekt (Einfügen des Textes aus der Zwischenablage), in Opera verhielt sie sich abwechselnd wie die linke Maustaste (Link öffnen), wie die mittlere (Link in neuem Fenster öffnen) oder zeitweise auch mal wie linke und mittlere Taste gleichzeitig. Einmal sogar wie mittlere und rechte Taste. Alles sehr mysteriös.

Um es kurz zu machen: Trotz sehr intensiver Recherche und vielen ausprobierten xorg.conf-Einstellungen fand ich keine Lösung für das Problem. Auch wenn es sehr viele Berichte über Probleme im Zusammenspiel von X.Org und HAL gibt, scheint meines ziemlich speziell zu sein. Nun habe ich das USE-Flag '-hal' wieder eingesetzt und kompiliere xorg-server im Moment neu. Hoffentlich funktioniert dann alles wieder, und hoffentlich bleibt diese Variante lange genug erhalten, dass ich mich nicht erneut mit diesen Problemen herumschlagen muss. Falls jemand noch einen Rat hat, dann wäre ich dankbar. Vielleicht kann ja z.B. ein Ubuntu-User mal sagen, ob diese Distribution HAL verwendet oder direkt auf die Hardware zugreift.

Nachtrag: Ein Update auf x11-driver/xf86-input-evdev-2.0.2 hat das Problem übrigens auch nicht behoben.

Nachtrag 2: Nachdem ich HAL für den X-Server deaktiviert habe, und wieder auf die klassischen Input-Device-Treiber 'mouse' und 'kbd' zurückgewechselt bin, funktioniert wieder alles normal. Ich hab mir vorgenommen, erstmal nicht weiter in diese Richtung zu experimentieren, dafür fehlt mir im Moment einfach die Zeit. Das ist auch der Grund, weshalb ich keinen Bug-Report gemacht habe - dafür müsste ich mein System erstmal in diesem instabilen Modus lassen, um eventuelle Vorschläge testen oder weitere Informationen liefern zu können. Das kann ich mir im Moment beim besten Willen nicht erlauben.

Nachtrag 3: Ich habe das Problem nun größtenteils im Griff - siehe Teil 2.

Nachtrag 4: Nun aber wirklich...