我的目標是使用標準函式庫來識別手勢並在 Java 8 中使用這些事件。
我使用帶有 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 手勢編程以及我相信將提供的命令和外部庫的文章。有用。
這就是 xorg-multitouch 擴充的歷史。它涉及手勢編程,並引用了uTouch 手勢程式設計項目。
這兩篇資訊豐富的文章是很好的原始資料,應該可以讓您了解當今技術的現狀。
$> xinput --list
上述命令將列出您的 xInput 裝置。
您可以在應用程式中實現所需的手勢功能,但也有一些選項(例如 uTouch 手勢編程項目)也可以填補這一空白。
就從設備讀取輸入而言,我可以推薦兩個包之一。
$> xev --display :0 -id $WINDOW_ID >> to.file
- [--display] 是你的 xserver 顯示#(我的是:0)
- [id] 是您的視窗 ID #(可以透過 $> wmctrl -lG 等指令取得)
上面的標題是一個 Python 腳本,它執行相同的操作,但列印輸入事件。我相信 XEV 將是您的解決方案,因為 XEV 記錄輸入事件的幾何形狀。
我希望這有幫助!