如何在 Linux 中“调试”键盘?比如按下一个键并在终端中看到代码

如何在 Linux 中“调试”键盘?比如按下一个键并在终端中看到代码

我没有找到关于在我的 Ubuntu 10.04 中添加附加键盘。我的键盘上的问号不起作用,只能使用 Alt Gr 键 + W。

所以,我不知道这是 Ubuntu 还是 Virtualbox 本身的问题(我在 VM 内运行它)。

这是一个 USB 键盘。HP KU-0316。

我想调试这个问题。键盘已插入,因此当我按下一个键时,我相信某物正在发送到我的操作系统,一些代码,我不知道。我想挖掘这个问题,找到一些该死的关键代码,找到一些该死的 *.conf 文件,然后手动修复我的问题。

那么,Linux 中是否存在这样的应用程序?

答案1

尝试xev。它将显示 X Window 系统在你按下你感兴趣的键时看到的键码。你可以使用xmodmap修改映射。

答案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

  1. 识别键盘的输入流sudo libinput list-devices,示例输出(查看Kernel:值):
Device:           AT Translated Set 2 keyboard
Kernel:           /dev/input/event3
  1. 使用以下命令调试键盘(注意 --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

相关内容