ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QMK nein 九键宏键盘(40percentclub/nein)完全指南:硬件、矩阵与固件配置实战

QMK nein 九键宏键盘(40percentclub/nein)完全指南:硬件、矩阵与固件配置实战 QMK nein 九键宏键盘40percentclub/nein完全指南硬件、矩阵与固件配置实战【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware导读nein 是 40% Keyboards 社区di0ib发布的一款 3×3 正交布局Ortholinear9 键宏键盘Macropad在 QMK 固件仓库中以keyboards/40percentclub/nein/目录完整收录。本文以该键盘的 readme.md 为骨架结合 keyboard.json 数据驱动配置与 default 键位源码系统讲解 nein 的硬件特性、PCB 引脚矩阵映射、编译烧录流程、默认键位功能并深入数据驱动配置Data-Driven Configuration的底层原理帮助你从零开始构建、自定义并烧录属于自己的 nein 固件。1. nein 键盘概览9 键也能高效工作nein 是一款结构极其简洁的 9 键宏键盘3 行 × 3 列的正交阵列整体尺寸与布局非常适合作为媒体控制、导航或自定义宏触发面板。其核心硬件特性如下按键规模9 颗按键采用正交 3×3 布局主控方案以 Pro Micro 为核心兼容各种尺寸/引脚定义的 Pro Micro 变体官方文档原文表述为“can fit any of the various different sized variations of Pro Micro”PCB 项目归属nein PCB 由 40% Keyboards 社区设计原始项目主页为 nein project on 40% Keyboards固件维护键盘维护人为 QMK Community硬件支持对象为 nein PCB矩阵方案无需行列扫描二极管网络的直接引脚矩阵Direct Pin Matrix9 颗按键各自独占一个 GPIO见 keyboard.json 中的matrix_pins.direct定义。在 QMK 仓库中nein 归属于keyboards/40percentclub/40% Keyboards目录该目录下还收录了 gherkin、nori、ut47、4pack、4x4、5x5 等众多 40% 社区键盘见 40percentclub 目录说明。nein 的完整键盘定义只包含 3 个文件keyboard.json—— 数据驱动配置硬件、USB、布局、特性开关keymaps/default/keymap.c—— 默认键位映射readme.md—— 键盘使用与编译说明。这正是当前 QMK 新版“数据驱动配置”架构的典型形态硬件定义全部收敛进 JSONC 代码只需保留键位逻辑。2. 硬件与矩阵原理Direct Pin Matrix 怎么接线2.1 直接引脚矩阵结构传统键盘通常采用“行-列扫描”矩阵以节省引脚但 nein 只有 9 个键因此直接为每个按键分配一个独立引脚。从 keyboard.json 可以清楚看到映射关系matrix_pins: { direct: [ [F4, F5, F6], [F7, B1, B3], [B2, B6, B5] ] }这 9 个引脚按照“外层数组行、内层数组列”的二维结构组织与LAYOUT_ortho_3x3布局中的matrix坐标一一对应矩阵坐标 (row, col)GPIO 引脚(0,0)F4(0,1)F5(0,2)F6(1,0)F7(1,1)B1(1,2)B3(2,0)B2(2,1)B6(2,2)B5工作原理在直接矩阵模式下每个按键的一端接对应 GPIO并通常通过内部上拉电阻拉高另一端接地。当按键按下时该引脚电平被拉低QMK 的矩阵扫描代码直接读取对应引脚状态即可判定按键事件无需逐行逐列扫描。这种方案的优势是扫描逻辑简单、支持任意按键组合无冲突NKRO 天然友好代价是引脚占用随按键数量线性增长——对 9 键的 nein 而言完全可行。2.2 Pro Micro 兼容性说明nein 的development_board字段声明为promicrokeyboard.json该字段在 keyboard.jsonschema 中有明确的枚举约束可选值包括promicro、elite_c、proton_c、kb2040、promicro_rp2040、blackpill_f401、blackpill_f411等主流主控。开发者无需为每个 Pro Micro 变体单独编写完整的开发板配置——QMK 在 defaults.hjson 中为promicro提供了默认的引脚映射、pin_compatible: promicro兼容声明等预设值键盘配置继承这些默认值即可。这也是 nein 的 readme 强调“可以适配各种不同尺寸 Pro Micro 变体”的技术基础。此外QMK 还提供 Pro Micro 的替代主控转换机制CONVERT_TO例如 promicro_to_promicro_rp2040 转换定义 显示CONVERT_TOpromicro_rp2040已弃用当前应按硬件实际类型改用CONVERT_TOsparkfun_pm2040或CONVERT_TOrp2040_ce。这类转换器可让你把原本基于 AVR Pro Micro 的键盘固件直接编译到 Arm 主控上进一步印证了“兼容多种 Pro Micro 变体”的可行性。3. 数据驱动配置详解keyboard.json 逐项解析nein 没有传统意义上的config.h/rules.mk新架构下硬件配置已迁移至 JSON完整配置如下{ keyboard_name: The nein Keyboard, manufacturer: di0ib, url: http://www.40percent.club/2019/04/nein.html, maintainer: qmk, usb: { vid: 0x4025, pid: 0x9999, device_version: 99.9.9 }, development_board: promicro, features: { bootmagic: true, extrakey: true, mousekey: true, nkro: true }, qmk: { locking: { enabled: true, resync: true } }, matrix_pins: { direct: [ [F4, F5, F6], [F7, B1, B3], [B2, B6, B5] ] }, layouts: { LAYOUT_ortho_3x3: { layout: [ {x: 0, y: 0, matrix: [0, 0]}, {x: 1, y: 0, matrix: [0, 1]}, {x: 2, y: 0, matrix: [0, 2]}, {x: 0, y: 1, matrix: [1, 0]}, {x: 1, y: 1, matrix: [1, 1]}, {x: 2, y: 1, matrix: [1, 2]}, {x: 0, y: 2, matrix: [2, 0]}, {x: 1, y: 2, matrix: [2, 1]}, {x: 2, y: 2, matrix: [2, 2]} ] } } }各字段含义与影响如下keyboard_name/manufacturer/url/maintainer键盘显示名称、制造商di0ib、项目主页与维护者标识编译和 USB 枚举时会使用到这些元数据usbVID 为0x4025、PID 为0x9999、设备版本99.9.9。注意这是一组示意的自定义标识若与他人键盘冲突可自行修改development_board声明采用 Pro Micro 开发板编译器据此自动继承对应的引脚布局与启动配置features编译期功能开关——bootmagic: true启用 Bootmagic按住指定键上电即可进入刷写模式等快捷操作extrakey: true启用多媒体/系统按键支持nein 默认键位中的KC_MUTE、KC_MPLY、KC_STOP、KC_MPRV、KC_MNXT都依赖它mousekey: true启用鼠标按键支持nkro: true启用 N-Key Rollover全键无冲突让 9 键同时按下也能被准确识别qmk.locking启用按键锁定Locking支持并将resync置真用于配合QK_LOCK类键码的锁定/解除同步行为matrix_pins.direct直接矩阵引脚映射见上一节layouts.LAYOUT_ortho_3x3定义 9 键的物理布局每个条目用x/y坐标描述按键在键盘上的位置用matrix: [行, 列]关联到具体矩阵坐标。这是 QMK 可视化布局与键位 C 代码之间的桥梁。4. 默认键位映射媒体控制 方向导航nein 的默认键位保存在 keymaps/default/keymap.c核心代码如下#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] { [0] LAYOUT_ortho_3x3( KC_MUTE, KC_HOME, KC_MPLY, MO(1), KC_UP, KC_END, KC_LEFT, KC_DOWN, KC_RGHT ), [1] LAYOUT_ortho_3x3( QK_BOOT, _______, KC_STOP, _______, _______, _______, KC_MPRV, _______, KC_MNXT ), };4.1 Layer 0默认层媒体 光标位置键码功能(0,0)KC_MUTE静音/取消静音(0,1)KC_HOMEHome(0,2)KC_MPLY播放/暂停(1,0)MO(1)按住切换到 Layer 1(1,1)KC_UP上方向键(1,2)KC_ENDEnd(2,0)KC_LEFT左方向键(2,1)KC_DOWN下方向键(2,2)KC_RGHT右方向键这一层把 9 键设计为“媒体控制 光标导航”面板最上排是静音/播放等媒体键下两排是完整的方向键与 Home/End 跳转键非常适合影音播放或文档编辑场景。4.2 Layer 1按住 MO(1) 进入刷写入口 媒体扩展位置键码功能(0,0)QK_BOOT进入 BootloaderDFU/Caterina 刷写模式(0,2)KC_STOP停止播放(2,0)KC_MPRV上一曲(2,2)KC_MNXT下一曲Layer 1 通过 Layer 0 中央的MO(1)临时层切换触发按住生效松开恢复。值得关注的是QK_BOOT它被放在 Layer 1 的 (0,0) 位置即左上角第一个键与bootmagic功能叠加后你可以通过“按住QK_BOOT所在键或按 Bootmagic 约定上电/复位”快速进入刷写模式为后续固件更新提供了硬件级与固件级的双保险。_______透明键表示该位置沿用下层Layer 0的键码未显式定义的位置全部继承默认层行为。从源码结构可以推断default 键位刻意把媒体键分散到两层——Layer 0 承担高频操作播放/暂停、静音Layer 1 承担低频操作停止、上一曲、下一曲、进刷写模式体现“一层高频、一层低频”的分层设计思路。你也可以按照同样模式自由增删层、重排按键。5. 构建与烧录一条命令从源码到固件5.1 环境准备开始编译前需先配置好 QMK 构建环境。官方推荐流程详细步骤参见仓库内文档阅读 getting_started_introduction.md 了解 QMK 与固件构建的整体流程按照 getting_started_build_tools 指引对应仓库 Makefile 与 builddefs 目录的构建体系安装编译器、qmkCLI 等工具若你是 QMK 新手可跟随 newbs.md 完整入门教程逐步操作。5.2 编译 default 键位在构建环境就绪后进入仓库根目录执行make 40percentclub/nein:default该命令会解析keyboards/40percentclub/nein/keyboard.json中的硬件配置编译keymaps/default/keymap.c的键位逻辑链接生成可直接烧录的.hexAVR Pro Micro固件文件。编译产物默认输出在build/目录下。若你希望自定义键位可先复制 default 目录新建一个键位目录例如keymaps/mykeymap/修改其中的keymap.c后执行make 40percentclub/nein:mykeymap即可。5.3 刷写固件Pro Micro 使用 Caterina bootloader常见烧录方式有两种使用 QMK Toolbox进入刷写模式通过QK_BOOT键或 Bootmagic后用图形化工具选择对应.hex文件点击 Flash使用命令行qmk flash -kb 40percentclub/nein -km default或先make 40percentclub/nein:default编译再配合avrdude/QMK CLI 烧录。更详细的刷写方法见 flashing.md 与 newbs_flashing.md。另外得益于第 2 节提到的CONVERT_TO机制若你手头只有 RP2040 等 Arm 主控也可以参考 feature_converters.md 中的转换说明将 nein 固件编译到替代主控上运行。6. 常见问题与扩展建议6.1 按键无响应或触发错误检查引脚映射确认焊接的 GPIO 与 keyboard.json 中matrix_pins.direct一致改线后必须同步修改 JSON 并重新编译检查 Pro Micro 型号不同变体的引脚命名如F4、B1这类 AVR 端口名可能不同Arm 主控还会使用GPx命名需按实际主控核对验证 Bootmagic若开启了bootmagic注意其默认触发的组合键位置避免误触导致键位被重置。6.2 想要更丰富的功能自定义宏QMK 支持在 keymap.c 中通过SEND_STRING等 API 编写字符串宏9 键也能变成效率神器组合键Combos参考 feature_combo.md为 3×3 面板定义双键/三键组合触发更多层在keymaps数组中继续追加[2]、[3]层并用MO()、TG()、LT()等层切换键码自由组织旋钮/编码器扩展若自行改造 PCB 增加旋转编码器QMK 的 encoders 驱动 已原生支持可在键位中绑定音量调节等功能。6.3 排查编译问题确保在 QMK 仓库根目录执行 make 命令且已正确初始化子模块检查keyboard.json是否符合 keyboard.jsonschema 约束如development_board的枚举值、usb字段格式JSON 语法错误会直接导致编译失败若固件过大参考 squeezing_avr.md 裁减不需要的 feature。7. 总结nein 是 40% 键盘生态中极具代表性的 9 键宏键盘硬件上以 Pro Micro 为核心、直接矩阵免去二极管网络软件上完整落地了 QMK 的数据驱动配置架构。通过 keyboard.json 可以读懂它的全部硬件定义USB 标识、特性开关、引脚矩阵、3×3 布局通过 default 键位 可以看到“媒体控制 方向导航 双层切换”的实用设计而一条make 40percentclub/nein:default即可完成从配置到固件的全流程构建。无论你是想直接上手使用还是把它当作学习 QMK 数据驱动配置与直接矩阵实现的迷你样板nein 都是一个理想的起点。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表