news 2026/8/24 18:13:57

3步让普通机械键盘变成支持图层和蓝牙分体的ZMK键盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3步让普通机械键盘变成支持图层和蓝牙分体的ZMK键盘

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)这些周边能力也是内置的,不需要自己写驱动。

🧭 六、下一步该做什么

三件事按顺序做:

  1. 从官方仓库拉代码:git clone https://gitcode.com/gh_mirrors/zm/zmk
  2. 打开 docs/docs/user-setup.mdx,照着建自己的 user-config 仓库,把板卡型号填进去
  3. 从 app/boards/ 目录里翻一个和你手搓键盘最接近的板卡定义,改 dts 里 keymap 节点

遇到烧录、配网、连不上的问题,先查 docs/docs/troubleshooting/ 下的四篇文档,覆盖了 building、flashing、connection、hardware 四个最常见的坑。

【免费下载链接】zmkZMK Firmware Repository项目地址: https://gitcode.com/gh_mirrors/zm/zmk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 18:12:19

智能体不确定性量化:从经典评分规则到轨迹级评估的工程实践

1. 项目概述:当智能体需要为自己的“不确定”打分 最近在折腾一些强化学习和序列决策的项目,一个绕不开的核心问题就是: 如何让一个自主行动的智能体(Agent)不仅做出决策,还能量化并诚实地报告自己对决策结…

作者头像 李华
网站建设 2026/8/24 18:08:51

STM32标准外设库实战:裸机开发与工业级工程落地

1. 为什么2024年还要学标准库?——从江科大视频停更说起你点开B站搜“STM32教程”,前五页全是HAL库、CubeMX、甚至RT-Thread的视频,标题带“零基础”“三小时入门”“保姆级”的比比皆是。但真正动手做毕业设计、接工业项目、修老设备时&…

作者头像 李华
网站建设 2026/8/24 18:08:47

AI时代面试变革:挑战与不可替代的真人价值

1. 面试的本质与时代挑战 最近和几位HR朋友聊天时,他们都在抱怨一个现象:现在用AI工具包装简历的候选人越来越多,甚至有求职者直接使用AI模拟面试对话。这让我开始思考:在ChatGPT能帮你写简历、模拟面试回答的今天,传统…

作者头像 李华
网站建设 2026/8/24 18:06:50

排序--07---基数排序

基数排序 定义:基数排序(radix sort) 属于"分配式排序",又称为"桶子法"(bucket)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些"桶"中,达到排序的作用原理: 将所有待比较数值统一为同样的数位长度,数位较短…

作者头像 李华
网站建设 2026/8/24 18:05:51

Vue与React深度对比:从设计哲学到实战选型全解析

1. 项目概述:为什么我们需要对比Vue和React? 在任何一个前端开发者的成长路径上,几乎都绕不开一个经典的“选择题”:Vue和React,我该选哪个?这个问题就像问一个厨师,中餐和西餐哪个更好一样&…

作者头像 李华