Auf der Suche nach einer Möglichkeit zur Verbesserung der Erkennung von synaptischen / Touchpad-Handflächen

17

Ich finde die Handflächenerkennung meines Touchpads ziemlich schrecklich. Ich habe die Mindestempfindlichkeit gewählt, um die Nutzung meines Touchpads nicht zu beeinträchtigen (PalmMinWidth = 5, PalmMinZ = 1), und es treten immer noch zufällige Unebenheiten auf, wenn ich auf meiner Tastatur tippe.

Ich würde lieber die Handflächenerkennung verwenden, als die Tastatur während des Tippens zu deaktivieren, da ich feststelle, dass die Tastatur zu lange deaktiviert ist (dh ich bin mit dem Tippen fertig und muss 2 Sekunden warten, bevor ich die Tastatur wieder benutze, was ärgerlich ist). . Eine mögliche Strategie wäre es, diese Verzögerung zu verringern, obwohl ich nicht sicher bin, ob das Touchpad weiterhin verwendet werden kann (wenn Sie wissen, wie das geht, posten Sie es besser als nichts :).

Wenn ich Windows verwende, habe ich weniger Probleme mit dem Touchpad. Muss es also eine Möglichkeit geben, die Handflächenerkennung zu verbessern?

Zuletzt starte ich Debian, um 64-Bit auf Linux-Kernel 3.2.0-rc7 zu testen.

levesque
quelle
Diese Frage ist ein Duplikat einer Frage, die ich 2011 auf SuperUser beantwortet habe. Ich habe unter Unix und Linux Stack Exchange nicht den Ruf, als Dupe zu kennzeichnen. superuser.com/questions/277427/…
downbeat

Antworten:

17

Ich hatte ähnliche Probleme und fand die Antwort in diesem Blog ziemlich vollständig und habe die relevanten Details überschrieben:

Einrichten der Handflächenerkennung:

Aktivieren Sie die Handflächenerkennung in einem Terminaltyp:

$ synclient PalmDetect=1

Legen Sie die maximale Breite fest, die als Finger statt als Handfläche interpretiert werden soll. Ich wähle 4, die meisten Anleitungen verwenden 10, es ist gut, hier ein bisschen zu raten und zu testen:

$ synclient PalmMinWidth=4

Stellen Sie dann die Mindesthöhe einer Handfläche gegen einen Finger ein:

$ synclient PalmMinZ=50 

Schließlich ist unter Ubuntu der 3-Finger-Mittelklick standardmäßig nicht aktiviert. Wenn Sie ihn also aktivieren möchten, verwenden Sie:

$ synclient TapButton2=3 TapButton3=2

Theoretisch sollte dies 2-Finger-Tippen für den mittleren Klick und 3-Finger-Tippen für den rechten Klick ermöglichen, aber in Ubuntu 13.04 ist das resultierende Verhalten genau das Gegenteil. Daher, wenn Sie 2-Finger-Tipp für Mittelklick bevorzugen, verwenden Sie:

$ synclient TapButton2=2 TapButton3=3 

Um dies zu dauerhafte , wenn Sie die richtigen Einstellungen gefunden haben, speichern Sie sie in 50-synaptics.confdie an befindet sich /usr/share/X11/xorg.conf.d/50-synaptics.confin Debian / Ubuntu (Semplice) und /etc/X11/xorg.conf.d/50-synaptics.confin Arch Linux basierten Distributionen, (der erste „InputClass“ Teil ist für den Multi-Touch - Mitte Klick fix , der in Arch bereits aktiviert ist, so dass Sie ihn nicht hinzufügen müssen):

Section "InputClass"
    Identifier "touchpad catchall"
    Driver "synaptics"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "TapButton1" "1"
    Option "TapButton2" "2"
    Option "TapButton3" "3"
    Option "HorizTwoFingerScroll" "on"
    Option "VertTwoFingerScroll" "on"
EndSection


#synclient PalmDetect=1
Option "PalmDetect" "1"
#synclient PalmMinWidth=4
Option "PalmMinWidth" "4"
#synclient PalmMinZ=50
Option "PalmMinZ" "50"

Vorübergehendes Ausschalten des Touchpads während der Eingabe:

Verwenden Sie anstelle von synclient-Befehlen syndaemon:

$ syndaemon -K -i 0.5 -R -d 

Das Arch-Wiki behauptet, dass dieser Befehl, wenn Sie ihn in Ihrer ~/.xinitrcDatei speichern, bei Ihrem nächsten Login automatisch ausgeführt wird. Dabei war mir jedoch nicht bewusst, dass der Befehl vor dem Start des Desktops ( exec DESKTOP.sessionBefehl) ausgeführt werden muss. Nachdem ich mit einer Tonne anderer Konfigurationsdateien herumgespielt und eine Tonne über den SLiM-Display-Manager gelernt hatte, wurde mir endlich klar, dass der Befehl nur noch in der Datei nach oben verschoben werden musste, da Befehle nach dem Desktop-Start erst auf dem Desktop ausgeführt werden ist gekündigt.

