我正在为 Linux 创建一个集成在简单窗口管理器中的屏幕键盘。我目前正在使用 XCB,现在我想制作假击键。使用 xtest 扩展一切工作正常,除了我无法从我想要放置的键符中获取真实键码的细节之外。
目前我正在使用 xcb_key_symbols_get_keycode,然后我使用 xcb_key_symbols_get_keysym 来了解我需要哪个修饰符来获取该符号。当配置的键盘是美国键盘时,此功能正常。但我有一个西班牙语键盘,这个调用仅返回美国配置。在西班牙语键盘中,可以通过正确的 alt (altgr) 获得多个符号,但以前的调用似乎不支持它。
那么,我怎样才能获得获得任何键符号所需的键码呢?我认为我需要 XKB 扩展,但我一直无法为 XCB 找到它们,而且我不想为 XLib 重写整个窗口管理器。
Thanks.
这可能是一个过时的问题,但我发现它仍然有效。
您可以通过 xcb 启用 xkb 扩展,然后通过 xcb API(或更具体地说,从 xkb 键映射的状态)获取键映射、布局以及该布局的相应键符号。
Links:
- libxkbcommon 快速入门 https://xkbcommon.org/doc/current/md_doc_quick-guide.html
-
X11支持 https://xkbcommon.org/doc/current/group__x11.html设置 xkb 扩展并获取设备 ID(请参阅前面的链接:在尝试访问任何设备之前,您必须创建扩展)
xcb_x11
来电)。 (使用设备 ID,您可以调用xkb_x11_keymap_new_from_device
返回一个xkb_keymap
指针)。
- xkb_keymap 结构 https://xkbcommon.org/doc/current/structxkb__keymap.html
-
键盘状态 https://xkbcommon.org/doc/current/group__state.html(更重要的是xkb_state_key_get_sym() https://xkbcommon.org/doc/current/group__state.html#ga47311e7268935dd2fe3e6ef057a82cb0)在这里您可以使用 xkb_state 来获取相应键的 sym。
我必须承认,我实际上并没有完全做到这一点(仅涉及键盘映射/布局/状态)。但这应该足以让您开始。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)