【问题标题】:How to get virtual key codes from KeyPress and KeyRelease events in X11 with modifier keys down如何从 X11 中的 KeyPress 和 KeyRelease 事件中获取虚拟键代码并按下修改键
【发布时间】:2018-01-04 15:38:43
【问题描述】:

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

我试过了:

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

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

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

那么,即使 SHIFT、ALT 等修饰键也按下了,我如何才能找出被按下的键呢?

【问题讨论】:

    标签: c x11 xlib


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      相关资源
      最近更新 更多