QMK Voyager60-Alps:面向 Alps 开关的 60% 开源键盘 PCB —— 硬件架构、数据驱动配置与固件构建指南
2026/9/16 15:12:57 网站建设 项目流程

QMK Voyager60-Alps:面向 Alps 开关的 60% 开源键盘 PCB —— 硬件架构、数据驱动配置与固件构建指南

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

Voyager60-Alps 是 ai03 维护的一款专为机械键盘 Alps 开关设计的 60% 规格开源 PCB,其固件完全基于 QMK 生态实现。本文以官方键盘文档 readme.md 为骨架,结合仓库中的 keyboard.json 数据驱动配置与 keymap.c 默认键位文件,系统讲解该键盘的硬件结构、JSON 配置字段含义、默认键位布局的读法,以及如何用一条make命令完成固件构建。读完后,你可以独立完成该键盘的固件编译、烧录,并理解其矩阵引脚分配与 RGB 底层照明的配置原理,为定制自己的键位方案打下基础。

键盘定位与官方特性

Voyager60-Alps 是一款"fully featured Alps-specific 60% PCB",即针对老式 14 脚 Alps 机械开关的专用 60% 布局电路板。官方 readme 中列出的核心特性如下:

  • RGB underglow:板底 RGB 打光,由键盘 PCB 上的 WS2812 灯带实现(配置上共 14 颗 LED,见下文);
  • Decent amount of layout compatibility:官方提供了一组受支持的键位布局(readme 中附有 KLE 布局清单的在线索引,便于核对键帽模板);
  • Slot cutout:PCB 上预留长条形开槽,提高配列自由度并改善打字手位;
  • Over-current and static discharge protection:硬件层面的过流与静电放电保护;
  • Fully open-source:从 PCB(Gerber 文件在维护者 ai03 的开源硬件仓库中发布)到固件全部开源。

readme 给出的附加信息包括:

  • Keyboard Maintainer: ai03(键盘作者与设计方,可参考 ai03 目录说明,该目录下收录了 ai03 的多款 PCB 定制键盘固件,如 altair、quasar、soyuz 等);
  • Hardware Supported: Voyager60-Alps PCB;
  • Hardware Availability: 硬件以 Gerber 图纸形式开放(readme 中提供了指向维护者仓库 alps 分支的链接)。

硬件架构:从 keyboard.json 看底层配置

QMK 的"数据驱动配置"(data-driven configuration)允许用 keyboard.json 一个文件描述整块键盘的硬件与功能开关,Voyager60-Alps 正是完全采用这种方式的键盘——它的目录下没有传统的rules.mkconfig.h,所有构建参数都由 JSON 提供。这些字段的官方语义可对照 reference_info_json.md 理解。

处理器与引导加载器

"processor": "atmega32u4", "bootloader": "atmel-dfu"

该键盘使用 ATmega32U4 单片机,搭载原生 USB 2.0 外设,配合atmel-dfu(DFU)引导加载器。这意味着烧录固件无需外部烧录器:通过 Bootmagic 按键组合进入 DFU 模式后,主机即可直接拖拽固件文件完成烧录。

USB 标识

"usb": { "vid": "0xA103", "pid": "0x060A", "device_version": "0.0.1" }

厂商 ID 为0xA103(与作者名 ai03 呼应),产品 ID 为0x060A。每个键盘型号拥有唯一的 VID/PID 组合,操作系统和 QMK 配置工具(Configurator)据此识别键盘身份。

键矩阵与二极管方向

"matrix_pins": { "cols": ["F4", "F7", "F5", "F6", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "D3"], "rows": ["B1", "B2", "B3", "F0", "F1"] }, "diode_direction": "COL2ROW"

从配置可以确认该键盘为5 行 × 14 列的标准行-列扫描矩阵(60% 布局共 61 个物理键位):

  • cols列出 14 个列线连接的 AVR 端口引脚(F4/F5属于端口 F,C7等属于端口 C,B1等属于端口 B),引脚排布并非严格连续,这是 PCB 走线布局决定的实际布线结果;
  • rows列出 5 个行线引脚B1B2B3F0F1
  • diode_direction: "COL2ROW"表示每颗键下二极管的导通方向是"从列线指向行线"。这一字段影响扫描驱动逻辑:扫描时拉低列线、读取行线电平即可检测键位,reference_info_json.md 中将其定义为"Which way the diodes are pointing"。如果你的硬件改版使用了反向二极管,需要同步修改此字段,否则矩阵扫描会失效。

