我试图捕获键盘事件。
例如我想从头开始细化键盘记录程序。
经过2个小时的战斗,我发现了以下内容
neel@pc1$ ls -l /dev/input/by-id
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd -> ../event1
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-mouse -> ../event2
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-mouse -> ../mouse1
但是当我试图
neel@pc1$ sudo cat /dev/input/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd
它什么都不产生
没有输出
经过更多搜索后,现在我正在考虑Xorg中的某些内容可能会阻止它。
所以还有更多信息吗?
在说的结尾,我如何从该文件中读取输入?
还是有其他方法可以捕获键盘事件?
最佳答案
谢谢您提供有关ls -l /dev/input/by-id
的线索,它对我很有帮助!
defenderdz@defenderdz-pc:~$ ls -l /dev/input/by-id | grep kbd
lrwxrwxrwx 1 root root 9 nov. 28 14:04 usb-Logitech_USB_Receiver-event-kbd -> ../event7
lrwxrwxrwx 1 root root 10 nov. 29 00:33 usb-NOVATEK_USB_Keyboard-event-kbd -> ../event26
lrwxrwxrwx 1 root root 9 nov. 28 14:04 usb-SONiX_USB_DEVICE-event-kbd -> ../event3
defenderdz@defenderdz-pc:~$
“kbd”是用于键盘设备的后缀(我连接了3个键盘)。
您的错误是您正在访问错误的文件夹:
/dev/input/
代替/dev/input/by-id
在我的示例中,正确的路径是:
defenderdz@defenderdz-pc:~$ sudo cat /dev/input/by-id/usb-NOVATEK_USB_Keyboard-event-kbd
���]�I���]�I���]�Ia���]�b���]�b���]�b���]�����]�����]��s���]����]����]����]�>
���]�>
���]�>
d���]�8
���]�8
���]�8
���]�����]�����]��s���]H|���]H|���]H|���]�����]�� ���]��d���]Ǵ���]Ǵ ���]Ǵ
就你而言
neel@pc1$ sudo cat /dev/input/by-id/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd
我并不是说这是最好的解决方案,但对我来说效果很好。
您甚至可以通过解析ls结果来创建键盘的自动检测...
关于linux - Linux键盘事件捕获/dev/inputX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2775461/