merro60 键盘固件详解:QMK 数据驱动配置、布局体系与刷写指南
2026/9/19 14:41:55 网站建设 项目流程

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)官方提供了三种方式,任选其一即可:

  1. 插拔触发:在键盘未通电状态下,按住左上角按键(通常是ESC)的同时插入 USB 线,松开后即进入 Bootloader——这正是 QMK 的 Bootmagic 功能(该键盘在features中显式开启了"bootmagic": true);
  2. 复位按键:键盘已通电状态下,按下 PCB 背面、位于 Caps Lock / A 键区域后方的复位按钮(按下后松开);
  3. 复位触点短路:键盘通电状态下,用镊子等金属工具短接空格键位附近的两个复位金属触点(注意:不是空格键的开关引脚孔位,不要短错位置)。

第三种方式对已经装进外壳、不便拆出 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(B0B7C6/C7D0D7E6F4);
  • 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_hhkbLAYOUT_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_rshiftANSI + 分裂 Backspace 与分裂右 Shift
LAYOUT_60_hhkbHHKB 风格(分裂右 Shift、1.5U 左右 Alt 等)
LAYOUT_60_isoISO 布局(含KC_NUBS与高 2U 的 Enter)
LAYOUT_60_iso_split_bs_rshiftISO + 分裂 Backspace / 右 Shift
LAYOUT_60_ansi_tsangan_split_bs_rshiftTsangan(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/,可直接编译使用:

键位目录使用的布局核心特点
defaultLAYOUT_all全孔位示例;F 层(MO(1)长按调出)提供 F1–F12、QK_BOOT(软重启进 Bootloader)、BL_DOWN/BL_TOGG/BL_UP/BL_STEP背光控制
ansiLAYOUT_60_ansi_split_bs_rshiftANSI 60% + 分裂 Backspace / 右 Shift;QK_GESC(Grave/Esc 复用);F 层提供音量、方向键与编辑键
hhkbLAYOUT_60_hhkbHHKB 风格;Caps Lock 位改为KC_LCTL;F 层含KC_PSCR/KC_SCRL/KC_PAUS
isoLAYOUT_60_iso_split_bs_rshiftISO 布局,含KC_NUBS(ISO\)与KC_NUHS
tsanganLAYOUT_60_ansi_tsangan_split_bs_rshiftTsangan 底行(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.1make 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 固件工作流小结

  1. 克隆仓库git clone https://gitcode.com/GitHub_Trending/qm/qmk_firmware并按要求安装 QMK 构建工具链(见 getting_started);
  2. 确认键位:浏览 keymaps 下 5 套官方键位,或直接使用default
  3. 编译make chlx/merro60:default
  4. 进入 Bootloader:按上文三种方式之一(插拔按住 ESC / PCB 复位按钮 / 短接复位触点),或用固件内置的QK_BOOT键;
  5. 刷写make chlx/merro60:default:flash
  6. 验证:刷写完成后键盘自动重启进入正常模式,若键位不符合预期,可参考 测试与调试 排查。

整套流程完全基于数据驱动配置——矩阵引脚、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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询