我试图捕获键盘事件。
例如我想从头开始细化键盘记录程序。
经过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/

10-13 07:31
查看更多