C语言 如何在 X11 中关闭修饰键的情况下从按键和按键释放事件中获取虚拟键代码



当从 X11 接收KeyPressKeyRelease事件时,如何将结果转换为映射到物理键 0 到 9 和 A 到 Z 的虚拟代码,独立于键盘布局,也独立于任何修改键关闭?

我试过这个:

XLookupString((XKeyEvent *) &ev, buffer, 10, &keysym, &compose);

这给了我一个keysym但这不是我想要的,因为一旦按下 SHIFT、ALT 等修改键之一,它就会改变。例如,当使用 SHIFT 在德语键盘上按"1"时,keysym将为 33,对应于!字符。但是,我想获得"1"已被按下的信息。

我也尝试查看XKeyEventkeycode成员,但这也没有帮助,因为它似乎是一个原始扫描代码,在这里没有帮助,因为它会映射到不同语言的不同键。

那么,即使 SHIFT、ALT 等修改键也关闭了,我如何才能找到已按下的键呢?

回答我自己的问题:index参数设置为 0 的XKeycodeToKeysym()允许我获取原始密钥,而无需从XKeyEvent进行任何修饰符修改。

最新更新