什么是键鼠精灵?

您可以从 AppStore 下载 键鼠精灵。我们致力于将 键鼠精灵 打造为史上最能满足您需要的键盘和鼠标自动化工具。如果您有任何建议或意见,请直接告诉我们。我们将回复每一封反馈邮件。
什么是键鼠精灵?
键鼠精灵 是 Mac 平台上的一款 Mac 操作自动化工具。如果您出于测试目的而需要 根据实际情况 自动操作您的 Mac 或 iPhone,键鼠精灵 能完美地帮您完成这个任务。键鼠精灵支持如下自动化操作与测试工具:
- 模拟键盘操作,包括单个按键,或者连续输入文字
- 模拟鼠标操作,包括移动、点击、滚动滚轮、长按与拖动
- 数值计算与处理
- 文本识别与处理
- 图像识别与处理
- 灵活多变的屏幕截图
- 自动化复制与粘贴
- 固定延时、随机延时与条件延时
- 灵活调用第三方应用
- 灵活调用终端命令
- 脚本嵌套与循环
- 变量系统
- 条件判断
- 可编程的交互,包括音频、闪烁与弹窗
脚本
按以下步骤录制指定窗口内的鼠标和键盘操作:
- 打开左侧边栏,点击
(录制) 图标,然后选择所需录制的应用。
- 在应用窗口内,进行鼠标和键盘操作。
- 点击
(停止) 图标,或者按下 Shift-Command-R,或者按下 Shift-Command-ESC,停止录制。
- 在弹出的对话框中,输入新录制的脚本的名称,然后点击 保存。
新录制的脚本将会自动出现在左侧边栏的脚本列表中。
在左侧边栏的脚本列表中,用鼠标单击选中一个脚本,然后按下硬件键盘上的删除键。或者,用鼠标右键单击该脚本,然后在弹出的跟随式菜单中选择 删除。
在脚本编辑器中,选中一个脚本,然后点击 按钮,再点击 分享 或者 分享为受保护形式。
受保护的脚本不允许查看、编辑,也不会产生日志。
语句
在键鼠精灵中,一个脚本由若干条语句组成。每条语句表达了一定的语义逻辑,并控制执行流程。
在键鼠精灵中,如果语句、那么语句、否则语句、返回语句、结束语句都不是严格意义上的语句,而仅仅是在习惯上被称为语句。
在习惯上,当一条语句包含一个或多个前提 条件 时,这些条件被称为 如果语句。当这些条件都满足时,所执行的动作被称为 那么语句。反之,当这些条件不满足时,所执行的动作称为 否则语句。在键鼠精灵中,那么语句 和 否则语句 都仅仅包含单条动作。
排序
使用鼠标拖动一条语句,可以改变它在语句列表中的顺序。
删除
在脚本编辑器中,用鼠标右键单击一条语句,然后在弹出的跟随式菜单中选择 删除。
控制流程
如果、那么 和 否则,统称为 条件语句 。

在默认情况下,一条语句仅仅包含一个动作。当执行一条语句时,实际上是在无条件地执行该语句所包含的动作。
然而,我们可以为任意一条语句插入 如果。一条 如果 (子)语句是由一条或多条 条件 组成的。当且仅当一条语句的全部或部分条件满足时,才会执行该语句所包含的动作。仅在 条件满足 时才会执行的动作被称为 那么(子)语句。而如果一条 如果 语句的条件无法全部满足,则可以跳过此语句,或者执行另一个动作。仅在 条件不满足 时才会执行的动作被称为 否则 (子)语句。
与条件、或条件
当一条语句同时包含多个条件时,这些条件有两种组合逻辑:
- 与条件:当一条语句的所有条件全部满足时,才会执行该语句所包含的动作。与条件,又称为并条件。
- 或条件:当一条语句的任意一条条件满足时,就会执行该语句所包含的动作。
当语句含有多个条件时,可以改变它们的组合逻辑:

