QMK 固件构建指南:Charue Design Sunsetter R2 —— 65% + F 键列键盘的编译、刷写与 Bootloader 全解析
2026/9/19 9:22:10 网站建设 项目流程

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_directionCOL2ROW,即二极管负极朝向列(列驱动行扫描),这是 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_allLAYOUT_ansiLAYOUT_ansi_split_bsLAYOUT_isoLAYOUT_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),仅供参考

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

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

立即咨询