我正在为一个简单的Window Manager中集成的Linux创建一个屏幕键盘.我目前正在使用XCB,现在我想做假的击键.使用xtest扩展程序一切正常,除了我无法从我想要的键盘中获取真正的密钥代码的细节.
目前我正在使用xcb_key_symbols_get_keycode,然后我使用xcb_key_symbols_get_keysym来知道我需要哪个修饰符来获得该符号.当配置的键盘是美国键盘时,这可以正常工作.但我有一个西班牙语键盘,这个电话只返回美国配置.在西班牙语键盘中,使用右侧alt(altgr)获得了几个符号,但前一个调用似乎不支持它.
那么,我怎样才能获得获得任何密钥所需的密钥代码?我认为我需要XKB扩展,但我一直无法为XCB找到它们,我不想为XLib重写整个窗口管理器.
谢谢.
这可能是一个过时的问题,但我发现它仍然有效。
您可以通过 xcb 启用 xkb 扩展,然后通过 xcb API(或更具体地说,从 xkb 键映射的状态)获取键映射、布局以及该布局的相应键符号。
链接:
xcb_x11)。(使用设备 ID,您可以调用它xkb_x11_keymap_new_from_device来返回xkb_keymap指针)。xkb_state_key_get_sym())在这里您可以使用 xkb_state 来获取相应键的符号。我必须承认,我实际上并没有完全做到这一点(仅涉及键盘映射/布局/状态)。但这应该足以让您开始。:)