macOS 的终极键盘改键方案

得益于 Karabiner 这款强大的应用,在 macOS 上进行键盘映射是非常方便的。我既想要丰富的键盘自定义快捷键,又想让它们不与编辑器、IDE 的快捷键冲突。在摸索了一段时间之后,这是我最舒服的改键方案。

输入法切换

中文输入需要使用输入法,而字母语言不需要,因此英文世界的软件设计者通常不会考虑输入法快捷键冲突的问题。具体来说,输入法的中英切换占用了键盘上的⇧ (Shift) 功能键。同时系统也保留了⌃ (Control) + ␣ (Space) 这一组合用于在不同输入法间切换。
这样设置带来了不少冲突性问题。例如,⇧ 功能键在 Alfred 中是很常用的预览键,点按可以调用系统的 QuickLook 预览功能(即 Finder 中重按触控板触发的快速预览)。在不少多媒体软件中,⇧ 功能键也是重要的修饰键。此外,⌃ + ␣ 组合是多数 IDE 默认的智能提示键。
切换输入法的另一个痛点是,在开始输入前无法快速得知目前的中英文状态。如果需要输入中文时碰巧是英文输入法,那么除了删除重打就没有其他办法了。
输入法切换的改键参考了 V2EX 坛友 的思路。中英文输入法的切换不应该是循环切换,而应该是分开的。在我的改键方案中,左侧的 ⌘ (Command) 用于切换到英文输入法,右侧的 ⌘ 用于切换到中文输入法。

HyperKey

在键盘流里,我经常会设置一些系统全局的快捷键。例如播放/暂停、下一首、截图、快速添加代办事项、调出终端,等等。设置这些快捷键的时候,我希望这些全局快捷键:

  • 有统一的、相近的激发方式,利于记忆。
  • 不能和常规软件冲突(如 PhotoShop、IDEA、VSCode 等)。

HyperKey 就是用于设置这些全局快捷键的。首先,把全局快捷键的激活方式统一配置为 「⇧⌃⌥⌘ + ?」。四个功能键全带上,一般不会产生冲突,因为这是单手无法完成的反人类按键方案。接着,把键盘上最没有用的⇪ (Caps Lock) 键映射到⇧⌃⌥⌘上,称为 HyperKey。
如此,就拥有了非常多可用于自定义的快捷键键位。例如,在目前我的配置中,⇪ + P 是播放 / 暂停 (Play or pause),⇪ + → 是下一首,⇪ + T 是调出终端 (Terminal),⇪ + D 是快速添加代办事项 (2Do)……

配置文件

本文提及的配置方案已经上传到 gist,可以在这里获取:Karabiner 配置文件