avatar

麦兜的小站

MDO.INK

  • 首页
  • 随笔
  • 知识库
  • 归档
  • 动态
  • 标签
  • 关于
Home KeymouseGo | 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入
文章

KeymouseGo | 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入

Posted 2025-02-14 Updated 2025-02- 14
By power 已删除用户
10~13 min read

# KeymouseGo
功能:记录用户的鼠标键盘操作,通过触发按钮自动执行之前记录的操作,可设定执行的次数,可以理解为 精简绿色版 的 按键精灵。

用途:在进行某些操作简单、单调重复的工作时,使用本软件就可以很省力了。自己只要做一遍,然后接下来就让电脑来做。

  • 安装
  • 使用方法
    • 基本操作
    • 提示
    • 脚本语法说明
    • 自定义扩展
  • 关于作者
  • 开源贡献者
  • 更新说明

该软件通过 Python 语言编写,已打包为可执行文件,未安装 Python 的用户可直接下载 release 版本 ,直接点击 KeymouseGo 运行

源码打包可执行文件

  • Windows

    1. 安装 Python3
    2. pip install -r requirements-windows.txt
    3. pip install pyinstaller
    4. pyinstaller -F -w --add-data "./assets;assets" KeymouseGo.py 
    
  • Linux或Mac

    1. 安装 Python3
    2. pip3 install -r requirements-universal.txt
    3. pip3 install pyinstaller
    4. pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py 
    

基本操作

桌面模式

1、点击 录制 按钮,开始录制。

2、在计算机上进行任意操作,如点击鼠标、键盘输入,这部分的动作会被记录下来。

3、点击 结束 按钮,结束录制。

4、点击 启动 按钮,计算机会重复执行一遍第2步中所录制的动作。

命令行模式

直接运行指定脚本:

> ./KeymouseGo scripts/0314_1452.txt 

运行指定脚本3次:

> ./KeymouseGo scripts/0314_1452.txt -rt 3
> ./KeymouseGo scripts/0314_1452.txt --runtimes 3 

以200%的速度运行指定脚本:

> ./KeymouseGo scripts/0314_1452.txt -sp 200
> ./KeymouseGo scripts/0314_1452.txt --speed 200 

加载自定义扩展MyExtension运行指定脚本:

> ./KeymouseGo scripts/0314_1452.txt -m MyExtension
> ./KeymouseGo scripts/0314_1452.txt --module MyExtension 

提示

1、可设置脚本重复执行的次数,如果为 0 即为无限循环。

2、默认启动热键为 F6,功能等同于 启动 按钮;默认终止热键为 F9,按下后将会停止正在运行的脚本。

3、录制时只记录鼠标点击动作和键盘动作,不记录鼠标移动轨迹。

4、每次录制结束后都会在 scripts 目前下生成一个新的脚本文件。

5、运行前可以在列表中选择一个需要执行的脚本。

6、scripts 下的脚本文件内容可以修改,修改时可参考如下所述 脚本格式说明。

7、热键设置中的Middle指代鼠标中键,XButton指代鼠标侧键

8、由于程序速度受限,当输入的鼠标速度大于一定值时脚本将无法以预期的输入速度执行

部分系统环境中,可能出现无法录制完整的鼠标事件的情况,请以管理员身份/root身份运行此工具即可正常使用。

使用Mac的用户,需要确保程序在辅助功能白名单,如果使用打包的exec文件,则还需要确保终端也在辅助功能白名单。 如果app程序闪退,请尝试给予~/.qt_material目录下文件的写权限:

chmod -R 770 ~/.qt_material 

脚本语法说明

演示屏幕分辨率为1920 * 1080

