Sehen Sie sich Treiber an, keine Anwendungen
Sie werden kein Programm finden, das dies ausführt. Aufgrund dieser drei Arten von Touchpads versucht der Treiber, eine einzige Darstellung für Anwendungen zu abstrahieren:
- Touchpads, die absolute Positionsdaten melden, werden vom Xorg-Treiber in relative Bewegungen für die Anwendungen übersetzt. Eine normale Anwendung kann nicht direkt mit dem Touchpad kommunizieren (vom Design her), daher muss im Treiber wirklich nach einer Lösung gesucht werden.
- Touchpads, die sowohl relative als auch absolute Modi unterstützen, müssen zwischen den Modi umgeschaltet werden. Dies ist sehr hardwarespezifisch und nicht anwendungsspezifisch.
- Einige einfachere Touchpads können die absoluten Positionen nicht mehr anzeigen.
Leider können Sie mit den meisten Touchpad-Treibern nicht alle absoluten Werte in Linux-Anwendungen anzeigen, selbst wenn Sie über ein Touchpad verfügen. Die absoluten Daten sind wirklich da, da der Fahrer erkennen kann, ob Sie sie beispielsweise zum Scrollen an den Rändern berühren. Testen Sie dies selbst mit evtest
einem virtuellen Terminal (um X auszusetzen). Mein Synaptics-Touchpad meldet die absoluten Positionen wie folgt:
Event type 3 (EV_ABS)
Event code 0 (ABS_X)
Value 3332
Min 1472
Max 5648
Fuzz 8
Resolution 39
Event code 1 (ABS_Y)
Value 2017
Min 1408
Max 4806
Fuzz 8
Resolution 79
Die Fähigkeit, ein Synaptics-Gerät in Xorg tatsächlich in den absoluten Modus zu versetzen, wurde kürzlich durch dieses Commit im xf86-input-synaptics
Treiber entfernt:
Remove absolute mode
Moving a touchpad in absolute mode is unusual - touchpads are disconnected
from the output device, so direct interaction is hard. There appears to be
little usage of it (I haven't seen bug reports from people claiming to use
it). Joe Shaw, author of the code and only known user doesn't have a use for
it anymore, so purge it from the repo.
Systemweiter Basistreiber: evdev
Die einzige Möglichkeit, wie ich dies derzeit unter Linux sehe, ist die Verwendung des evdev
Treibers in Xorg. Es wurde bereits 2010 auf der Xorg-Mailingliste besprochen (ein Auszug unten):
Ich muss die absolute Position eines Fingers auf dem Touchpad ermitteln und nicht nur die relative Bewegung.
Der Synaptics-Treiber tut dies nicht, der Evdev-Treiber jedoch. Sie müssen also Ihren X-Server so konfigurieren, dass stattdessen der evdev-Treiber für das Touchpad verwendet wird. Das folgende Konfigurations-Snippet erledigt dies für Sie, sofern Sie Server 1.8 oder höher ausführen.
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Speichern Sie dies als /etc/X11/xorg.conf.d/99-evdev-touchpad.conf
und starten Sie den Server neu. Beachten Sie, dass dies nur das Verhalten des Touchpads selbst ändert, nicht die Daten in den Ereignissen, aber diese Daten sind trotzdem immer absolut. Wenn Sie evdev anstelle von Synaptics verwenden, verlieren Sie auch die Möglichkeit, mit zwei Fingern zu scrollen, zu tippen usw.
Fazit: Erstellen Sie eine Funktionsanforderung
Ich sehe Platz für eine Feature-Anfrage im Upstream-Bugtracker für den Synaptics-Treiber (und möglicherweise für andere). Es wäre sehr nützlich, eine Schnittstelle in Xorg zu haben, um die absoluten Positionswerte des Touchpads lesen zu können. Die Hauptblocker, die ich sehe, sind, dass dies sehr hardwarespezifisch und daher schwer zu implementieren sein könnte.
Ich denke, ein Gespräch mit Joe Shaw und Peter Hutterer könnte auch von großem Wert sein, um zu sehen, wie die Geschichte genau aussieht, wie man daraus eine großartige Feature-Anfrage macht und was man von ihr erwartet.