concrete flowers cor:QMK 固件中 ATmega32u4 扩展 65% 键盘的构建、烧录与配列配置指南
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
本篇技术指南以 QMK Firmware 仓库中 concrete flowers cor 的 readme 为主体,结合其数据驱动配置 keyboard.json、矩阵图 matrix_diagram.md 与默认键位图 keymap.c,系统讲解这款"exploded 65% + 宏列"键盘的硬件规格、编译烧录流程、Bootloader 进入方式以及矩阵与配列结构。读完本文,你将掌握该键盘在 QMK 环境下的完整编译与刷写命令,理解其 5×17 扫描矩阵与四种 ANSI 配列的映射关系,并能基于默认键位图快速定制自己的布局。
键盘概览
concrete flowers cor(下称 cor)是维护者 Ramon Imbao 设计的一款exploded 65%键盘,特色是在标准 65% 布局的右侧额外增加了一列宏键(Fn、Page Up/Page Down、Delete 及方向键所在列),并将 F 区功能键以竖排方式置于左侧。官方 readme 将其描述为 "An exploded 65% with a macro column"。
- 键盘维护者:Ramon Imbao
- 硬件支持:ATmega32u4(AVR 平台)
- Bootloader:
atmel-dfu
仓库内该键盘的目录结构如下:
keyboards/concreteflowers/cor/ ├── keymaps/ │ └── default/ │ └── keymap.c # 默认键位图(两层,使用 LAYOUT_ansi_blocker_split_bs) ├── keyboard.json # 数据驱动配置(矩阵、USB 描述符、特性开关、配列) ├── matrix_diagram.md # 矩阵与按键位置对照图 └── readme.md # 官方使用说明(构建 / 烧录 / Bootloader)硬件规格与数据驱动配置(keyboard.json)
cor 采用 QMK 的**数据驱动配置(Data-Driven Configuration)**方式定义硬件,所有关键信息集中在 keyboard.json 中,无需传统的rules.mk/config.h手工配置。核心字段如下:
| 配置项 | 值 | 说明 |
|---|---|---|
keyboard_name | cor | 键盘名称,也是make目标的一部分 |
manufacturer | concreteflowers | 制造商标识 |
maintainer | ramonimbao | 维护者 GitHub 用户名 |
processor | atmega32u4 | AVR 主控,支持原生 USB |
bootloader | atmel-dfu | Atmel DFU 引导程序(见下文"烧录"一节) |
diode_direction | COL2ROW | 二极管方向:列→行,决定矩阵扫描逻辑 |
usb.vid/usb.pid | 0x5001/0x0002 | USB Vendor/Product ID,设备版本1.0.0 |
矩阵引脚与特性开关
matrix_pins定义了 5 行 × 17 列的扫描矩阵:
- 行(rows):
F0、F1、F4、B3、B6 - 列(cols):
F5、F6、F7、C6、C7、B1、B7、B5、B4、D7、D6、D4、D5、D3、D2、D1、D0
特性开关(features)中启用了bootmagic(Bootmagic 复位)、extrakey(媒体键等额外 HID 按键)与mousekey(鼠标键),并显式关闭了nkro(即默认 6KRO,走标准 HID 键盘报告)。这些字段与 data/schemas/keyboard.jsonschema 中定义的键值对应,属于 QMK 数据驱动配置的标准能力。
构建固件
设置好 QMK 构建环境后,在仓库根目录执行以下命令即可编译默认键位:
make concreteflowers/cor:defaultconcreteflowers/cor为键盘目标路径(对应keyboards/concreteflowers/cor/目录);default为键位图目标,对应 keymaps/default/keymap.c。
编译产物为可直接烧录的.hex固件文件。若需要为同一键盘编译自定义键位,将default替换为你自己的键位图目录名即可(例如make concreteflowers/cor:mykeymap)。
烧录固件与 Atmel DFU Bootloader
cor 出厂自带Atmel DFU引导程序。正如 docs/flashing.md 所述,所有带原生 USB 的 AVR 主控(16/32U4RC 除外)默认都使用该 Bootloader,常见于 PCB 上集成自家主控的键盘。
执行烧录命令:
make concreteflowers/cor:default:flash在:flash目标中,QMK 会依据bootloader: atmel-dfu自动选择配套的烧录工具(AVR 平台下对应avrdude配合 DFU 编程器)。请确认系统已安装对应的刷写工具,并保证设备以 DFU 模式接入电脑。
注意:官方 readme 中烧录示例写作
make concrete flowers/cor:default:flash,其中包含多余空格,实际可用的目标路径应为concreteflowers/cor(与构建命令保持一致),本文已按正确格式给出。
进入 Bootloader 的三种方式
readme 明确列出了进入 DFU Bootloader 的三种方法,与 QMK 的标准机制一致:
- Bootmagic 复位:按住键盘左上角键的同时插入 USB 线(键盘
features.bootmagic已开启,见 keyboard.json)。 - 物理复位按钮:短按 PCB 背面的复位按键。
- 键位图中的 RESET 键码:如果当前键位图将某个按键映射为
RESET,按下即可进入 Bootloader。
第 2、3 种方式分别依赖硬件复位电路与 QMK 的RESET量子键码实现;第 1 种方式则对应 QMK 的 Bootmagic Lite/完整版功能,是无需拆机即可刷机的常用手段。
矩阵结构与配列(Layout)解析
矩阵图:5×17 扫描布局
matrix_diagram.md 给出了完整的矩阵对照图:每一格以"行号+列号"十六进制形式标注(如00、0E、4G等),其中:
- 首行(row 0)横跨数字区至 2U 退格键与 Delete 键;
- 最右侧一列(下标 G 对应 matrix col 16)即为宏列:Page Up、Page Down、Fn 与方向键;
- 底部行(row 4)为左 Ctrl / GUI / Alt、6.25U 空格以及右侧 Alt / Ctrl,构成 Blocke 风格底排。
四种 ANSI 配列与 layout_aliases
keyboard.json 定义了四种物理配列:
| 配列名称 | 特点 |
|---|---|
LAYOUT_ansi_blocker | 标准 2U 退格键、右 Shift 1.75U、标准底排(左右 Alt/Ctrl 齐全) |
LAYOUT_ansi_blocker_split_bs | 退格键拆分为两个 1U 键(matrix [0,14]与[0,15]),其余同 ANSI |
LAYOUT_ansi_blocker_tsangan | Tsangan 风格底排:左 Ctrl 1.5U、GUI 1U、7U 空格、右 Ctrl 1.5U,无右侧 Alt |
LAYOUT_ansi_blocker_tsangan_split_bs | 同时使用拆分退格键与 Tsangan 底排 |
同时,layout_aliases将LAYOUT_all映射到LAYOUT_ansi_blocker_split_bs,即"全键位"配列实际对应拆分退格键方案——这也是默认键位图所使用的配列。
配列中的每个键位都通过matrix: [行, 列]与硬件矩阵建立映射,并以x/y坐标与w(宽度)描述在键盘上的物理位置。例如 6.25U 空格对应matrix [4,7],坐标(5, 4),宽度6.25。
默认键位图(default keymap)逐层解读
默认键位图 keymaps/default/keymap.c 使用LAYOUT_ansi_blocker_split_bs,共两层:
- 第 0 层(默认层):左侧竖排 F 区(F1–F5),标准 QWERTY 字母区,右侧宏列为 Page Up / Page Down /
MO(1)/ 方向键;底排为 Ctrl / GUI / Alt、6.25U 空格、右 Alt / Ctrl;MO(1)即按住右下角 Fn 键临时切换层。 - 第 1 层(Fn 层):将顶层退格键区域映射为
KC_GRV与 F1–F12 功能键(借助拆分退格键的两个 1U 键位实现 12 个 F 键全覆盖),并将宏列中的 Page Up / Page Down 映射为KC_HOME/KC_END,其余键位以_______(透明)继承第 0 层定义。
键位图通过#include QMK_KEYBOARD_H引入 QMK 的键码与配列宏定义,keymaps[][MATRIX_ROWS][MATRIX_COLS]数组与配列定义一一对应。值得注意的细节:第 0 层将拆分退格的两个 1U 键都映射为KC_BSPC,等效于标准的 2U 退格手感,用户也可以将其之一改造成KC_DELETE或自定义功能键。
相关参考文件
- 键盘官方说明:keyboards/concreteflowers/cor/readme.md
- 硬件与配列配置:keyboards/concreteflowers/cor/keyboard.json
- 矩阵对照图:keyboards/concreteflowers/cor/matrix_diagram.md
- 默认键位图:keyboards/concreteflowers/cor/keymaps/default/keymap.c
- 同系列 TKL 型号(RP2040 主控)参考:keyboards/concreteflowers/cor_tkl/readme.md
- QMK 烧录指南(Atmel DFU 章节):docs/flashing.md
- QMK 构建环境与 make 指南:docs/getting_started_make_guide.md、docs/newbs_building_firmware_workflow.md
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考