有没有办法获取有关 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修饰符有ShiftMask
、Mod1Mask
等。逻辑修饰符不同于物理键。左移键和右移键产生相同的修饰符掩码。
如果您需要修饰符掩码,则每个 X11 键和按钮事件都包含 state
成员中事件修饰符的掩码。如果您正在使用 Xkb(您可能应该使用),则有 XkbGetState
。
除了监视按键按下和按键释放事件外,我不知道有什么方法可以获取物理按键的状态。
关于c - 获取 X11 中当前事件修改器的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35885572/