是)我有的:
> Linux机器(debian stable)没有显示器,键盘,没有X运行
> USB设备,就像一个USB键盘(就像很多条码阅读器[1])
我(不)想要的:
>我想仅将此设备用于特定应用.
>我不希望此设备干扰例如启动后的登录过程或其他任何内容 – 除了一个应用程序.
>无论如何,我希望能够插入一个普通的旧USB键盘,并使用它 – 与上面提到的其他USB设备的连接数量无关.
我(不)知道的:
>我找到了一些示例代码,关于如何直接从事件设备中读取,如果需要,可以在我的应用程序中使用它.
>我不知道,除了这个特定的应用程序,如何禁用整个系统的特定键盘?这有可能吗?
谢谢你的任何提示……!
[1]当设备读取条形码时,它会将检测到的代码作为单键按下并提交返回.
解决方法
一个充满挑战且有趣的问题
我认为udev可能会做到这一点.创建一个文件/etc/udev/rules.d/99-barcode-reader.rules并在其中添加类似的内容:
ACTIONS!="add",GOTO="barcode_end" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="dead",ATTRS{idProduct}=="beef",PROGRAM="/bin/sh -c 'logger -p user.info Hey,I see a new device $env{BUSNUM} $env{DEVNUM}'",RUN+="/bin/sh -c '/usr/local/bin/your_barcode_application &'" LABEL="barcode_end"
将“dead”和“beef”替换为使用lsusb获取的idVendor和idProduct的值.
重新启动udevd或只是你的服务器,看看会发生什么.