如何用Python编写支持全局热键触发的autoclicker自动按键脚本?
自动按键器(Autoclicker)实现方案
1. 依赖安装
使用pynput库同时实现全局热键监听和键盘按键模拟,执行以下命令安装依赖:pip install pynput
2. 完整可运行代码
import time import threading from pynput import keyboard # 状态标记 is_running = False # 自动按键功能启停标记 exit_flag = False # 程序退出标记 # 键盘控制器实例 kb = keyboard.Controller() def auto_key_loop(): """自动按键循环逻辑,运行在独立线程中""" global is_running while not exit_flag: while is_running: # 按住向下方向键10秒 kb.press(keyboard.Key.down) # 拆分等待时长为小片段,保证停止指令可以快速响应 for _ in range(100): if not is_running: break time.sleep(0.1) kb.release(keyboard.Key.down) if not is_running: continue # 按住向上方向键10秒 kb.press(keyboard.Key.up) for _ in range(100): if not is_running: break time.sleep(0.1) kb.release(keyboard.Key.up) time.sleep(0.1) def toggle_running(): """热键触发的启停切换回调""" global is_running is_running = not is_running if is_running: print("自动按键已启动") else: print("自动按键已暂停") # 停止时主动释放所有按键,避免出现一直按住的异常 kb.release(keyboard.Key.down) kb.release(keyboard.Key.up) if __name__ == "__main__": # 启动自动按键线程 threading.Thread(target=auto_key_loop, daemon=True).start() # 注册全局热键 with keyboard.GlobalHotKeys({'a': toggle_running}) as listener: print("提示:按a键启动/停止自动按键,按Ctrl+C退出程序") try: listener.join() except KeyboardInterrupt: exit_flag = True # 退出前释放按键 kb.release(keyboard.Key.down) kb.release(keyboard.Key.up) print("程序已退出")
3. 核心特性说明
- 全局热键全桌面生效,不需要脚本窗口处于激活状态即可触发启停
- 自动按键逻辑运行在独立线程中,不会阻塞热键监听
- 10秒按键时长拆分为0.1秒的小间隔检查状态,按下停止键后最快0.1秒即可响应停止,不需要等满当前10秒周期
- 每次停止和程序退出时都会主动释放方向键,避免系统按键状态异常
注意:如果需要在管理员权限运行的应用内生效,需要用管理员权限启动该Python脚本,否则高权限窗口会拦截模拟的按键指令。
内容的提问来源于stack exchange,提问作者Annsh
相关产品推荐
相关产品推荐

