將多點觸控事件傳播到應用程式

將多點觸控事件傳播到應用程式

我的目標是使用標準函式庫來識別手勢並在 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 手勢編程以及我相信將提供的命令和外部庫的文章。有用。

LWN.Net Xinput 多點觸控歷史

這就是 xorg-multitouch 擴充的歷史。它涉及手勢編程,並引用了uTouch 手勢程式設計項目

這兩篇資訊豐富的文章是很好的原始資料,應該可以讓您了解當今技術的現狀。

X輸入手冊

$> xinput --list

上述命令將列出您的 xInput 裝置。

您可以在應用程式中實現所需的手勢功能,但也有一些選項(例如 uTouch 手勢編程項目)也可以填補這一空白。

就從設備讀取輸入而言,我可以推薦兩個包之一。

XEV 從 xInput 讀取事件

$> xev --display :0 -id $WINDOW_ID >> to.file
  • [--display] 是你的 xserver 顯示#(我的是:0)
  • [id] 是您的視窗 ID #(可以透過 $> wmctrl -lG 等指令取得)

Key-Mon 從 xInput 讀取事件

上面的標題是一個 Python 腳本,它執行相同的操作,但列印輸入事件。我相信 XEV 將是您的解決方案,因為 XEV 記錄輸入事件的幾何形狀。

我希望這有幫助!

相關內容