键鼠精灵并不直接支持循环语句,但支持脚本级别的循环。我们可以利用让脚本 限定次数重复、 无限重复、有条件重复或者 Continue 语句 来实现脚本级别的循环。
如果希望实现 “在循环之前赋值” 的效果,可以通过让子脚本重复,然后让主脚本在调用子脚本之前对变量赋值。键鼠精灵自带了一个官方脚本例子 “计数”。为了观察此示例脚本的效果,用户可以先打开任意一个支持文本输入的窗口,然后点击 Mac 系统状态条上的 键鼠精灵 图标,唤出菜单,依次点击菜单上的 运行 --> 通用 --> 计数。
条件重复
持续反复执行当前脚本,直到某个特定的条件为真为止。
Continue (继续) 语句,放弃当前脚本的后续语句,返回当前脚本的开头,重新执行当前脚本。
在键鼠精灵中,Continue 语句被实现为一条 Continue 动作,通常用于实现脚本级别的循环。
调用另一个脚本。此时,该脚本常被称为父脚本(调用者)。被调用的脚本被称为子脚本。
返回语句会退出当前脚本,返回到上一级脚本,即调用当前脚本的脚本。
返回语句并不会直接返回一个“值”给上一级脚本。相反,如果希望返回一个值给上一级脚本,应该在调用返回语句之前将“返回值”存储入一个通用变量之中,然后在上一级脚本中读取这个变量的值。这是因为,在键鼠精灵中,变量的有效范围是全局的,被所有脚本所共享。
在键鼠精灵中,它被实现为一条 返回 动作。
退出语句,有时又称为结束语句、中止语句、停止运行语句。该语句会中止整个脚本的运行。这意味着它不但会停止运行当前脚本,还会逐级停止当前脚本的上一级脚本,最终停止"根"脚本。
在键鼠精灵中,它被实现为一条 结束 动作。
条件
窗口取色比较:获取窗口中指定位置的像素颜色,并与指定颜色比较。如果相似,则判定为真。否则,判定为假。
如果被比较的两者皆为颜色,而且相似,则判定为真。否则,判定为假。
如果被比较的两者皆为图片,而且相似,则判定为真。否则,判定为假。
如果前者所指定的图片包含后者所指定的文本,则判定为真。否则,判定为假。
动作
自动点击物理键盘上的单个按键,或者组合键。
如何指定一个键?为了指定或修改所希望按下的键,打开动作编辑器,展开动作详情,用鼠标点击该动作所指定的键。该键会高亮。然后,在硬件键盘上按下一个键。编辑器会录制到所按下的键,将其指定为该动作的键。
对于某些特殊场景,或者特殊应用,需要使用特殊专用硬件来辅助完成键盘操作。此时,需要在动作编辑器中开启 硬件辅助 选项(提示:需要先开启 专家模式,才能看见此选项。)

以预定的次序和速度,连续点击物理键盘上的一系列按键,以自动输入一段文本。
对于某些特殊场景,或者特殊应用,需要使用特殊专用硬件来辅助完成键盘操作。此时,需要在动作编辑器中开启 硬件辅助 选项(提示:需要先开启 专家模式,才能看见此选项。)
通过键鼠精灵,我们可以移动、点击或拖动鼠标。
移动鼠标指针到指定位置,或者在指定位置上点击鼠标指针。
- 将鼠标指针移动到屏幕/窗口中文字所在位置
- 将鼠标指针移动到窗口中颜色所在位置
- 将鼠标指针移动到窗口中图片所在位置
- 将鼠标指针移动到屏幕/窗口中指定位置
- 相对于鼠标指针的当前位置,做出相对移动
在指定位置上点击鼠标,包括:
- 识文点击:点击屏幕/窗口中的文字
- 识色点击:点击窗口中的颜色
- 识图点击:点击窗口中的图片
- 绝对点击:点击屏幕/窗口中的位置
- 相对点击:点击鼠标当前位置,或者偏移一定距离。
相似度
在找图、找色操作中,会计算每个“疑似”对象与目标对象的匹配程度。如果相似度大于指定的门槛,则匹配成功。
因此,在图、色类操作中,所设定的相似度参数越高,则所找到的对象与目标对象越相似,但成功找到匹配对象的概率越低。如果发现误差太大,则建议调高相似度门槛。如果无法找到,则建议调低相似度门槛。
查找速度
在定位子图片所在位置时,为了提高识别速度和正确率,建议:
- 所查找的子图片的尺寸不超过 32 X 32。
- 所查找的子图片的内容,相对于大图中的其它内容,具有视觉独特性(该子图块在整体图片中出现得越少越好)。
- 所查找的子图片的第一个像素,即左上角的那一个像素,具有独特性(该像素的颜色在整体图片中出现得越少越好)。
额外匹配条件
在执行文本、图片类鼠标操作时,为了应对窗口中含有多个目标对象(文本、图片)的情况,可以使用一些额外的匹配条件,来过滤掉无关目标。比如,进一步要求目标对象附近有指定的文本或图片。

