如何找到 xkb 的原始键码?

如何找到 xkb 的原始键码?

乍一看,似乎 /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

相关内容