我有一个具体的问题-我想识别输入事件的源设备在我的程序。让我们假设,我有两个相同的触摸屏连接到usb端口。我的程序正在抓取XButtonPressedEvent、XButtonReleaseEvent等,但是我希望在由第一个设备生成的事件和由第二个设备生成的事件之间表现不同。我希望将任何事件字段与设备描述符、设备xinput id、设备系统id或任何其他标识设备的字段匹配。
有可能实现吗?
如果是这样的话,我很感激你对如何做这件事的暗示。
向你问好,皮格!
发布于 2019-04-09 09:55:32
似乎旧的XInput扩展不支持这一点。您需要使用XInput2,它报告每个按钮的设备id。最初的作者在他的博客上发布了一个系列文章,解释了一些重要的方面(part1、part2、part3),还有一些完整的代码示例是可用的这里。由于xinput命令行实用程序支持这两个扩展,所以您可以查看它的源代码,特别是测试_xi2.c,以了解如何使用XInput2。
xinput_calibrator使用旧的XInput版本(参见这里)。虽然您可以尝试并行使用XInput2,YMMV,因为在这里描述的两个版本的互操作性方面有一定的限制。
然而,由于众所周知xinput_calibrator做的是转换矩阵的计算不佳,所以有人编写了一个小的python3脚本(xcal)来校准触摸屏。它比xinput_calibrator简单得多,因此更容易适应您的需求。另外,python3-xlib库(在ubuntu的存储库中可用)默认使用XInput2 (如果可用的话),因此每个按钮按下事件都将包含源设备id。
https://askubuntu.com/questions/1130940
复制相似问题