X11和虚拟键盘/鼠标事件

6

我想知道如何检测由类似于xdotool的自动化应用程序生成的按键事件或鼠标指针事件。

基本上,我正在编写一个应用程序来检查是否没有真正的鼠标或键盘活动。

在我的应用程序中,我只想标记空闲活动,如果我们没有真正的鼠标移动或键盘上的真正按键/释放。

任何关于此的参考都将是很好的。

我想使用纯粹的XLib API 来完成这个任务。

我不想使用XCB

任何扩展,例如XRecord(我目前正在使用它来捕获事件)都可以。


你为什么想要检查是否没有真正的鼠标或键盘活动?我怀疑某些奇特的用户界面(也许是为了视觉障碍用户)可能会提供“虚拟”鼠标等... 你为什么想要检测自动化工具?(一个足够有动力的人总是可以规避你的检测,例如通过适当地修补Xorg服务器...) - Basile Starynkevitch
@Basile,您提出的观点是正确的。基本上,我正在编写一个小应用程序,它应该向我报告用户在机器(PC)上的空闲活动。使用这些数据,我想确定一个人在一周内有效地工作了多少小时(这仍然假设如果一个人使用鼠标或键盘就意味着工作)。真正的键盘/鼠标事件表明了身体活动,支持上面提出的观点。我还没有考虑到此应用程序的辅助功能规定,这留待以后再说。谢谢。 - user1292737
你确定部署这样一个“间谍”程序是合法的(没有用户明确同意)吗?在某些国家(可能是法国),它可能是非法的,我相信任何用户都能够规避它。人们可以(而且确实会)在不总是打字的情况下工作...而人们也可以在没有真正工作的情况下打字... - Basile Starynkevitch
1个回答

3

是的,有可能。

所有与鼠标移动和点击相关的X11事件都有一个名为send_event的成员。

如果该事件是由应用程序发送的,则设置为True;如果该事件是由X服务器生成的,即由用户操作,则设置为False

如果Xdotool使用SendEvent进行mousclick模拟,则可以使用send_event成员进行检测。


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