QMK笔记
qmk new-keyboard qmk new-keymap -kb thebesttv/split27 -km via qmk compile -kb thebesttv/split27 -km via qmk console --bootloaders
1. 使用 QMK 从零开始设计一个键盘的流程
- 设计 layout:使用 KLE 设计。可以在键位上直接写上矩阵座标,方便之后VIA的配置。
- 生成PCB和定位板边框:使用 Plate & Case Builder,直接把 KLE 的 raw
data 复制过去。
Switch Type 一般选
t:1
,Stabilizer Type 一般s:2
。 - 在 QMK 中添加新的键盘。
其中
info.json
的 layout 的生成有两种方法:- 使用 Convert KLE raw to QMK info.json 直接把 KLE 的 raw data 转换为 QMK 的 layout。
- 不推荐:如果使用了 Keyboard Firmware Builder 的话,生成的 JSON 文件非常大, 需要用 KBFirmware JSON to QMK Parser 再次转换。
- 设计 keymap
2. 合宙Air32F103
UPD: 现在有了9.9的树莓派Pico,这个就没啥必要了。
使用合宙的 Air32F103 代替 STM32F103,目前选用 Air32F103CBT6,开发板9.9一个。 基于 Air32F103 的几块 QMK 键盘:
用的都是 zhaqian 的固件和uf2bootloader。
2.1. 烧录QMK
2.1.1. 使用 STM32duino BL
erase flash 再刷入链接中的 BL,然后使用命令
dfu-util -a 2 -d 1EAF:0003 -D <filename>
2.1.2. 使用 UF2 BL
先用串口 erase flash,然后用刷入 u2 bootloader。 刷入后,会显示一个虚拟u盘,把 cmopile 成功的 .u2 文件拖进去即可。
下一次想再次刷入固件的时候,双击 RST 即可。
3. 使用 74HC65 扫描按键
需要修改 matrix.c
,具体见 Custom Matrix。
Air32F103 目前SPI好像还没有适配,所以直接 bitbang 了。
4. 分体键盘
- Split Keyboard 通讯方式可以选择串口或者I2C。
- 'serial' Driver 选择串口的话,可以在这里的三个驱动中选择一个。 目前使用 USART Full-duplex。
如果使用 Bitbang (soft serial),虽然只要一根线, 但在两块键盘相连接时无法连接VIA,需要切断中间的连线才能使用VIA。 而 USART Half-duplex 的方法又要一个上拉电阻,不方便测试。
使用需要两根线的 USART Full-duplex 方案,虽然两边需要调换线序, 不过连接VIA没有问题。
5. VIA
5.1. 固件配置
添加一个 via
keymap。
5.2. 配置文件
VIA的键盘配置文件在 the-via/keyboards 中。 在写自己的配置文件时,可以参考别人的,如 ergodoxez/ergodoxez.json。 注意:VIA现在升级到v3了,新的配置在 v3 文件夹中,src 中都是老的。
文件位置:如,QMK中键盘在 keyboards/thebesttv/split27
中,
则VIA中对应配置文件位于 v3/thebesttv/split27.json
中。
.json
文件的格式如下:
{ "name": "Split27", // 键盘名称 "vendorId": "0x1A5A", // vid "productId": "0x1234", // pid "matrix": {"rows": 10, "cols": 6}, // matrix大小 "layouts": { "keymap": ... // KLE的JSON文件内容复制到这里 } }
其中 keymap
的结果需要这样获取:
在 KLE 中把键盘对应的 layout 画出来,每个按键的 top-left legnd
上标出它在 matrix 中对应座标,其余部分留白。
每个按键都标注完后,去下方的 Raw data 一栏,选择 Download json,
然后把文件内容复制过来即可。文件内容应是大概是这个样子的(不考虑缩进):
[ ["0,0","0,1","0,2","0,3","0,4","0,5",{x:1},"5,0","5,1","5,2","5,3","5,4","5,5"], ["1,0","1,1","1,2","1,3","1,4","1,5",{x:1},"6,0","6,1","6,2","6,3","6,4","6,5"], ["2,0","2,1","2,2","2,3","2,4","2,5",{x:1},"7,0","7,1","7,2","7,3","7,4","7,5"], ["3,0","3,1","3,2","3,3","3,4","3,5",{x:1},"8,0","8,1","8,2","8,3","8,4","8,5"], [{x:3},"4,3","4,4","4,5",{x:1},"9,0","9,1","9,2"] ]
配置文件完成后,可以打开 VIA App,在 Settings 中,选择 Show Design Tab, 然后去 Design Tab,把配置文件上传,这样就可以正常连接键盘了。
5.3. VIA网页端使用
如果需要添加一些复杂的 keycode,如 MT(MOD_LCTL,KC_F)
,
选择 Special 下的 Any,然后手动输入 keycode。
5.4. Linux 下可能遇到的问题
Linux 下,试图 Authorize Device 时,如果 HID 列表中显示了自己的键盘, 但点击 Connect 后没有反应;再次尝试 Authorize Device, 发现列表中显示已配对,但点击还是没反应,这可能是权限问题。
判断方法:浏览器访问 chrome://device-log/
,查找类似 HID "failed to open
/dev/hidraw2"
的消息,有的话就因该是权限问题了。可以参考这里。
解决方法:修改 udev 规则。