可能是 Mac 键位映射的最佳实践

为什么需要键位映射

首先说两个我的主观看法,当然读者可以选择不接受,那样就不用浪费时间读下去了。如果你表示认可,并且希望解决这个问题,相信本文会帮到你。

  1. 用 Caps Lock(也就是大小写切换键)来切换大小写是非常低效的。以输入文字 aBc 为例,我们需要按下 Caps Lock 键进入大写模式,输入 B,再按一次键回到小写模式,输入 c。正确的做法是使用 shift 键,我们按住 shift 键输入 b 就会得到大写的字母,再松开就回到了小写模式。和 Caps Lock 键相比,少了一次按键
  2. 键盘上的 Ctrl 键位置很差,如果你是用标准的打字手势,你会发现这个键刚好在左手的手心,无论哪个手指都不方便去按它。而 Caps Lock 键则占据了左手小拇指左侧的黄金位置。更重要的是,Ctrl 键的用途非常广,无论是作为 Vim 或者 Emacs 的功能键,还是各种快捷键的修饰键,都是一个非常常用的按键。

简单总结一下就是:

  1. Caps Lock 键效率低,自身毫无用处
  2. Caps Lock 键占据了黄金的位置
  3. Ctrl 键用处多,使用频率高
  4. Ctrl 键位置差,很不方便按

当这四个理由合在一起时,你很难否认,最好的做法就是:交换 Caps Lock 键和 Ctrl 键。实际上系统的键盘设置里面已经支持了这个操作,但本文会从命令行的角度来聊聊,这样可以方便我们快速搭建 Mac 的工作环境

键盘映射

踩了无数坑以后,终于发现了一个可用的脚本,原理啥的就不说了,因为基本上没有别的用途:

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x7000000E0},{"HIDKeyboardModifierMappingSrc":0x7000000E0,"HIDKeyboardModifierMappingDst":0x700000039}]}'

不过这个脚本有一个大坑,就是虽然立刻就会生效,但是重启后就失效了,所以我们需要在每次启动时都执行一次这个命令。

Launch Agent

Mac 支持自定义启动时的事件,首先我们需要一个配置文件,比如我把它保存为 com.bestswifter.onlogin.plist,内容如下:

```plist

top Created with Sketch.