article_image

考虑到 Keyboard Maestro 本身有模拟快捷键和键盘输入的模块,故本文以 Keyboard Maestro 为例,介绍如何为 LaunchBar 常用功能绑定快捷键。不过,背后的方法是通用的,即便是非常基础自动化工具 Shortcuts,也完全可以做到 Keyboard Maestro 在本文中所做的一切——只是需要写代码脚本,这就是我不以为它为例的原因。

在效率工具使用者中,也大有抱持着辉格史观——一切不断进步,马不停蹄——的人士,隐隐约约暗示着效率工具交互方式朝着“光明的未来”前进:先是低效的图形界面,尔后有人开始背诵快捷键,接着马上意识到快捷键根本不够用,于是有人开始折腾 Keyboard Maestro Palette(我也是其中一员),也有人另辟蹊径,考虑 LaunchBar 等启动器(Launcher)。

LaunchBar 等启动器固然是给快捷键解压的良药,但正如“解压”这个词所暗示的,快捷键并不会消失——相反,它会留给最高频的操作。而某个高频操作如果恰好在 LaunchBar 中,那就需要反向操作,考虑给 LaunchBar 项目(item)绑定快捷键。1

LaunchBar 为何也需要快捷键

LaunchBar 是一款启动器工具,为其绑定快捷键,难免惹来怀疑:用 LaunchBar 的初衷,恐怕就是为了避免记忆大量快捷键,转而通过字母、数字和符号快速过滤一切,如今又把快捷键绑上去,岂不是买椟还珠?

其实不然,快捷键之所以要减负,前提恰恰是快捷键有用且稀缺,而 LaunchBar 中的某些功能,凡举用得足够频繁,当然值得消耗快捷键键位资源。详言之,在各家自动化工具功能趋同的大背景下,交互界面反而会成为重点;有必要绑定快捷键的,往往是离不开 LaunchBar 之交互方式的功能,例如:

  • 用 LaunchBar 的超大号输入框重命名文件名;
  • 凭 LaunchBar 的搜索栏,查看 DEVONthink 或 Calibre 中的文献资料;
  • 借 LaunchBar 的列表浏览各种信息,例如经常需要翻看的 Safari 书签或最近打开过的文件;
  • ……
Alt text
LaunchBar 的界面适合用于重命名、导航或检索

不难看出,上述场景,基本都是“Bar”这一交互界面的专长(对 Alfred 或其他启动器而言,也是如此)。易言之,若是原本就可以用 Keyboard Maestro 或 Shortcuts 完成的功能,则可不必假借 LaunchBar 之力——毕竟,LaunchBar 完全是干巴巴的代码脚本,哪里有前两款工具方便呢?这样想通,就不会陷入“我能故为之”的功能主义怪圈了。

如何为 LaunchBar 绑定快捷键

绑定快捷键者,快捷键只是触发机关(Trigger),关键在于,如何调用后续的 LaunchBar 功能。而 LaunchBar 又是一扎功能的集合,可以启动文件、网页、系统常用功能以及自动化动作,若不分而论之,则问题将如乱麻。实际上,只要明确各类功能的触发方法——或是快捷键,或是 AppleScript,或是只能经由缩写词(Abbreviation)——多数可以绑上快捷键。

思考的过程着实曲折,在此就不带读者重蹚一番浑水,仅指出主要思路:LaunchBar 中的项目有不同类别,包括:

  1. 自带快捷键的项目,例如文件重命名,此类可用模拟快捷键解决;
  2. 可以由 AppleScript 触发的动作(Actions)和服务(Services),最简单,写一段 AppleScript 脚本即可;
  3. 前两种方式均无的项目,例如 Safari 书签栏,这需要用自动化工具模拟键盘操作,即照常按下缩写词。

以下诸节,各讨论一种情形。严格来说,Keyboard Maestro 和 LaunchBar 的配合首先应当分为两大类,一类是直接触发 LaunchBar 项目,无多周折;另一类则要输入文件,此时就涉及输入输出。本部分前两节均属后者,其中的技术细节可供参考。

Alt text
Keyboard Maestro 触发 LaunchBar 的几种路径

为 LaunchBar 原生快捷键绑定快捷键:以重命名文件为例

>>Keyboard Maestro Macro 下载<<

诸多 LaunchBar 项目中,首先让我意识到需要绑定快捷键的,就是文件重命名。我曾为 UNTAG 会员栏目 写过一篇豆腐块文章,指出 Finder 本身的文件重命名输入框过于逼仄,简直就像在学微雕;相应的,LaunchBar 的重命名窗口则非常宽敞,一旦用过,就会感叹由奢返俭难。

Alt text
LaunchBar 的重命名输入框非常宽敞

LaunchBar 显然也意识到重命名操作之频繁,原生为其设置了快捷键 ⇧Shift-⌘Command-R,不过,在此之前需要先双击 ⌘Command 键就文件发送(Send)2到 LaunchBar,多了一个环节。这不是念叨几遍“肌肉记忆”就能含糊过去的事儿,相反,完全可以把 LaunchBar 的文件吗重命名功能独立出去,在 Finder 中直接启用。

Alt text
用 Keyboard Maestro 快速呼出 LaunchBar 重命名界面

