用好 Keyboard Maestro,一键切换输入法和浏览
发布时间: 2023-07-11

美国作家 H. Jackson Brown Jr. 说过一句很有名的话:

Never make fun of someone who speaks broken English. It means they know another language.

永远不要取笑说蹩脚英语的人,因为这意味着他们懂另一门语言。

Never make fun of someone who speaks broken English. It means they know another language.

永远不要取笑说蹩脚英语的人,因为这意味着他们懂另一门语言。

尽管这是一句给英语母语者的告诫,很多英语母语者对此也表示非常赞同,然而我第一次看见这句话时,心里却充满了对英语母语者的羡慕,因为他们可以几乎不需要切换键盘输入法。而作为一名中文母语者,在电子输入设备上切换英文和中文输入法,则是我每天的高频操作。

macOS 提供了切换输入法和浏览器的系统级方法,比如通过快捷键「轮换」输入法,或者使用 Caps Lock 键切换输入法。

macOS 系统提供的切换输入法的方法

然而,系统级的方案并不完美,基本上只是「还能用」的水平,当前使用的到底是哪种输入法,很多时候还是得靠「盲猜」,无法满足我的需求。正因如此,很多切换输入法的第三方应用应运而生,它们一般提供了更为丰富的功能,比如为每种输入法自定义一个快捷键,记住上次使用的输入法,显示当前的输入法,根据应用切换输入法等。

与切换输入法类似,切换系统默认浏览器也具有相同的问题。一般情况下,我们只能在系统设置中进行修改。

展开全文

在系统设置中切换默认浏览器

与切换输入法不同的是,我们还可以直接在浏览器内的设置中将其设置为系统默认浏览器。

在 Google Chrome 中将其设置为系统默认浏览器

然而,这两种方法都需要打开特定的应用程序,操作起来很麻烦。大概正是基于这样的痛点,市面上同样也有专门用于切换 macOS 默认浏览器的应用,比如:Browser Ninja、i-Picker、OpenIn。

不过这几个 App 都是收费应用,对于切换默认浏览器这个简单的功能来说,价格也实在算不上便宜。

我派很多用户的原则是首选使用系统自带应用,也就是第一方应用,对于第三方应用表示谨慎。与此相比,我的原则稍微有一点不同:尽量使用高质量的应用,不论是第一方还是第三方的。按照我的标准,不少专门用于切换输入法和浏览器的应用都不能算是高质量的第三方应用,而它们提供的功能实际上可以通过高质量的应用来完成。

基于以上原因,本文尝试使用 macOS 自动化领域的佼佼者——Keyboard Maestro来实现快捷切换输入法和浏览器的功能。需要指出的是,Keyboard Maestro 并非一个免费的应用,官网售价 36 美元,但考虑到 Keyboard Maestro 能够实现的丰富功能,个人认为这个价格相当值得,因此非常推荐入手。

▍切换输入法

在使用 Keyboard Maestro 切换输入法之前,我用的是 macOS 上强大的改键工具 Karabiner-Elements,并搭配 GitHub 上的 一个配置,可以实现「短按左 ⌘ Command 键切换为中文输入法,短按左 ⌥ Option 键切换为英文输入法」。

我很喜欢这种方式,因为它让英文和中文输入法分别有了一个对应的快捷键,让我不用盲猜当前是什么输入法。形成肌肉记忆之后,输入英文前,短按一下左 ⌥ Option 键,输入中文前,短按一下左 ⌘ Command 键,打字时基本上不会出错。

使用 Karabiner-Elements 切换输入法

然而,如这个配置文件所写的那样,这个方法的问题在于「可能会出现切换失败的情况」,我在实际使用过程中也经常遇到切换失败或延迟的情况,非常影响打字效率。也正是由于存在这个问题,我一直在寻找快捷准确地切换输入法的方法,于是将目光转向了 Keyboard Maestro。

Keyboard Maestro 中有一个叫作「Set Keyboard Layout」的动作,用于设置系统中已开启的输入法。与 Karabiner-Elements 相比,这个动作相当快速而且十分准确,我从没有遇到延迟或切换失败的情况。

