Sky Watch

组装键盘记

自从忍痛流浪购买了全宇宙最贵的薄膜键盘以后,我就发现了一个一般人我不告诉他的秘密:樱桃的键盘开关手感真的挺烂的。但是这个键盘又不像樱桃一样能随便换键帽,如果我想要好的手感,同时还想换花里胡哨的键帽该怎么办呢?答案当然是自己 DIY 一个比全宇宙最贵的薄膜键盘还要贵的机械键盘,这就是键盘侠们经常挂在嘴边的定制键盘。

初期调研

一说到定制,键盘侠们的第一反应肯定是选择很多,琳琅满目。但是实际上在考虑到个人需求以后,往往选择就不那么多,甚至没有了。比如我需要有数字小键盘,这基本上已经把 90% 的选择刷掉了。因为市场上的定制键盘绝大部分都是所谓的「60%」构型,就是只有主键区的那六十几个键。剩下的那小部分里的大部分也都是 tenkeyless,和 70% 等等,都是没有数字小键盘的。想要小键盘,就只有两种构型:全尺寸和 96 键。全尺寸我觉得还是太宽了,如果在旁边放上鼠标的话,要么鼠标离得太远,要么主键区不在中央,都不好。所以最后就剩下 96 键一种构型了。这个构型一般人可能听都没有听说过,因为批量生产的成品键盘里据我所知就只有一个品牌的一个型号使用了这个构型,后面我会再次提到。一般的定制 96 键会使用下图这个键位。

96key default

可以看到这种键位保留了完整的数字小键盘,同时又有完整的方向键和 home, end 等按键,几乎覆盖了全尺寸键盘的所有键。但是明明这个键盘的按键比标准的 104 键要少啊,都少了那些键呢?答案是右边的 alt 和 super,加上 prtsc, scroll lock 和 pause。Alt super 什么的就不说了,scroll lock 和 pause,没什么用的,去掉也不可惜吧?

当然可惜了!像这样完全没有用的键,才是设定快捷键的最佳选择,因为几乎不可能冲突!在我的 Windows 游戏电脑上,这两个按键我绑定了 OBS 录像和广播功能。有人说了,绑定组合键不行么,比如 ctrl+f12 什么的?不行,尤其是在游戏电脑上。因为很多游戏里 ctrl alt shift 这些键都不是 modifier,而是独立起作用的(比如按 ctrl 切换下蹲/站立),绑定 ctrl+f12 会与这些功能冲突(不要问我是怎么知道的)。像 scroll lock 这种操作系统和应用程序肯定不会绑定任何功能的按键屈指可数,尤其宝贵。

除了缺少这些键以外,这个键位还有几个缺点,比如 home end 这些键不是按照标准键位排列,需要时间习惯;再比如右 shift 和小键盘的零都比全尺寸的要短。这些都不是什么大问题,但是如果能解决的话还是会方便很多。有没有不存在这些缺点,同时又使用 96 键构型的「完美键盘」呢?听起来似乎不太可能,但是确实是有。这就要说回我之前提到的唯一一种量产 96 键键盘:Cooler Master Masterkeys Pro M

cm masterkeys pro m
Figure 1. Cooler Master Masterkeys Pro M,键位是这个键盘的主要卖点之一。

当然这个键盘还是比之前的 96 键少了几个键,但我觉得精神是一样的。而且如果你仔细看数字键区,会发现这个键盘不仅有 home end 等键,还有 prtsc, scroll lock 和 pause,怎么做到的?答案在那个 num lock 上。Num lock 激活的时候,数字键区就是正常的数字键,但是在 num lock 关闭时整个数字键区就会变成导航区,这样就保留了标准键盘的所有按键。

⋯⋯

⋯⋯

咦?似乎有什么地方不对?标准键盘有 104 个键啊!而且也有 num lock 用来切换数字键区。这个 90+ 键的键盘不可能有标准键盘的所有键?!

你如果有这个想法的话,也没有错。这里矛盾的地方在于标准的 num lock(以及 caps lock)是一个特殊的键。在标准键盘中,num lock 用来切换数字键和方向键。这个行为其实不是键盘本身定义的,而是操作系统定义的。这也就是为什么你可以在操作系统里用软件切换 num lock。换句话说,不管 num lock 打开还是关闭,键盘硬件输出的键码都是一样的,操作系统会根据 num lock 的状态转换键码。转换后的数字键和主键区上方那一排数字的作用是一样的,但是在操作系统里,数字键区的数字键码其实是独立的一组,和主键区的数字键码不一样;方向键也同理。Cooler Master 的键盘少掉的就是这些方向键。然而缺少这些方向键并不可惜,尽管它们是有功能的,但是与导航区的方向键重复;而且正是由于有功能,所以不能绑快捷键,成了鸡肋。这里也可以看出,这个键盘的 num lock 只是上面印了这几个字,它的功能不可能是标准的 num lock 功能,因为数字键和方向键的对应并不由键盘决定,这个 num lock 其实是定制键盘里常用的切换键层功能。

明白了这些以后,我们也能设计出类似的键位用在 96 键的定制键盘上,以下是我设计的键位。

mw96 0

按下右上角的 TG1 键以后数字小键盘会变成这样:

MW96 TenKey

而那个 num lock 键是真正的 num lock,这样如果由于某种原因,操作系统关闭了 num lock,我可以再把它激活。除此以外,我这个布局还有个彩蛋:这个键盘有 F13 和 F14!是的,相比标准 104 键键盘,这个布局不仅没有少键,反而还多出了两个键。这两个键虽然现在很少见,但是在以前的老键盘的上还是会经常出现的,有些老键盘甚至有 24 个 F 键。直到现在操作系统也都支持这些键。