RGB 打光与 WS2812 控制

"rgblight": { "saturation_steps": 8, "brightness_steps": 8, "led_count": 14, "sleep": true }, "ws2812": { "pin": "D2" }
  • ws2812.pin: "D2"指定 WS2812 灯带数据信号线接在D2引脚上,QMK 据此生成单线时序驱动;
  • led_count: 14声明板底灯带共 14 颗 LED,与 14 列的列数一致,可推断灯珠按列布置实现 underglow 效果;
  • saturation_steps: 8brightness_steps: 8定义通过按键调节饱和度/亮度时的步进级数;
  • sleep: true开启睡眠联动——根据 reference_info_json.md 的字段说明,其含义是"Turn off the LEDs when the host goes to sleep",即主机进入休眠时自动关闭灯带以省电。

功能特性开关

"features": { "bootmagic": true, "extrakey": true, "mousekey": true, "nkro": true, "rgblight": true }

这五个布尔开关直接决定编译进固件的 QMK 子系统(语义与 porting_your_keyboard_to_qmk.md 中的数据驱动特性列表一致):

特性作用
bootmagic按住 ESC+BACKSPACE 进入 DFU 烧录模式(Bootmagic 键),无需物理按钮
extrakey支持媒体键、系统功能键等扩展 HID 键码(如AU_VOLU
mousekey支持 MK_* 鼠标键码,把键盘当鼠标用
nkro启用 NKRO(无键冲突)扫描,保证多键同时按下的完整性
rgblight启用 RGB 灯效子系统,对应上节的rgblight配置块

LAYOUT 布局宏的生成依据

layouts.LAYOUT.layout数组定义了LAYOUT宏的键位坐标,每个元素是[行, 列]矩阵位置加上物理坐标x/y与可选宽度w。以该文件中的几个典型项为例:

  • 第一行(数字键行)为 14 个 1U 键,占满x: 0x: 13
  • 第二行的{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}即 1.5U 宽的 Tab 键;
  • 第二行末位{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}为 1.5U 的\键;
  • 第三行末位{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}是 60% 布局标志性的 2.25U 长回车键;
  • 第四行左 Shift 为 1.25U([3, 0], "w": 1.25),其旁{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}是 1.75U 的右 Shift——注意它复用了第三行使用的[2,13]之外的独立矩阵位[3,12]
  • 最底行(y: 4)只有 10 个矩阵位,通过w字段拼出 1.25U 修饰键 + 2.75U 空格键 + 2.25U 右 Shift 的 60% 经典底排。

这些坐标同时服务于两个用途:编译期生成LAYOUT宏参数顺序(与keymap.cLAYOUT(...)实参一一对应),以及 QMK Configurator 中的可视化布局渲染。

默认键位文件解析

Voyager60-Alps 只提供一组默认键位 keymaps/default/keymap.c,结构非常典型,适合作为学习 QMK 键位定义的范例。

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base */ KC_ESC, KC_1, KC_2, ... KC_BSPC, KC_BSPC, KC_TAB, KC_Q, ... KC_BSLS, KC_CAPS, KC_A, ... KC_ENT, KC_LSFT, KC_NO, KC_Z, ... MO(1), KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ... ), [1] = LAYOUT( /* Fn */ KC_GRV, KC_F1, ... KC_F12, KC_DEL, KC_DEL, _______, _______, KC_UP, ... _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, ... ... ) };

