アプリケーションへのマルチタッチイベントの伝播

アプリケーションへのマルチタッチイベントの伝播

私の目標は、標準ライブラリを使用してジェスチャーを認識し、Java 8でこれらのイベントを使用することです。 Ubuntuにジェスチャー認識スタック(grail、geis)があることはわかっていますが、それを統合する方法をまだ理解していません。

私はEETI eGTouchドライバ(eGTouchDバージョン:2.5)と一緒にeGalaxTouchタッチフィルム(PCAP7200シリーズ)を使用しています。私のLinux Mint 17はこのデバイスをマウスとして認識します。

デバイスのイベントを読むと、/dev/input/eventXマルチタッチイベント(ABS_MT_SLOT, ABS_MT_TRACKING_ID, ABS_MT_POSITION_X, ABS_MT_POSITION_Y)が発生することがわかりました。

標準のLinux機能を使用してジェスチャーを検出し、これらのイベントをアプリケーション(私の場合はJavaFX2アプリケーション)に伝播できますか?または、アプリケーションがジェスチャーを認識する必要がありますか?これはLinuxライブラリが利用できないという意味ですか?

標準マウスに加えて、マルチタッチデバイス用の特別なデバイスタイプはありますか?

答え1

標準のLinuxライブラリにはジェスチャープログラミング技術は組み込まれていません。しかし、xinputデバイスで読むことができ、方法を紹介します。まず、xInputプログラミング履歴、Xジェスチャプログラミングに関するいくつかの記事をリンクします。そして私が信じているのは、コマンドと外部ライブラリに関する記事を提供します。それはあなたのために働きます。

LWN.Net Xinputマルチタッチ記録

これはxorg-multitouch拡張の歴史です。ジェスチャープログラミングを扱って引用します。uTouchジェスチャープログラミングプロジェクト

これら2つの有益な記事は素晴らしいソース資料であり、今日の技術がどこにあるかについてのアイデアを提供する必要があります。

XInput マニュアル

$> xinput --list

上記のコマンドは xInput デバイスをリストします。

アプリケーションで目的のジェスチャー機能を実装できますが、これらのギャップを埋めるオプション(uTouchジェスチャープログラミングプロジェクトなど)もあります。

デバイスから入力を読み取る限り、2つのパッケージのいずれかをお勧めします。

XEV は xInput からイベントを読み込みます。

$> xev --display :0 -id $WINDOW_ID >> to.file
  • [--display]はxserverディスプレイ#です(私は:0)。
  • [id]はウィンドウID#です($> wmctrl -lGなどのコマンドで取得できます)。

Key-Mon は xInput からイベントを読み込みます。

上記のタイトルは同じことを行いますが、入力イベントを印刷するPythonスクリプトです。 XEVは入力イベントの幾何学的構造を記録するので、XEVはソリューションになると信じています。

これが役立つことを願っています!

関連情報