Die Trackpad-Unterstützung unter Linux Desktop liegt weit unter der unter Mac und Windows.
Mac-Trackpad-Gesten haben inzwischen eine beachtliche Staatsbürgerschaft erlangt, und natürliches Scrollen, das das Trackpad in die entgegengesetzte Richtung der Fingerbewegung bewegt, ist jetzt auf einer Vielzahl von Betriebssystemen verfügbar, einschließlich Linux.
Selbst unter Windows wurde die Handhabung von Gesten im Vergleich zu Windows 10 verbessert, und obwohl dies nicht perfekt ist, kann es wie ein Macbook betrieben werden.
In der Vergangenheit wurde Synaptics (das leicht mit dem GUI-Paketmanager Synaptic verwechselt werden kann) zur Steuerung von Geräten wie Linux-Trackpads und -Mäusen verwendet. In den letzten Jahren verwendet Ubuntu jedoch seit dem 15.04. Von Wayland abgeleiteten Libinput. Darüber hinaus wechselt die Synaptik von nun an in den Wartungsmodus und wird nicht aktiv weiterentwickelt.
Sie können libinput mit Xorg verwenden, auch wenn Sie nicht in Wayland sind. Wenn Sie unter Ubuntu auf Xorg anstelle von Wayland ausgeführt werden, verwenden Sie libinput anstelle von synaptics, indem Sie xf86-input-libinput verwenden.
https://wayland.freedesktop.org/libinput/doc/latest/what-is-libinput.html#libinput-and-x-org
Außerdem hat Gnome (Wayland) im neuesten Ubuntu 19.10 Gestenunterstützung hinzugefügt, die jedoch immer noch unzureichend ist.
Was kann ich tun, um mit Gesten umgehen zu können?
Betrachten Sie jeden dieser Faktoren.
Installieren Sie libinput-tools, um die Trackpad-Eingabe zu lesen. https://wayland.freedesktop.org/libinput/doc/latest/tools.html
$ sudo apt-get install libinput-tools
libinput debug-events
spuckt Geräteeingabeinformationen an die Standardausgabe aus.
-event2 DEVICE_ADDED Sleep Button seat0 default group5 cap:k
-event17 DEVICE_ADDED DLL075B:01 06CB:76AF Touchpad seat0 default group7 cap:pg size 101x57mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on
-event4 DEVICE_ADDED AT Translated Set 2 keyboard seat0 default group13 cap:k
event17 POINTER_MOTION +1.17s 1.22/ 0.00
event17 POINTER_MOTION +1.18s 1.22/ 1.22
event17 POINTER_MOTION +1.18s 1.22/ 0.00
-event4 KEYBOARD_KEY +2.56s *** (-1) pressed
event4 KEYBOARD_KEY +2.67s *** (-1) released
Sie können Geräteverbindungsinformationen, Zeigerbewegungsinformationen auf dem Trackpad und Tastatureingaben (maskiert) abrufen.
Wenn Sie mit drei Fingern wischen, erhalten Sie die folgenden Ergebnisse.
-event17 GESTURE_SWIPE_BEGIN +296.35s 3
event17 GESTURE_SWIPE_UPDATE +296.35s 3 6.14/-0.28 (24.06/-1.09 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.36s 3 8.06/-0.81 (21.87/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.36s 3 7.71/-0.81 (20.78/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.37s 3 6.09/-0.81 (16.40/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.38s 3 4.06/-0.41 (10.94/-1.09 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.38s 3 6.49/-0.81 (17.50/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.39s 3 4.06/-0.41 (10.94/-1.09 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.40s 3 2.84/ 0.00 ( 7.66/ 0.00 unaccelerated)
event17 GESTURE_SWIPE_END +296.41s 3
Eine Zeile von GESTURE_SWIPE_UPDATE + 296.40s 3 2.84 / 0.00
enthält den Gesten-Typ, die Anzahl der Finger und die zurückgelegte Strecke.
Mit libinput-debug-events können Sie problemlos Geräteereignisse, Swipe-Ereignisse, Pinch-Zoom und andere Ereignisse abrufen. (Es gibt auch eine C-API für libinput, die diesmal jedoch nicht verwendet wird.)
Darüber hinaus können Sie in Synaptics von Ubuntu 14.10 oder früher das Protokoll des Trackpads mit dem Befehl "synclient -m" anzeigen. Es gibt jedoch keine Ausgabe, z. B. ein Swipe-Ereignis, und in der neuesten Synclient-Option wurde die Option -m gelöscht, sodass Sie das Ereignis nicht abrufen können. Es gibt.
GESTURE_SWIPE_UPDATE +296.40s 3 2.84/ 0.00
Indem diese eine Linie als Ereignis behandelt und der Durchschnittswert der Bewegungsentfernungen der Ereignisse mehrerer Linien erfasst wird, kann bestimmt werden, welche sich bewegt. GESTURE_SWIPE_END Es wäre schön, den Durchschnittswert der Reisedistanz zu ermitteln, bevor Sie kommen.
Übrigens, wenn Sie berechnen, ist der Durchschnittswert des Bewegungsbetrags x = 5,68125, y = -0,5425, was bedeutet, dass er sich nach rechts bewegt.
Sie können sehen, dass er drei Finger nach rechts wischte.
Wenn Sie wissen, dass Sie geklaut haben, wie sieht Ihre Geste dann aus, als würden Sie die GUI manipulieren? Wenn Sie wischen, soll sich der Bildschirm schnell bewegen. Am einfachsten ist es, eine vorhandene Tastenkombination aufzurufen.
Xdotool ist praktisch zum Aufrufen von Tastenkombinationen. xdotool kann Tastatureingaben und Mausbedienungen emulieren. http://manpages.ubuntu.com/manpages/trusty/man1/xdotool.1.html
Es gibt normalerweise Tastenkombinationen zum Verschieben des Arbeitsbereichs. Wenn Sie diese also mit xdotool-Befehlen ausdrücken,
$ xdotool key ctrl + alt + Up
$ xdotool key ctrl + alt + Down
Auch der Betrieb des Browsers ist der gleiche.
$ xdotool key alt + Left
$ xdotool key alt + Right
Auf diese Weise können Befehle zum Emulieren von Arbeitsbereichsoperationen und Browser-GUI-Operationen verwendet werden. (Tatsächlich können Sie ein intuitiveres Feedback erhalten, indem Sie den Arbeitsbereich synchron mit der Bewegungsentfernung der Geste in Pixeleinheiten verschieben. Da dies jedoch von der Implementierung auf WM- und Anwendungsseite abhängt, reicht es diesmal aus, die Tastenkombination zu emulieren. )
Grundsätzlich werden die folgenden Inhalte einfach ausgeführt, während eine Schleife nacheinander ausgeführt wird.
Lesen Sie die Geräteeingabe, bestimmen Sie die Gesten und rufen Sie den Befehl (xdotool) auf. Sie müssen diese nur weiter schleifen.
Ich habe Fusuma (https://github.com/iberianpig/fusuma) erstellt, eine Software von Ruby, die Gesten anhand des Libinputs erkennt. Ich habe auch schon einmal ein Perl-Skript (https://github.com/iberianpig/xSwipe) für synaptic geschrieben. Einschließlich dieser ist dies die zweite Arbeit.
In der Abbildung sieht es wie folgt aus.
Es macht so etwas wie ereignisgesteuerte Programmierung und schleift Folgendes für Benutzeroperationen.
Es ist eine laufende Bildschirmaufnahme, daher kann ich sie nicht sehen. Bitte installieren Sie es und probieren Sie es aus.
Wenn Sie Ruby schreiben können, können die Dispatcher- und Event-Handler-Teile auch mit Gem erweitert werden, sodass Sie auch Tap-, Stylus- und Tastaturereignisse erhalten können, sodass Sie in der Lage sein sollten, verschiedene Dinge zu tun. Ich habe [Dispatcher, der das Ereignis "Tastendruck + Wischen" erkennt] geschrieben (https://github.com/iberianpig/fusuma-plugin-keypress).
Es ist im täglichen Leben unverzichtbar geworden und hängt vom Grad der Probleme ab, wenn Fusuma ausgeschaltet wird, z. B. das Wechseln des Arbeitsbereichs, das Zurückgeben des Browsers und das Fortfahren.
Wenn es sich in Zukunft um Wayland handelt und Sie eine Erweiterung von Gnome Shell schreiben, können Sie Ereignisse mit Javascript empfangen, sodass der Schwellenwert relativ niedrig ist.
Ich erkannte, dass ich verschiedene nützliche Funktionen erstellen könnte, wenn ich frei mit Geräteeingaben umgehen könnte. Wenn Sie das Ereignis aufnehmen können, können Sie es mit verschiedenen Aktionen wie dieser Zeit verknüpfen Ich habe das Gefühl, mit einer Webkamera Handgesten, Gesichtsgesten usw. machen zu können. Benachrichtigung, dass die Haltung schlecht ist. Brauchst du es nicht
Ich möchte weiterhin vertraute und kleinere Probleme finden und sie stetig lösen.
Recommended Posts