c - 获取 X11 中当前事件修改器的状态

标签 c linux keyboard x11

有没有办法获取有关 X 中当前事件修饰符的信息?例如。如果 Capslock 处于事件状态,是否按下了 shift,等等。

根据 xkbcommon-keysyms.h 这是所有 X11 修饰符的列表:

#define XKB_KEY_Shift_L                       0xffe1  /* Left shift */
#define XKB_KEY_Shift_R                       0xffe2  /* Right shift */
#define XKB_KEY_Control_L                     0xffe3  /* Left control */
#define XKB_KEY_Control_R                     0xffe4  /* Right control */
#define XKB_KEY_Caps_Lock                     0xffe5  /* Caps lock */
#define XKB_KEY_Shift_Lock                    0xffe6  /* Shift lock */

#define XKB_KEY_Meta_L                        0xffe7  /* Left meta */
#define XKB_KEY_Meta_R                        0xffe8  /* Right meta */
#define XKB_KEY_Alt_L                         0xffe9  /* Left alt */
#define XKB_KEY_Alt_R                         0xffea  /* Right alt */
#define XKB_KEY_Super_L                       0xffeb  /* Left super */
#define XKB_KEY_Super_R                       0xffec  /* Right super */
#define XKB_KEY_Hyper_L                       0xffed  /* Left hyper */
#define XKB_KEY_Hyper_R                       0xffee  /* Right hyper */

但是我怎样才能得到这些键的状态呢?我没有找到相应的功能。提前致谢!

最佳答案

不,这不是修饰符列表。这是修饰键列表。

X11修饰符有ShiftMaskMod1Mask等。逻辑修饰符不同于物理键。左移键和右移键产生相同的修饰符掩码。

如果您需要修饰符掩码,则每个 X11 键和按钮事件都包含 state 成员中事件修饰符的掩码。如果您正在使用 Xkb(您可能应该使用),则有 XkbGetState

除了监视按键按下和按键释放事件外,我不知道有什么方法可以获取物理按键的状态。

关于c - 获取 X11 中当前事件修改器的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35885572/

相关文章:

c - 如何保证C中的锁定顺序

c - 在 linux 集群上为特定用户安装 cmake

java - "su <otheruser>"失败,返回 "standard in must be atty"

C 程序守护进程使用 100% 的 cpu 使用率

c++ - 介子创建不会编译的构建文件

javascript - 输入输入时检查 INSERT 模式是否打开

ios - 如何在 iOS8 自定义键盘中使用自动更正和快捷键列表?

c - 在我的编码器中双重释放或损坏(fasttop)

c - Pango 和 FreeType——不渲染文本,只渲染奇怪的像素

windows - EmacsW32 : possible to use both "windows key" and "alt key" bindings together?