macOS 下使用 CapsLock 键切换 ABC 与搜狗输入法

macOS 下使用 CapsLock 键切换 ABC 与搜狗输入法

在 macOS 下,默认的英文输入法 ABC 是不能删除的。它不能像 Windows 下那样,只要有一个搜狗输入法,然后在它内部切换中英文就够了。macOS 就不得不涉及如何在两个输入法之间做切换了。系统默认的切换快捷键是 Command + Space(空格)。但使用这个快捷键并不太好,因为很多编程用的 IDE 会用到这个快捷键,比如像 Visual Studio Code 里的智能提示(IntelliSense)。所以,我一般使用 CapsLock 来作为输入法切换键——因为它使用的频率低、离手近按键快。

macOS Mojave 下使用系统自带支持

可喜的是,在最新版的 macOS Mojave 下,已经默认支持了。


macOS 下使用 CapsLock 键切换 ABC 与搜狗输入法


勾选后,只要按一下 CapsLock 就能在 ABC 和搜狗之间切换。而且长按就能激活大写——当然一般要输入大写,我感觉更方便地还是用左右 Shift 来输入,除非是要输入一长串大写字母(如全局变量)。

那么在 macOS High Sierra 和之前的版本里,该如何达到上述效果呢?有的同学可能有疑问,既然最新版已经实现了,为什么要讲旧版本呢?因为并不是所有人都愿意或立马升级到最新版。最新版在刚出来时,可能会有一些软件兼容性问题。比如这两天我就遇到了一个 VirtualBox 无法启动 macOS 虚拟机的问题。所以,对那些还留在旧版本的同学,我们还是有办法实现上述目标的,而且还是免费的,不用花钱、不用破解。关键就是 Karabiner Elements 这个软件。

macOS High Sierra 以下使用 Karabiner Elements 实现

Karabiner Elements 是一款免费、开源的键盘定制化工具。可以通过 Homebrew 或前往官网(https://pqrs.org/osx/karabiner/)下载安装包进行安装。它可以自定义规则来修改按键定义,十分方便。这里我们的目标是改写 CapsLock 键——当单独按下 CapsLock 实体键,发送一个不占用任何按键的 F17;而当按下 fn + CapsLock 时,才是切换为大写状态。规则很简单,就是一个 JSON 配置:

{
 "title": "Using caps_lock to switch input source, see https://blog.kiliwalk.com/macos-capslock-switch-input-source/",
 "author": "kiliwalk([email protected])",
 "homepage": "https://blog.kiliwalk.com",
 "manual": "https://blog.kiliwalk.com/macos-capslock-switch-input-source/",
 "import_url": "karabiner://karabiner/assets/complex_modifications/import?url=https://blog.kiliwalk.com/images/caps_lock_switch_input_source.json",
 "rules": [
 {
 "description": "Pressing caps_lock sends f17, pressing fn + caps_lock sends caps_lock",
 "manipulators": [
 {
 "from": {
 "key_code": "caps_lock"
 },
 "to": [
 {
 "key_code": "f17"
 }
 ],
 "type": "basic"
 },
 {
 "from": {
 "key_code": "caps_lock",
 "modifiers": {
 "mandatory": [
 "fn"
 ]
 }
 },
 "to": [
 {
 "key_code": "caps_lock"
 }
 ],
 "type": "basic"
 }
 ]
 }
 ]
}


首先要导入以上规则。有两种方法,一种是将以上内容保存为一个 JSON 文件(比如 caps_lock.json),然后复制到 ~/.config/karabiner/assets/complex_modifications 目录下。还有就是直接使用 Safari 或 Chrome 浏览器,打开这个网址:karabiner://karabiner/assets/complex_modifications/import?url=https://blog.kiliwalk.com/images/caps_lock_switch_input_source_v3.json,它会询问你是否启动 Karabiner Elements,确定后,就可以了。

接下来我们要应用这个规则。进入 Karabiner Elements Preferences -> Complex Modifications -> Rules,点击左下角的 Add rule,找到 Using caps_lock to switch input source... 这条规则,点击 Enable All 即可。


macOS 下使用 CapsLock 键切换 ABC 与搜狗输入法


最后,我们还要去修改下系统里的切换输入法的快捷键(默认是 Command + Space)。前往 System Preferences -> Keyboard -> Shortcuts -> Input Sources,选中 Select the previous input source(选择上一个输入法),点击右侧的按键区域,然后按下 CapsLock 实体键,此时上屏的是 F17。同时取消勾选 Select the next source in input menu(选择“输入法”菜单中的下一个输入法)。

这样,当我们按下 CapsLock 后,就能在搜狗和 ABC 之间进行切换了。如果需要大写,按下 fn + CapsLock 就可以。这里之所以不是用长按 CapsLock 进入大写,是 Karabiner Elements 的一些限制——配置复杂,且也不太稳定。

搜狗输入法配置

除了系统层面快捷键的修改,搜狗输入法还要做一些调整。

  1. 按键配置里,中英文状态切换改为“禁用快捷键”。因为我们不需要用搜狗输入法的英文输入模式了。
  2. 按键配置里,把当前输入态提示改为“无提示”。避免在按 CapsLock 切换时,还在桌面右上角提示大写状态。


macOS 下使用 CapsLock 键切换 ABC 与搜狗输入法


拒绝生活的惯性,挖掘那些被我们习以为常的工具


分享到:


相關文章: