QMK 固件中的 Arisu 键盘支持:Alice 风格配列移植、配置解析与编译刷写指南
2026/9/17 3:17:14 网站建设 项目流程

QMK 固件中的 Arisu 键盘支持:Alice 风格配列移植、配置解析与编译刷写指南

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

导读

Arisu 是 QMK 固件仓库中一款以“Alice 风格”人机工学配列为特色的客制化键盘,其 readme 明确指出它深受 Lyn 的 EM7 与 TGR Alice 启发。本文以该键盘在 QMK 仓库内的完整支持为主线,逐一拆解其 keyboard.json 数据驱动配置(MCU、Bootloader、矩阵引脚、配列映射)与 默认键位,并给出从编译、进入 DFU Bootloader 到刷写固件的完整可复制操作流程。读完本文,你将掌握如何在本地为 Arisu 编译固件、如何读懂 Alice 风格配列的矩阵坐标定义,以及如何基于这套配置自定义自己的键位。


一、Arisu 是什么:一款致敬经典的 Alice 风格键盘

Arisu 是由维护者 Fate(GitHub 用户 FateNozomi)设计的客制化键盘,官方定位为“A keyboard inspired by Lyn's EM7 and TGR Alice”——即它的整体配列灵感来自 Lyn 的 EM7 与 TGR Alice 两款经典键盘。从配列数据可以推断,它延续了 Alice 风格的标志性特征:

  • 字母区中央垂直方向内凹,左右手区域呈对称的人机工学倾角;
  • 空格键在中轴处被“劈开”为左右两个,配合双手拇指使用;
  • 字母区右侧存在一条独立的附加列(本文后续会结合布局数据详细说明);
  • 保留了完整的方向键与右侧修饰键区域。

在 QMK 仓库中,Arisu 的支持文件结构非常精简,仅有三个文件:

keyboards/arisu/ ├── keyboard.json # 数据驱动的完整硬件配置 ├── keymaps/ │ └── default/ │ └── keymap.c # 默认两层键位 └── readme.md # 键盘简介与构建入口

其中keyboard.json属于 QMK 的**数据驱动配置(Data Driven Configuration)**体系。QMK 官方文档 data_driven_config.md 说明了这一机制:info.json(即这里的keyboard.json)作为唯一配置来源,构建系统会自动从中生成config.hrules.mk,从而让键盘的硬件描述集中在一处、易于维护。


二、硬件配置逐项解析:读懂 Arisu 的 keyboard.json

keyboard.json是理解 Arisu 硬件底细的第一手资料。下面按区块逐项解读。

2.1 基本信息与 USB 标识

"keyboard_name": "Arisu", "manufacturer": "Fate", "url": "https://github.com/FateNozomi/arisu-pcb", "maintainer": "FateNozomi", "usb": { "vid": "0xFA7E", "pid": "0x0000", "device_version": "0.0.1" }
  • keyboard_name/manufacturer/maintainer:键盘名称、厂商与维护者标识,系统会在编译产物与 USB 描述符中体现;
  • usb.vid/usb.pid:USB 厂商 ID 与产品 ID(0xFA7E:0x0000),这是操作系统识别该键盘固件的关键标识;
  • url:指向 PCB 开源仓库,用于在 QMK 生态内关联硬件资料。

2.2 主控、Bootloader 与特性开关

"processor": "atmega32u4", "bootloader": "atmel-dfu", "features": { "bootmagic": true, "extrakey": true, "mousekey": true, "nkro": true }, "qmk": { "locking": { "enabled": true, "resync": true } }
  • processoratmega32u4:这是 AVR 系列经典 USB 主控(带原生 USB),也是 QMK 支持最广泛的 MCU 之一;
  • bootloaderatmel-dfu:对应 Atmel DFU 引导程序。官方 flashing.md 指出,兼容的命令行刷写工具是dfu-programmer,对应的make目标为:dfu
  • features
    • bootmagic:允许通过按住特定键上电来重置 EEPROM 或进入 Bootloader;
    • extrakey:启用系统与多媒体控制键码支持;
    • mousekey:启用鼠标键(用键盘模拟鼠标移动与点击);
    • nkro:启用 NKRO(最多约 248 键同时按下,默认不带 NKRO 时仅 6 键);
  • qmk.locking:启用 QMK 自身的按键锁定特性(如QK_LOCK相关的 Caps Lock/Scroll Lock/Num Lock 状态跟踪),并开启状态重同步。

