Läuft eure Maus auch gerne einmal Amok? Nicht, dass der digitale Nager zu den Waffen greifen würde, aber das System registriert beispielsweise einfache Mausklicks gerne als Doppelklick? Oder Doppelklicks auf ein Wort markieren gleich den kompletten Absatz, werden also als Dreifachklicks erkannt. Mit einem Mausklick auf die Fensterleiste maximiert ihr das Fenster: Und so weiter und so fort. Diese Unregelmäßigkeiten treiben mich aktuell auf meinem Hauptsystem in den Wahnsinn. Kann man sich auf eine ordentliche Erkennung von Mausklicks nicht verlassen, werden Bildbearbeitung, Texte schreiben, Drag&Drop-Aktionen zur Qual. Zahlreiche Linuxer klagen über dieses Problem, Abhilfe schafft eventuell ein Patch, der es seit Jahren nicht in den Xserver schafft.
Schaut man sich im Netz ein wenig nach Suchbegriffen wie Mouse Double Click um, dann findet man schnell heraus, dass man mit diesem Problem nicht alleine dasteht. Schuld daran ist oft einfach nur eine schrottige und verranzte Maus, doch meine Logitech Anywhere MX ist gerade mal ein Jahr und ein paar Monate alt und das Problem tritt schon bei einem zweiten baugleichen Modell auf. Ich hatte auch schon Interferenzen mit den USB 3.0 Ports in Verdacht, doch egal in welchen USB-Port des Rechners ich diesmal den 2,4-GHz-Receiver der schnurlosen Maus stecke, das Verhalten bleibt seit einigen Monaten gleich: Der Mauszeiger fährt präzise über den Bildschirm, doch Mausklicks möchte das System einfach nicht sauber registrieren.

Schränkt man die Suche nach dem Problem auf Linux oder Ubuntu ein, lichtet sich der Nebel langsam: Der Suchbegriff Ubuntu Debounce Mouse führt nicht nur zu diversen Beiträgen auf Ask Ubuntu oder Launchpad, zum Teil sind die Beiträge schon Jahre alt, sondern auch zum Blog von Guntram Blohm. Er beschreibt exakt dasselbe Auto-Doubleclick-Problem, das bei ihm nicht nur mit einer Billig-Maus auftritt, sondern an einem zweiten Rechner auch bei einer teuren Gamer-Maus passiert.
Das Gute: Er hat einen Patch ausgegraben, mit dem sich das Problem halbwegs abstellen lässt, indem der Xserver nach einem Mausklicks für einen kurzen Moment keine weiteren Klicks mehr registriert — trotz des Alters von 4 Jahren funktioniert der Patch auch mit einem aktuellen Xserver. Aufgrund der mit der Implementation des Patches in den Quellcode nötigen Arbeit und Testaufwände, fand sich jedoch bisher kein Xserver-Entwickler, der den Patch in den Quellcode aufnehmen mochte.
Das Linux-Debouncing-Problem
Erst einmal solltet ihr prüfen, ob ihr wirklich von dem Auto-Doubleclick-Problem betroffen seid — Ich denke, ihr werdet es wissen, aber man kann das wirklich auch gut austesten. Ruft dazu xev auf und schaut euch die ButtonRelease-Events beim Klicken mit der Maus an. Erscheinen bei einem Mausklick oder beim Gedrückthalten der Maus (um Drag&Drop zu simulieren) zwei oder mehr Zeilen im Terminalfenster, dann erzeugt eure Maus bei einem Klick mehr als nur einen Event; ergo registriert das Betriebssystem einen (hier nicht gewünschten) Doppelklick.

