【问题标题】:Global mouse hook on click events in X11 [closed]X11中单击事件的全局鼠标挂钩[关闭]
【发布时间】:2015-01-30 19:42:41
【问题描述】:
我阅读了很多关于X11图形系统的信息,发现很多关于这个问题的问题没有答案。所以让我再问一下。
我需要钩子机制的经典实现(如 SetWindowsHookEx)或类似 UNIX 的操作系统中的任何其他方法,只有一个条件:能够监听事件不阻塞原始事件(就像 XGrabButton 和 XUngrabButton 一样)。
附:本,这是丹妮拉。我需要帮助! ®
【问题讨论】:
标签:
c++
hook
x11
hotkeys
xserver
【解决方案1】:
我最终从Xnee 获取源代码 - 它允许记录所有输入事件,包括具有非阻塞逻辑的键盘和鼠标。唯一的限制是我必须以 100 毫秒的间隔询问是否有任何事件在循环中,但这对我来说没问题 - 根本没有处理器加载。
【解决方案2】:
除非您阅读低级通信(使用 pcap 或用代理替换真正的 xserver 来为您提供所有数据),否则不可能全局执行(所有事件/所有窗口)
要获得特定窗口的通知,您可以更改该窗口的事件掩码。服务器为每个客户端的窗口保留单独的事件掩码副本,并通知每个对匹配掩码的事件感兴趣的客户端。例如,如果您从连接中将PointerMotion 位添加到根窗口事件掩码,当鼠标移到根窗口上时(假设它是可见的),您将获得指针事件