linux x11 窗口管理器 - 阻止鼠标事件

标签 linux x11 xlib window-managers

让我们假设有几个窗口是可见的——我需要实现一个机制来阻止选定窗口的事件,例如当用户单击 window_nr1 和 window_nr2 中的按钮时没有任何反应,但是当用户单击 window_nr3 中的按钮时事件是处理。合成窗口管理器渲染纹理和 XServer 的实际窗口位置可能不同,但这是某种解决方法,所以我们还假设在没有转换的情况下渲染窗口纹理。在 Compiz 中,XGrabPointer 用于捕获鼠标事件:

XGrabPointer (privateScreen.dpy, privateScreen.eventManager.getGrabWindow(), true,
              ButtonReleaseMask | ButtonPressMask | PointerMotionMask ,
              GrabModeAsync, GrabModeAsync, privateScreen.rootWindow(), 
              cursor, CurrentTime);

抓取窗口的创建如下所示:

grabWindow = XCreateWindow (dpy, root, -100, -100, 1, 1, 0,
                            CopyFromParent, InputOnly, CopyFromParent,
                            CWOverrideRedirect | CWEventMask,
                            attrib);

在那种情况下,整个屏幕的鼠标事件都被捕获(即仅重定向到窗口管理器事件循环),看起来 XGrabPointer 不能用于捕获特定窗口的鼠标事件。

您对如何实现这种机制有一些想法吗?

最佳答案

捕获鼠标指针并将事件传递到目标窗口。

关于linux x11 窗口管理器 - 阻止鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30238155/

相关文章:

linux - 基于两个共同列连接两个文件

c - 如何处理 send() 中缓冲区长度输入和返回值大小不匹配?

linux - 保持 gtk 窗口固定在屏幕上

c - 如何在后台XCreateWindow?

mysql - 访问数据库的用户列表

linux - 禁用 docker 中现有容器的日志

ubuntu - x11vnc xopendisplay 失败

keyboard - Dyalog APL 劫持 Windows Key 并且不归还它(Fedora 32/Gnome,Free Licence,Kitty)

linux - X11/XCB/Xlib : Copy root window to pixmap

c++ - 如何使用 xlib 观看任何窗口移动?