单旋钮分体键盘 附QMK代码教程

某日,一位键友发来消息, 问我能不能做分体键盘。
我就料到会有这一天……搞起来!

甲方老板发来配列图,左上角是个旋钮,手绘的甚是传神。

简单建模了一下,甲方老板表示,中间的部分不要边框,要可以组合到一起。OK,改。

改好,甲方老板表示,外观不喜欢。OK,接着改!

改了半天,甲方老板说,要这样的……大哥……早说啊……

这回终于定稿了。

背部接口示意。

基本是我打印机的极限尺寸了。

定位板和底壳为不锈钢板。

钢板做好以后,还要再手动打磨一下。内部轴座支持用使用猛男粉。开发板底部贴上胶布做绝缘。

省略一万字,上点装好以后的照片。




叠到一起,体积倒是挺小的,方便收纳。

也可以当单手键盘使用。
最后说下代码部分
根据之前的经验,做一款新键盘的QMK固件,首先要做到就是找到一款跟自己要做的键盘无限接近的开源方案。
最开始想着用ergo的某个型号的源文件作为基础进行修改,后来发现不太行……

愁了几天以后,偶然逛T站,发现一款跟我这次做的无限接近的键盘方案。

后来发现那个外壳是为KEEBIO的Quefrency做的,然后在keebio的主页发现了一款更加接近的型号:KBO-5000

眼含感动的泪水,在QMK的文件夹中找到了KBO5000的源文件。

接下来就是我们熟悉的操作,复制KBO5000文件夹到keyboards文件夹,然后将文件夹名称改成甲方老板的名字。然后将文件夹内的名为KBO5000的两个文件也修改成与文件夹同名。

观察一下这个源文件的文件构成,跟之前做的有些不一样。为了区分不同版本以及配列,所以多了一个REV文件夹,在KEYMAPS中有三个配置。

keymaps中只保留一个VIA配置的文件夹,然后进行进一步精简,将相同文件名的文件中的代码都汇集到yg文件夹下面的文件中。其实这样做也非必须,只不过有点强迫症。加之方便后期修改。

其实VIA文件中的config文件里也就一行有用的代码,复制到yg目录下的config的文件中,然后将via文件夹内的config文件删除就行了。rev1文件夹中的也如法炮制。

Via和REV1文件中的rules文件内的代码都复制到yg目录下的rules文件中,然后将重复的代码进行精简。

根据这次做的这个键盘的情况对代码进行修改,根据开发板指定BOOTLOADER的类型,关闭背光和RGB灯光,开启旋钮和VIA。

将REV1文件夹里,rev1.h中的代码复制到yg.h中,删除红框中那行代码。

然后,根据我们这次的键盘布局,修改下面的键值代码。原本的代码中,键值代码还分了三种,我们用不到,所以只保留一组就行了。
这里是一个难点。
跟之前一体键盘的写法不太一样,之前键值都是KC开头跟数字编号的,这次由L和R开头,用来区别左右手。使用中,左右键盘如上面那组键值分布,但是在代码层面,QMK是将左右两组键值上下排列的,也就是说,左手的行为第0行到第4行,而右手的第一行按键,在代码中被排为第5行,以此类推。所以这款键盘需要10个针脚作为行。
列值就是单边键盘最大的那个列数,比如这款键盘,左手8列,右手9列。那就按照9列进行布置,所以左手键值的最右边会有一列KC NO占位。
至于按键之间的空位用KC NO占位,这个跟之前做法都一样。

将REV1中的.C文件内容复制到yg.h中。修改第一行代码里的文件名,然后注释掉没用的灯光代码,其实大写指示灯的代码也没什么用……后来没有装大写指示灯……
至此,rev1文件夹中的文件内容就都被替换出来了,将其删除就可以了。

这样操作下来,固件源文件又变成了看起来比较简单的样子……哈哈哈
接下来再根据实际情况修改下config和keymap的代码,这些之前文章有提到过,就不赘述了。
然后就是压固件,再然后刷固件。
两边的开发板都要刷相同的固件。

关于两边键盘的接线,这次使用的是三线的连接方式,除了正负极以外,还有一根线作为信号传输。用来传输信号的针脚可以在从config中设置。
QMK默认数据线插口在左手边,如果数据插口想放到右手边,就要在config中加上一行#define MASTER_RIGHT
由于是做完以后回过头重新写的过程,所以可能会有疏漏,目前能想到的就这么多,就先写到这里吧。