$ xev | grep ButtonRelease
ButtonRelease event, serial 36, synthetic NO, window 0x1e00001,
ButtonRelease event, serial 36, synthetic NO, window 0x1e00001,
[...]Unter Arch lässt sich der Patch über xf86-input-evdev-debounce sehr leicht aus dem AUR installieren. Hinweise für das Bauen des Patches aus dem Quellcode findet ihr beispielsweise jedoch auch bei Guntram. Beim Einspielen werden ihr feststellen, dass das Paket mit xf86-input-evdev im Konflikt steht, da ihr ja die gepatchte Version haben wollt, müsst ihr das ursprüngliche Paket deinstallieren. Danach sollte die Installation eigentlich problemlos durchlaufen. Damit das neue Eingabemodul aktiv wird, müsst ihr euch danach einmal aus- und wieder neu einloggen — oder gleich den Rechner einmal neu starten.
$ pacaur -S xf86-input-evdev-debounce
:: Paket(e) xf86-input-evdev-debounce wurde in den offiziellen Paketquellen nicht gefunden, suche im AUR...
:: Löse Abhängigkeiten auf...
:: Suche nach Zwischenkonflikten...
:: xf86-input-evdev-debounce und xf86-input-evdev stehen in Konflikt (xf86-input-evdev). Entferne xf86-input-evdev? [j/N]Danach müsst ihr die ID des betroffenen Eingabegeräts herausfinden. Schmeißt dazu wieder ein Terminal an und lasst euch von xinput alle am System angeschlossenen Eingabegeräte ausgeben. In meinem Fall hat die „Logitech Anywhere MX“ die ID 9 zugewiesen bekommen — diese nutze ich jetzt in den weiteren Beispielen. Mit dieser ID könnt ihr die registrierten Klicks nun noch besser testen. Gebt dazu den nächsten Befehl ein (vergesst nicht die ID anzupassen) und führt ihn aus. Pro Mausklick (ohne Unterscheidung zwischen links und rechts) zählt das Kommando einen Zähler hoch, mit [Strg]+[C] brecht ihr das Kommando wieder ab.
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
[...]
⎜ ↳ Logitech Anywhere MX id=9 [slave pointer (2)]
⎜ ↳ Logitech K800 id=10 [slave pointer (2)]
[...]
$ xinput test 9 | awk 'BEGIN { count=0 } /release/ { count=count+1; printf "\r%-6d", count }'
1.....10....xxxMit der ID könnt ihr euch nun an den eigentlich Patch machen. Mit xinput --list-props [id] bekommt ihr die aktuelle Verzögerung als „Evdev Debounce Delay“ zusammen mit einer Property-Nummer angezeigt. Mit diesen Informationen übergibt ihr Xinput mit --format=32 [ID] [Property-ID] [Verzögerung] das von euch gewünschte Zeitfenster, in dem keine Mausklicks registriert werden sollen. Ob das Kommando Erfolg hatte, könnt ihr umgehend testen, indem ihr euch wieder das Debounce Delay anzeigen lasst. Den richtigen Wert müsst ihr durch ausprobieren herausfinden. Tragt ihr einen zu hohen Wert ein, registriert das Systeme auch schnelle „echte“ Doppelklicks nicht mehr.
$ xinput --list-props 9 | grep Debounce
Evdev Debounce Delay (287): 50
$ xinput --set-prop --type=int --format=32 9 287 80
$ xinput --list-props 9 | grep Debounce
Evdev Debounce Delay (287): 80Wenn die Maus zweimal klickt
Die nun getroffenen Einstellungen sind nicht fest im System verdrahtet. Spätestens beim nächsten Neustart müsstet ihr das Kommando wieder neu eingeben. Um das zu vermeiden, könnt ihr in der Konfigurationsdatei ~/.xprofile oder global in der zu erstellenden Datei /usr/share/X11/xorg.conf.d/12-evdev-debounce.conf das gewünschte Debounce Delay eintragen. Die erste Variante gilt nur für euren Benutzer, die Zweite würde das Delay systemweit und somit für alle Nutzer des Systems automatisch beim Starten des Rechners einrichten.
Section "InputClass"
Identifier "evdev pointer debounce"
MatchIsPointer "on"
MatchDriver "evdev"
Option "DebounceDelay" "80"
EndSectionSollte euch der Patch stören oder nicht mehr notwendig sein, dann installiert einfach wieder nur das ursprüngliche Input-Modul xf86-input-evdev und löscht die ~/.xprofile aus eurem Homeverzeichnis oder die systemweit gültige Konfigurationsdatei 12-evdev-debounce.conf aus /usr/share/X11/xorg.conf.d. Bei der Neuinstallation von Xf86-input-evdev entfernt die Paketverwaltung — zumindest unter Arch — automatisch wieder das gepatchte Paket. Nach einem Neustart des Xservers ist dann automatisch wieder alles beim Alten.
$ pacman -S xf86-input-evdev
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...
:: xf86-input-evdev und xf86-input-evdev-debounce stehen miteinander in Konflikt. xf86-input-evdev-debounce entfernen? [j/N]




Schreibe einen Kommentar