ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

QMK 键盘矩阵图(Matrix Diagram)完全解读:以 LSJ Ares 60% 键盘为例

QMK 键盘矩阵图(Matrix Diagram)完全解读:以 LSJ Ares 60% 键盘为例 QMK 键盘矩阵图Matrix Diagram完全解读以 LSJ Ares 60% 键盘为例【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本文以 QMK 固件仓库中 LSJ Ares 键盘的 矩阵图文档 为核心系统讲解 QMK 中 matrix diagram 的作用、阅读方法与实战价值。你将学会如何把一张 ASCII 矩阵图与 keyboard.json 中的矩阵引脚、布局坐标一一对应理解 2u Backspace、ISO Enter、Tsangan/WKL/HHKB 等配列在矩阵中的实现方式并能将这套方法论复用到自己的键盘开发中。什么是 QMK 矩阵图QMK 的键盘目录中很多键盘会附带一个matrix_diagram.md文件。它用纯 ASCII 字符绘制了一张物理配列physical layout→ 电气矩阵electrical matrix的对照图直观回答两个问题键盘上每一个物理键位对应矩阵的哪一行哪一列大键空格、Shift、Enter、Backspace 等在矩阵中如何复用单个坐标。LSJ Ares 是一块 60% 布局的 PCB其矩阵为5 行 × 15 列对应 keyboard.json 中的定义matrix_pins: { cols: [A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7], rows: [B0, B1, B2, B3, B4] }, diode_direction: COL2ROW即 5 条行线B0–B4、15 条列线A0–A7、C7–C2、D7二极管方向为 COL2ROW。矩阵图坐标中的第一个数字代表行row第二个字母代表列col例如4E表示 row 4、col 14十六进制 E。完整矩阵图LSJ Ares 的物理配列到矩阵映射下面这段来自 matrix_diagram.md 的 ASCII 图完整覆盖了 Ares 支持的所有配列形态┌───────┐ 2u Backspace │4E │ └───────┘ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │4E │ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ │00 │01 │02 │06 │0A │0B │0C │0D │ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ ┌────────┐ ┌──────────┐ │10 │ 2.25u LShift 2.75u RShift │1C │ └────────┘ └──────────┘ ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ │00 │01 │02 │06 │0B │0C │0D │ Tsangan/WKL/HHKB └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ ┌─────┬───┬─────┬───────────────────────┬─────┬───┬───┬─────┐ │00 │01 │02 │06 │0A │0B │0C │0D │ True HHKB └─────┴───┴─────┴───────────────────────┴─────┴───┴───┴─────┘这张图实际包含四层信息下面逐一拆解。主配列区五行十五列的键位分布图的主区域上方 5 行展示的是全尺寸标准 60% 配列的矩阵位置第 0 行物理最上方矩阵 row 414 个 1u 键40–4D 一个可选的 2u Backspace4E。注意4D与4E是两个独立的矩阵坐标分别对应 ANSI 配列中的\键位和 split backspace 时的第二个退格键第 1 行row 330为 1.5u Tab31–3C为字母区3D为 1.5u 反斜杠第 2 行row 220为 1.75u Caps Lock21–2B为字母/符号区右侧额外画出ISO Enter区域2D为主 Enter2.25u2C为 ISO 配列特有的短反斜杠键位于 Enter 下方、高度 2u第 3 行row 110为 2.25u 左 Shift1C为 2.75u 右 Shift1D为 ANSI 配列的可选额外键对应 split right shift第 4 行row 000、01、02为 1.25u 的左修饰键Ctrl / GUI / Alt06为 6.25u 空格0A–0D为右侧修饰键与菜单键。这些坐标与 keyboard.json 中LAYOUT_all的matrix: [row, col]字段完全一致例如{matrix: [4, 14], x: 14, y: 0} // 对应图中的 4E2u Backspace {matrix: [0, 6], x: 3.75, y: 4, w: 6.25} // 对应图中的 066.25u 空格矩阵图中不出现任何行号跳跃5 个物理行依次使用矩阵 row 4、3、2、1、0这是因为 keyboard.json 中rows数组的顺序是[B0, B1, B2, B3, B4]row 0B0位于矩阵图最下方空格行。矩阵行号与物理行位置没有必然对应关系完全取决于 PCB 布线——这正是矩阵图存在的意义。特殊键位的独立图示主图下方用三张局部图标注了三个需要说明的键区2.25u 左 Shift / 2.75u 右 Shift10和1C两个坐标分别承载大 Shift1D是 split right shift 时才使用的额外 1u 键2u Backspace4E单独画出说明该 PCB 支持标准 1u 反斜杠 2u Backspace 的组合ISO Enter 区域2C短\高 2u与2D2.25u Enter组合说明 PCB 同时兼容 ANSI 与 ISO 两种回车形态。底部行三种配列形态图的最下方三行展示了底部修饰键的三种典型组合它们共享同一组矩阵坐标row 0区别仅在物理键帽宽度标准 60% 底部行1.25u × 4左 6.25u 空格 1.25u × 4右即00 01 02 | 06 | 0A 0B 0C 0DTsangan / WKL / HHKB 底部行1.5u 1u 1.5u左 7u 空格 1.5u 1u 1.5u右坐标变为00 01 02 | 06 | 0B 0C 0D——此时0A位被 7u 空格吞并True HHKB 底部行1.5u 1.5u左 7u 空格 1.5u 1u 1.5u右坐标为00 01 02 | 06 | 0A 0B 0C 0D的变体左区仅两个键位。可以看到无论物理键帽怎么换电气矩阵坐标都不变。改变配列只是改变键盘映射keymap中对每个矩阵坐标的按键定义这正是 QMK 把矩阵与布局解耦的设计哲学相关背景可进一步阅读 docs/how_a_matrix_works.md 与 docs/feature_layouts.md。矩阵图与 keyboard.json 的对应验证矩阵图不是孤立的说明图它与 keyboard.json 中的layouts定义严格互相对应。以LAYOUT_60_ansi_tsangan_split_bs_rshift为例其底部行定义如下{matrix: [0, 0], x: 0, y: 4, w: 1.5}, {matrix: [0, 1], x: 1.5, y: 4}, {matrix: [0, 2], x: 2.5, y: 4, w: 1.5}, {matrix: [0, 6], x: 4, y: 4, w: 7}, {matrix: [0, 11], x: 11, y: 4, w: 1.5}, {matrix: [0, 12], x: 12.5,y: 4}, {matrix: [0, 13], x: 13.5,y: 4, w: 1.5}与图中 Tsangan/WKL/HHKB 行的00 01 02 | 06 | 0B 0C 0D完全吻合x、w字段精确描述了 1.5u / 1u / 1.5u 与 7u 空格的几何宽度。同理LAYOUT_60_hhkb底部行省略了0ATrue HHKB 形态下该坐标不参与底部行与图中 True HHKB 行一致。通过 keyboard.json 还可以反推出矩阵图的更多工程背景bootmagic: {matrix: [4, 0]}bootmagic 触发键为 row 4、col 0正是矩阵图左上角的40默认键位为 Escape对应 readme.md 中按住左上角键通常映射为 Escape插入 USB 进入刷写模式的说明layout_aliases将LAYOUT与LAYOUT_60_tsangan_hhkb分别指向LAYOUT_all与LAYOUT_60_ansi_tsangan_split_bs_rshift说明默认键位default/keymap.c 中使用的LAYOUT_all面向最全的矩阵坐标集合community_layouts列出了 60_ansi、60_iso、60_hhkb、60_wkl、60_tsangan 等 13 种通用配列名称它们与 layouts 目录中的社区布局定义对应使 Ares 可以复用 QMK 的通用布局体系见 docs/feature_layouts.md。矩阵图与默认键位的联动从图到实际按键默认键位 使用LAYOUT_all定义了两层映射其行顺序与矩阵图完全一致[_MA] LAYOUT_all( KC_ESC, 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_BSLS, KC_BSPC, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL ),注意第三行的KC_BSLS, KC_ENT对应矩阵图第 2 行末端的2DANSI 配列下的回车与2CISO 短\位——LAYOUT_all把这些坐标全部纳入因此同一固件在 ANSI 与 ISO 配列下都能工作。第二层_FN则在最右上角定义了QK_BOOT4E之后的4D位置以及UG_NEXT、BL_TOGG等灯效与背光控制。阅读技巧矩阵图决定有哪些坐标keymap 决定每个坐标是什么键。当你为 Ares 编写新键位时先对照矩阵图确认目标物理键位对应的坐标再在LAYOUT_*宏中按坐标顺序填入键值即可。实战构建与刷写 Ares 固件矩阵图本身不参与编译但理解矩阵与配列是正确构建的前提。按 readme.md 的说明在完成 QMK 构建环境配置后# 构建默认键位固件 make ares:default # 构建并刷写 make ares:default:flash刷写时按住矩阵图左上角的40默认 Escape插入 USB 即可进入 bootloaderkeyboard.json 中bootmagic.matrix为[4, 0]bootloader 为 bootloadhid。如何为自定义键盘编写矩阵图如果你正在为一块新的 60% PCB 开发 QMK 支持matrix_diagram.md提供了可复用的模板方法论先列矩阵规模从 keyboard.json 的matrix_pins出发确认行数、列数Ares 为 5×15按物理行绘制键位每个键位用行号列号标注行、列均用十六进制列超过 9 后记作 A、B、C、D…Ares 图中第 0 行的40…4E就是 row 4 的 15 个坐标单独标出大键与可选键2u Backspace、ISO Enter、split shift、split backspace 等一个物理位置可能放多种键帽的场景必须单独画图说明如 Ares 图中的4E、2C/2D、1D为每种底部行画一行Tsangan / WKL / HHKB 等底部行变体虽然共享矩阵坐标但键帽宽度不同需要像原图那样分行展示w宽度信息与layouts定义互检图中每个坐标都应在 keyboard.json 的某个layouts条目中以matrix: [r, c]出现反之亦然避免出现图中没有但布局里多出来的死坐标。总结keyboards/ares/matrix_diagram.md虽然只是一张 ASCII 图但它完整承载了 LSJ Ares 的矩阵—配列映射关系5×15 矩阵坐标、2u Backspace、ISO Enter、三种底部行形态以及与 keyboard.json、默认键位 的一一对应。对开发者而言这张图既是编写/审查键位文件的速查表也是理解 QMK矩阵与布局解耦思想的最佳入门案例——掌握了它你就掌握了 QMK 中任何一张 matrix diagram 的读法。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表