Zwlin's Blog

HHKB and Key bindings

2022/05/27

HHKB

自 2021 年 4 月中购入HHKB ,到目前为止已经使用了一年多,期间除了偶尔用用笔记本自带的键盘外,没碰过别的键盘,总的来说,我对这把键盘很满意。对我来说,键盘的手感这种类玄学说法在我这里不生效,HHKB对我来说就是一个完全够用的小个头键盘,比较合理的键位配置,舒服的移动距离,才是我喜欢它的原因。而我的快捷键配置也是随着我对HHKB的熟悉慢慢变化的,前半年我用的是有刻的键帽,后半年我开始尝试了无刻,然后就真香了。无刻虽然开始时比较困难,但是一旦熟悉,就只有好处了。

无刻的好处

键映射

首先我会把系统的快捷键全部取消,因为那些功能我用不到,用到时可以再设置,这样你绑定自己的快捷键时就不用担心会不会冲突了。因此,系统的快捷键我只保留了一个切换输入法,其他的全部取消。

然后使用 karabiner-elements 进行简单的键映射:

键(组合键)功能(映射)
Right Command单独按还是 Command,当和别的键「KEY」一起按时,映射成 Control + Option + Comand + 「KEY」
Right Option映射成Comma,也就是逗号键,用作我vim的第二个Leader(第一个Leader是空格)
Left Control单独按是切换输入法,当和别的键「KEY」一起按时,映射成 Control + 「KEY」
Tab + hjkl映射成方向键

Right CommandRight Option 在我个人的体验中,原本的功能我几乎用不到,都用的是左边的,与其让其闲置,不如将其映射成别的键,其中 Right Command 映射成 Control + Option + Comand,可以作为我个人的一个super prefix键,以保证不会和任何软件或者系统的快捷键冲突。

上述功能的达成,需要用到 KarabinerComplex Modifications 功能,网上教程很多,也可以使用别人分享出来的方案,我这里就不多讲述了。

这里多提一句,因为HHKB的Control是放在传统键盘Caps Lock的位置的,所以mac自带的Caps Lock如果被映射成了Control,也是可以用这个方案来保留 Caps Lock 切换输入法的功能的。下面放上我完成这个功能的Karabiner配置:

 1{
 2  "title": "swith input with ctrl",
 3  "rules": [
 4    {
 5      "description": "短按 ctrl 切换输入法",
 6      "manipulators": [
 7        {
 8          "from": {
 9            "key_code": "left_control"
10          },
11          "to": [
12            {
13              "key_code": "left_control"
14            }
15          ],
16          "to_if_alone": [
17            {
18              "key_code": "spacebar",
19              "modifiers": [
20                "left_option",
21                "left_command"
22              ]
23            }
24          ],
25          "type": "basic"
26        }
27      ]
28    }
29  ]
30}

PS: 我这里并不是把短按Control变成Caps Lock,而是变成了 Command + Option + Space。这是因为我不喜欢Caps Lock的功能,所以为了避免按成Caps Lock,单独映射到了一个组合键(这个组合键是我在系统里配置的切换输入法的组合键,也可以变成别的,但是还是不建议变成Caps Lock,容易按错) 。

超级键

有了这个超级键Control + Option + Comand之后,你就可以用这个Super Prefix来配置自己的快捷键,例如使用Thor,Ray Cast,HammerSpoon等软件,映射自己的快捷键。

组合键 (Super Prefix 用 SP 指代)功能
SP + ` (反单引号,HHKB最右上角)切换到终端(iterm2)
SP + d使用dash搜索 (用raycast完成)
SP + v从剪贴板历史粘贴(用raycast完成)
SP + 1打开 Chrome