QMK 固件实战:Blaster 75 默认键位全解析与底部双配列(6.25u / 7u 空格)实现指南
2026/9/17 3:54:53 网站建设 项目流程

QMK 固件实战:Blaster 75 默认键位全解析与底部双配列(6.25u / 7u 空格)实现指南

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

本篇文章以 QMK Firmware 仓库中keyboards/blaster75的默认键位文档为核心,完整解读 ALTAiN 推出的 75% ANSI 客制化键盘 Blaster 75 的默认键位设计、底部行两种可切换配列,并结合 keymap.c 与 keyboard.json 从源码级说明布局是如何定义、映射与生效的。读完本文,你将掌握 Blaster 75 默认键位的每一个按键含义、如何在两种空格配列(6.25u 与 7u)之间切换,以及编译烧录与进入 Bootloader 的完整流程。

Blaster 75 与默认键位概览

Blaster 75 是 ALTAiN 设计并制造的 75% ANSI 布局客制化键盘,其官方维护说明(见 keyboards/blaster75/readme.md)给出的关键硬件信息如下:

  • 键盘维护者:ALTAiN
  • 硬件支持:Blaster 75
  • 结构:Top-Mount(上盖固定结构)
  • 打字角度:6 度
  • 前高:20.2mm

默认键位文档(keyboards/blaster75/keymaps/default/readme.md)明确说明:该键位是专为 Blaster 75 设计的出厂默认方案,整体遵循ANSI 布局,唯一例外是底部行——底部行支持两种可配置的配列方案,用户可以根据自己手头的空格键长度自由选择。

从数据驱动配置 keyboard.json 可以看到这块键盘的底层平台信息:

配置项说明
keyboard_nameBlaster 75键盘名称
manufacturer/maintainerAltain厂商与维护者
usb.vid/usb.pid0xA122 / 0xB075USB 标识
processoratmega32u4AVR 主控
bootloaderatmel-dfuDFU 引导加载器
matrix_pins.rowsF0, F1, F4, F5, F6, F76 行
matrix_pins.colsB0, B4, B5, B6, B7, C6, C7, D0–D715 列
diode_directionCOL2ROW列到行二极管方向
features.bootmagictrue启用 Bootmagic
features.nkrofalse未启用 N 键无冲(即默认 6KRO)

也就是说,Blaster 75 在 QMK 中是一个6 行 × 15 列的矩阵,采用 COL2ROW 接法,运行于 atmega32u4 主控上。

默认键位图逐区解析

默认键位的核心实现位于 keymaps/default/keymap.c,文件顶部带有 GPL 开源许可头,并引入QMK_KEYBOARD_H,随后定义了keymaps[][MATRIX_ROWS][MATRIX_COLS]数组。完整代码如下:

#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), };

功能键区(第 0 行)

第 0 行从KC_ESC开始,紧接着是完整的 F1–F12 功能键,行末是两个 75% 键盘典型的导航键:

  • KC_PSCR(Print Screen 截屏)
  • KC_INS(Insert 插入)

数字键区(第 1 行)

标准 ANSI 数字行:KC_GRV(反引号)、KC_1KC_0,加上KC_MINS(减号)、KC_EQL(等号)、KC_BSPC(退格)。注意此行的第 14 个位置([1, 13])在 keyboard.json 中定义为宽度"w": 2的 2u 大退格键,行末还有一个KC_HOME