virtualxtc
quelle
5

Ich habe die Möglichkeit gefunden, die Zeitspanne zu ändern, in der das Touchpad während der Eingabe deaktiviert ist. Für alle anderen da draußen, die es hier suchen, ist es:

Hinweis: Eine Google-Suche liefert die Antwort schnell genug

Führen Sie einfach das Programm aus syndaemon -dund fügen Sie als Option " -i wait_timewait_time" hinzu, wie lange gewartet werden muss, bevor das Touchpad wieder aktiviert wird. Weitere nützliche Parameter für syndaemon sind: -KDeaktivieren Sie das Touchpad niemals, wenn die Tastatureingaben den Formatmodifikator + die Taste haben, und -tdeaktivieren Sie nur Klicks und keine Mausbewegungen.

In meinem Fall habe ich einem Skript, das ich bei der Anmeldung ausführe, Folgendes hinzugefügt:

#Get rid of previous syndaemon
killall syndaemon
#More aggressive behavior, allow for mod+key combos, enable mouse movements
syndaemon -i 0.2 -K -t -d

Mit all diesen Modifikationen, insbesondere der -tFlagge, kann ich mit dem Touchpad so leben, wie es jetzt ist!

levesque
quelle
Ich finde, ich brauche -t mindestens (-t Deaktiviere nur Tippen und Scrollen, keine Mausbewegungen, als Reaktion auf Tastaturaktivitäten) oder ich bin verrückt geworden. Ich bin auf Fedora 16. Wie machst du deine Änderungen dauerhaft?
Philip Durbin
@PhilipDurbin Ich habe sie in ein Skript eingefügt, das beim Booten aufgerufen wird (mit gnome-session-properties), aber ich muss es für jeden Benutzer tun. Die traditionellere Methode besteht darin, sie in eine xorg.conf-Datei einzufügen, aber ich konnte keine Möglichkeit finden, die syndaemonOptionen darin festzulegen, sondern nur die synclientOptionen.
Levesque
3

Ich besitze einen modernen Laptop mit einem großen Touchpad und die Hälfte der Zeit saß meine rechte Handfläche am Rand und machte während der Eingabe falsche Klicks. Die synclient PalmDetect = 1-Methode hat bei mir nicht funktioniert (egal, auf was ich PalmMinWidth und PalmMinZ eingestellt habe). Vielleicht war es die Tatsache, dass meine Handfläche das Pad von rechts berührte und die Handflächenerkennung möglicherweise von oben darauf prüfte. Ich weiß es nicht genau.

Ich habe das Problem gelöst, indem ich eine Totzone am rechten Rand gemacht habe. Das ist wie man es macht:

synclient 

geben Sie die aktuellen Einstellungen des Touchpads. Interessant sind hier die Ergebnisse:

LeftEdge                = 1572
RightEdge               = 5370
TopEdge                 = 1376
BottomEdge              = 4480

Offensichtlich variieren die Zahlen je nach Hardware. Suchen Sie nach der gewünschten Kante. In meinem Fall war es die richtige Kante. Ich wählte eine Menge, die ich rasieren wollte. Sie möchten die kleinste Zahl abschneiden, mit der Sie davonkommen können, während Sie immer noch falsche Klicks von Ihrer Handfläche abwehren. Ein sehr einfacher Test wäre, ein anklickbares Bild im Web zu finden, die Maus über die Mitte zu bewegen und die Handfläche dort abzulegen, wo Sie normalerweise tippen würden. Um das Tippen zu simulieren, klopfen Sie (leicht!) Auf die Kante des Touchpads mit dem Teil Ihrer Handfläche, der beim Tippen normalerweise darüber hinausragt. Wenn Sie Klicks bekommen, wissen Sie es sofort. Es wird Versuch und Irrtum sein, spielen Sie weiter damit, bis Sie den Sweet Spot erreicht haben. In meinem Fall hat das Abschneiden von 30 den Trick gemacht:

synclient AreaRightEdge=5340

Um die anderen Kanten zu ändern, ändern Sie AreaBottomEdge, AreaLeftEdge oder AreaTopEdge. Wenn Sie diese Werte auf 0 zurücksetzen, werden sie deaktiviert.

thebunnyrules
quelle
In der Manpage wird erwähnt, dass die Handflächenerkennungsfunktion Hardware-Unterstützung benötigt. Ich fand Diskussionen, in denen Leute über Touchpads diskutierten, die theoretisch Hardware-Unterstützung haben, aber in der Praxis einfach nicht funktionierten. Also habe ich es versucht PalmDetect=1, konnte es aber nicht zum Laufen bringen. Ich stellte die Parameter so ein, dass alle Eingaben als zufällige Handflächenschläge hätten behandelt werden sollen, aber alle Eingaben gingen noch durch. Mein Touchpad unterstützt es also nicht oder ist fehlerhaft. Am Ende habe ich die Area...EdgeParameter verwendet, um den Bereich von meinem Touchpad zu entfernen. Und das hat funktioniert.
Louis