如上图所示,我们希望点击文字“Target”,但图中有三处“Target”。为了排除干扰,我们可以设定仅点击位于文字“Click Here”附近的“Target”。
此动作可以截获屏幕或窗口的当前显示内容。
您可以指定截图范围,比如
- 整个屏幕
- 屏幕指定区域
- 指定窗口
- 指定窗口的指定区域
当指定截图区域时,您需要指定该区域的位置(起点)和大小(长宽)。在指定位置时,起点位于屏幕或窗口的左上角。当指定屏幕区域时,所指定的是该区域在屏幕上的绝对位置。当指定窗口区域时,所指定的是该区域在窗口中的相对位置。比如,假设截图区域的长和宽均为 100,而且:
- 如果您想截取窗口的左上角,您可以指定区域为 (水平起点 0, 垂直起点 0, 长 100, 宽 100)。
- 如果您想截取窗口的右上角,您可以指定区域为 (-100, 0, 100, 100)。
- 如果您想截取窗口的左下角,您可以指定区域为 (0, -100, 100, 100)。
- 如果您想截取窗口的右下角,您可以指定区域为 (-100, -100, 100, 100)。
指定窗口标题
在 MacOS 上,大部分应用都会同时存在多个窗口。比如,当一个应用弹出 "关于" 对话框后,会出现至少两个窗口。其中一个是主窗口,另一个是“关于”窗口。对于 Safari 应用,每个打开的标签页都有其各自对应的窗口。为了区分这些窗口,可以指定参数 窗口标题。对于 Safari 应用,实际上是限定所抓取指定的标签页。
文字识别动作支持从图片/窗口内容中识别文字。
显然,一张图片有可能包含不止一段文字。所以,文字识别动作返回的是所有被识别到的文字所组成的数组,而不是一个基本变量。比如,当该图片仅包含一个数字 32 时,动作返回识别结果 ["32"]。我们可以利用 获取第一个元素 动作获取该数组的第一个元素 32。
文本识别结果与语言有关。比如,如果把被识别的语言设定为英文,就无法正确识别出图片中的中文。
文字转语音(TTS)能将多种语言的文本合成为语音,并朗读出来,从而支持自动化语音控制,特别适合于支持语音控制的场景(比如某些 iPhone 应用)。

弹出一个模态对话框,用以显示一些信息,或者获取用户输入内容。

发送一个在当前设备上显示的通知,称为本地通知。本地通知用于提醒用户进行某些操作或者通知用户关于脚本运行状态的信息。

设置或移除 键鼠精灵 在系统右上方状态栏上的标题文字。此动作可以用于提示系统当前状态,或者脚本的当前运行状态。

