QMK 固件构建指南:Charue Design Sunsetter R2 —— 65% + F 键列键盘的编译、刷写与 Bootloader 全解析
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
Sunsetter R2 是 Charue Design 出品的一款 65% + 10% F 键列配列键盘套件,在 QMK 固件仓库中拥有完整的官方支持(数据驱动配置 + 默认键位图)。本文以仓库内 keyboards/charue/sunsetter_r2/ 目录下的 readme、keyboard.json、keymap.c 与 matrix_diagram.md 为主体,系统讲解该键盘的硬件配置、默认布局、编译刷写命令以及进入 Bootloader 的三种方式,帮助你在搭建好 QMK 构建环境后快速完成固件的编译与烧录,并理解其底层实现。
一、键盘概览:65% + 10% F 键列的 Sunsetter R2
Sunsetter R2 是一把由 Charue Design 设计并销售的键盘套件,其核心配列特征是「65% 主键区 + 10% F 键列」:在标准 65% 键盘(约 68~70 键)的基础上,左侧额外附加了一列 10 个 F 功能键(F1~F10),方便不依赖 Fn 组合键直接触达功能键,适合需要高频使用 F1~F10 的编程、游戏与办公场景。
Round 2(R2)版本相比初代 Sunsetter 的主要升级点包括:
- RGB 底灯(underglow):通过 WS2812 灯带实现,共 10 颗灯珠;
- 新的外壳配色;
- 热插拔(hotswap)选项:支持免焊接更换轴体;
- 内嵌式 USB 端口(recessed USB port):USB 接口内凹设计,外观更整洁。
在 QMK 仓库中,Sunsetter R2 的固件支持由维护者 ILWrites(PiKeeb)维护,全部配置以数据驱动(Data-Driven)方式写在keyboard.json中,没有传统的config.h/rules.mk散件配置,读者可从 keyboards/charue/sunsetter_r2/keyboard.json 完整查看。
二、硬件与固件配置深度解析(keyboard.json)
keyboard.json是 QMK 数据驱动配置的核心,Sunsetter R2 的全部底层硬件定义都集中于此。以下是关键字段的逐项解读:
1. 基本标识与 USB 信息
"keyboard_name": "Sunsetter R2", "manufacturer": "Charue Design", "url": "https://charue-design.com/collections/sunsetter", "maintainer": "PiKeeb", "usb": { "vid": "0x4344", "pid": "0x5335", "device_version": "0.0.1" }vid/pid分别为 USB Vendor ID(0x4344)与 Product ID(0x5335),操作系统依赖这两个值识别设备;device_version为设备版本号0.0.1;maintainer为 GitHub 用户名PiKeeb,即固件维护者。
2. 主控与 Bootloader
"processor": "atmega32u4", "bootloader": "atmel-dfu"- 主控为 AtmelATmega32U4(AVR 架构,自带 USB 控制器);
- Bootloader 为atmel-dfu,对应 QMK 刷写目标
:dfu,这也是下文刷写命令能直接使用:flash的依据(QMK 会自动根据 bootloader 类型选择dfu-programmer等刷写工具)。
3. 矩阵引脚与二极管方向
"matrix_pins": { "cols": ["F0", "F1", "F7", "B1", "D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7"], "rows": ["B3", "B2", "F4", "F5", "F6"] }, "diode_direction": "COL2ROW"- 矩阵规模为17 列 × 5 行,共可承载 85 个物理按键位置;
diode_direction为COL2ROW,即二极管负极朝向列(列驱动行扫描),这是 QMK 矩阵扫描的关键参数,决定了矩阵扫描代码的驱动逻辑,不能与 PCB 实际走线相悖;- 具体的行、列引脚与物理按键的对应关系,可对照 keyboards/charue/sunsetter_r2/matrix_diagram.md 中的矩阵图查看,例如
00/01对应 F1/F2,0G对应 2u Backspace 等。
4. 指示灯
"indicators": { "caps_lock": "B0" }Caps Lock 状态指示灯接在B0引脚,由 QMK 的 indicator LED 驱动框架自动点亮/熄灭。
5. RGB 底灯配置
"rgblight": { "led_count": 10, "animations": { "breathing": true, "rainbow_mood": true, "rainbow_swirl": true, "snake": true, "knight": true, "christmas": true, "static_gradient": true, "rgb_test": true, "alternating": true, "twinkle": true } }, "ws2812": { "pin": "E6" }- 底灯灯珠数为10 颗;
- WS2812 数据线接在
E6引脚; - 默认启用了 10 种 RGB 动画(呼吸、彩虹情绪、彩虹漩涡、贪吃蛇、骑士、圣诞、静态渐变、RGB 测试、交替、闪烁),均在固件编译期直接内置,无需额外在键位图中声明。
6. 功能开关(features)
"features": { "bootmagic": true, "extrakey": true, "mousekey": true, "nkro": false, "rgblight": true }, "qmk": { "locking": { "enabled": true, "resync": true } }bootmagic:启用 Bootmagic(Lite)功能,这是下文「Bootmagic reset」进入 Bootloader 方式的前提;extrakey:启用媒体键(音量、播放控制等)支持;mousekey:启用鼠标键支持;nkro:关闭 N 键无冲(默认 6KRO);rgblight:启用 RGB 灯光系统;qmk.locking:启用 QMK 的锁定键(Caps/Num/Scroll Lock)跟踪与重同步(resync)机制。
三、默认键位图解析(keymap.c)
默认键位图位于 keyboards/charue/sunsetter_r2/keymaps/default/keymap.c,共两层:
_BASE(基础层):主键区为标准 QWERTY 布局,左侧 F1~F10 直接映射为对应功能键;数字行最左为QK_GESC(Shift+Esc 输出~,单独按下输出 Esc 的复合键);右上角为音量加/减/静音,方向键区右侧为上一曲KC_MNXT;空格行为左 Ctrl / 左 GUI / 左 Alt / 空格 /MO(_FN)(按住进入 Fn 层)/ 空格 / 右 Alt / 方向键。_FN(功能层):通过MO(_FN)按住触发,将 F1~F10 位置映射为 F11~F18、F20,并把QK_GESC位置改为QK_BOOT(一键进入 Bootloader),同时UG_NEXT用于循环切换 RGB 灯光模式。
enum layer_names { _BASE, _FN };默认键位图使用的是LAYOUT_all配列(含 2u Backspace、ISO 用反斜杠位等完整物理键位)。需要注意:keyboard.json中共定义了 5 种配列——LAYOUT_all、LAYOUT_ansi、LAYOUT_ansi_split_bs、LAYOUT_iso、LAYOUT_iso_split_bs,因此你可以基于这些配列自行编写 ANSI / ISO / 分裂 Backspace 等不同风格的键位图。
四、构建固件:编译命令与前置条件
1. 搭建构建环境
编译前需要先完成 QMK 构建环境的搭建(安装工具链、配置 QMK CLI 等)。仓库中的官方指引位于:
- docs/getting_started_build_tools.md(构建工具安装)
- docs/getting_started_make_guide.md(Make 用法详解)
- 新手推荐从 docs/newbs.md(Complete Newbs Guide)入门。
2. 编译默认键位图
在仓库根目录执行:
make charue/sunsetter_r2:default命令格式为make <keyboard>:<keymap>:
<keyboard>:charue/sunsetter_r2,对应键盘目录keyboards/charue/sunsetter_r2/;<keymap>:default,对应 keyboards/charue/sunsetter_r2/keymaps/default/ 目录下的键位图。
编译完成后会生成.hex固件文件(ATmega32U4 使用 HEX 格式),存放在build/目录下。
3. 一次编译并刷写
make charue/sunsetter_r2:default:flash在make目标末尾追加:flash即可在编译成功后自动进入刷写流程。由于keyboard.json中声明的 bootloader 为atmel-dfu,QMK 会自动调用对应的刷写工具(dfu-programmer)完成烧录。
五、进入 Bootloader 的三种方式
当需要刷写固件(尤其是需要先手动进入 Bootloader 的场景)时,Sunsetter R2 支持以下三种方式:
1. Bootmagic reset(免拆机)
操作方法:按住矩阵中 (0,0) 位置的键(通常是左上角第一颗键,即 F1)不放,然后插入 USB 线连接电脑。
该方式依赖keyboard.json中启用的bootmagic: true功能:上电时 QMK 会检测 Bootmagic 触发键是否被按下,若按下则直接进入 Bootloader。触发键 (0,0) 对应矩阵第一行第一列,从默认键位图与矩阵图可知即 F1 键。
2. 物理复位按钮
操作方法:短按 PCB 背面的复位按钮即可进入 Bootloader;部分批次的 PCB 可能没有实体按钮,而是需要短接预留的复位焊盘(pads)。
这是最可靠的方式,适合 Bootmagic 被禁用或触发键无法按下等场景。若短接焊盘,务必使用镊子等工具短接对应两个焊点即可,无需持续按住。
3. 键位图中的QK_BOOT键码
操作方法:在键位图中将任意按键映射为QK_BOOT键码,按下该键即可立即进入 Bootloader。
默认键位图的_FN层已将 Esc 位置(QK_GESC位)映射为QK_BOOT,因此实际操作是:按住空格行中段的 Fn 键(MO(_FN))不放,再按 Esc 键,即可在不拔线、不开壳的情况下进入 Bootloader。
六、小结与排障建议
围绕 Sunsetter R2 的 QMK 使用流程可以概括为:读取 keyboard.json 理解硬件 → 对照 matrix_diagram 理解矩阵 → 按需编写/选择键位图 →make charue/sunsetter_r2:default编译 →make charue/sunsetter_r2:default:flash刷写 → 通过 Bootmagic / 复位键 / QK_BOOT 进入 Bootloader。
常见问题与排查思路:
- 编译报错找不到键盘:确认键盘路径写法为
charue/sunsetter_r2,并确认位于keyboards/目录下; - 刷写时设备未识别:先手动进入 Bootloader(推荐物理复位键或 Fn+Esc 触发
QK_BOOT),再执行:flash命令;Linux 下还需确认 udev 规则允许访问 DFU 设备,详见 docs/faq_build.md 与 docs/driver_installation_zadig.md(Windows 用户通常需要 Zadig 安装驱动); - RGB 不亮:确认
rgblight功能已在固件中启用(默认已启用),并通过UG_NEXT或 QMK 配置工具切换到期望的灯光模式; - 个别按键失灵:对照 keyboards/charue/sunsetter_r2/matrix_diagram.md 检查矩阵坐标与
keyboard.json中的引脚定义是否与 PCB 走线一致,热插拔版本也可先检查轴座接触是否良好。
通过以上内容,你应能独立完成 Sunsetter R2 固件的编译、刷写与 Bootloader 操作,并具备在此基础上自定义键位图、扩展 Fn 层功能的能力。
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考