Mechanical Keyboard

前段时间回国,顺便带了块 60键客制化键盘回来。轴体选择了 Zealio V2 静音蓝轴,压力系数为 65g,略带段落感。选择静音版的原因是考虑到以后会在办公室用。V2 版的 Zealio 轴解决了 V1 版轴心晃动的问题,虽然依然没有 Box 轴那么稳定,但是对我来说已经完全可以接受。键盘的 PCB 版是 DZ60,可以刷 QMK 固件,这样的话我就可以把我最习惯的“Space fn”键位刷进去了。“Space fn”这个布局相对小众,但是对于用 vim 作为 editor 的用户来说,可能是最好用的键位。

Space fn 的核心思想是“按住空格键即为 fn 键,按下立即松开空格键即输入一个空格”。对于60键布局的小型键盘来说,键盘上本身是没有 F1 ~ F12 这些物理按键的,所以如果需要 F 系列功能键,需要首先按住键盘上的 fn 键再按下 1~0 这些数字键。于是在某种程度上,fn 键就成为了 60键键盘上很重要的一个键,其被按下的频率相比在87键或104键键盘上要高很多。

那么在60键键盘上,fn 键越容易被接触到对于敲键盘来说就越舒服,而一块键盘上,最容易被触碰到的按键当属空格键了。在 Space fn 键位下,空格键被按住不松的时候,就相当于 fn 键被激活,此时可以再去按其他键来实现 fn + x 键的组合。这个 x 可以是 1~0 数字键,也可以是别的键,只要你发挥想象就行。

目前我的 Space fn 键位最关键的几个键位是这样的:

  • 按住空格 + 1~0 是 F1~F12
  • 按住空格 + hjkl 是方向键,这一点和 vim 里移动光标的键位一致。
  • 按住空格 + u 是 向上翻页,同样和 vim 保持一致。
  • 按住空格 + d 是 向下翻页,同样和 vim 保持一致。

于是通过这种布局,我实现了在整个系统中都可以使用 vim 风格的光标移动,而且这个解决方案不依赖任何软件,纯通过键盘物理实现。

回到 QMK 固件本身上,目前有两个比较流行的图形化 QMK 键位编辑器,分别是中文的 http://qmkeyboard.cn/ 和英文的 https://config.qmk.fm/ 。两者都允许用户自行编辑键位,并把编辑保存成 JSON 文件或编译成二进制文件。保存成 JSON 可以作为存档;而编译成二进制可以用来刷固件。不过需要注意的是,这两个编辑器生成的 JSON 文件并不通用。

在 QMK 固件的概念中,fn 键的真实作用其实就是在不同的 fn 层之间进行切换。当 fn 键未被按下的时候,键盘处于第 0 层,而当其被按下的时候,便可以切换到键盘的其他层。要在 QMK 中实现“按住空格键即为 fn 键,松开空格键即输入空格”,需要为空格键设置这句代码:

LT(FN, KC_SPC)

其中 FN 对应的是你希望切换到的 fn 层的数字,比如对我的情况来说,我会把方向键和翻页键都放在第 1 层,所以我会写成 LT(1, KC_SPC)

当编辑好键盘布局之后,就可以编译下载固件文件,再使用 QMK toolbox 把固件写入键盘。

我的键盘目前设置了三个 fn 层:

  1. 键盘默认处在第 0 层。
  2. 按住空格不松进入第 1 层。
  3. 处于第 1 层的情况下再按住空格右侧的那个键进入第 2 层,也就是说,从第 0 层进入第 2 层是“按住空格再按住空格右侧的那个键”。听起来略微有些复杂,但是实际用起来没有影响,因为第 2 层只放了灯光调节的键和键盘固件 reset 键。

下面是每层布局的截图,供参考:

第0层
第0层
第1层
第1层
第2层
第2层

Leave a Reply

Your email address will not be published. Required fields are marked *