dwgx@blog:~$dwgx
> cd ../posts

MouseDash: 录一遍 一键重放的鼠标宏

// created

MouseDash 是我写的 Windows 宏工具, 录一遍鼠标键盘操作, 之后一键重放, 2025 年 4 月发的 v1.0.0。网上现成的不少, 但要么闭源心里没底, 要么录出来匀速直线、间隔卡到毫秒, 一眼假。我要的是回放起来像人操作, 不像机器人, 这决定了后面一堆设计。

整个程序就一个 main.py, GUI、录制、播放、设置、后台监听线程全塞在里面, 个人项目不爱拆碎。底层用 pynput 抓鼠标移动、点击、滚轮和键盘, 可以只录鼠标、只录键盘或者全录。事件序列直接存成 JSON 丢进 ./macros/, 人能读能改, 所以后来加宏编辑页面很顺, 逐条增删改就行, 不用啃二进制。界面 PyQt5 配 PyQt-Fluent-Widgets, 通知走 winotify 弹原生的, 最小化了也知道在录还是在放。

反检测是重点。事件之间插自适应随机延迟, 把节奏抖出人味, 默认开着也能关。播放分两种模式, 按一次开再按一次停, 或者按住播放松手就停, 打游戏和处理表格手感不一样, 各取所需。进程锁定用 psutil, 只在指定进程激活时才响应, 免得误触发。单次录制压了 300 秒上限, 防止忘按停录出个几百兆的巨型宏。

踩过最典型的坑是全局监听时灵时不灵, 查半天是权限问题。Windows 拦全局输入得用管理员权限跑, 否则 pynput 在某些前台窗口就是抓不到。跑起来简单, 装好依赖 python main.py, 目录首次自动生成, 技术栈 Python 3.9+、PyQt5、pynput、psutil、winotify、pywin32 都在 requirements.txt 里。