merro60 键盘固件详解:QMK 数据驱动配置、布局体系与刷写指南
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
导读
merro60 是 chlx 出品的一块标准 60% 配列客制化机械键盘 PCB,支持 USB-C 接口与统一子板(unified daughterboard)兼容性,并针对“gummy gasket o-ring”硅胶垫片安装方式做了专门的壳体开槽适配。本文以 QMK Firmware 仓库内 merro60 readme 为主线,结合其 keyboard.json 数据驱动配置与 5 套官方键位映射,完整讲解该键盘的硬件规格、进入 Bootloader 的三种方式、固件编译/刷写流程、矩阵与布局定义,以及围绕它衍生的 ppr.merro60、str.merro60 等家族变体。读完本文,你将能独立编译并刷写 merro60 固件,并理解 QMK 社区布局(community layouts)在 60% 键盘上的应用方式。
硬件概览:一块为 Gasket 安装优化的标准 60% PCB
根据官方 readme,merro60 的定位非常明确:
A standard 60% format keyboard pcb with USB-C and unified daughterboard compatibility. Has modified cutouts to allow usage of certain tray mount cases into gummy gasket o-ring mount.
也就是说它具备三个关键特性:
- 标准 60% 配列:61 键左右的经典紧凑布局,与市面上绝大多数 60% 外壳兼容;
- USB-C + 统一子板兼容:主控板上采用 USB-C 接口,并兼容“unified daughterboard”(统一子板)规范,用户可以根据外壳选择 Type-C 子板方向或直插方案;
- Gasket 开槽适配:PCB 上做了改进型开槽(modified cutouts),使原本为 tray mount(托盘式固定)设计的壳体也能改装为 gummy gasket o-ring(硅胶圈垫片)悬空安装,从而获得更柔和的按键手感。
官方声明支持的硬件版本为 chlx PCBmerro60.1、merro60.1.1、merro60.1.2,维护者为 Alexander Lee(gaclee3b)。三块小版本 PCB 共用同一套 QMK 配置,因此下文所有编译与刷写命令对三个版本通用。
进入 Bootloader 的三种方式
merro60 采用atmel-dfu引导加载程序(见 keyboard.json 中"bootloader": "atmel-dfu")。进入刷机模式(Bootloader)官方提供了三种方式,任选其一即可:
- 插拔触发:在键盘未通电状态下,按住左上角按键(通常是
ESC)的同时插入 USB 线,松开后即进入 Bootloader——这正是 QMK 的 Bootmagic 功能(该键盘在features中显式开启了"bootmagic": true); - 复位按键:键盘已通电状态下,按下 PCB 背面、位于 Caps Lock / A 键区域后方的复位按钮(按下后松开);
- 复位触点短路:键盘通电状态下,用镊子等金属工具短接空格键位附近的两个复位金属触点(注意:不是空格键的开关引脚孔位,不要短错位置)。
第三种方式对已经装进外壳、不便拆出 PCB 的场景非常实用——只需从空格键的开关孔位伸入即可触达。进入 Bootloader 后,系统会枚举出一个 DFU 设备,此时即可执行刷写。
固件编译与刷写
编译环境
在编译前需要先搭建 QMK 构建环境。本仓库提供了完整的官方文档,可按需参考:
- 新手入门:Complete Newbs Guide 与 开始构建固件;
- 环境搭建:QMK 开发环境搭建;
- make 命令详解:make 指南。
编译默认固件
merro60 的 Make 目标采用厂商/键盘:键位映射的命名规范,编译默认键位映射只需执行:
make chlx/merro60:default若使用 QMK CLI(本仓库 cli 文档 有完整说明),等价命令为:
qmk compile -kb chlx/merro60 -km default编译产物(.hex/.bin/.uf2等)会输出到qmk_firmware根目录下的构建目录中。
刷写固件
键盘进入 Bootloader 后,执行带:flash目标的命令即可自动识别 DFU 设备并写入:
make chlx/merro60:default:flash更多刷写细节可参考 newbs_flashing 文档。需要说明的是:由于atmel-dfu引导程序通常需要主机端驱动支持,在 Windows 上可能需要配合 Zadig 驱动安装指南 安装 WinUSB 驱动。
数据驱动配置解析:keyboard.json 逐项拆解
merro60 采用 QMK 的 Data-Driven Configuration(数据驱动配置)体系,所有硬件与布局信息集中在 keyboards/chlx/merro60/keyboard.json 中。下面逐项拆解核心字段。
USB 标识
"usb": { "vid": "0x4358", "pid": "0x0601", "device_version": "1.0.0" }- VID = 0x4358(厂商 ID)、PID = 0x0601(产品 ID):操作系统据此识别设备;
- device_version = 1.0.0:设备固件版本号,随固件构建写入。
功能开关(features)
"features": { "bootmagic": true, "extrakey": true, "mousekey": true, "nkro": true }- bootmagic:启用 Bootmagic,支持“按住 ESC 插入线缆进入 Bootloader”等魔法键功能,这也解释了上文第一种刷机方式;
- extrakey:启用消费类多媒体键(音量、播放控制等),ANSI 键位映射中的
KC_VOLD/KC_VOLU/KC_MUTE依赖此功能; - mousekey:启用鼠标键模拟;
- nkro:启用 N 键无冲突(N-Key Rollover),实现全键同时按下不丢键。
此外还开启了键盘锁定(locking)功能并带重同步:
"qmk": { "locking": { "enabled": true, "resync": true } }矩阵定义
"matrix_pins": { "cols": ["B7", "D1", "D0", "B0", "B1", "E6", "B2", "B3", "D2", "D7", "B4", "B6", "C6", "C7", "D6"], "rows": ["D4", "D5", "D3", "B5", "F4"] }, "diode_direction": "COL2ROW"- 矩阵为15 列 × 5 行(共 75 个扫描节点,实际按键约 61–67 个);
- 引脚全部映射到 ATmega32U4 的 GPIO(
B0–B7、C6/C7、D0–D7、E6、F4); - COL2ROW表示二极管方向为“列→行”,这是 QMK 扫描时判断按键状态的关键依据,DIY 焊接时必须与原理图保持一致。
主控与引导程序
"processor": "atmega32u4", "bootloader": "atmel-dfu"merro60 使用经典的 AtmelATmega32U4主控(USB 全速 12Mbps 原生支持,无需外置 USB 转串口芯片),引导程序为atmel-dfu——这是多数国产 60% 键盘(如 GH60 系)的标准配置,刷写工具链成熟、兼容性好。
布局体系:从 LAYOUT_all 到社区布局
布局别名(layout_aliases)
为了兼容历史命名,keyboard.json 定义了一组别名:
"layout_aliases": { "LAYOUT_default": "LAYOUT_all", "LAYOUT_hhkb": "LAYOUT_60_hhkb", "LAYOUT_iso": "LAYOUT_60_iso_split_bs_rshift", "LAYOUT_tsangan": "LAYOUT_60_ansi_tsangan_split_bs_rshift", "LAYOUT_60_tsangan_hhkb": "LAYOUT_60_ansi_tsangan_split_bs_rshift" }这意味着旧的LAYOUT_hhkb、LAYOUT_iso等写法会被自动解析到新的标准命名,老键位映射无需改动即可继续编译。
内建布局(layouts)
keyboard.json 中实际定义了 6 种布局:
| 布局名 | 特点 |
|---|---|
LAYOUT_all | 全功能布局,顶行 15 键(含独立~键与分裂 Backspace),支持 split Backspace / split Right Shift / 7U 空格等全部孔位,是 default 键位映射使用的基础布局 |
LAYOUT_60_ansi | 标准 ANSI 60%(2U Backspace、标准 Shift、6.25U 空格) |
LAYOUT_60_ansi_split_bs_rshift | ANSI + 分裂 Backspace 与分裂右 Shift |
LAYOUT_60_hhkb | HHKB 风格(分裂右 Shift、1.5U 左右 Alt 等) |
LAYOUT_60_iso | ISO 布局(含KC_NUBS与高 2U 的 Enter) |
LAYOUT_60_iso_split_bs_rshift | ISO + 分裂 Backspace / 右 Shift |
LAYOUT_60_ansi_tsangan_split_bs_rshift | Tsangan(7U 空格 + 1.5U 底行) |
社区布局(community_layouts)
该键盘同时声明了 5 种社区布局,可与其他同配列键盘共用键位映射代码:
"community_layouts": [ "60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan_split_bs_rshift", "60_hhkb", "60_iso" ]因此,你既可以直接使用make chlx/merro60:ansi这样的官方键位,也可以把其它 60% 键盘基于上述社区布局编写的键位映射直接套用到 merro60 上。
官方键位映射逐套分析
merro60 目录下预置了 5 套官方键位映射,全部位于 keyboards/chlx/merro60/keymaps/,可直接编译使用:
| 键位目录 | 使用的布局 | 核心特点 |
|---|---|---|
default | LAYOUT_all | 全孔位示例;F 层(MO(1)长按调出)提供 F1–F12、QK_BOOT(软重启进 Bootloader)、BL_DOWN/BL_TOGG/BL_UP/BL_STEP背光控制 |
ansi | LAYOUT_60_ansi_split_bs_rshift | ANSI 60% + 分裂 Backspace / 右 Shift;QK_GESC(Grave/Esc 复用);F 层提供音量、方向键与编辑键 |
hhkb | LAYOUT_60_hhkb | HHKB 风格;Caps Lock 位改为KC_LCTL;F 层含KC_PSCR/KC_SCRL/KC_PAUS等 |
iso | LAYOUT_60_iso_split_bs_rshift | ISO 布局,含KC_NUBS(ISO\)与KC_NUHS |
tsangan | LAYOUT_60_ansi_tsangan_split_bs_rshift | Tsangan 底行(7U 空格 + 1.5U 底行键) |
以default键位映射(keymaps/default/keymap.c)为例,其结构非常典型:[0]为主层、[1]为 Fn 层,层切换使用MO(1)(按住临时切换),符合 QMK 标准的 层功能 模型;而QK_BOOT是 量子键码 中“重启进 Bootloader”的软方式,配合硬件复位可双保险。键码的完整速查可参考 keycodes。
由于键盘矩阵定义了 15 列、5 行,而不同布局实际使用的物理键位数量不同(例如LAYOUT_all顶行有 15 个键位、LAYOUT_60_ansi顶行只有 14 个),键位映射代码中LAYOUT_*宏的参数个数必须与对应布局定义完全一致——这也是阅读keymap.c时最容易踩的坑。
merro60 家族其它变体
chlx 围绕 merro60 还衍生了几个同平台变体,均位于keyboards/chlx/下,编译命令结构相同:
| 键盘 | 差异点 | 编译命令 |
|---|---|---|
| ppr.merro60 | 额外中心柔化开槽(center flex cut),建议 1.2mm 板厚制造;复位触点位于 Z 键附近(可从开关 LED 槽伸入) | make chlx/ppr_merro60:default |
| str.merro60 | 增加 RGB 底灯(underglow),支持版本 str.merro60.1.1 | make chlx/str_merro60:default |
| lfn_merro60 | 轻量化/简化变体,仅含 default 键位 | make chlx/lfn_merro60:default |
其中ppr.merro60官方文档还给出了刷写示例make chlx/ppr_merro60:default:flash,与 merro60 主型号的刷写流程完全一致,可作为参考。需要留意的是,ppr.merro60的硬件版本号格式为ppr.merro60.x.x.x,刷写前请确认 PCB 丝印版本与固件匹配。
从零开始:merro60 固件工作流小结
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/qm/qmk_firmware并按要求安装 QMK 构建工具链(见 getting_started); - 确认键位:浏览 keymaps 下 5 套官方键位,或直接使用
default; - 编译:
make chlx/merro60:default; - 进入 Bootloader:按上文三种方式之一(插拔按住 ESC / PCB 复位按钮 / 短接复位触点),或用固件内置的
QK_BOOT键; - 刷写:
make chlx/merro60:default:flash; - 验证:刷写完成后键盘自动重启进入正常模式,若键位不符合预期,可参考 测试与调试 排查。
整套流程完全基于数据驱动配置——矩阵引脚、USB 标识、功能开关、布局定义都集中在单个 keyboard.json 中,无需手写 C 头文件即可维护硬件描述,这也是 QMK 现代键盘移植的标准范式。
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考