几个要点:

  1. 双层结构keymaps是一个二维数组,[0]为 Base 层(标准 QWERTY),[1]为 Fn 层。PROGMEM修饰表明键位表存放在 flash 中,节省 AVR 的 RAM。
  2. LAYOUT宏与矩阵对齐LAYOUT的实参按keyboard.jsonLAYOUT布局定义顺序展开,宏内部负责把每个键码映射到keymaps[layer][row][col]的正确[row][col]位置。注意 2.25U 回车只占一个矩阵位[2,13],因此 Base 层第三行末尾只写一个KC_ENT;而长空格键在物理上横跨[4,4]~[4,7]等多个矩阵位,文件中用重复的KC_SPC填充每一个被覆盖的矩阵位。
  3. KC_NO的显式占位:Base 层第四行的[3,1]位置写作KC_NO(无操作)。由于物理上长回车/右 Shift 的键帽覆盖区域存在"死矩阵位",显式写KC_NO是为了避免误触发,这是 QMK 键位文件的常见写法。
  4. 层切换MO(1)出现在 Base 层底排(右 Ctrl 旁与右 Shift 位),按住后进入 Fn 层;Fn 层里提供了 F1~F12 功能键行、方向键(KC_UP/KC_LEFT/KC_DOWN/KC_RGHT)和KC_DEL,未使用的键位统一填_______KC_TRAN的别名,透传 Base 层对应键码)。
  5. Bootmagic 隐藏逻辑:Base 层的 ESC 与 BACKSPACE 组合在bootmagic启用时被固件底层劫持,用于进入 DFU 烧录模式——这就是 readme 中 "Building the Firmware" 之后实际烧录时不需要额外按键的原因。

构建固件

官方 readme 给出的构建命令只有一条(在配置好 QMK 构建环境之后):

make ai03/voyager60_alps:default

这条命令的语义是:编译ai03/voyager60_alps键盘的default键位,产物为ai03_voyager60_alps_default.hex(ATmega32U4 目标)。构建时 QMK 会自动完成以下工作:

  • 解析 keyboard.json,生成矩阵尺寸、引脚宏、LAYOUT宏与功能开关;
  • features块链接 bootmagic、extrakey、mousekey、NKRO、rgblight 等子系统;
  • atmel-dfu生成兼容 DFU 烧录的 hex 固件。

构建环境安装与make完整用法分别参见仓库自带的 getting_started_build_tools 对应文档 与 make 命令指南;首次接触 QMK 的读者可以从 新人完整指南 入手。

烧录方式:编译完成后,将键盘接入 USB,按住 ESC + BACKSPACE(Bootmagic 组合)再上电/重置,设备进入 DFU 模式,直接将 hex 文件拖入(或按平台使用dfu-util等工具)即可完成烧录。

基于此键盘做进一步定制的思路

由于 Voyager60-Alps 全部硬件参数集中在 JSON 中,任何本地化修改都可以按 QMK 数据驱动机制进行(以下仅说明方法,当前仓库为只读参考):

  • 新增功能:例如需要编码器或 OLED,可在本地副本的keyboard.jsonfeatures中追加对应字段(如"encoder": true),并在matrix_pins同级补充引脚描述;字段全集与写法见 reference_info_json.md 与 feature 移植文档。
  • 自定义键位:复制keymaps/default/为新的键位目录,修改keymap.c中的键码定义即可,用make ai03/voyager60_alps:你的键位名编译。层管理(层切换、组合键、Tap-Dance 等)的完整键码表可参考 keycodes.md。
  • 核对 RGB 效果:RGB 子系统的模式、定时器与效果参数(如呼吸曲线、Snake 长度)在 quantum/rgblight/rgblight.h 中有完整注释,例如RGBLIGHT_EFFECT_BREATHE_MAX默认 255、RGBLIGHT_EFFECT_SNAKE_LENGTH默认 4,均可在rules.mk/config.h中覆盖。

小结

Voyager60-Alps 展示了 QMK 数据驱动配置的典型形态:一个 keyboard.json 完整描述了 ATmega32U4 + DFU、5×14 行-列矩阵(COL2ROW二极管方向)、14 颗 WS2812 underglow LED(挂D2、休眠自动关灯)以及 bootmagic/NKRO/rgblight 等功能开关;配套的两层 默认键位 覆盖标准 QWERTY 与 Fn 功能键层。掌握"JSON 定硬件、keymap.c 定键位、一条 make 命令出固件"这条主线后,即可复用到 QMK 中绝大多数采用 contenteditable="false">【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询