Mein Ziel ist es, Standardbibliotheken zur Gestenerkennung zu verwenden und diese Ereignisse mit Java 8 zu nutzen. Ich weiß, dass es einen Gestenerkennungsstapel für Ubuntu (Grail, Geis) gibt, aber ich habe noch nicht verstanden, wie ich das alles zusammenbringen kann.
Ich verwende eine eGalaxTouch-Touchfolie (PCAP7200-Serie) mit einem EETI eGTouch-Treiber (eGTouchD-Version: 2.5). Mein Linux Mint 17 erkennt dieses Gerät als Maus.
Ich habe die Ereignisse des Geräts ausgelesen /dev/input/eventX
und festgestellt, dass es Multi-Touch-Ereignisse ausgibt ( ABS_MT_SLOT, ABS_MT_TRACKING_ID, ABS_MT_POSITION_X, ABS_MT_POSITION_Y
).
Gibt es eine Möglichkeit, Gesten mit Standard-Linux-Funktionen zu erkennen und diese Ereignisse an eine Anwendung weiterzuleiten (in meinem Fall eine JavaFX2-Anwendung)? Oder muss ich Gesten innerhalb meiner Anwendung erkennen – was bedeutet, dass ich keine Linux-Bibliotheken verwenden kann?
Gibt es einen speziellen Gerätetyp für Multi-Touch-Geräte – außer der Standardmaus?
Antwort1
In den Standardbibliotheken von Linux ist die Technologie für gesturale Programmierung nicht integriert. Sie können jedoch von XInput-Geräten lesen und ich werde Ihnen zeigen, wie das geht. Zuerst werde ich Ihnen jedoch Links zu einigen Artikeln über die Geschichte der XInput-Programmierung, gesturale Programmierung für X und schließlich die Befehle und die externe Bibliothek bereitstellen, die Ihnen meiner Meinung nach nützlich sein werden.
LWN.Net Xinput Multi-Touch-Verlauf
Dies ist die Geschichte der xorg-multitouch-Erweiterung. Sie berührt die gesturale Programmierung und verweist auf dieuTouch Gestural Programming-Projekt.
Diese beiden informativen Artikel sind gutes Quellenmaterial und sollten Ihnen ein Verständnis für den aktuellen Stand der Technologie vermitteln.
$> xinput --list
Der oben betitelte Befehl listet Ihre xInput-Geräte auf.
Die von Ihnen benötigte Gestural-Funktionalität kann in Ihrer Anwendung erstellt werden, es gibt jedoch Optionen wie das uTouch Gestural Programming-Projekt, die diese Lücke ebenfalls schließen können.
Zum Lesen der Eingaben vom Gerät kann ich eines von zwei Paketen empfehlen.
$> xev --display :0 -id $WINDOW_ID >> to.file
- [--display] ist Ihre XServer-Anzeigenummer (meine ist :0)
- [id] ist Ihre Fenster-ID # (diese kann mit einem Befehl wie $> wmctrl -lG ermittelt werden)
Key-Mon Ereignisse aus xInput lesen
Das oben Beschriebene ist ein Python-Skript, das dasselbe tut, aber Eingabeereignisse druckt. Ich glaube, XEV ist die Lösung für Sie, da XEV die Geometrie von Eingabeereignissen aufzeichnet.
Ich hoffe das hilft!