![如何在 Linux 中“调试”键盘?比如按下一个键并在终端中看到代码](https://linux22.com/image/1241752/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E2%80%9C%E8%B0%83%E8%AF%95%E2%80%9D%E9%94%AE%E7%9B%98%EF%BC%9F%E6%AF%94%E5%A6%82%E6%8C%89%E4%B8%8B%E4%B8%80%E4%B8%AA%E9%94%AE%E5%B9%B6%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E7%9C%8B%E5%88%B0%E4%BB%A3%E7%A0%81.png)
我没有找到关于在我的 Ubuntu 10.04 中添加附加键盘。我的键盘上的问号不起作用,只能使用 Alt Gr 键 + W。
所以,我不知道这是 Ubuntu 还是 Virtualbox 本身的问题(我在 VM 内运行它)。
这是一个 USB 键盘。HP KU-0316。
我想调试这个问题。键盘已插入,因此当我按下一个键时,我相信某物正在发送到我的操作系统,一些代码,我不知道。我想挖掘这个问题,找到一些该死的关键代码,找到一些该死的 *.conf 文件,然后手动修复我的问题。
那么,Linux 中是否存在这样的应用程序?
答案1
答案2
linux-input 的一款很棒的实用程序“evtest”非常适合调试键盘、鼠标和操纵杆。功能键也应该可以工作。
apt-get install evtest
evtest 运行时按下 caps lock 键的示例输出:
Event: time 1398955189.226822, type 17 (EV_LED), code 1 (LED_CAPSL), value 1
Event: time 1398955189.226822, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
Event: time 1398955189.226822, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0
Event: time 1398955189.226822, -------------- SYN_REPORT ------------
由于 evtest 使用 /dev/input,您可以从 TTY 或 SSH 使用它,而无需运行 Xserver。
答案3
有所谓的事件设备文件它们被绑定到非常低级别的输入层。它们驻留在/dev/input/
目录中,您可以通过执行 来读取虚拟 PS/2 键盘传递的键码sudo hd /dev/input/by-path/platform-i8042-serio-0-event-kbd
。如果此命令失败,只需对每个/dev/input/eventX
文件尝试该命令:其中一个将绑定到您的键盘。
答案4
如果您使用libinput
:
- 识别键盘的输入流
sudo libinput list-devices
,示例输出(查看Kernel:
值):
Device: AT Translated Set 2 keyboard
Kernel: /dev/input/event3
- 使用以下命令调试键盘(注意
--show-keycodes
范围):sudo libinput debug-events --show-keycodes /dev/input/event3
示例输出:
-event3 DEVICE_ADDED AT Translated Set 2 keyboard seat0 default group1 cap:k
event3 KEYBOARD_KEY +2.327s KEY_KP1 (79) pressed
1 event3 KEYBOARD_KEY +2.415s KEY_KP1 (79) released
event3 KEYBOARD_KEY +3.901s KEY_1 (2) pressed
1 event3 KEYBOARD_KEY +3.989s KEY_1 (2) released
event3 KEYBOARD_KEY +4.632s KEY_2 (3) pressed
2 event3 KEYBOARD_KEY +4.720s KEY_2 (3) released
event3 KEYBOARD_KEY +5.022s KEY_3 (4) pressed