问题
我遇到的问题可以用以下几个链接概括:
x11 - Unable to move window after XGrabKeyboard
Redirect Keyboard input with XGrabKey or XGrabKeyboard
一句话概括就是XGrabKey
只要有其他客户端 Grab 过你要 Grab 的键位,就会失败,经过经验证明这是大概率失败的,而 XGrabKeyboard
也会影响鼠标拖动窗口和调整窗口大小以上问题均没有解决方案。
解决方式
经过一番摸索,我发现 xcb 会在鼠标进入标题栏,抵达窗口边框和移出窗口时触发 XCB_LEAVE_NOTIFY
,在离开标题栏和进入窗口时触发 XCB_ENTER_NOTIFY
,于是在进入的时候调用 XGrabKeyboard,离开的时候调用 XUnGrabKeyboard 即可
Content licenced under CC BY-NC-ND 4.0