我需要一些澄清:
xev
当我在终端中启动并使用时Super,我得到以下输出。这是什么意思?
KeymapNotify event, serial 36, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FocusIn event, serial 36, synthetic NO, window 0x2000001,
mode NotifyUngrab, detail NotifyNonlinear
KeymapNotify event, serial 36, synthetic NO, window 0x0,
keys: 93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
答案1
因此在网上研究了一段时间后,我对输出的含义有了以下理解:
查看字母键的 KeyPress 和 KeyRelease 事件,例如m
。
KeyRelease event, serial 28, synthetic NO, window 0x6e00001,
root 0x2c9, subw 0x0, time 17599679, (-746,426), root:(337,478),
state 0x10, keycode 58 (keysym 0x6d, m), same_screen YES,
XLookupString gives 1 bytes: (6d) "m"
XFilterEvent returns: False
它具有键码并报告按下该键的窗口 ID。
功能键(例如Fn+ F6,实际上是亮度降低键)不输出此类信息。它们报告窗口 ID 为 0x0,没有密钥。因此,这意味着这些键无法重新分配,并且由软件(例如 X 服务器或控制台)控制;它们依赖于它们运行的环境。这也在某种程度上解释了为什么 Super 键在特定桌面环境中可能或不可能起作用 - 开发人员可以决定是否将该键的功能纳入他们的桌面环境。
MappingNotify event, serial 28, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeymapNotify event, serial 29, synthetic NO, window 0x0,
keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0