X.Org, evdev und HAL - Teil 2

Gentoo-Technobabble-Warnung

Dieses Problem hat mir natürlich keine Ruhe gelassen, und ich habe (wider aller Vernunft) weiter experimentiert.

Die beiden beobachteten Phänomene sind unabhängig voneinander. Das Keyboard-Problem beruht auf einem Konflikt zwischen HAL und X.Org, und lässt sich durch eine kleine Anweisung in der Section "ServerLayout" lösen:

Option "AutoAddDevices" "no"

Nun funktionieren auch die Sondertasten mit lineakd oder keytouch wieder. Die Datei /etc/hal/fdi/policy/10-x11-input.fdi sieht ansonsten genauso aus wie im letzten Beitrag.

Das Mausproblem (mittlere Maustaste wirkt in Opera wie ein Linksklick, funktioniert sonst aber normal) hat mir mehr Kopfzerbrechen bereitet. Erst als ich mir die von der Maus bei einem Klick auf das Scrollrad gesendeten Events mit xev mal etwas genauer angeschaut habe, ist mir etwas aufgefallen:

ButtonRelease event, serial 30, synthetic NO, window 0x4400001, 
    root 0x7f, subw 0x0, time 1553709, (136,123), root:(1305,178), 
    state 0x200, button 2, same_screen YES      

ButtonRelease event, serial 30, synthetic NO, window 0x4400001, 
    root 0x7f, subw 0x0, time 1553709, (136,123), root:(1305,178), 
    state 0x0, button 8, same_screen YES

Da sind zwei Events! Meine Maus, eine "Logitech Cordless Mini Optical", hat im Scrollrad nicht nur eine Taste, sondern gleich zwei - je nachdem wie tief man drückt. Bei einem flachen Druck wird ein "Button 8"-Event ausgelöst, bei einem tiefen ein "Button 2"-Event. Bei letzterem handelt es sich um die tatsächliche mittlere Maustaste. Ersterem ist keine Aktion zugewiesen, und Opera interpretiert dies dummerweise als Linksklick! Warum das aber erst mit HAL aufgetreten ist, kann ich nicht sagen. Vermutlich wurden diese Tasten vorher vom X-Server ausgefiltert.

Damit Opera das "Button 8"-Event ignoriert, kann man das Programm imwheel nutzen und in der Datei /etc/X11/imwheel/imwheelrc folgendes Event definieren:

"^Opera" 
, Thumb1, None

Nun könnte man mit xmodmap auch noch den tiefen und den flachen Mausklick vertauschen, wenn man das angenehmer findet:

modmap -e "pointer = 1 8 3 4 5 6 7 2"

Aber da diese Anweisung für alle angeschlossenen Geräte gilt, ist dies nicht zu empfehlen - denn man kann dann bei keiner anderen Maus mehr die mittlere Taste nutzen. Theoretisch sollte es möglich sein, nur für dieses eine Gerät eine entsprechende Regel in die 10-x11-input.fdi einzubauen, doch "input.x11_options.ButtonMapping" wird leider ignoriert.

Nachdem dies nun alles lief, wollte ich auch den synaptics-Treiber für mein Touchpad aus der xorg.conf auslagern:

  1. <match key="info.capabilities" contains="input.touchpad">
  2. <merge key="input.x11_driver" type="string">synaptics</merge>
  3. <merge key="input.x11_options.SHMConfig" type="string">on</merge>
  4. <merge key="input.x11_options.HorizScrollDelta" type="string">0</merge>
  5. <merge key="input.x11_options.MinSpeed" type="string">0.25</merge>
  6. <merge key="input.x11_options.MaxSpeed" type="string">0.75</merge>
  7. </match>

Zwar funktioniert das Gerät, aber die Optionen werden ignoriert. Deshalb verbleibt dieser Eintrag nun erstmal in der xorg.conf. Ich denke, es wird auch relativ selten vorkommen, dass ich das Touchpad meines Laptops entferne ;-).

