如果在按住抓住钥匙的同时,其他按键也被“抓住”

时间:2017-01-21 06:33:32

标签: x11 xlib xorg xcb

我用XGrabKey抓住了一把钥匙:

int mods = 0;
bool ownerevents = true;
XGrabKey(display, MY_KEYCODE, mods, rootwin, ownerevents, GrabModeAsync, GrabModeAsync);

它成功抓住了关键。在我的示例MY_KEYCODE中,关键字为b。所以现在我的事件循环只有在我按下b键时才会启动。但是,如果我按住b键然后按其他键,那些也会被报告到我的事件循环并且也被阻止,因此暂时“抓住”。我想在XAllowEvents部分尝试KeyPressed,但它无效。

有没有人对如何获取其他密钥有任何想法,而我的抓取钥匙被保留,成功通过未编号?

1 个答案:

答案 0 :(得分:1)

不可能做你想做的事。按下抓取的按键后,将抓住整个键盘直到释放按键。

如果您希望以编程方式全局替换绑定到键的键,则通常使用键重映射来完成。请参阅XChangeKeyboardMappingXkbChangeMap

如果你只是想永久地重新映射一个密钥并且不关心它是如何完成的,你可能想要编写/修改一个配置文件而不打扰编程。请参阅xmodmapxkbcomp