如果要说 2017 年我最喜欢的应用,我第一个想到的是 Keyboard Maestro。它并不是新秀,而是效率应用届元老级别的 App。惭愧的是,我从 Windows 转型为 macOS 用户不久就购入了 Alfred,但对于拥有同样口碑的 Keyboard Maestro 完全没有理睬,现在颇有点相见恨晚的感觉。


当初不理睬的原因有两点:

  1. Keyboard Maestro 的低颜值让我怀疑他们是否辞退了所有设计师

    我对待 App 是个极端的外貌协会,App 的图标不好看,我甚至会无视功能直接拒绝它,去寻找它的替代品。所以当初看到 Keyboard Maestro 粗糙的界面时我是拒绝的;更甚,官网提供的说明文档的排版和内容都糟糕到让我完全没有读下去的欲望。文档中定义了很多抽象概念,却几乎不提供实例,插图也没有,完全不知所云。你可以想象一下如果本篇文章没有一张插图,你读完之后能理解多少。

  2. Alfred 实在太过强大,几乎可以包办一切

    因为 Alfred,我弃用了各式各样的应用启动器,各种剪贴板工具(比如 Paste),自动补全工具 TextExpander,以及鼠标党必备的 PopClip。所以初见时,我觉得 Keyboard Maestro 能实现的功能,Alfred 一定也能实现。


我真正开始对 Keyboard Maestro 产生兴趣,是在看了 Youtube 博主 my apfelworld 的视频之后。从他各种天秀操作中,我发现利用 Keyboard Maestro 的 Macro Palette(以下简称 Palette)可以实现许多独特的操作。


什么是以及我为什么开始用 Macro Palette


Keyboard Maestro 中的 Palette 主要分两种,一种是全局 Palette(Global Macro Palette),在任何条件下都能使用;另一种是普通 Palette(Macro Palette),可以自定义使用场景。

下面是 Palette 可能呈现给你的样子(这是我自定义的样式,你看到的应该会不同)

为什么要用这样一个与系统 UI 不搭的浮动窗口去控制电脑呢?



长期使用Alfred,使我的使用习惯固定在了两种触发机制上,快捷键触发和 Keyword 输入,它们各有缺点:

  1. 快捷键 便捷的快捷键组合已几乎要用完了,继续增加其他快捷键并不直观,容易混淆,例如我经常就忘记 ⌥T,⌃⇧T 和 ⌥⇧T 分别是启动 Telegram,iTerm 还是 Tweetbot 了
  2. Keyword 输入 如果有时候要重复使用一个功能,通过 Keyword 输入会变得十分繁琐,需要不停地呼出 Alfred → 输入 → 运行;例如对一大堆图片进行分类,要把不同类型的图片分发到不同的文件夹里,每都要呼出 Alfred 的文件查看面板。


Keyboard Maestro 提供了 Macro Palette 这样一种更为直观的动作触发方式,这给了我去尝试它的理由。例如,对上述图片分类问题,如果旁边摆着一个 Palette,对 A 类型图片就点 A 按钮,以此类推。这种直观的操作,甚至很容易就能介绍给其他人使用。


以下是其他两个操作实例:

  1. 全局下启动 iTunes 并搜索 Apple Music 音乐
  2. 赏给某 App 以辅助功能权限(灵感来自my apfelworld):自动点击偏好设置中的权限小锁头 → 呼出 1Password → 定位到本机密码 → 复制粘贴密码 → 解锁

激活并显示一个 Palette,是通过 Macro 来完成的,所以 Keyboard Maestro 提供的所有动作触发方式都可以用来激活 Palette。

Keyboard Maestro 提供的所有 Macro 触发方式


成就 Palette 的重要细节


按钮菜单式的 Palette 不仅更为直观,进一步尝试之后,我发现其中还有许多细节使我动容。


Palette 允许不同的使用场景


得益于 Macro 的分组特性,你可以设置一组在特定场景下才能使用的 Macro:

  1. 特定 App 激活时
  2. 特定 App 未激活时
  3. ...


这允许你使用具有相同激活快捷键的 Macro Palette,因为在不同场景下使用它们时,不会发生冲突。例如,我的所有普通 Palette 快捷键都是 ⌥⇧P。

不同情景下的 Macro Palette


Palette 一次性触发


我不喜欢各种带悬浮窗的应用(划词翻译软件我从来不用,带悬浮窗的下载工具也拜拜)。因为使用悬浮窗的频率很低,而它们却总是无差别地出现,让我觉得十分碍眼。

Palette 需要 Macro 作为开关来激活,不会无差别地出现。而且,它提供了一个很棒的特性,在触发 Palette 中任何一个动作之后自动消失,不会再继续遮挡宝贵的屏幕空间。

Palette 触发后只进行一次动作


层级操作:全局 Palette 中的子 Palette


你可能注意到我用虚线分割,对全局 Palette 中的动作进行了分类。然而,随着我的全局 Palette 中 Macro 越来越多,我发现选择它们的效率变得越来越低,于是我开始考虑设置一些次级 Palette 以进一步分类,我叫它们「子 Palette」。

我的 Palette 父子结构图

结合了「一次性触发」后隐藏 Palette 的特性,你可以实现这样的操作,Palette 来无影去无踪,没有留下任何痕迹。

常用搜索 → sspai 的定义搜索

子 Palette 中可以使用快捷键


在上面的层级示意图中,你可能发现子 Palette 中各条目的首字母呈现灰色(中文开头除外),这表示你可以点击键盘上对应的字母来触发动作,不需要再用鼠标点击。如果两个条目具有相同首字母的,它会进一步灰掉下一个字母,见图中左侧按下 M 后的效果。


普通 Palette 激活时出现在鼠标指针之下


除了全局Palette,所有Palette都能设置为激活在鼠标指针之下。

Palette 出现在鼠标指针之下

后记


Keyboard Maestro 具有十分强大的潜力,但本文不旨在分享实用 Macro。毕竟「授人以🐟,不如授人以渔」,侧重于基本的 Macro 设计逻辑,也许能为大家提供一些具有先验性的知识。至少,Macro Palette 就向我们展示了 Keyboard Maestro 这款效率类应用可能的交互方式。

另外,我之前发现 Keyboard Maestro 居然可以识别屏幕特定区域,然后自动点击那个区域,这简直像 Windows 下的按键精灵一样了。借助这个特性你完全不需要去掌握 macOS 下的 GUI Scripting 也能不动鼠标和键盘去模拟点击窗口中的UI元素,我觉得挺酷的,值得分享一下。

最后,欢迎评论补充文章的不足之处。



21
7