マルチタッチイベントをアプリケーションに伝播する

マルチタッチイベントをアプリケーションに伝播する

私の目標は、標準ライブラリを使用してジェスチャを認識し、それらのイベントを 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 は入力イベントのジオメトリを記録するため、これが解決策になると思います。

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

関連情報