既然有了这个布局,准备工作就差不多了,剩下的就是选配件。对于外壳和电路,我选了当时唯一一种有现货的型号:XD96。幸运的是,虽然官网上没有明确说明,这个型号是支持 QMK 的,可以很容易地实现我设计的键位。键帽选择了 EnjoyPBT 的 GrayScale。开关的选择我纠结了很长时间,还买了几个试键器,最后锁定了 Zealios 65g。在选择开关的过程中我还发现了一件事,不知道是不是由于我小时候用过了很长时间的老式键盘(薄膜键盘流行之前的键盘),我对段落感的要求极高(或者应该说极怪)。在我试过的十几种开关里,就只有 Zealios 和凯华的 click bar 开关在我看来算是有段落感。像很多人交口称赞的 Outemu 天蓝和各种仿樱桃褐色,我按起来感觉就像有毛病的线性开关⋯⋯凯华的 click bar 我觉得手感比 Zealios 还要更好些,但是真的太吵了,不得已选择了后者。

组装

啊,XD96⋯⋯组装过程真是一言难尽。这个键盘的设计有个不大不小的坑,就是支撑开关的那个铝板左右两边没有螺丝,所以装好以后如果使劲按左右两边的键,整个支撑板和电路板结构会变形一小点。当然一般打字时是感觉不出来的,但是作为一个比全宇宙最贵的薄膜键盘还贵的定制键盘,各方面都要做到完美才对。这个问题有 Reddit 用户给出了解决方案,就是自己 3D 打印两个支撑的结构放在外壳和支撑板中间。我试了一下效果还可以。

除此以外,这个键盘还有个惊天神坑,见下图。

xd96 usb
Figure 2. ???????????

谁能告诉我这是怎么设计出来的?嗯?如果不是设计出来的,难道是加工时的公差?有人见过不到一厘米的开孔有几毫米的公差么?有么?这里我不想吐槽国产货怎么怎么样,只说一句:都是国产货,这水平还不如当年的白沟。

当然这个巨坑我最终还是填上了。我买了一套锉刀,把这个开口扩大了大概 3 毫米⋯⋯

扩大后的 USB 口
Figure 3. 扩大后的 USB 口

组装这个键盘的倒数第二步,是把玻璃背板装到外壳上,并用螺丝固定。那个螺丝也是我见过的最烂的没有之一。在拧的过程中十字坑就已经花了⋯⋯但是写到这里我也不想再说什么更多的了,就这水平,爱咋咋地吧。

最后一步是装键帽,也有坑!PBT 的键帽在加工过程中会变形,所以有时一些长键出厂时是弯曲的。我手里的这套 EPBT 键帽,所有 1.5u 或更长的键帽都是弯的,装上以后按下弹不起来。这个问题我以前早有耳闻,只是没想到会这么严重。解决办法也是有的,就是把键帽放到开水里加热一下,然后拿出来往反方向掰,直到冷却。不过不要以为 PBT 在开水里一煮就软了,可以随便掰;PBT 好歹是比 ABS 还硬的塑料,是有尊严的。我掰了一晚上,基本上把所有长键都纠正了,除了数字键区的加号。因为那是我最后掰的一个,手上实在没劲了⋯⋯所有键帽都装好以后,组装就算完成了。

刷固件

QMK 的固件刷起来特别方便,只要在 Configurator 里设置好键位,点一下 Compile,就可以直接下载编译好的固件了。不过我还加了一个小功能,就是把 num lock 写死成打开的状态。在 keymap.c 里我有这么几行:

void led_set_keymap(uint8_t usb_led)
{
    if(!(usb_led & (1<<USB_LED_NUM_LOCK)))
    {
        register_code(KC_NUMLOCK);
        unregister_code(KC_NUMLOCK);
    }
}

我的键位后来还修改了几次,最终版本在这里

总结及未来展望?

到这里这个键盘就算真正完成了,虽然过程比较坎坷,最终效果还是不错的。

xd96 final

但是生命在于折腾,俗话说得好,树折腾死,人折腾活。这个键盘我已经用了大概八个月,还记得我之前说那些长键都是我一个个掰过来的么?有些键已经开始偷偷地回弹了,虽然目前还不影响使用,但我觉得是时候考虑换键帽了。目前有两个候选,一是某种 MT3 的键帽,比如 MT3 /dev/tty。但是这种键帽有两个问题,

  1. 凹陷的形状是球形的,可能打游戏不方便,不确定。

  2. 目前只有 Drop 上有货。但是 Drop 的版本没有平的底排键,所以 ctrl alt 这些键用大拇指按的话会硌手,这个问题对于球形凹陷的键帽尤其严重。

另一个选择是等一波合适的 GMK,传说中 GMK 是质量最好的 ABS 键帽。一般来说 ABS 的键帽用不了几个月就会开始打油,但是好的 ABS 可以坚持更长时间。我在办公室用的 Type Heaven 就是 ABS 的键帽,我连续用了快四年,只在少数一些键上有非常轻微的打油。但是 GMK 每种一般就只产一次,所以只能等下一波合适的。

除此以外这个键盘也没什么其他好折腾的了。如果有机会的话,我的下一个定制键盘大概就会是支持热插拔的了,可能会试一下凯华的 click bar 开关,毕竟吵死人不偿命,吵死一个是一个。