ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

QMK 固件 ALF X2 键盘矩阵图解析:从 Matrix Diagram 到引脚、布局与键位映射

QMK 固件 ALF X2 键盘矩阵图解析:从 Matrix Diagram 到引脚、布局与键位映射 QMK 固件 ALF X2 键盘矩阵图解析从 Matrix Diagram 到引脚、布局与键位映射【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本文以 QMK 仓库中 ALF X2 键盘的矩阵图文档 matrix_diagram.md 为核心结合该键盘的 keyboard.json 与默认键位 keymap.c逐格解读 60% 键盘的 5×15 矩阵坐标、特殊键帽变体2u Backspace、ISO Enter、2.75u/1.75u 右 Shift与底部行装配Standard / Tsangan/WKL并说明矩阵坐标与固件配置、源码之间的对应关系。读完本文你将掌握看懂一张 QMK 矩阵图并反推出 PCB 引脚与 layout 宏的完整方法。一、Matrix Diagram 在 QMK 中是什么在 QMK 固件仓库中大量键盘目录共 300 余个都附带一份名为matrix_diagram.md的文档例如 keyboards/alf/x2/matrix_diagram.md、keyboards/1upkeyboards/pi60/matrix_diagram.md 等。它是一份纯 ASCII 绘制的矩阵坐标图回答三个关键问题每个按键在矩阵中的物理坐标坐标写作两个十六进制字符如0D、3E其中第一个字符是行号row第二个字符是列号col每个矩阵位置可以装配哪些键帽尺寸同一坐标在不同装配方案下可能是 1u、1.5u、2.25u、6.25u 甚至 7u 宽不同配列ANSI / ISO / Tsangan / WKL复用哪些矩阵位置PCB 通过跳线或二极管方向复用矩阵位置一个坐标可为多种配列服务。矩阵图是连接物理走线与固件布局宏LAYOUT_xxx的桥梁keyboard.json里的layouts定义每个键帽的matrix坐标而矩阵图正是这些坐标的图形化呈现。二、ALF X2 矩阵总览5 行 × 15 列ALF X2 是一把可自定义配列的 60% 键盘详见 readme.md。其矩阵为5 行 × 15 列行号0–4列号0–E十六进制即十进制 0–14。矩阵图原文如下┌───┬───┐ │44 │48 │ └───┴───┘ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0E │ 2u Backspace ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ │10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐ │ ISO Enter │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │ │ │ ├───┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ ┌─┴───┴────┤ ┌──────┬───┐ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ │3D │ 2.75u RShift │3D │3E │ 1.75u/1u RShift ├───┴┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ └──────────┘ └──────┴───┘ │40 │41 │43 │46 │4A │4B │4C │4D │4E │ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ ┌────────┐ │30 │ 2.25u LShift └────────┘ ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ │40 │41 │43 │46 │4A │4B │4D │4E │ Standard └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ │40 │41 │43 │46 │4B │4D │4E │ Tsangan/WKL └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘读图要点坐标命名规则XY中X为行、Y为列均用十六进制书写。例如0D 第 0 行第 13 列4E 第 4 行第 14 列顶部两个独立键44row 4, col 4与48row 4, col 8悬于键盘顶部对应 X2 的两个音量键。在 keyboard.json 中可找到这两个坐标{label: Volume Up, matrix: [4, 4], x: 1.5, y: 0}与{label: Volume Down, matrix: [4, 8], x: 2.5, y: 0}行内缺号第二行缺11Tab 占 1.5u见10与12之间的合并线、第三行缺21Caps Lock 占 1.75u。这是大键帽吞并相邻矩阵位置的直接体现。三、逐行解读矩阵坐标第 0 行数字行与顶部功能键00–0E共 15 个位置对应Esc、1–0、-、、\可选与Backspace。注意0D与0E的可变性1u 分离式 Backspace0D、0E各为 1u 键2u Backspace0D空缺0E位置横跨两键宽度图中右上标注│0E │ 2u Backspace。第 1 行Qwerty 第二行与 ISO Enter10Tab1.5u、12–1E对应Q–]与\。右侧注释给出了ISO Enter 变体当装配 ISO 回车时第二行右端的1Drow 1, col 13被用于 ISO Enter 键其键帽呈 L 形跨越多行图中┌──┴┐轮廓。此时\键的位置需要相应调整。第 2 行Caps Lock 行与 ANSI 回车20Caps Lock1.75u、22–2D对应A–2Drow 2, col 13为 ANSI 回车键位置。在 keyboard.json 的LAYOUT_ansi中可见{label: Enter, matrix: [2, 13], x: 12.75, y: 3, w: 2.25}即2D位装配 2.25u 回车宽度占满从[到右端的位置。第 3 行Shift 行30–3E对应Shift、Z–/与右侧 Shift。这一行承载了三组重要变体2.25u 左 Shift图中单独标注│30 │ 2.25u LShift即30row 3, col 0位置装配 2.25u 键帽此时31row 3, col 1不存在2.75u 右 Shift3Drow 3, col 13一个位置横跨3E位置被覆盖对应 keyboard.json 中LAYOUT_ansi的{label: Shift, matrix: [3, 13], x: 12.25, y: 4, w: 2.75}1.75u / 1u 右 Shift3D装配 1.75u Shift3E为独立的 1u 键对应LAYOUT_ansi_split_bs_rshift中的w: 1.75右 Shift 与matrix: [3, 14]的 1u 键。第 4 行底部行40、41、43、46、4A、4B、4C、4D、4E对应Ctrl、GUI、Alt、Space及右侧修饰键区。注意42、44、45、47–49缺失因为它们被加宽的修饰键与空格键覆盖44与48虽在本行坐标上但物理上位于键盘顶部即两个音量键。四、底部行装配Standard 与 Tsangan/WKL矩阵图底部给出了两种底部行装配的坐标组合装配方案坐标序列空格键宽度Standard404143464A4B4D4E6.25u46横跨Tsangan/WKL404143464B4D4E7u46横跨吞并4A、4C对比可见Standard保留4A右侧 Alt 位置与4C右侧 Win/空白位置对应默认键位中KC_RALT、MO(1)、KC_APP、KC_RCTL四个右侧键Tsangan/WKL省略4A与4C7u 空格将底部行压缩为 6 个键是 WKL/Tsangan 风格的典型装配。从仓库现状看keyboard.json 中定义的三个 layout 宏LAYOUT_all、LAYOUT_ansi、LAYOUT_ansi_split_bs_rshift底部行均采用 6.25u 空格Space的matrix: [4, 6]、w: 6.25未单独提供 7u 空格的 layout 宏矩阵图则表明 PCB 本身支持 Tsangan/WKL 装配需要用户自行扩展布局宏方可使用。五、矩阵坐标与 keyboard.json 的引脚对应矩阵图描述的 5×15 矩阵在 keyboard.json 中有完整的引脚定义matrix_pins: { cols: [F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4], rows: [D0, D1, D2, D3, D5] }, diode_direction: COL2ROWcols数组共 15 个引脚索引 0–14 依次对应矩阵图的列0–EF0→列 0F1→列 1E6→列 2……F4→列 14rows数组共 5 个引脚索引 0–4 对应矩阵图的行0–4D0→行 0D1→行 1D2→行 2D3→行 3D5→行 4diode_direction: COL2ROW表示二极管从列驱动侧指向行读入侧即列输出、行输入的标准扫描方向。以坐标3D为例该键由行D3row 3与列D6cols 数组索引 13即列D交叉处的二极管确定。这意味着矩阵图中任意一个坐标都可以直接换算成一对具体的 MCU 引脚——这是排查某个键失灵时最常用的对应表。六、从矩阵图到 keymap 的实战映射矩阵图的价值最终体现在键位代码里。以默认键位 keymaps/default/keymap.c 为例它使用LAYOUT_all宏参数顺序与 keyboard.json 的LAYOUT_all布局数组一一对应[0] LAYOUT_all( KC_VOLU, KC_VOLD, 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, XXXXXXX, 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_ENT, KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), XXXXXXX, KC_APP, KC_RCTL ),与矩阵图逐格对照0D与0E0D填XXXXXXX即 1u Backspace 变体0E填KC_BSPC若改用 2u BackspaceLAYOUT_ansi则0D位置从宏参数中消失Backspace 由0E单独承担见LAYOUT_ansi中Backspace, matrix: [0, 14], w: 23D与3E3D填KC_RSFT3E填XXXXXXX对应 1.75u 1u 的右 Shift 拆分变体LAYOUT_all覆盖了图中标注的1.75u/1u RShift组合31、3C、4C等被吞并的位置一律用XXXXXXX占位确保宏参数数量与布局数组严格一致两个音量键44、48位于宏参数首行的KC_VOLU、KC_VOLD并在第 1 层MO(1)层中由 keymaps/default/keymap.c 替换为KC_MNXT、KC_MPRV。另一份键位 keymaps/hhkb_60/keymap.c 则改用LAYOUT_ansi_split_bs_rshift0D位置变成独立的KC_BSLS、0E为KC_GRV分体 Backspace 配列右 Shift 拆为KC_RSFT1.75u与MO(1)1uCaps Lock 位置20被替换为KC_LCTL呈现经典的 HHKB 风格。七、用矩阵图排查硬件与固件问题矩阵图也是硬件调试与固件移植的第一手工具实操时可按三步走定位失灵按键某个键无响应时先在矩阵图中找到其坐标如3B对应的B键再到 keyboard.json 的matrix_pins中查出对应的行引脚D3与列引脚B4用万用表或短接测试该交叉点即可区分是走线/二极管故障还是固件映射问题核对键位参数顺序当keymap.c编译报宏参数数量不匹配时对照矩阵图与 keyboard.json 的 layout 数组按矩阵坐标从左上到右下逐格核对每个键帽的位置与宽度w值XXXXXXX占位位置必须与被覆盖的矩阵坐标严格对应验证配列变更想在 2u Backspace 与 1u Backspace、ANSI 回车与 ISO 回车、Standard 与 Tsangan 底部行之间切换时先看矩阵图确认该变体是否由现有坐标支持再选择对应的LAYOUT_*宏避免定义出不存在的坐标组合。八、总结ALF X2 的 matrix_diagram.md 以一张 ASCII 图完整刻画了这块 60% PCB 的矩阵拓扑5 行 × 15 列、两个顶部音量键以及 2u Backspace、ISO Enter、2.25u/2.75u/1.75u Shift、Standard 与 Tsangan/WKL 底部行等多套装配变体。它与 keyboard.json 的引脚表F0–F4列、D0–D5行、COL2ROW二极管方向和三个LAYOUT_*宏互为印证又与 keymaps/default/keymap.c、keymaps/hhkb_60/keymap.c 逐格对应。读懂这张图你就掌握了从物理走线到固件键位的完整解码能力无论是调参、修键还是为新配列扩展布局宏都能快速定位到正确的坐标与引脚。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表