变量
变量是用于储存内容(如文本、数值、图像或其它)的容器。使用变量是扩展您的脚本功能,使其更加灵活和强大的最佳方法。
变量、数组和字典
型雕内置支持三种主要变量类型:基本变量、数组和字典。
- 基本变量,通常简称为变量,不但可以用于存储文本,还可以用于存储以文本表示的数值(比如"123")和图像。
- 数组,是由任意数量的文本元素组成的有序的数据列表。允许使用列表索引(即在列表中的序号)来访问数组中的数据元素。数组允许以 JSON 数组的形式保存到变量中。
- 字典,是由任意数量的键值对组成的数据结构。若要获取字典中特定键的值,你可以使用 获取字典值 动作并指定键名。字典允许以 JSON 字典的形式保存到变量中。
粘贴板
在键鼠精灵中,系统粘贴板通常被作为一种特殊变量来使用。粘贴板比普通变量更加方便,特别是用户在开发和调试脚本时,可以轻易观察当前步骤的运行情况。尽管如此,在正式运行脚本时,应尽量使用变量,而不是粘贴板。这是因为:
- 粘贴板的访问速度远远低于变量。在应用访问粘贴板时,需要在系统和应用程序之间来回传递数据,系统固定开销很大。
- 另外,粘贴板是全局共享的,很容易相互干扰。
用户变量
除了内置变量之外,用户还可以自行定义变量,通常称为用户变量,自定义变量,或者“有名”变量。
用户变量都是基本变量,按名访问。比如
- 将名为 价格 的变量赋值为 29.9。
- 读取名为 价格 的变量(的值)。
作用域
在键鼠精灵中,变量的有效范围是全局的,被所有脚本所共享。
脚本示例
这里讨论一些常见的脚本的编写思路。
需求:假设有一个应用场景,监控屏幕上的某个区域。如果此区域变成预设图片A,那么键盘按下自定义“1”建。如果此区域变成预设图片B,那么键盘按下自定义“2”建。
上述需求可以参考以下的逻辑流程:
将脚本设置为无限循环,其中包含如下流程:
- 抓取屏幕的指定区域
- 如果图片与图片A相似,那么按下按键1
- 如果图片与图片B相似,那么按下按键2
其中,A和B可以通过抓屏来获取。
上述脚本足够简单,非常适合于新手入门。但是,它却也隐藏了太多的细节。如果执行结果并非预期,难以观察其中究竟是哪一步出了问题。为此,可以尽量拆分其中的步骤,改写为下面的形式:
- 抓取屏幕的指定区域,并输出到变量3
- 计算变量3中的图片与图片A的相似度,输出到变量1
- 计算变量3中的图片与图片B的相似度,输出到变量2
- 如果变量1大于指定值,那么按下按键1
- 如果变量2大于指定值,那么按下按键2
然后,开启专家模式,开启右侧边栏中的日志界面,运行脚本,观察执行过程。
优化性能
关闭日志
关闭 日志 和 文件日志,可以提高脚本运行性能。
优化抓屏性能
有一些技巧可以优化在抓取屏幕内容时的性能:
- 在选择优化选项时,选择 性能优先 而不是 质量优先。
- 尽可能的缩小目标窗口的大小,仅露出关键区域。
- 将所抓取的图片输出到 变量 而不是 系统粘贴板。
优化图像识别性能
有一些技巧可以优化在识别图像内容时的性能,比如识别文本、识文点击、识文移动、识文拖动、识别条码/二维码时的性能。
- 禁用 生成辅助分析图像。此选项仅用来跟踪、分析脚本的执行中间过程,并不会直接影响执行结果,但会拖慢脚本运行速度。建议在分析结果后,关闭此选项。
防止在后台小憩
如果 键鼠精灵 的窗口长期完全隐藏在其它窗口的背后,macOS 会使其进入 应用小憩 状态,降低它的运行速度,从而让前台窗口的性能表现更佳,并节约电能。然而,如果我们想让 键鼠精灵 长时间在后台高性能运行(比如在后台实时监视某个窗口的内容变化),避免使其进入 小憩 状态,可以最小化 键鼠精灵 的窗口(而不是直接任由窗口被其它窗口遮盖)。
专家模式
键鼠精灵 支持两种工作模式。
- 初学者模式:基本功能齐全,简单,易于理解,适合新手入门。
- 专家模式:开放更多的高级功能,允许进行更深层次的配置。控制深入而精准。学习难度曲线陡峭。富于挑战。适合具有丰富经验的专业人士。
在默认情况下,键鼠精灵 工作在 初学者模式。依次打开 键鼠精灵 > 设置 > 高级,切换 新手入门 和 高级专家。

