You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pynput实现按住鼠标按键并持续指定时长的功能?

鼠标左键长按指定时长的实现方案

原代码失效的核心原因是:多数桌面程序、游戏对长按事件的判定需要持续的输入事件信号,直接使用整块time.sleep()会阻塞当前线程的输入事件分发,导致操作系统仅识别到一次按下+抬起的快速点击操作,无法判定为长按。

以下是两种可直接使用的稳定实现:

方案1:pynput库实现(低延迟、跨平台兼容性好)

先安装依赖:
pip install pynput

代码实现:

from pynput.mouse import Button, Controller
import time

def hold_left_click(duration: float):
    mouse = Controller()
    mouse.press(Button.left)
    start_time = time.time()
    # 拆分等待为小间隔循环,避免阻塞输入事件队列
    while time.time() - start_time < duration:
        time.sleep(0.01)
    mouse.release(Button.left)

# 调用示例:按住左键2.5秒
hold_left_click(2.5)

如果是针对游戏等对输入检测要求高的场景,可以在循环中添加无感知的鼠标事件推送,避免被识别为单次点击:

while time.time() - start_time < duration:
    # 0偏移移动会推送输入事件,但不会实际移动鼠标
    mouse.move(0, 0)
    time.sleep(0.005)

方案2:pyautogui库实现(写法更简洁)

先安装依赖:
pip install pyautogui

代码实现:

import pyautogui
import time

def hold_left_click(duration: float):
    pyautogui.mouseDown()
    time.sleep(duration)
    pyautogui.mouseUp()

# 调用示例:按住左键3秒
hold_left_click(3)

注意事项

  • 如果目标程序以管理员权限运行,Python脚本也需要以管理员权限启动才能正常注入输入事件
  • 带反作弊机制的程序会拦截第三方模拟输入事件,此类场景上述方案不适用

内容的提问来源于stack exchange,提问作者PoJIY_cJIaDeHbKuU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:15:04