模拟快捷键本身对于 Keyboard Maestro 而言是一碟小菜,但是,重命名的情况稍稍复杂一点,还需要先确定重命名的对象,这一步首先要用 Keyboard Maestro 的 %FinderSelection% token 获取当前所选文件,再配合 AppleScript 脚本将所获文件传给 LaunchBar。

Alt text
通过快捷键触发 LaunchBar 项目的 Keyboard Maestro步骤

为自动化动作绑定快捷键:以压缩图片为例

>>框架动作下载(需自行配置具体参数)<<

第二类 LaunchBar 项目由 AppleScript 触发,主要包括 LaunchBar 提供的动作、用户自定义动作以及系统服务。LaunchBar 对前两者一视同仁,最后一者的 AppleScript 语法则稍有不同,可见诸 LaunchBar 的 AppleScript 词典。

Alt text
LaunchBar 的 AppleScript 词典

若不涉及文件输入,则可以跳到下一步;反之,则需要确保已在动作编辑器(Action Editor)中为目标项目勾选“Accepts string argument”。盖通过 AppleScript 运行动作时,输入的实际上是文件路径,其本质为字符串(String),是故需要手动勾选这一输入类型。

Alt text
为 LaunchBar 动作勾选字符串输入

下图中,您想使用的 LaunchBar 动作 部分即需要触发的动作名,我有一段时间经常需要压缩图片,于是为“Image Compressor”这一自定义动作绑定了快捷键,免去反复手动发送文件到 LaunchBar。

Alt text
通过 AppleScript 启动 LaunchBar 项目的 Keyboard Maestro 步骤

为几乎任何项目绑定快捷键:以 Safari 书签为例

>>框架动作下载(需自行配置具体参数)<<

最后一种触发方式,也是兜底方法,即全盘复制通常触发 LaunchBar 项目的步骤:先呼出 LaunchBar,然后逐个输入缩写词。惟需注意,Keyboard Maestro 无法模拟按下两次 ⌘Command3,所幸 LaunchBar 本身也是一个软件(Application),只需用 AppleScript 召唤之,即可呼出 LaunchBar 窗口,紧接着就可以输入缩写词。

Alt text
用 Keyboard Maestro 快速呼出 LaunchBar Safari Tabs 界面

例言之,如果想通过快捷键查看 Safari 书签4,就可以先确定缩写词,再模拟按下这一串按键。至于浏览 Safari 历史记录或标签栏,也可如法炮制。

Alt text
通过缩写词启动 LaunchBar 项目的 Keyboard Maestro 步骤

为确保不撞车、不触发其他名称类似的动作,可以预先为 LaunchBar 项目设置缩写词。最保险的做法当然是完整输入项目的完整名字,但这可能带来显著的延迟,一般而言,输入主要的辅音字母即可——当然,正式使用前请测试几次,以排查风险。

Alt text
为 LaunchBar 项目设置固定的缩写词

小结

苟言学习成本,故事大抵是线性前进的,这或许也是不少人——很可能是多数人——的实际学习经历,但它并不符合工具本身的发展历史和逻辑。

工具发展的故事,往往出乎辉格史观者的意料。工具发展史并非后浪拍死前浪的斗争史,有的只是不断适应新任务环境,而掌握工具本身,绝非效率游戏的主线任务。快捷键也好,启动器也罢,图形界面也无妨,都是容器中的内容物,它们的形状,反映了任务环境的形状,我们最终要面对的也是任务,而不是工具本身。

🛍 我撰写的付费栏目《Keyboard Maestro 进阶指引》正在 UNTAG 售卖,详解 Keyboard Maestro Macro 高级设计思路,欢迎选购:付费内容链接

Keyboard Maestro 进阶指引
Keyboard Maestro 进阶指引

  1. 本文以 Keyboard Maestro 为刃,固然也可以取道 Shortcuts,但前者可为各个软件设置不同的快捷键,互不打搅,在本文场景下,意味着可以专注于 Finder,而不占用其他软件中的键位,故择之。顺予指出,我所取的重命名快捷键 ⇧Shift-⌘Command-R 在 Finder 中原本用于打开 AirDrop 窗口,却要重新选择一次文件,纯属浪费感情,远不如直接用 LaunchBar 的 AirDrop 功能,或自制一个真·AirDrop 快捷键(相关文章见 UNTAG 会员栏目第四十三期)。
  2. 发送(Send)是 LaunchBar 中的一个重要概念,与多数自动化工具直接运行的模式不同,如果 LaunchBar 需要处理一个文件,需要先在 LaunchBar 中导航到该文件,或者在 Finder 中选中文件后发送到 LaunchBar。“发送”作为统一入口,随后配合缩写词运行具体动作或服务,大大降低了设计和记忆快捷键的压力,不过也造成高频操作调用不便,其中的偏差,便是本文写作契机。
  3. 只要自带的快捷键模块和模拟按键模块均不逮,而 AppleScript 模拟按键似也照顾不到单按 ⌘Command 等修饰键。
  4. 好处多多,比如可以通过缩写词快速聚焦、导航,很快找到目标书签;同时,LaunchBar 的界面也比 Safari 自己的更大方,前者的设计师显然还没堕落到和眼镜厂商勾结的地步。

author_avatar

Lawyer, macOS/iOS Automation Amateur