主键区(第 2、3 行)

  • 第 2 行:KC_TAB起手,接 QWERTY 字母行的 Q W E R T Y U I O P,然后是KC_LBRC([)、KC_RBRC(])、KC_BSLS(\),行末为KC_DEL。同样地,KC_TAB在布局中被定义为"w": 1.5的 1.5u 键,KC_BSLS"w": 1.5
  • 第 3 行:KC_CAPS(Caps Lock,定义为"w": 1.75的 1.75u 键)、A S D F G H J K L、KC_SCLN(;)、KC_QUOT('),以及定义为"w": 2.25的 2.25u 大回车键KC_ENT,行末为KC_END

左 Shift 行(第 4 行)

KC_LSFT(定义为"w": 2.25的 2.25u 大 Shift)、Z X C V B N M、KC_COMM(,)、KC_DOT(.)、KC_SLSH(/),随后是"w": 1.75KC_RSFT,行末是方向键KC_UP(上)。

底部行(第 5 行)

默认使用的LAYOUT配列下,底部行为:KC_LCTL(左 Ctrl)、KC_LWIN(左 Win)、KC_LALT(左 Alt)、居中的KC_SPC(空格)、KC_RALT(右 Alt)、KC_RWIN(右 Win),以及右下角的三枚方向键KC_LEFTKC_DOWNKC_RGHT——与第 4 行末尾的KC_UP共同组成完整的独立方向键区。

预留的第 1 层

[1]层是一整层KC_TRNS(透明键)。KC_TRNS意味着该位置直接“透传”到更低层(这里是第 0 层)的按键,不会产生任何实际按键动作。这层全部为透明键,说明它是为后续自定义(例如 Fn 功能层、媒体层)预留的空白画布,用户可以在此基础上叠加自己的功能层而不必重写第 0 层。

底部行:两种可配置配列

默认键位文档的核心内容,就是 Blaster 75 底部行的两种可配置方案。文档明确写道:整体遵循 ANSI 布局,唯独底部行例外,可根据用户需求配置为以下两种形式:

  1. 1.25 / 1.25 / 1.25 / 6.26u 空格 / 1.25 / 1.25
  2. 1.5u / 1u / 1.5u / 7u 空格 / 1.5u

对照 keyboard.json 中的layouts定义,这两种方案分别对应仓库中已经定义好的两个布局宏:LAYOUTLAYOUT_7u

方案一:6.25u 空格(LAYOUT

这是默认键位当前使用的布局。以 QMK 布局定义中的w(宽度)字段为准,底部行共 9 个位置:

物理位置矩阵坐标宽度(u)默认按键
左 Ctrl[5, 0]1.25KC_LCTL
左 Win[5, 1]1.25KC_LWIN
左 Alt[5, 2]1.25KC_LALT
空格[5, 5]6.25KC_SPC
右 Alt[5, 9]1.25KC_RALT
右 Win[5, 11]1.25KC_RWIN
左方向键[5, 12]1KC_LEFT
下方向键[5, 13]1KC_DOWN
右方向键[5, 14]1KC_RGHT

对应文档中“1.25 / 1.25 / 1.25 / 6.25u 空格 / 1.25 / 1.25”的结构(文档中写作 6.26u,而 keyboard.json 中LAYOUT实际定义的宽度为"w": 6.25,以源码定义为准),右侧再配三枚 1u 方向键。

方案二:7u 空格(LAYOUT_7u

LAYOUT_7u是为 7u 长空格准备的第二套布局,底部行共 8 个位置:

物理位置矩阵坐标宽度(u)默认按键
左 Ctrl[5, 0]1.5KC_LCTL
左 Win[5, 1]1KC_LWIN
左 Alt[5, 2]1.5KC_LALT
空格[5, 5]7KC_SPC
右 Alt[5, 11]1.5KC_RALT
左方向键[5, 12]1KC_LEFT
下方向键[5, 13]1KC_DOWN
右方向键[5, 14]1KC_RGHT

对应文档中“1.5u / 1u / 1.5u / 7u 空格 / 1.5u”的结构。可以明显看出,两种方案共享完全相同的矩阵扫描位置(空格始终占用[5, 5],方向键始终占用[5, 12][5, 14]),区别仅在于 PCB 上焊接的按键物理宽度不同,以及底部左半区(Ctrl / Win / Alt)的排布随之调整。

如何在两种配列间切换

由于默认键位文件使用的是LAYOUT,若你手头是 7u 空格配列的 PCB/键帽,只需在 keymaps/default/keymap.c 中把两个LAYOUT(...)宏替换为LAYOUT_7u(...)(即[0] = LAYOUT_7u([1] = LAYOUT_7u(),然后重新编译烧录即可。这是 QMK 数据驱动配置的典型用法:keyboard.json中声明了LAYOUTLAYOUT_7u两套键位几何,键位文件中按需选择其一。

从 keyboard.json 理解布局定义

keyboard.json 的layouts部分用数据驱动的方式描述了每个键的物理几何信息,每条记录由matrix(矩阵坐标)、x(横向位置,以 1u 为单位的累计坐标)、y(纵向行位置)和可选的w(键宽)组成。例如:

{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, {"matrix": [2, 1], "x": 1.5, "y": 2.25}

表示[2, 0]处的 Tab 键宽度 1.5u,位于第 2 行起始;紧随其后的[2, 1](Q 键)从 x=1.5 开始,占 1u。所有键的x坐标累加后正好铺满 16 个 1u 单位,即一行 16u 的 75% 键盘宽度。

值得注意的是,第 3 行(y=3.25)只有 14 个键位记录([3, 0][3, 12][3, 14]),因为KC_ENT"w": 2.25的宽回车,把原本 15 列的 ANSI 回车行压缩成了 14 个物理键位;同理第 4 行也只有 13 个键位记录([4, 0][4, 9][4, 11][4, 13]),因为KC_LSFTKC_RSFT分别是 2.25u 和 1.75u 的宽键。这种“矩阵坐标”与“物理几何”解耦的设计,正是 QMK 支持同一矩阵衍生多种配列的基础——Blaster 75 的LAYOUTLAYOUT_7u共用同一套矩阵定义,只是底部行的几何宽度不同。

编译、烧录与进入 Bootloader

在搭建好 QMK 构建环境后(参见仓库 docs/getting_started_build_tools.md 与 docs/getting_started_make_guide.md),编译默认键位:

make blaster75:default

烧录默认键位:

make blaster75:default:flash

按官方维护文档(keyboards/blaster75/readme.md),进入 Bootloader 有三种方式:

  1. Bootmagic 复位(官方推荐):按住矩阵 (0,0) 位置(即 PCB 上的 ESC 键)的同时插入 USB。如果 PCB 尚未焊接轴体,可以用任意金属导体(如镊子)短接 (0,0) 位置的两个焊盘再插入 USB。
  2. 物理复位键:短按 PCB 背面的复位按钮(部分版本可能是需要短接的焊盘)。
  3. 布局中的键码:按下映射了QK_BOOT键码的按键(默认键位中未预置,可自行添加)。

自定义你的默认键位

基于 keymaps/default/keymap.c 的结构,自定义键位非常直接:

  • 修改按键:直接替换[0]层中对应的KC_*键码。例如想交换 Caps Lock 与左 Ctrl,把第 3 行的KC_CAPS与底部行的KC_LCTL互换即可。
  • 启用第 1 层:把[1]层中某个位置的KC_TRNS换成实际键码,并在第 0 层用MO(1)(按住临时切换)或LT(1, KC_...)(长按切换、点按触发)绑定一个层切换键。
  • 添加 Bootloader 快捷键:在任意空闲位置填入QK_BOOT,即可在键盘上直接进入刷写模式。
  • 切换 7u 空格配列:如前面所述,将LAYOUT改为LAYOUT_7u后重新编译。

另外需要留意 keyboard.json 中features的声明:nkrofalse(默认 6KRO)、extrakeymousekey均为false,因此默认固件不包含多媒体扩展键和鼠标键支持。若需要这些功能,可在构建时通过命令行参数启用对应特性。

总结

Blaster 75 的默认键位是一套标准的 75% ANSI 布局,顶部完整功能键区、独立方向键区一应俱全,唯一需要用户按键帽规格选择的是底部空格配列:6.25u 空格方案使用LAYOUT(1.25/1.25/1.25/6.25u/1.25/1.25),7u 空格方案使用LAYOUT_7u(1.5u/1u/1.5u/7u/1.5u)。两者在 keyboard.json 中共享同一 6×15 矩阵,仅物理几何不同。结合 keymap.c 的源码,用户可以轻松理解键位映射机制,并在此基础上进行个性化的层设计与配列切换。

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询