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

发布时间:2026/9/16 15:13:03
QMK Voyager60-Alps:面向 Alps 开关的 60% 开源键盘 PCB —— 硬件架构、数据驱动配置与固件构建指南
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_firmwareVoyager60-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 cutoutPCB 上预留长条形开槽提高配列自由度并改善打字手位Over-current and static discharge protection硬件层面的过流与静电放电保护Fully open-source从 PCBGerber 文件在维护者 ai03 的开源硬件仓库中发布到固件全部开源。readme 给出的附加信息包括Keyboard Maintainer: ai03键盘作者与设计方可参考 ai03 目录说明该目录下收录了 ai03 的多款 PCB 定制键盘固件如 altair、quasar、soyuz 等Hardware Supported: Voyager60-Alps PCBHardware Availability: 硬件以 Gerber 图纸形式开放readme 中提供了指向维护者仓库 alps 分支的链接。硬件架构从 keyboard.json 看底层配置QMK 的数据驱动配置data-driven configuration允许用 keyboard.json 一个文件描述整块键盘的硬件与功能开关Voyager60-Alps 正是完全采用这种方式的键盘——它的目录下没有传统的rules.mk和config.h所有构建参数都由 JSON 提供。这些字段的官方语义可对照 reference_info_json.md 理解。处理器与引导加载器processor: atmega32u4, bootloader: atmel-dfu该键盘使用 ATmega32U4 单片机搭载原生 USB 2.0 外设配合atmel-dfuDFU引导加载器。这意味着烧录固件无需外部烧录器通过 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属于端口 FC7等属于端口 CB1等属于端口 B引脚排布并非严格连续这是 PCB 走线布局决定的实际布线结果rows列出 5 个行线引脚B1、B2、B3、F0、F1diode_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: 8与brightness_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按住 ESCBACKSPACE 进入 DFU 烧录模式Bootmagic 键无需物理按钮extrakey支持媒体键、系统功能键等扩展 HID 键码如AU_VOLUmousekey支持 MK_* 鼠标键码把键盘当鼠标用nkro启用 NKRO无键冲突扫描保证多键同时按下的完整性rgblight启用 RGB 灯效子系统对应上节的rgblight配置块LAYOUT 布局宏的生成依据layouts.LAYOUT.layout数组定义了LAYOUT宏的键位坐标每个元素是[行, 列]矩阵位置加上物理坐标x/y与可选宽度w。以该文件中的几个典型项为例第一行数字键行为 14 个 1U 键占满x: 0到x: 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.c中LAYOUT(...)实参一一对应以及 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, ... ... ) };几个要点双层结构keymaps是一个二维数组[0]为 Base 层标准 QWERTY[1]为 Fn 层。PROGMEM修饰表明键位表存放在 flash 中节省 AVR 的 RAM。LAYOUT宏与矩阵对齐LAYOUT的实参按keyboard.json中LAYOUT布局定义顺序展开宏内部负责把每个键码映射到keymaps[layer][row][col]的正确[row][col]位置。注意 2.25U 回车只占一个矩阵位[2,13]因此 Base 层第三行末尾只写一个KC_ENT而长空格键在物理上横跨[4,4]~[4,7]等多个矩阵位文件中用重复的KC_SPC填充每一个被覆盖的矩阵位。KC_NO的显式占位Base 层第四行的[3,1]位置写作KC_NO无操作。由于物理上长回车/右 Shift 的键帽覆盖区域存在死矩阵位显式写KC_NO是为了避免误触发这是 QMK 键位文件的常见写法。层切换MO(1)出现在 Base 层底排右 Ctrl 旁与右 Shift 位按住后进入 Fn 层Fn 层里提供了 F1~F12 功能键行、方向键KC_UP/KC_LEFT/KC_DOWN/KC_RGHT和KC_DEL未使用的键位统一填_______KC_TRAN的别名透传 Base 层对应键码。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.hexATmega32U4 目标。构建时 QMK 会自动完成以下工作解析 keyboard.json生成矩阵尺寸、引脚宏、LAYOUT宏与功能开关按features块链接 bootmagic、extrakey、mousekey、NKRO、rgblight 等子系统为atmel-dfu生成兼容 DFU 烧录的 hex 固件。构建环境安装与make完整用法分别参见仓库自带的 getting_started_build_tools 对应文档 与 make 命令指南首次接触 QMK 的读者可以从 新人完整指南 入手。烧录方式编译完成后将键盘接入 USB按住 ESC BACKSPACEBootmagic 组合再上电/重置设备进入 DFU 模式直接将 hex 文件拖入或按平台使用dfu-util等工具即可完成烧录。基于此键盘做进一步定制的思路由于 Voyager60-Alps 全部硬件参数集中在 JSON 中任何本地化修改都可以按 QMK 数据驱动机制进行以下仅说明方法当前仓库为只读参考新增功能例如需要编码器或 OLED可在本地副本的keyboard.json的features中追加对应字段如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),仅供参考