3步让普通机械键盘变成支持图层和蓝牙分体的ZMK键盘
【免费下载链接】zmkZMK Firmware Repository项目地址: https://gitcode.com/gh_mirrors/zm/zmk
ZMK键盘固件是一个基于 Zephyr 实时操作系统、采用 MIT 协议开源的键盘固件项目,解决的核心问题是:让你手里那块按键功能写死、分体要自己折腾、蓝牙连多台设备不行的机械键盘,变成可以按自己习惯重新定义每一个键的键盘。无论你是有线键盘还是无线分体键盘,它都支持。
🔧 一、普通键盘固件卡在哪
大多数键盘出厂固件的按键功能是固定的:Fn 层最多两三个,没有宏,不能做复杂的 hold-tap,更谈不上把左右手拆成两块独立蓝牙配对。常见卡点有三个:
- 想给某个键加"短按切层、长按出 Shift"这类行为,固件里根本没有对应机制
- 想做无线分体,市售方案要么延迟高,要么只允许单一连接
- 想一键切换手机、平板、电脑三个设备,很多键盘做不到
ZMK 的思路是把"按键"抽象成"行为":同一个物理键可以挂接 30 多种行为类型,包括普通按键、图层切换、组合键(combo)、宏、点按舞蹈、鼠标键等,源码里每种行为都是独立模块,位于 app/src/behaviors/ 目录,想改就改对应文件。
⚡ 二、第一步:选板子,烧录固件
ZMK 在 app/boards/ 目录下内置了 26 个厂商的板卡支持,从 nRF52 系列到 RP2040 都有现成的设备树配置,比如 nordic 的 nrf52840、adafruit 的 KB2040、raspberrypi 的 Pico。
拿到板卡后,先用它自带的开发板型号烧一个最小配置验证环境。编译烧录走 Zephyr 官方的 west 工具链,一条命令:
west build -b nrf52840dk/nrf52840/zmk --pristine意思是把固件编译成针对 nRF52840 的镜像,然后按 docs/docs/troubleshooting/ 里的 flashing 章节把 hex 文件写进板子。能进 bootloader、能连上电脑,这一步就算通了。
🗂️ 三、第二步:图层怎么配
图层是 ZMK 键盘固件里最常用的一套机制:物理矩阵不变,逻辑上叠 N 层,每层给同一个位置定义不同的输出。
配置思路建议这样走:第 0 层放 QWERTY 基础键位;第 1 层放 F 区、媒体键、方向键;用一个低层的 hold-tap 键负责"按住进第 1 层"。这样 40 多键的键盘能塞进 100 多个逻辑功能,不用外接任何旋钮。
图层、图层内键码、行为绑定这些规则在设备树(dts 文件)里写,不用写 C 代码。每个行为的参数表都在 docs/docs/keymaps/ 目录下,配一个新行为前翻一下对应 yaml 绑定文件比查论坛快。
🖥️ 四、ZMK Studio:不想改文本时的替代路径
如果你不想碰 dts 文件,ZMK Studio 提供了一个网页化的可视化编辑器,左边是键盘布局图,点击任意键位就能直接给它挂行为,右侧实时预览键码。它走的是 GATT RPC 通道,键盘上电后直接连进去改,改完自动同步回固件,不用重新编译。
适合两类场景:先可视化把基础布局拖出来,再导出成 dts 片段合进自己的配置仓库;以及临时在别人的键盘上快速验证一个行为组合,不想动编译链。
📶 五、无线分体和蓝牙多设备怎么开
ZMK 原生支持无线分体:左手作为 central,右手作为 peripheral,走 Zephyr 的 BLE 协议栈配对,配对一次之后断连自动重连。多设备侧,它用 BLE profile 的方式做设备切换,默认 profile 数量可以在 prj.conf 里调,切设备用 outputs 行为绑一个键就行。
电池上报、低功耗睡眠、软关机(soft-off)这些周边能力也是内置的,不需要自己写驱动。
🧭 六、下一步该做什么
三件事按顺序做:
- 从官方仓库拉代码:
git clone https://gitcode.com/gh_mirrors/zm/zmk - 打开 docs/docs/user-setup.mdx,照着建自己的 user-config 仓库,把板卡型号填进去
- 从 app/boards/ 目录里翻一个和你手搓键盘最接近的板卡定义,改 dts 里 keymap 节点
遇到烧录、配网、连不上的问题,先查 docs/docs/troubleshooting/ 下的四篇文档,覆盖了 building、flashing、connection、hardware 四个最常见的坑。
【免费下载链接】zmkZMK Firmware Repository项目地址: https://gitcode.com/gh_mirrors/zm/zmk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考