QMK 固件 NOP60 键盘适配指南:Tsangan 配列、2x3u 空格与灯效配置全解析
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
NOP60 是 Checkerboards 推出的 60% 通用 PCB,采用 ATMega32U4 主控,支持 Tsangan 底排、2x3u(分裂空格)与 7u 空格两种配列,并集成背光与 RGB 底灯。本文以仓库内 NOP60 的 readme.md 为主体,结合 keyboard.json 与两套官方键映射,完整讲解硬件特性、配列定义、构建命令与键映射结构,帮助开发者快速上手刷写与二次开发。
一、NOP60 是什么:产品定位与核心特性
NOP60 是一块 60% 布局的通用 PCB(Universal PCB),由 Nasp(npspears)维护,硬件购买渠道为 checkerboards.xyz。根据官方 readme,其核心特性包括:
- 60% 标准外形:与常规 60% 键盘壳兼容;
- Tsangan 底排:底排两侧为 1.5u / 1u / 1.5u 修饰键布局(Ctrl / Win / Alt 两侧对称),这是区别于普通 Winkeyless 底排的关键;
- 2x3u 空格支持:可将空格拆分为两段 3u 键,适配分体空格用户;
- 背光(backlighting):板载 LED 背光;
- RGB 底灯(RGB underglow):通过 WS2812 灯带实现轴下 RGB 效果。
从仓库结构看,NOP60 采用 QMK 新式的>"processor": "atmega32u4", "bootloader": "atmel-dfu", "usb": { "vid": "0x7070", "pid": "0x1416", "device_version": "0.0.1" }
- 主控:Atmel ATmega32U4,5V/16MHz 经典 AVR 方案,QMK 对它的支持最成熟;
- Bootloader:atmel-dfu(即 Atmel FLIP DFU 协议),刷写时需在 8 秒内进入 DFU 模式(或使用
QK_BOOT/ Bootmagic 触发); - USB VID/PID:
0x7070:0x1416,系统识别设备及驱动安装时以此为准。
2.2 特性开关
"features": { "backlight": true, "bootmagic": true, "command": true, "extrakey": true, "mousekey": false, "nkro": false, "rgblight": true }默认启用背光(backlight)、Bootmagic(开机时按指定键进入刷写模式)、Command(隐藏命令层)、额外按键(extrakey,媒体键等)与 rgblight;默认关闭鼠标键与 NKRO。开发者可在此基础上按需裁剪以节省 AVR 宝贵的 flash/RAM。
2.3 矩阵扫描与二极管方向
"matrix_pins": { "cols": ["F6", "F5", "F4", "D0", "D7", "D3", "D4", "D5", "D6", "F7", "C7", "B4", "B6", "B5"], "rows": ["F0", "F1", "E6", "B7", "C6"] }, "diode_direction": "COL2ROW"- 矩阵为 5 行 × 14 列,共 70 个物理位置(实际按键约 61~66 个);
- 二极管方向为COL2ROW(列接二极管、行接按键,扫描时列输出、行输入),与矩阵定义配套,焊接二极管方向不可颠倒;
- 行/列引脚全部映射到 ATmega32U4 的可用 IO,未使用引脚则释放给背光、RGB 与 WS2812。
2.4 背光配置
"backlight": { "driver": "timer", "pin": "D1", "levels": 6, "breathing": true }- 驱动方式:
timer(软件定时器 PWM),由固件在 D1 引脚上模拟 PWM 调光; - 亮度级别:6 档(0~5),通过
BL_UP/BL_DOWN切换; - 呼吸效果:
breathing: true启用背光呼吸,可用BL_BRTG键切换。
2.5 RGB 底灯与 WS2812
"rgblight": { "hue_steps": 12, "saturation_steps": 12, "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": "D2" }- 灯珠数量:14 颗 WS2812 可寻址 RGB LED(
led_count: 14),由 D2 引脚驱动; - 步进值:色相/饱和度/亮度每步 12,按下
UG_HUEU/UG_SATU等键时的调节粒度; - 动画:一次启用 10 种官方动画(呼吸、彩虹情绪、彩虹旋转、蛇形、骑士、圣诞、静态渐变、RGB 测试、交替、闪烁),均通过
UG_TOGG开合、UG_NEXT切换模式、UG_HUEU/D、UG_SATU/D、UG_VALU/D调节。
2.6 键位锁定与重同步
"qmk": { "locking": { "enabled": true, "resync": true } }启用 QMK Locking(Caps Lock 等锁定键的物理保持状态支持)并开启 resync,保证锁定状态与主机侧一致,避免 AVR 上常见的锁定状态漂移。
三、配列体系:一套 PCB,两种主流布局
NOP60 的通用性体现在 keyboard.json 中定义了两种物理配列(layout),并通过layout_aliases提供三种写法:
"layout_aliases": { "LAYOUT_2x3u": "LAYOUT_60_ansi_tsangan_split_bs_rshift_split_space", "LAYOUT_7u": "LAYOUT_60_ansi_tsangan_split_bs_rshift", "LAYOUT_60_tsangan_hhkb_split_space": "LAYOUT_60_ansi_tsangan_split_bs_rshift_split_space" }3.1 LAYOUT_60_ansi_tsangan_split_bs_rshift_split_space(2x3u 分裂空格)
- 顶排 15 键:14 个 1u + 右上角 1u(Delete 位),支持分裂 Backspace;
- 底排为 1.5u / 1u / 1.5u /3u/ 1u /3u/ 1.5u / 1u / 1.5u,即两段 3u 空格;
- 右 Shift 为分裂位(1.75u + 1u);
- 该布局也兼容 HHKB 分裂空格形态(见别名
LAYOUT_60_tsangan_hhkb_split_space)。
以矩阵坐标看,分裂空格的三个中央物理位置在矩阵中分别落在[4,4]、[4,6]、[4,8](见 keyboard.json 中matrix: [4, 4]、[4, 6]、[4, 8]的条目),即两个 3u 键之间还保留一个 1u 物理位,可用于额外按键或留空。
3.2 LAYOUT_60_ansi_tsangan_split_bs_rshift(7u 空格)
- 与 2x3u 版本仅在底排不同:7 个标准键位替换为1.5u / 1u / 1.5u / 7u / 1.5u / 1u / 1.5u的完整 7u 空格(
matrix: [4, 6]且"w": 7); - 顶排与右 Shift 分裂保持不变,两套配列共用同一矩阵,仅物理占位不同。
这种"同一矩阵、两种底排"的设计,正是"通用 PCB"的精髓:换配列只需换定位板与键帽,固件侧切换 layout 宏即可。
四、官方键映射:default 与 7u 两种方案
仓库提供两套可编译的键映射,均位于 keyboards/checkerboards/nop60/keymaps 下。
4.1 default:2x3u 分裂空格 + 三层键位
keymaps/default/keymap.c 使用LAYOUT_60_ansi_tsangan_split_bs_rshift_split_space,包含 3 层:
- 层 0(默认 QWERTY):标准字母区;
QK_GESC实现 Esc/反引号二合一;右下角以KC_SPC作为 FN 触发(见第 39 行KC_RSFT, KC_SPC),空格键中央放置BL_TOGG(背光开关),两侧为两段空格; - 层 1 / 层 2(F 区与功能层):数字行变为
~+ F1~F12 + Del;字母区控制 RGB 与背光:UG_TOGG/UG_NEXT:RGB 底灯开关与模式切换;BL_BRTG/BL_UP/BL_DOWN/BL_TOGG:背光呼吸、升档、降档、开关;- 方向键集中在 WASD 位(
KC_UP/KC_LEFT/KC_DOWN/KC_RGHT); QK_BOOT位于底排右端,随时一键进入 DFU 刷写。
keymaps/default/config.h 额外定义了:
#define TAPPING_TERM 175 #define TAPPING_TOGGLE 2即 tap 判定窗口 175ms,双击(2 次)触发 toggle 类键(如TT()),对中等输入速度友好。
4.2 7u:7u 空格 + Mod-Tap 实践
keymaps/7u/keymap.c 使用LAYOUT_60_ansi_tsangan_split_bs_rshift,亮点在于:
#define RS_SLS RSFT_T(KC_SLSH)将右 Shift 与/键做 Mod-Tap 组合(长按为 Shift、短按为/);FN 位使用TT(1)(TAPPING_TOGGLE定义于 default 的 config.h,7u 同样继承 TAPPING_TERM),单击切层、双击锁定。对应 keymaps/7u/config.h 中增加了:
#define PERMISSIVE_HOLD #define MOD_TAP_INTERUPTPERMISSIVE_HOLD:按下修饰键后立刻按其他键即触发修饰,减少误触延迟;MOD_TAP_INTERUPT(原文拼写为 INTERUPT):Mod-Tap 键被其他键打断时立即结束 tap 判定,配合RSFT_T(KC_SLSH)让"/"输入更跟手。
五、构建与刷写:从零开始编译 NOP60 固件
readme 给出的构建命令如下:
make checkerboards/nop60:default5.1 环境准备与命令拆解
- 搭建 QMK 构建环境:参考仓库内 getting_started_introduction.md 与 newbs_getting_started.md(Windows/macOS/Linux 均支持),核心是安装 QMK CLI 与工具链;
- 编译 default 键映射:
make checkerboards/nop60:default,产物为checkerboards_nop60_default.hex; - 编译 7u 键映射:
make checkerboards/nop60:7u; - 刷写:进入 DFU(Bootmagic 或
QK_BOOT),执行make checkerboards/nop60:default:flash。AVR 平台可追加:dfu指定 bootloader 目标。
5.2 配列选择建议
- 手头是7u 空格定位板 → 编译
checkerboards/nop60:7u; - 手头是2x3u 分裂空格定位板 → 编译
checkerboards/nop60:default; - 在键映射中混用布局时,务必与物理定位板一致,否则会出现"键位错位、按 A 出 B"的矩阵映射错误。
六、在 QMK 仓库中的定位与延伸
- NOP60 归属于 keyboards/checkerboards 厂商目录,与 axon40、quark、plexus75 等 Checkerboards 键盘并列;
- 顶排分裂 Backspace + 右 Shift 分裂的配列在 QMK 中有官方社区布局模板 layouts/default/60_ansi_tsangan_split_bs_rshift,若要在其他 60% 键盘复用同一套键位,可参考该模板的 keymap.c;
- 若要了解构建流程细节,可查阅 getting_started_make_guide.md;若需自定义灯效,rgb 相关的键码说明见 feature_rgblight.md,背光见 feature_backlight.md(仓库 docs/features 下)。
七、常见问题速查
| 现象 | 排查方向 |
|---|---|
| 键盘无法识别 | 核对 USB VID/PID0x7070:0x1416,重新安装驱动(AVR DFU 需 Zadig) |
| 键位错乱 | 确认键映射使用的 LAYOUT 宏与定位板配列(2x3u / 7u)一致 |
| 背光不亮 | 确认backlight特性开启、D1 引脚焊接正常、BL_TOGG已打开 |
| RGB 底灯不亮 | 检查 WS2812 接线(D2)、led_count=14是否与实际灯珠数一致、UG_TOGG状态 |
| 刷不进固件 | 通过 Bootmagic 或QK_BOOT进入 DFU 后,使用:flash或:dfu目标重试 |
八、小结
NOP60 是学习 QMK "一板多配列" 思路的典型案例:一套 ATmega32U4 硬件、一个 keyboard.json、两套 LAYOUT 宏,就同时覆盖 2x3u 分裂空格与 7u 空格两大流行 60% 底排方案。默认键映射开箱即用,7u 键映射则示范了 Mod-Tap 与PERMISSIVE_HOLD/MOD_TAP_INTERUPT的调参实践,适合作为 60% 自定义键盘入门与改键的参考蓝本。
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考