2.3 矩阵引脚与二极管方向

"matrix_pins": { "cols": ["F0", "F1", "E6", "C7", "C6", "B6", "D4", "B1", "B0", "B7", "B5", "B4", "D7", "D6", "B3"], "rows": ["D0", "D1", "D2", "D3", "D5"] }, "diode_direction": "COL2ROW"

从源码结构看,Arisu 使用5 行 × 15 列的扫描矩阵,共 75 个矩阵节点,但配列实际使用约 68 个按键(其余节点在布局中未使用)。diode_directionCOL2ROW,表示二极管负极接行、正极接列,这是绝大多数标准 PCB 的接线方式,QMK 默认矩阵扫描代码会据此正确驱动。

2.4 LAYOUT 配列映射:Alice 风格如何落到矩阵坐标

keyboard.json中的layouts.LAYOUT是理解这款键盘配列的钥匙。每个条目用matrix: [行, 列]指明物理按键在矩阵中的位置,用x/y指定其在可视化布局中的坐标,w指定键帽宽度(1 为标准 1U,1.5/1.75/2/2.25/2.75 等为大键)。

从这些坐标数据可以清晰地还原 Alice 风格特征:

  1. 第一行(数字行)分为左右两段:左侧[0,0][0,6]占 x=0~6,右侧[0,7][0,14]占 x=9~16,中间留出约 2U 空隙容纳右侧附加列;
  2. 右侧附加列[1,14][2,14][3,14]位于 x=17.3,正是 Alice 配列右侧标志性的竖排附加键;
  3. 字母区中央内凹:第二、三行左右分区的间距(6.5 → 8.5、5.75 → 8.75)明显大于数字行,形成对称的人机工学弧线;
  4. 大键与空格
    • 第二行左端[1,0]为 1.5U(Tab),右端[1,13]为 1.5U(Backspace);
    • 第三行左端[2,0]为 1.75U(Caps),右端[2,12]为 2.25U(Enter);
    • 底行(第四行)采用裂开空格[4,0]1.5U Ctrl、[4,2]1.5U Alt、[4,4]2U 左空格、[4,5]1.25U GUI、[4,7]2.75U 右空格、[4,9]1.5U RAlt;
  5. 方向键区[3,13]为上键(x=16.3),底行[4,12][4,13][4,14]分别为左、下、右方向键,形成独立的右下方向键集群。

注:由于矩阵第 1 列(col index 1)在多数行中未被布局引用(例如底行直接[4,0][4,2]),说明 PCB 上对应位置并未放置按键,这是配列自定义时需要注意的矩阵“空洞”。


三、默认键位剖析:两层键位与刷写入口

默认键位文件位于 keymaps/default/keymap.c,包含两层LAYOUT

3.1 第 0 层:标准 Alice 风格输入层

[0] = LAYOUT( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT ),