[
 [3000, "EM", "mouse right down", ["0.05208%", "0.1852%"]],    // 开始运行 `3000ms` 后,在屏幕相对坐标 `(0.05208, 0.1852)`即 `(100,200)` 处 `按下鼠标右键`;
 [50,   "EM", "mouse right up",   ["0.05208%", "0.1852%"]],    // 等待 `50ms` 后在相同位置 `抬起鼠标右键`;
 [1000, "EK", "key down",         [70, "F", 0]],                                   // 等待 `1000ms` 后 `按下f键`;
 [50,   "EK", "key up",           [70, "F", 0]],                                   // 等待 `50ms` 后 `抬起f键`;
 [100,  "EM", "mouse left down",  ["0.2604%", "0.4630%"]],      // 等待 `100ms` 后,在屏幕相对坐标 `(0.2604, 0.4630)`即 `(500, 500)` 处 `按下鼠标左键`;
 [100,  "EM", "mouse move",       ["0.2604%", "0.5556%"]],       // 等待 `100ms` 后,鼠标移动至相对坐标 `(0.2604, 0.5556)`即 `(500, 600)` 位置;
 [100,  "EM", "mouse left up",  ["0.3125%", "0.5556%"]],                   // 等待 `100ms` 后,在屏幕相对坐标 `(0.3125, 0.5556)`即 `(600, 600)` 处 `抬起鼠标左键`;
 [100,  "EX", "input",            "你好 world"],                                   // 等待 `100ms` 后,在当前位置输入 `你好 world` 文字。
] 

脚本为 json 格式,每一行代表一次动作:

  • 每行的第 1 个元素表示时间间隔,指的是本次动作与上一次动作之间相隔的时间,单位为毫秒。
  • 每行的第 2 个元素表示鼠标动作或是键盘动作:EM 为鼠标,EK 为键盘,EX 为其他拓展动作。
  • 每行的第 3 个元素表示动作的类型:
    • mouse left down 为鼠标左键按下,mouse left up 为鼠标左键抬起,
    • mouse right down 为鼠标右键按下,mouse right up 为鼠标右键抬起,
    • mouse middle down 为鼠标中键按下, mouse middle up 为鼠标中键抬起,
    • mouse wheel up 为鼠标滚轮上滑, mouse wheel down 为鼠标滚轮下滑,
    • key down 为键盘按键按下,key up 为键盘按键抬起,
    • mouse move 为鼠标滑过,input 输入文字。
  • 每行的第 4 个元素表示具体的动作参数
    • 当为鼠标动作时,由两个子元素构成,分别为鼠标所在的屏幕位置的横纵坐标,
    • 当为键盘动作时,由三个子元素构成,分别是(按键编号, 按键名, 拓展标记),
    • 当为输入文字动作时,为要输入的文字内容。
  • 每行 // 后的部分为注释内容。
  • 修改时请严格遵守格式,否则可能导致脚本无法运行,建议修改前先备份一下。
  • 横纵坐标为[-1, -1]时,表示在鼠标当前所在位置执行操作。
知识库
License:  CC BY 4.0
Share

Further Reading

Jul 31, 2025

如何实现接口幂等性

通俗的说,用户在系统中有操作,不管重复多少次,都应该产生一样的效果或返回一样的结果的。 幂等性的概念 幂等(Idempotent)是一个数学与计算机学的概念,常见于抽象代数中。 f(n)=1^n//无...

Jul 19, 2025

10个npm工具包

有了npm之后,前端人员真的是过上好日子了。我们可以直接把别人写好的工具包拿来用,非常的方便。 1.day.js-轻量日期处理 npminstalldayjs importdayjsfrom'd...

Jul 17, 2025

How to set up PHP7.4 on MacOS.

Thisisallverywellandgood.Apartfromonesmallinsignificantthing… TheversionofPHPinuseiscurrently7.4. Th...

OLDER

针对Vue相同路由不同参数的不刷新问题的解决方案

NEWER

使用Python爬虫实时监控行业新闻

Recently Updated

  • 如何实现接口幂等性
  • 10个npm工具包
  • How to set up PHP7.4 on MacOS.
  • Automa:一键自动化,网页数据采集与工作流程优化专家Automa:解锁自动化
  • Mac 下用 brew 搭建 LNMP

Trending Tags

thinkphp clippings

Contents

©2025 麦兜的小站. Some rights reserved.

Using the Halo theme Chirpy