乍一看,似乎 /usr/share/X11/xkb/keycodes/ 包含以下映射设备报告的原始键码,并且“showkey --scancodes”命令可以返回扫码。人们很容易认为它们是同一件事。
但它们显然是不同的。showkeys -scancodes
可靠地返回 Linux Keycode,如Linux 键码表转换为十六进制;而 xkb 中引用的“原始键码”始终与表中的不同。
以密钥1为例:
showkey --scancodes
返回0x02
作为键码1在 xorg 中,符号名称是
<AE01>
,它10
的原始键码当然不是0x02
。$ grep AE01 /usr/share/X11/xkb/keycodes/evdev <AE01> = 10;
那么,出于配置 xkb 的目的,如果showkey --scancodes
不合适,如何找到任何键的原始键码?
答案1
程序xev
将输出预期的键码。对于您的示例 1:
KeyPress event, serial 37, synthetic NO, window 0x600001,
root 0xd4, subw 0x0, time 6931965, (284,-10), root:(285,560),
state 0x0, keycode 10 (keysym 0x31, 1), same_screen YES,
XLookupString gives 1 bytes: (31) "1"
XmbLookupString gives 1 bytes: (31) "1"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x600001,
root 0xd4, subw 0x0, time 6932164, (284,-10), root:(285,560),
state 0x0, keycode 10 (keysym 0x31, 1), same_screen YES,
XLookupString gives 1 bytes: (31) "1"
XFilterEvent returns: False