Python Xlib捕获/发送mousecli

2024-05-23 21:33:48 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在尝试使用Python来检测鼠标左键何时被按住,然后开始快速发送这个事件,而不是只发送一次。我基本上想做的是,当鼠标左键被按住时,它会再次点击,直到你放开它。但我对整个Xlib有点困惑,我认为它实际上非常混乱。任何关于如何做到这一点的帮助都是非常棒的。这就是我目前所得到的:

#!/usr/bin/env python

import Xlib
import Xlib.display

def main():
    display = Xlib.display.Display()
    root = display.screen().root
    while True:
        event = root.display.next_event()
        print event

if __name__ == "__main__":
    main()

但不幸的是控制台中没有输出。在网上快速搜索后,我发现了以下内容:

root.change_attributes(event_mask=Xlib.X.KeyPressMask)
root.grab_key(keycode, Xlib.X.AnyModifier, 1, Xlib.X.GrabModeAsync,
              Xlib.X.GrabModeAsync)

这似乎是为了用给定的键代码捕获特殊事件而导入的。但是首先,如果鼠标左键有什么键码的话?其次,我如何检测它何时被按住,然后开始快速发送mouseclick事件。我真的很感激你的帮助。(也许用热键停止这个脚本也很酷…)


Tags: importenveventbinmainusrdefdisplay
1条回答
网友
1楼 · 发布于 2024-05-23 21:33:48

实际上,您希望Xlib.X.ButtonPressMask | Xlib.X.ButtonReleaseMask,获取按钮按下和释放的事件(不同于按键按下和释放)。事件是ButtonPressButtonRelease,而detail实例变量为您提供按钮号。从你得到新闻事件,到你得到发布事件,你知道按钮被按住了。当然,您也可以在按下某个键时接收键事件并执行其他操作(例如退出脚本)。

编辑:此版本对我很好,例如…:

import Xlib
import Xlib.display

def main():
    display = Xlib.display.Display(':0')
    root = display.screen().root
    root.change_attributes(event_mask=
        Xlib.X.ButtonPressMask | Xlib.X.ButtonReleaseMask)

    while True:
        event = root.display.next_event()
        print event

if __name__ == "__main__":
    main()

相关问题 更多 >