为了使用它,我们只需设置一个触发条件,就可以实现切换输入法的功能。你可以按照上面提到的 Kawa 那样,在 Keyboard Maestro 中选择触发条件为「Hot Key Trigger」,为每种输入法设置一个单独的快捷键(不仅限于英文和中文),但这种触发方式只能是组合快捷键,不能是单独的一个 ⌘ 或 ⌥ 等修饰键(Modifier Keys)。

使用 Keyboard Maestro 切换英文 ABC 和中文双拼输入法

由于切换输入法是一个相当高频的操作,为了找回熟悉的快捷切换方式,我没有使用快捷键触发,而选择的触发条件是「USB Device Key Trigger」,因为这样可以实现「短按左 ⌘ Command 键,切换为中文双拼输入法,短按左 ⌥ Option 键,切换为英文 ABC 输入法」,如下图所示。

短按左 ⌘ Command 键,切换为中文双拼输入法,短按左 ⌥ Option 键,切换为英文 ABC 输入法

需要提醒的是,上面的 Keyboard Maestro 宏之所以会显示「Karabiner DriverKit VirtualHIDKeyboard 1.6.0」,是因为我安装了 Karabiner-Elements。另外,由于 ⌘ Command 是组合快捷键的修饰键,按下其他快捷键的时候也会触发切换输入法的操作,比如按下左边的 ⌘ Command + A,也会将当前输入法切换为中文。

也就是说,无论单独还是组合按下 ⌘ Command/ ⌥ Option 键,都会触发切换输入法的操作,不过,好消息是这并不会影响快捷键的正常工作,因此并没有什么「副作用」。当然,如果你不喜欢单个修饰键的触发方式,可以根据键盘布局和个人偏好,设置为其他按键触发。

根据应用切换输入法

不少切换输入法的 App 可以「根据应用切换输入法」,这对于一些只需使用特定输入法的应用来说,非常实用,比如在 iTerm、VS Code中,一般不需要使用中文输入法,只需要使用 ABC 输入法。

借助 Keyboard Maestro 的「Set Keyboard Layout」动作,我们只需将触发条件设置为「特定应用激活时」,就可以非常简单地实现「根据应用切换输入法」这个功能,如下图所示。

一打开 iTerm 就将输入法切换为 ABC

在浏览器地址栏切换为 ABC

在浏览器地址栏中,我们一般只会输入网址,因此希望光标定位到浏览器地址栏时,输入法自动切换为 ABC 输入法,而不是中文输入法。

尽管 Keyboard Maestro 无法将「光标定位到浏览器地址栏」作为触发条件,但我们可以用快捷键山寨一个类似的操作。在 Safari、Chrome、Firefox 等主流浏览器中,定位到地址栏的快捷键是 ⌘ Command + L,它的名称一般叫作「Open Location…」。

因此,可以将触发条件设置为快捷键 Command + L,然后将输入法切换为 ABC,再模拟按下快捷键 Command + L,如下图所示。

在浏览器地址栏切换为 ABC 的 Keyboard Maestro 宏

使用快捷键定位到浏览器地址栏时切换输入法为 ABC

关于切换输入法,还不得不提到 Vim,因为在 Vim 是基于英文开发的,在其中使用中文是一件非常痛苦的事。如果你在 Mac 上使用 Vim,想要提高使用中文输入的效率,推荐使用 SmartIM这个插件,用于切换输入法。

▍切换浏览器

切换默认浏览器

Keyboard Maestro 论坛上有一位网友分享了一个切换系统默认浏览器的宏,但它需要安装 Xcode,看起来非常复杂,因此我没有使用它。

Keyboard Maestro 论坛中的一个切换浏览器的复杂的宏

但也是在 Keyboard Maestro 论坛上相关的讨论中,我发现了 defaultbrowser这个命令行工具——用于切换 macOS 系统中的默认浏览器,可以使用 Homebrew来安装它:

brew install defaultbrowser

你也可以下载源代码,然后自行构建并安装它:

make && make install

安装完成之后,在终端中输入 defaultbrowser,会输出 Mac 上已安装的所有浏览器的 上,输出结果为:

chrome

torbrowser