如何在X11中全局捕获每个鼠标点击?

7
我想在X11中捕获所有鼠标点击事件并将它们传递给我的C++应用程序。我不仅想捕获在我的主窗口上方进行的点击,而且想捕获每一个点击事件,而不考虑我的主窗口。使用XGrabPointer似乎可以轻松实现这一点。但是,我希望所有事情都像我从未抓住事件一样运行。也就是说,我希望事件继续按照其正常路径向下传递到其他客户端,我只想成为第一个监听事件的人。我不想吃掉这些事件。
当搜索该问题时,似乎有几种解决方案,但显然所有这些解决方案都已经过时或不可用。最有前途的是Xrecord + Xtest,但似乎也已经过时了。
现在看来,应该使用Xinput2来完成这个任务,但如何使用它的信息非常稀少。我会很感激您的见解。

你找到解决这个问题的方法了吗?我也想做同样的事情。不幸的是,有很多针对Windows的解决方案,但是没有适用于Linux的。 - Gerrit
不行。 :< 或许 Wayland 是这里的出路?:D - svenstaro
@Svenstaro,你最终找到解决方案了吗? - user2440074
3个回答

2

1
这里 [0] 是另一种解决方案,包括窗口创建处理(不是我的解决方案)。[0] https://github.com/dustin/snippets/blob/master/c/X11/h/xkey.c - Gerrit

1

kcolorchoose显然会占用指针,因为事件不会被发送到其他客户端窗口。 - svenstaro
哦,太糟糕了,很抱歉那没有提供解决方案。 - TryTryAgain

0
也许你应该看一下 xev 代码:它可以捕获每一个可能的 X 事件。

4
xev 也无法在没有聚焦的情况下捕获输入。 - svenstaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接