该层覆盖了完整输入能力,几个值得注意的设计点:

  • QK_GESC(Esc 增强键):单独按下输出 Esc,配合 Shift 时输出~,配合 GUI 时输出反引号`,对 Vim 与终端用户十分友好;
  • 右侧附加列被用作KC_GRV与翻页键KC_PGUP/KC_PGDN
  • Enter 右侧即MO(1):按住进入第 1 层(临时层切换),这是 QMK 最常见的层切换方式(详见 feature_layers.md);
  • 底行按 Ctrl / Alt / 左空格 / GUI / 右空格 / RAlt 排布,方向键独立于主键区。

3.2 第 1 层:功能键与刷写入口

[1] = LAYOUT( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ )
  • _______KC_TRNS)表示沿用下一层的键位,因此第 1 层仅覆盖少量按键;
  • 数字行映射为 F1~F12
  • Tab 行的 Q 位置映射为QK_BOOT:按下即进入 DFU Bootloader,无需打开外壳按复位按钮,是刷写固件最便捷的入口(与 flashing.md 中“Press the QK_BOOT keycode”的方法一致);
  • Backspace 位置提供KC_DEL

四、编译与刷写:从零到固件上机

4.1 环境准备

刷写 AVR 键盘前需先搭建 QMK 构建环境并克隆固件源码。全新用户建议按官方 Complete Newbs Guide 完成环境安装;环境搭建细节见 getting_started_build_tools.md,make命令的完整语法见 getting_started_make_guide.md。

4.2 编译固件

在固件仓库根目录执行(readme 给出的标准示例):

make arisu:default

这里make的完整语法是<keyboard>:<keymap>:<target>

  • arisu为键盘路径(无子版本目录时可直接用键盘名);
  • default为键位名,即编译 keymaps/default;
  • 省略<target>时等价于编译,输出.hex固件文件。

也可使用 QMK CLI 等价编译:

qmk compile -kb arisu -km default

4.3 刷写固件(Atmel DFU 流程)

Arisu 使用atmel-dfuBootloader,官方推荐的刷写方式为:

make arisu:default:flash

该命令会自动编译并调用dfu-programmer完成“擦除 → 写入 → 复位”全流程。手工流程也可按 flashing.md 的 DFU 章节执行:

  1. 进入 Bootloader,任选其一:

    • 按住MO(1)的同时按下 Q 位置(即触发QK_BOOT,或直接按 Q 位置的QK_BOOT);
    • 若 PCB 上有 RESET 按钮,直接按下;
    • 将 RST 引脚快速短接到 GND。
  2. 等待操作系统识别出 DFU 设备;

  3. 使用dfu-programmer依次执行:

    dfu-programmer atmega32u4 erase --force dfu-programmer atmega32u4 flash --force <固件.hex> dfu-programmer atmega32u4 reset
  4. 复位后键盘进入应用模式,新固件生效。

对应地,QMK CLI 刷写命令为:

qmk flash -kb arisu -km default

提示:由于启用了bootmagic,当键位或 EEPROM 状态异常时,可按住默认 Bootmagic 键上电来重置 EEPROM,随后重新编译刷写即可恢复。

4.4 常见故障排查

  • .hex体积超限导致无法写入,请检查是否误启用了额外特性;make arisu:default:dfu前的编译输出会显示固件大小与上限;
  • flash无反应,确认是否已进入 DFU 模式(系统应出现新 USB 设备);
  • 部分 Linux 系统需要配置 udev 规则才能以非 root 访问 DFU 设备,详见 faq_build.md。

五、自定义键位与延伸阅读

Arisu 的键位文件结构是标准 QMK 结构,自定义方法如下:

  1. 复制 keymaps/default 到新的键位目录,例如keyboards/arisu/keymaps/mine/
  2. keymap.c中按LAYOUT(...)格式重排键位,注意矩阵坐标须与 keyboard.json 中的LAYOUT定义一一对应;
  3. 使用make arisu:mine编译验证。

如需进一步学习:

  • keymap.md:键位文件结构与LAYOUT宏的完整说明;
  • feature_layers.md:MO()TO()TG()等层切换键的用法;
  • feature_bootmagic.md:Bootmagic 上电复位与 EEPROM 管理(该文件位于 docs/ 目录,若本地缺失可参考仓库对应版本的官方文档);
  • data_driven_config.md:理解keyboard.json如何生成config.hrules.mk,是深入定制硬件配置(如修改引脚、开关特性)的入口。

结语

Arisu 在 QMK 仓库中的支持虽精简,却完整覆盖了从数据驱动硬件描述到默认键位、再到编译刷写的全链路。通过 keyboard.json 你可以精确还原这款 Alice 风格键盘的每一枚按键与矩阵坐标,而默认键位中的QK_BOOT入口与atmel-dfu刷写流程,则为固件迭代提供了稳定的闭环。无论是直接使用make arisu:default上手,还是基于LAYOUT深入定制,本文给出的配置解读与操作路径都能作为你的起点。

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

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

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

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

立即咨询