我的目标是使用标准库来识别手势并在 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 手势编程以及我相信将提供的命令和外部库的文章。对你有用。
这就是 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 记录输入事件的几何形状。
我希望这有帮助!