尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

QMK 固件实战:Blaster 75 默认键位全解析与底部双配列(6.25u / 7u 空格)实现指南 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启用 Bootmagicfeatures.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_PSCRPrint Screen 截屏KC_INSInsert 插入数字键区第 1 行标准 ANSI 数字行KC_GRV反引号、KC_1–KC_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_CAPSCaps 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.75的KC_RSFT行末是方向键KC_UP上。底部行第 5 行默认使用的LAYOUT配列下底部行为KC_LCTL左 Ctrl、KC_LWIN左 Win、KC_LALT左 Alt、居中的KC_SPC空格、KC_RALT右 Alt、KC_RWIN右 Win以及右下角的三枚方向键KC_LEFT、KC_DOWN、KC_RGHT——与第 4 行末尾的KC_UP共同组成完整的独立方向键区。预留的第 1 层[1]层是一整层KC_TRNS透明键。KC_TRNS意味着该位置直接“透传”到更低层这里是第 0 层的按键不会产生任何实际按键动作。这层全部为透明键说明它是为后续自定义例如 Fn 功能层、媒体层预留的空白画布用户可以在此基础上叠加自己的功能层而不必重写第 0 层。底部行两种可配置配列默认键位文档的核心内容就是 Blaster 75 底部行的两种可配置方案。文档明确写道整体遵循 ANSI 布局唯独底部行例外可根据用户需求配置为以下两种形式1.25 / 1.25 / 1.25 / 6.26u 空格 / 1.25 / 1.251.5u / 1u / 1.5u / 7u 空格 / 1.5u对照 keyboard.json 中的layouts定义这两种方案分别对应仓库中已经定义好的两个布局宏LAYOUT与LAYOUT_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_7uLAYOUT_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中声明了LAYOUT与LAYOUT_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 键从 x1.5 开始占 1u。所有键的x坐标累加后正好铺满 16 个 1u 单位即一行 16u 的 75% 键盘宽度。值得注意的是第 3 行y3.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_LSFT与KC_RSFT分别是 2.25u 和 1.75u 的宽键。这种“矩阵坐标”与“物理几何”解耦的设计正是 QMK 支持同一矩阵衍生多种配列的基础——Blaster 75 的LAYOUT与LAYOUT_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 有三种方式Bootmagic 复位官方推荐按住矩阵 (0,0) 位置即 PCB 上的 ESC 键的同时插入 USB。如果 PCB 尚未焊接轴体可以用任意金属导体如镊子短接 (0,0) 位置的两个焊盘再插入 USB。物理复位键短按 PCB 背面的复位按钮部分版本可能是需要短接的焊盘。布局中的键码按下映射了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的声明nkro为false默认 6KRO、extrakey与mousekey均为false因此默认固件不包含多媒体扩展键和鼠标键支持。若需要这些功能可在构建时通过命令行参数启用对应特性。总结Blaster 75 的默认键位是一套标准的 75% ANSI 布局顶部完整功能键区、独立方向键区一应俱全唯一需要用户按键帽规格选择的是底部空格配列6.25u 空格方案使用LAYOUT1.25/1.25/1.25/6.25u/1.25/1.257u 空格方案使用LAYOUT_7u1.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),仅供参考
返回列表