Ich hoffe, ich kann mit diesen Tipps dem ein oder anderem helfen. Über Feedback wäre ich in diesem Fall dankbar :-)

Nachtrag (mal wieder):

Statt der oben vorgeschlagenen imwheelrc verwende ich nun folgende:

".*" 
, Thumb1, Button2

Vorteil: Gilt für alle Anwendungen, und bereits ein flacher Klick entspricht der mittleren Maustaste. Nachteil: Auf keinen Fall tief durchdrücken, sonst kommen zwei Klicks mit der mittleren Taste raus, da man das eigentliche Button2-Event nicht überschreiben kann.

Nachtrag: Danke an "roo" für seinen Hinweis in den Kommentaren. Nun aber wirklich...

Comments

Oh mann, hätt ich dein Blog doch eher gefunden ;)

Habe mit fast dem gleichen Problem fast einen ganzen Tag verschwendet und bin leider erst hier gelandet als ich die Lösung schon hatte.

Bei mir hat evdev auch plötzlich den start des xservers verhindert. Nach dem Update auf 1.2 war plötzlich englische Tastatur angesagt und bei einem Rechtsklick hat sich der xserver verabschiedet. Mit der passenden .fdi und evdev 2.0 sind beide Probleme behoben.

Habe im Rahmen der Problemlösung auch gleich mal auf den 2.4er Treiber für meine GMA 945 aktualisiert, weil ich schon lange gerne mal auf Compiz umsteigen würde.
Leider geht mit XAA kein XV und mit EXA ist 2D grottenlangsam, und XV brauche ich da lokal ein VDR läuft der sein Video ab und zu über Softdevice Plugin ausgibt. Werde trotzdem mal bei Gelegenheit deinen Ebuild mit dem Mplayer Patch testen.

Grüße

Lululog ;)

Ich bins wieder.. :)

Also ich hab herausgefunden, dass das Problem nicht bei HAL, nicht bei evdev und auch nicht bei X liegt. Sondern beim Desktop Environment - sprich Gnome/Xfce/KDE.

Habe nämlich mal Fluxbox emerged und damit mal probiert (Fluxbox lässt sich ja fix emergen und starten). Und dort habe ich diese Probleme nicht. Alle Tasten werden von xev perfekt erkannt. Und verursachen keine Probleme.

Hast du schon versucht Gnome/KDE auf evdev um zu stellen?
Ich benutze Xfce4 und hab dort leider nicht die Möglichkeit o0

Naja.. ich probiers weiter.. wie gesagt. mit Fluxbox gibts keine Probleme der Art :(

*Hoffe auf Teil 3* =)

Hab hier mal wa sim offiziellen Gentoo Forum gefunden: http://forums.gentoo.org/viewtopic-t-641870-postdays-0-postorder-asc-sta...

Hm, bist du sicher? Das ergäbe irgendwie keinen Sinn, denn ich habe in der xorg.conf keinerlei Keyboard-Konfiguration mehr stehen, aber dennoch ein deutsches Tastaturlayout. Wenn das nicht von HAL kommt - woher dann?

Asche auf mein Haupt, du hast wohl recht. Das deutsche Tastaturlayout hatte ich noch in nem Startscript stehen. Hm, dann stellt sich natürlich die Frage: Wieso funktioniert es nicht mit HAL ordentlich zusammen? Vielleicht gibts ja doch noch nen Teil 3 :-)

Mit der Option "Option "AutoAddDevices" "no"" wird der HAL support deaktiviert. Da kannste die hal config für deine Input Devices auf gleich löschen :) bzw X ohne hal USEflag compilen,

Ok, ich benutze zwar Ubuntu Hardy, habe aber ebenfalls meine Config auf hal umgestellt. Hier das komplette Listing der 10-x11-input.fdi, die bei mir Touchpad, Maus und Tastatur konfiguriert.

[Edit: entfernt, deine Comment Funktion scheint HTML Tags zu interpretieren... :-/]