如何在Ubuntu Jaunty下从HID设备读取事件?

pts*_*pts 4 linux keyboard usb mouse hid

我有一个Linux USB HID设备(哈马MCE),我可以通过阅读cat /dev/input/event7和手动阅读其事件cat /dev/input/event8.每当我按下设备上的某个键时,就可以使用cat上面的一个命令读取几个字节.我在机器上默认安装了Ubuntu Jaunty 64位桌面.

我想我可以编写一个解析器来解释设备发出的字节,或者如果它更方便的话我会使用libhid.

我的问题是:

  1. 如何防止文本模式虚拟控制台接收设备上的某些按键作为普通按键?截至目前,某些设备键会产生Enter,BackSpace,PageUp或数字小键盘数字.
  2. 同样,如何阻止X服务器从此设备接收键盘和鼠标事件?我有几个USB键盘和鼠标连接到计算机.我希望X服务器接收来自所有这些设备的事件,除了这个设备.
  3. 如何设置每当设备连接到计算机时,命令/usr/local/bin/keydumper /dev/input/event7 /dev/input/event8(或每个/dev/路径的一个命令)将运行,并/dev/在命令行中替换正确的路径?

pts*_*pts 7

根据Linux USB HID驱动程序开发人员的回答回答我自己的问题:

问题1和2:做

ioctl(open("/dev/input/event7", O_RDONLY), EVIOCGRAB, 1);
Run Code Online (Sandbox Code Playgroud)

只要此文件句柄处于打开状态,生成的事件将仅发送到此文件句柄(不会发送到同一设备的其他open()或系统键盘或鼠标事件池).一次最多只有一个进程可以在HID设备上保存成功的EVIOCGRAB.Lirc可以配置为执行EVIOCGRAB.

问题3:配置udev以在连接设备后启动程序.