有没有办法在不明确指定确切输入设备的情况下使用触摸屏?
让我深入解释...
我的主机有许多输入设备:
$ ls -al /dev/input/
drwxr-xr-x 2 root root 200 Jul 11 16:09 .
drwxr-xr-x 11 root root 4580 Jul 10 15:31 ..
crw-rw-rw- 1 root root 13, 64 Jan 1 1970 event0
crw-rw-rw- 1 root root 13, 65 Jan 1 1970 event1
crw-rw-rw- 1 root root 13, 66 Jan 1 1970 event2
crw-rw-rw- 1 root root 13, 95 Jan 1 1970 event99
crw-rw---- 1 root root 13, 63 Jan 1 1970 mice
crw-rw---- 1 root root 10, 223 Jan 1 1970 uinput
这些输入设备之一(通常是 event2)是通过 USB 连接的触摸屏。我的问题是...
- eventX 设备可能并不总是 event2
- 触摸屏可能会被拔出并再次插入(这将导致不同的 eventX 设备)并且触摸屏应该可以再次工作而无需重新启动应用程序
- USB 主机可能偶尔会进行重置(由于其他问题),从而导致 USB 断开连接和 USB 重新连接触摸屏
该应用程序是一个以全屏模式运行的 Qt 嵌入式 4.7 应用程序,使用tslib作为触摸屏驱动程序。
对于另一个有类似问题的项目,我已经编写了一个小守护程序(我称之为“eventbundler”),它从所有 /dev/input/eventX 设备读取数据并将数据发送到命名管道(FIFO)。但是,tslib 不会接受该 fifo 作为输入设备 ( QWS_MOUSE_PROTO=tslib:/dev/input/eventbundler-mouse
) - 可能是因为查询设备功能的 IOCTL 不起作用(它显示为“ selected device is not a touchscreen I understand
”)。
无论如何,我需要的是tslib应该以某种方式自动检测触摸屏设备并从中读取,即使已经拔掉了一会儿。
有什么提示吗?
如果有任何帮助,我愿意更改 Qt 源代码。