从 X window 传播所有事件

Propagating all events from a X window

我目前正在开发一个小型实用程序,这是我的第一个 X 项目。该实用程序用于在鼠标指针周围绘制一个小圆圈。我在我的 Mac 上使用一个名为 Pinpoint 的应用程序执行相同的操作,因为我有视力障碍,它可以帮助我找到我的鼠标。

实用程序创建一个透明的 X window 并在里面画一个圆,然后用鼠标指针移动 window,使圆跟随鼠标移动。

目前有效,除了一个细节。鼠标事件不会传播到底层 windows。基本上,该实用程序使鼠标无用。

据我从 Xlib 文档中得知,如果没有另外指定,new windows 应该传播所有事件。我该如何解决这个问题?

代码可以在 GitHub 上找到:https://github.com/blubber/circle-cursor目前有点混乱,因为它只是概念验证。

我建议也通过光标图像进行操作,当您无法接收鼠标事件时有很多方法,并且唯一可能的来源是使用 XQueryPointer 进行轮询。

使用 xfixes 扩展,您可以订阅所有 cursor image changed 事件并获取光标的最新形状,并且可以使用 XRender 设置您自己的(可能是动画光标)