惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
F
Fortinet All Blogs
J
Java Code Geeks
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
M
MIT News - Artificial intelligence
腾讯CDC
Last Week in AI
Last Week in AI
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
博客园 - 叶小钗
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
L
LangChain Blog
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
有了 LaunchBar 的⌘+Space 加持,Keyboard Maestro 才是真大...
2022-04-06 · via 少数派

缘起

LaunchBar 和 Keyboard Maestro 是两个我日常使用最多的效率工具。据 Keyboard Maestro(简称 KM) 在 About 界面显示,两台 Mac 上的 KM分别为我节省了 5 个月和 3 个月时间。

我个人应该是自 2016 年起开始使用 KM,感觉这个数字可能只是略有夸张,可以想见本人日常使用的频繁程度。对我个人而言,KM 实如其名,确实是“键盘大师”,其是“大师”,但是有点过于依赖键盘,优缺点都很明显。优点在 KM 有丰富的功能模块,而且可以通过积木式的可视化排列实现几乎无穷的可能,限制你的只是自己的想象力。具体可以看少数派已有的教程,如:

这些文章入门很好,但是涉及到的 KM 功能可能不到全部的 1/3。个人觉得 KM 最为有用的是可以感知系统环境,如剪切板是否改变及其内容,当前软件名称、窗口位置和大小、用户的输入等等。KM 的缺点在其唤起较为困难,虽然 KM 的 Macro 启动方式(trigger)已经很丰富,如可以通过热键、剪切板改变、Status_Menu 等,此外还有在 Macro Group 介面可以设置 Palette(一个根据当前软件判断是否弹出的列出了所有 Macro 的界面)。

KM 官网列出的 Trigger 以及一个 Palette 示例

以上提到的启动方式在 Macro 比较少时还算方便,当 Macro 较多时想找到想要的就会力不从心,如果设置的热键过多,难免记忆混淆;如果依赖 Palette ,每个软件弹出的 Palette 信置不同,需要视觉辅助去寻找,找到后仍需要通过点击或者所提示的热键进行启动。

LaunchBar 作为启动器软件,其在感知系统环境方面没有 KM 的优势,但在启动方面有先天优势:LaunchBar 系统自带了丰富的 Action、可以对检索到的条目进行二次筛选、其独特的 Retype 机制可以不用删除错误字符即可重新筛选等。因此如果可以通过 LaunchBar 来筛选 KM 的 Macro,将会达到事半功倍的效果。之前已经有部分用户考虑到这个需要,如以上提到的文章“ Keyboard Maestro 入门指南”中就列出了一个 LaunchBar 的 Action,通过这个名为Keyboard Maestro Macros (以下称 KMM)的 Action,可以检索 KM 中所有可用的 Macro,然后再通过输入字母将需要的 Macro 筛选出,回车以执行。

KMM 运行流畅,很有实用价值,但其缺点是将所有 KM 的 Macro 都列出来了,这样丧失了 KM 感知系统环境的灵魂。因为多数情况下,我最需要的是只能运行在当前软件下的 Macro,而不是针对其它软件制作的 Macro。此外则是每次需要检索 KM 的 Macro 时,需要通过⌘+Space唤起 LaunchBar,然后输入 “keyboard maestro macros” 或 “kmm”回车进行二次筛选,虽然费时不多,但是打断了思路,影响了流程。受到KMM 启发,想到可以通过制作 LaunchBar 的 Action 和 KM 的 Macro 相配合,实现单击⌘+Space 时唤起 LaunchBar 以供日常启动使用,双击⌘+Space 时就唤起当前软件的 Macro,因考虑到日常工作习惯,有时也需要检索 KM 中其它可用于全局的 Macro(如处理剪切板的 Macro),因此最好是当前软件对应 Macro 在前,全局 Macro 在后,如此岂不美哉。

具体实现

Keyboard Maestro 部分

KM 部分需要制作三个 Macro。第一个是用于生成所有全局可用的 Macro 属性 JSON 文件的 Macro。

用于生成所有全局 Macro 信息JSON的 Macro

第二个用于生成当前软件可用的 Macro 属性并拼接前面 JSON 文件的 Macro:

第三个是用于启动 LaunchBar 的 Macro(命名为 KM to Active LaunchBar),并将 KM 中的变量“LB”传递到 LaunchBar 用于显示和筛选。

LaunchBar 部分

LaunchBar 需要制一个 Action 用于接收 KM 生成的 JSON 文件并展示出来。

LaunchBar 需要制作的 Action

请以你的名字呼唤我

到了这里,只需要最后一步:如何设置总击⌘+Space 为打开 LaunchBar,而双击⌘+Space 为激活KM to Active LaunchBar,这时需要另一个软件:Karabiner-Elements

Karabiner-Elements 是一个改键软件,但是除了改键之外,还有其他功能,如可以运行 shell 语句。因此可以通过在 Karabiner-Elements 上设置双击时激活KM to Active LaunchBar(KM 上也有双击击活的 trigger,但是如果在KM to Active LaunchBar 的 trigger 中设置为双击 ⌘+Space,无法激活)。

在 Karabiner-Elements 的 Complex modifications 中增加一条设置:

{
    "description": "Double Command Spacebar to run shell",
    "manipulators": [
        {
            "conditions": [
                {
                    "name": "count",
                    "type": "variable_if",
                    "value": 1
                }
            ],
            "from": {
                "key_code": "spacebar",
                "modifiers": {
                    "mandatory": [
                        "left_gui"
                    ]
                }
            },
            "to": [
                {
                    "shell_command": "osascript -e 'tell application \"Keyboard Maestro Engine\" to do script \"KM to Active LaunchBar 的UUID\" with parameter \"Whatever\" ' "
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "spacebar",
                "modifiers": {
                    "mandatory": [
                        "left_gui"
                    ]
                }
            },
            "to": [
                {
                    "set_variable": {
                        "name": "count",
                        "value": 1
                    }
                },
                {
                    "key_code": "spacebar",
                    "modifiers": [
                        "left_gui"
                    ]
                }
            ],
            "to_delayed_action": {
                "to_if_canceled": [
                    {
                        "set_variable": {
                            "name": "count",
                            "value": 0
                        }
                    }
                ],
                "to_if_invoked": [
                    {
                        "set_variable": {
                            "name": "count",
                            "value": 0
                        }
                    }
                ]
            },
            "type": "basic"
        }
    ]
}

将第 22 行的 UUID 更改为之前标出的 UUID,即可实现双击激活对应 Macro。

至此大功基本告成。

尾声

因为 LaunchBar是通过英文字符、数字等对内容进行筛选,因此需要在 KM中制作 Macro 时标题加上英文,或者拼音缩写等字符。KM 中可以通过名称对 Macro进行排序,具体可见Palette Organizer v1.3 (updated Dec 3, 2021)的说明。


说明 1:本文基于 macOS Catalina(10.15.7)、Keyboard Maestro(10.0.2)、LaunchBar(6.15)。因为感觉高版本 macOS 没有重要的值得更新的内容,所以没有升级,高版本是否可用,还请自行测试。

说明 2:以上提到的 Macro 和 LaunchBar Action 可在此处下载