呼啦,
我目前正在对TinyWM进行一些修改 - 我想实施的是点击关注政策。
我已经发现我需要在XGrabButton
事件中创建一个MapNotify
,但我无法弄清楚要使用哪个修饰符掩码忽略所有修改器掩码(意思是,无论激活什么修饰键,我都希望焦点点击发生。
我碰到了一堵砖墙,因为当我没有按下修改键时,偶然AnyModifier
似乎无法工作(即便如此,它也相当挑剔)。
这是相关的代码块:
void eMapNotify(Display *dpy, XEvent *ev){
// Ignore windows we don't care about
if (!ev.xmap.override_redirect) XSetWindowBorderWidth(dpy, ev.xmap.window, 3);
// Allows us to hook into this window's clicks to let us focus it
XGrabButton(dpy, 1, WHAT_MASK_DO_I_PUT_HERE, ev.xmap.window,
True, ButtonPressMask, GrabModeAsync, GrabModeAsync,
None, None);
}
有什么想法吗?
我发现实际上事件处理程序 记录了点击,但点击是不转发到子窗口,这正是我的行为想。
我目前使用以下代码实现了聚焦功能,它跟踪指针并将其聚焦在任何地方。在我的机器上,它看起来并不像它看起来那么昂贵:
Window dump, child;
int rx, ry, cx, cy;
unsigned int mask;
// Get the pointer's location
XQueryPointer(dpy, root, &dump, &child, &rx, &ry, &cx, &cy, &mask);
// Focuses the pointer's current window
XSetInputFocus(dpy, dump, RevertToNone, CurrentTime);
答案 0 :(得分:0)
对于没有修饰符,掩码为0
。