我需要构建一个简单的应用程序,它只接受来自4个USB鼠标和笔记本电脑内置触摸板的点击输入。我希望在Linux操作系统下运行这个应用程序。
你有什么想法可以帮助我在应用程序中识别哪个鼠标发出了点击信号吗?我可以使用C编程或其他任何方法。这是一个简单的、一次性的项目,所以不需要太复杂。
就我个人而言,我想我找到了我的问题的答案。
Bobince提到xorg让我查看/etc/X11/xorg.conf
。那里充满了像这样的注释:
# commented out by update-manager, HAL is now used
我之前就听说过HAL,不仅仅是在2001中。我尝试使用man -k hal
命令,并找到了lshal
,它列出了我电脑上的133个HAL设备。在其中一个鼠标的条目中,我发现了以下内容:
linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0b.0/usb2/2-7/2-7:1.0/input/input6/event6'
结果发现它是文件系统中的一个目录。从那里开始探索,我发现了一个指向/dev/input/mouse3
的参考。实际上,我所有的鼠标都在 /dev/input 中!
戴上我的超级用户披风,我能够读取 /dev/input/mouse3:
root@carl-ubuntu:/dev/input# od -t x1 -w6 mouse3
0000000 09 00 00 08 00 00
*
事实证明,左键点击是09 00 00 08 00 00
,并且一直如此。
结论:我可以从/dev/input/mouseX读取鼠标点击。在这些文件上执行了chmod a+r
之后,我甚至可以从普通用户帐户中读取它们。我需要想出一种方法来阻止4只鼠标在可能喝醉的人手中直接与GUI交互,但这是另一天的问题。
多点触控和多鼠标在Linux下需要使用MPX,但是您需要使用xorg xserver 1.7才能获得“正确”的版本;通常情况下,这被认为是X11R7.5的一部分,该版本刚刚作为“稳定版”发布,尚未被各个发行版集成。(即使xorg-edgers也没有它,但如果您是Ubuntu的用户,则可以关注该网址。)
GTK+似乎已经进行了一些工作,允许您检测到哪个鼠标点击(GdkEvent.gdk_event_get_device),但我不知道将其纳入完整稳定版本的时间表。Qt4还有多少进展也不清楚。因此,总之,如果您愿意花时间抓取、编译和修复程序,那么它可以正常使用,但与主流Linux并不兼容。