QMK 固件中的 Plexus75:基于 XD75 改良的正交 60% 键盘配置与编译实战指南
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
导读
Plexus75 是 QMK 官方仓库中收录的一款 60% 正交线性(ortholinear)键盘:它在 XD75 的全 1u 底排基础上改成了更接近常规 60% 键盘的传统底排布局,兼顾正交配列的整齐感与标准键帽的易用性。本文将围绕 Plexus75 官方 readme 展开,结合仓库内的 keyboard.json、三套官方键位映射(default / default_3u / default_7u)与底层源码,完整讲解该键盘的硬件规格、三种底排布局差异、数据驱动配置结构、三层功能键位设计以及从编译到刷写的完整流程。读完本文,你将能独立编译 Plexus75 固件、理解其矩阵与 RGB 配置,并学会如何在 QMK 数据驱动架构下按需定制键位。
Plexus75 是什么:规格与设计定位
Plexus75 是一块 60% 正交线性 PCB,由 Nasp(GitHub 用户名 npspears)设计并维护。与同样以正交著称的 XD75 相比,它的核心区别在于底排布局:XD75 的底排全部是 1u 键位,而 Plexus75 将底排重新设计为接近传统 60% 键盘的形态(包含增宽的空格、Alt/Win 等修饰键组合),让习惯了标准 60% 键盘的用户也能无痛切换到正交配列。
从 readme 中可确认的关键信息如下:
| 项目 | 内容 |
|---|---|
| 键盘名称 | Plexus75 |
| 键盘维护者(Maintainer) | Nasp(npspears) |
| 硬件支持 | Plexus75 PCB |
| 布局类别 | 60% 正交线性(ortholinear),基于 XD75 改良 |
在 keyboard.json 中,制造商字段同样登记为"manufacturer": "Nasp",维护者为"maintainer": "npspears",与 readme 一致。USB 描述符信息为 VID0x7070、PID0x5338、设备版本0.0.1,这些数值在刷写固件后的系统识别中会直接体现。
数据驱动配置:从 keyboard.json 读懂整块板子
Plexus75 采用了 QMK 主流的数据驱动(data-driven)配置方式,硬件定义全部集中在 keyboard.json 中,无需额外的config.h与rules.mk(该目录下确实没有这两个传统文件,仅有 keyboard.json、readme.md 与 keymaps 子目录)。
主控、引导加载器与矩阵
"processor": "atmega32u4", "bootloader": "atmel-dfu", "matrix_pins": { "cols": ["B2", "B0", "D1", "F7", "F6", "F5", "F4", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7"], "rows": ["D2", "B3", "B1", "F1", "F0"] }, "diode_direction": "COL2ROW"- 主控芯片为 Atmel ATmega32U4,这是 QMK 生态中最常见、资料最丰富的 AVR 主控之一;
- 引导加载器为
atmel-dfu(即 Atmel 官方的 FLIP/DFU 方案),对应刷写工具与按键进入 DFU 的方式需要按此匹配; - 矩阵规模为 5 行 × 15 列,正好对应 75 键的命名(Plexus75 共 75 个按键位);
- 二极管方向为COL2ROW(列到行),这是扫描矩阵时确定行列上拉/下拉方向的关键参数,若与 PCB 实际走线不符,整块键盘的扫描将完全错乱。
功能特性开关
"features": { "bootmagic": true, "command": true, "extrakey": true, "mousekey": false, "nkro": true, "rgblight": true, "unicode": true }, "qmk": { "locking": { "enabled": true, "resync": true } }bootmagic:支持 Bootmagic,可在开机时通过按住指定键进入刷写模式或调整配置;command:启用 QMK 内置的 Command 调试功能;extrakey:启用媒体/系统按键支持(音量、播放控制等),这也是默认键位中KC_MUTE、KC_VOLD、KC_VOLU可用的前提;nkro:开启 N 键无冲突(NKRO),适合对多键同时输入敏感的场景;rgblight:启用 RGB 背光功能;unicode:启用 Unicode 输入支持;qmk.locking:启用并启用重同步(resync)的按键锁定功能(Caps Lock 等 Locking 键在状态丢失时自动重新同步)。
板载 RGB:WS2812 灯带与 14 颗 LED
"rgblight": { "hue_steps": 12, "saturation_steps": 25, "brightness_steps": 12, "led_count": 14, "animations": { "breathing": true, "rainbow_mood": true, "rainbow_swirl": true, "snake": true, "knight": true, "christmas": true, "static_gradient": true, "rgb_test": true, "alternating": true, "twinkle": true } }, "ws2812": { "pin": "D3" }- 灯带通过 WS2812 协议挂在D3引脚上,共14 颗 LED;
- 默认启用了 10 种官方动画(呼吸、彩虹情绪、彩虹旋转、贪吃蛇、骑士、圣诞、静态渐变、RGB 测试、交替、闪烁),色彩调节的步进精度分别为色相 12 档、饱和度 25 档、亮度 12 档;
- 这些配置直接决定了默认键位中
UG_TOGG、UG_HUEU、UG_HUED、UG_SATU、UG_SATD等 RGB 控制键的行为。
三种底排布局:2x2u、2x3u 与 7u 空格
Plexus75 最大的特色在于官方提供了三种底排物理布局,对应 keyboard.json 中的三个 layout 宏,也对应仓库中的三套官方键位:
| 布局宏 | 空格键 | 代表键位文件 |
|---|---|---|
LAYOUT_2x2u | 两颗 2u 空格 + 中央 1u | keymaps/default/keymap.c |
LAYOUT_2x3u | 一颗 3u 空格 + 左右 2u | keymaps/default_3u/keymap.c |
LAYOUT_7u | 一颗 7u 大空格 | keymaps/default_7u/keymap.c |
从 keyboard.json 的 layout 定义可以精确读出各布局的底排结构:
- LAYOUT_2x2u 底排:
1.5u 1u 1.5u 1u 2u 1u 2u 1u 1.5u 1u 1.5u,即两颗 2u 空格夹在中央,两侧是对称的 1.5u 键; - LAYOUT_2x3u 底排:
1.5u 1u 1.5u 3u 1u 3u 1.5u 1u 1.5u,中央为两颗 3u 空格,中间夹一个 1u 键; - LAYOUT_7u 底排:
1.5u 1u 1.5u 7u 1.5u 1u 1.5u,中央是一颗 7u 大空格,接近标准 60% 键盘的底排观感。
值得注意的是,三种布局的前四行完全一致(15 键 × 4 行 = 60 键),差异仅体现在底排的键位宽度与数量上;并且这三种布局共用同一套 5×15 矩阵,物理键位在矩阵中的坐标一一对应,只是底排部分键位被合并为宽键(体现在"w"字段)。这正是 readme 所述“更接近常规 60% 底排”的物理实现。
官方键位设计详解
默认键位(default,LAYOUT_2x2u)
default/keymap.c 定义了三个层:_BASE、_FN、_FN1,并通过TT()(Tap-Toggle)键在层之间切换。
第一层(Base)设计亮点:
- 字母区中央嵌入了小键盘数字:右手区的
7 8 9 / 4 5 6 / 1 2 3位置分别映射为KC_P7..KC_P9、KC_P4..KC_P6、KC_P1..KC_P3,方便单手输入数字; CTL_T(KC_ESC):Esc 与 Ctrl 的按键组合(按住为 Ctrl、点按为 Esc),是 QMK Mod-Tap 特性的典型应用;- 顶部数字键上方第 1 键为
KC_EQL,第 6/7 键为KC_LBRC/KC_RBRC,整体接近 60% 键盘 + 额外符号列的排布; - 底排中央为
TT(_FN)与TT(_FN1)两个层切换键,双空格设计便于拇指分别触发不同层。
第二层(FN):提供F1~F13、Delete、Menu、Print Screen、QK_BOOT(刷写模式)、KC_MUTE/KC_VOLD/KC_VOLU(媒体音量)等。QK_BOOT被放在多个位置(包括底排),方便在不拆键盘的情况下快速进入 DFU 刷写模式。
第三层(FN1):集中了 RGB 控制键UG_TOGG/UG_HUEU/UG_HUED/UG_SATU/UG_SATD以及符号输入键(KC_TILD、KC_EXLM、KC_AT、KC_HASH、KC_DLR、KC_PERC、KC_CIRC、KC_AMPR、KC_ASTR、KC_LPRN、KC_RPRN等)。
在 default/config.h 中还有一处关键定义:
#define TAPPING_TOGGLE 2它将TT()键的“点按切换”触发次数设为 2——即连点两次才切换层,避免单次误触导致层意外锁定,这是使用TT()键时重要的手感调优参数。
三颗 3u 空格(default_3u)
default_3u/keymap.c 与默认键位内容基本一致,同样包含三层结构与CTL_T(KC_ESC)、数字键盘嵌入等设计,差异在于使用LAYOUT_2x3u宏,底排改为TT(_FN)、TT(_FN1)与一颗 3u 空格并排,适合喜欢在双空格之外再保留一颗中央 3u 空格的用户。
7u 大空格(default_7u)
default_7u/keymap.c 面向最接近传统 60% 键盘的底排(7u 空格)。该键位只定义了两层(_BASE与_FN),底排为LCTRL、LGUI、LALT、SPACE(7u)、RALT、MO(_FN)、MENU,将层切换改为按住式MO(_FN)而非TT()。这体现了同一块 PCB 在不同底排配键下的灵活适配能力。
编译与刷写:完整实操流程
环境准备
Plexus75 属于 AVR 键盘(ATmega32U4),编译前需要按 QMK 官方指南完成构建环境搭建:
- 构建环境搭建说明见 getting_started_build_tools.md;
- 编译命令详解见 getting_started_make_guide.md;
- 全新上手建议先阅读 newbs.md(Complete Newbs Guide);
- 刷写步骤可参考 flashing.md(适用于 atmel-dfu 引导加载器)。
编译命令
readme 给出的标准编译命令为:
make checkerboards/plexus75:default其通用形式是:
make <键盘路径>:<键位名>其中键盘路径为checkerboards/plexus75,键位名可选:
| 键位名 | 对应目录 |
|---|---|
default | keymaps/default |
default_3u | keymaps/default_3u |
default_7u | keymaps/default_7u |
例如编译 7u 大空格版本:
make checkerboards/plexus75:default_7u编译产物即为atmega32u4对应的.hex固件文件。
刷写方式
由于引导加载器为atmel-dfu,可采用如下方式之一:
# 编译并直接刷写(需键盘已进入 DFU 模式) make checkerboards/plexus75:default:flash进入 DFU 模式的方法包括:使用 Bootmagic(按住指定键插入 USB)、或触发键位中定义的QK_BOOT(默认键位在 FN/FN1 层与底排均放置了QK_BOOT,刷写非常方便)。刷写工具方面,QMK 官方支持dfu-programmer等烧录工具,详细说明见 flashing.md 与 driver_installation_zadig.md(Windows 下驱动安装)。
定制你自己的 Plexus75 键位
从仓库结构可以推断,Plexus75 的定制方式与 QMK 标准流程一致:
- 复制一份官方键位目录,例如将 keymaps/default 复制为
keymaps/mykeymap; - 在
keymap.c中按LAYOUT_2x2u(或你实际 PCB 使用的 2x3u / 7u 布局宏)重排键位; - 可选地在键位目录中添加
config.h做键位级配置(如 default/config.h 中的TAPPING_TOGGLE); - 编译并刷写:
make checkerboards/plexus75:mykeymap:flash需要说明的是:本仓库为只读,上述定制流程应在你自己 fork 或克隆的副本中进行。若需本地使用,可执行:
git clone https://gitcode.com/GitHub_Trending/qm/qmk_firmware小结
Plexus75 是理解“正交配列 + 传统底排”设计思路的优秀范例。通过本文,你应该已经掌握了:
- 它的硬件规格(ATmega32U4、5×15 矩阵、COL2ROW、14 颗 WS2812 RGB);
- 三种底排布局(2x2u / 2x3u / 7u)的物理结构与对应宏定义;
- 官方三层键位的功能组织(数字键盘嵌入、Mod-Tap、TT 层切换、RGB 控制、QK_BOOT);
- 从
make checkerboards/plexus75:default到刷写 DFU 的完整流程,以及按需定制键位的标准方法。
如果你想深入源码验证上述机制,建议继续阅读 keyboard.json 的完整布局定义、三份官方 keymap.c,以及 QMK 核心文档中关于 数据驱动配置、键位编写 与 层切换 的说明。
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考