付费与内购
付费后,用户能获得如下功能:
- 变量
- 计算引擎
- 条件
- 流程控制(如果/否则/返回)与错误处理
- 导出/导入脚本
- 录制脚本
- 微调某些内部动作参数
比如,在为脚本增加新动作时,待选动作列表中的部分动作是灰色的,无法选取。这代表这些动作是付费功能,将在付费后解锁。
键鼠精灵有两种付费方式:一次性付费与订阅会员。其中,订阅会员又分为按年订阅和按月订阅。
这些付费方式在软件功能权限上没有任何区别,都是直接解锁全部功能。只不过一个是买,一个是租。一次性付费是买,订阅是租。
在付费完成后,如果发现需要付费的功能仍然处于被锁定状态,通常是因为网络不畅,或者因为 AppStore 故障。
应用内嵌了 Apple 提供的购买界面,而这个内嵌的小商店完全由 Apple 维护其逻辑。Apple 保证,当用户完成付费后,Apple 会告诉软件是否已经付费。然而,如果 Apple 没有这么做,建议你:
- 重启应用后再试(需要保证网络联通,AppStore 才会把验证结果告知你的 Mac,进而告知应用)
- 点击应用内嵌的 AppStore 中的 恢复 按钮。
请放心,对于同一个项目(一次性付费/月付/年付),无论点击多少次都不会重复付费。AppStore 会告诉你已经购买过此项目。
隐私与安全性
此应用可以为您执行大量的自动化任务。为此,您需要授权它来完成这些操作。所需要的系统权限列表会根据 macOS 版本的不同而略有区别。在大多数情况下,您需要打开 系统设置 中的 隐私与安全性 来授权。

如上图所示,如果图中两项都显示绿色,表示已经此应用已经获得了系统授权。
辅助功能
授权允许控制窗口、菜单、鼠标、键盘,并监控鼠标和键盘操作。此权限被用于实现如下自动化任务:
- 监控鼠标操作
- 监控键盘操作
屏幕录制
授权允许录制屏幕。此权限被用于实现如下自动化任务:
- 屏幕截图,并放入指定变量,供后续处理。
- 文本识别,并将识别到的文本放入指定变量,供后续处理。
- 识图点击:点击屏幕或指定应用窗口中的指定图片。
- 识文点击:点击屏幕或指定应用窗口中的指定文字。
隐私政策
不收集数据。
开发者不会从此应用中收集任何数据。
哪些应用功能需要用到屏幕录制?
- 屏幕截图,并放入指定变量,供后续处理。
- 文本识别,并将识别到的文本放入指定变量,供后续处理。
- 识图点击:点击屏幕或指定应用窗口中的指定图片。
- 识文点击:点击屏幕或指定应用窗口中的指定文字。
虽然为了实现此应用的功能特性,此应用需要获取一些系统权限,比如录制屏幕、监控鼠标键盘等,但这些权限仅用于实现用户主动发起的操作自动化任务,并不会上报给开发者。
应用会通过录制屏幕收集哪些数据?
此应用会根据用户的要求(用户自行编写的脚本),采集用户所指定的图像或文本。此应用本身或者开发者不会收集任何数据。
出于何种目的收集上述数据?计划如何使用这些数据?
此应用不收集任何数据。也无任何计划收集或使用任何数据。
数据会被分享给第三方吗?
不会。
数据存储在哪里?
数据存储在计算机随机访问存储器(RAM)里。如果应用退出,或者计算机关机或重启,数据会丢失。如果用户选择把数据输出到系统粘贴板。那么用户可以通过 macOS 粘贴板而不是本应用来访问自己所收集的数据。