ps:DIY 一个属于自己的 qmk 小键盘,支持 via 在线改键值。使用了成品的最小系统板 Arduino Pro Micro,其 mcu 为 atmega 32u4。
安装 qmk 环境
此部分可以参考 QMK - Setup
本文选择的是在 windows 下搭建 qmk 环境。
下载代码仓库
QMK MSYS 下载后安装即可,安装完成后打开,执行 qmk setup
时拉取 github 上的 qmk_firmware 失败,解决方法是在能顺利访问 github 的终端环境中:
# 在合适的位置(准备存放 qmk firmware 的目录下)拉去 git 仓库
$ git clone git@github.com:qmk/qmk_firmware.git
# 进入 fireware 目录下
# !Warning: 如果终端的 prompt 会打印 git 状态,进入这个目录后大概率卡死
# 请务必使用不打印 git 状态的终端进入该目录
$ cd qmk_firmware
# --progress 参数可以显示拉去每个子模块的进度
$ git submodule update --init --recursive --progress
初始化 qmk
打开 QMK MSYS 终端,执行
# 如果当前目录下存在 qmk_firemware 目录,可以不用通过 -H 指定
$ qmk setup -H /path/to/your/qmk/firmware/folder
新建固件,编译和写入
在 qmk 中,keyboard 就是指硬件的结构,包括使用的 mcu、引脚和键位的连接等信息。
$ qmk new-keyboard
根据提示选择即可,命名的要求参考 Keyboard Guidelines - Naming you keyboard/project,最大支持四层子文件夹的目录,实际上 作者 - 键盘型号 - 版本
三层足矣。如果目录不止一层,不另外指定的话会默认 github 仓库和作者名称为第一层目录的名称。该目录下的文件结构参考 Keyboard Guidelines - Keyboard Folder Structure。
得到的文件结构类似于:
- keyboard
| - chengshusss
| - littlepad
| - rev1
| - (dir) keymaps
| - config.h
| - info.json
| - readme.md
| - rules.mk
修改配置信息
info.json
参考文档 info_json.md ,根据实际情况,修改的字段有:
- matrix_pins,按照实际电路连接情况填写;
- layouts,根据 matrix_pins 的组合填写;
- diode_direction,如果可以正常刷入固件,但是一个都不触发,可以试着修改此字段(取值与硬件连接有关);
- pid 和 vid 在后续连接 via 修改按键定义时需要用到,此处可以任意选择(推荐方案是用有意义字母的 ascii 值);
{
"manufacturer": "chengshusss",
"keyboard_name": "LittlePad",
"maintainer": "chengshusss",
"bootloader": "atmel-dfu",
"diode_direction": "ROW2COL",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"rows": ["F4", "F5", "F6", "F7" ],
"cols": ["D7", "D4", "D0", "D1"]
},
"processor": "atmega32u4",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0313",
"vid": "0x0C10"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3},
{"matrix": [3, 2], "x": 1, "y": 3, "w": 2},
{"matrix": [3, 3], "x": 3, "y": 3}
]
}
}
}
开启固件 via 功能
在 rules.mk
文件中增加一行 VIA_ENABLE = yes
。
新增 keymap
qmk new-keymap -kb chengshusss/littlepad/rev1
,按照提示输入即可。
因为后续键值会在 via 中修改,此处只要按照硬件线路和数量修改 keymap/<your-keymap>
中的数组大小即可。
编译
qmk compile -kb chengshusss/littlepad/rev1 -km shortcut
一切顺利的话会在 qmk_firmware
的 .build
目录下得到编译后的固件。
写入固件
连接小键盘到电脑,打开 qmk_toolbox
,硬件重置小键盘(短接 rst 引脚和 gnd),qmk_toolbox
会有提示,此时刷入固件。
注意:
- 重启小键盘后需要尽快刷入固件,否则会小键盘会取消下载状态;
- 可能需要连续重置多次才会提示可以下载固件;
VIA
下载 via The-VIA Releases
因为新版本的 VIA 默认会读取已经有注册的键盘,需要自行打开键盘配置文件加载功能,因此:
- 需要在 Setting 页面打开
Show Design Tab
开关; - 需要打开
Use V2 definitions(deprecated)
开关; - 加载自定义的 Json 文件;
接下来就可以按照提示愉快地修改按键,还可以将一段操作录制为宏,分配给特定按键。
Trouble Shooting
qmk 固件配置
如果按键不触发,别忘了检查配置中的二极管方向 "diode_direction": "ROW2COL"
QMK ToolBox
下载 QMK ToolBox 并安装 Qmk Toolbox
Reset Hardware
arduino Pro Micro 右上角 第二脚和第三脚 分别是 GND 和 Reset,短接几秒钟即可(可能需要足够长的时间)。