
QMK Firmware 中的 AMJ4040% 键盘编译、刷写与多布局定制实战指南【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本文基于 QMK Firmware 仓库中 AMJ40 键盘的官方支持文件系统讲解这款 40% 机械键盘固件的构建与刷写流程、进入 Bootloader 的重置方法并结合keyboard.json数据驱动配置与多套默认键位图深入剖析其矩阵、背光、RGB 灯效与布局系统。读完本文你将掌握make构建目标用法、AMJ40 全系布局差异以及如何在其 4 层键位图中自定义按键功能。AMJ40 键盘概览AMJ40 是一款 DIY / 成品整机均可获得的紧凑型 40% 机械键盘PCB 由 Han Chen 设计。根据 readme.md 与 keyboard.json 中记录的信息键盘维护者MaintainerQMK Communitymaintainer字段为qmk硬件支持AMJ40 PCB硬件获取状态原文档标注为 “no longer available”已不再发售USB 标识Vendor ID0x00D8、Product ID0x6072、设备版本0.0.2主控芯片atmega32u4Atmel AVR 系列Bootloaderatmel-dfu在仓库目录树中AMJ40 位于 keyboards/amjkeyboard/amj40/与同厂商的 amj60、amj66、amj84、amj96、amjpad 并列在 keyboards/amjkeyboard/ 下属于典型的“同一制造商多款键盘共用一个顶层目录”的组织方式。构建环境与固件编译在开始编译之前需要先完成 QMK 构建环境工具链、依赖、Python 环境的搭建。新用户建议从官方新手指南开始Complete Newbs Guide、构建环境搭建 以及 Make 编译指南。环境就绪后在仓库根目录执行以下命令即可为 AMJ40 编译默认键位图的固件make amjkeyboard/amj40:default该命令的构成规则是make 键盘路径:键位图名其中amjkeyboard/amj40对应键盘在keyboards/目录下的路径default是键位图keymap名称对应 keymaps/default/ 目录。编译产物会生成在构建输出目录中固件文件即可用于后续刷写。刷写固件与进入 Bootloader一键刷写命令在编译命令后追加:flash目标即可编译并自动刷写make amjkeyboard/amj40:default:flash该命令会先构建固件随后通过 DFU 协议将固件写入主控。由于 AMJ40 的 Bootloader 配置为atmel-dfu见 keyboard.json刷写工具会自动适配对应的烧录流程。手动进入 Bootloader 重置方法如果自动刷写失败或需要重新进入刷写模式可以按以下方式手动重置按住键盘左上角的按键同时插入 USB 数据线即可将主板复位进入 Bootloader 模式。需要特别注意的是原文档明确提示该操作会同时清除持久化设置persistent settings。这意味着 EEPROM 中保存的配置如 RGB 灯效设置、默认层等会被重置为出厂值刷写完成后可能需要重新配置。硬件配置解析数据驱动的 keyboard.jsonAMJ40 采用 QMK 的数据驱动配置data-driven configuration方式硬件信息全部集中定义在 keyboard.json 中无需传统的config.h/rules.mk即可完成硬件描述。下面拆解各关键字段。矩阵与二极管方向matrix_pins: { cols: [F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7], rows: [F4, F5, F6, F7] }, diode_direction: COL2ROWAMJ40 使用 4 行 × 12 列的矩阵共 48 个键位。COL2ROW表示二极管方向为“列到行”这是绝大多数直列ortholinear与常规配列键盘采用的扫描方向约定。背光与 RGB 灯效backlight: { pin: B6, levels: 4 }, rgblight: { hue_steps: 10, led_count: 4, animations: { ... } }, ws2812: { pin: D3 }背光Backlight使用 B6 引脚支持 4 级亮度调节对应功能键BL_TOGG、BL_UP、BL_DOWN、BL_STEP等详见 docs/features/backlight.mdRGB 灯效RGBLIGHT4 颗 LEDhue_steps为 10启用了呼吸、彩虹流动、彩虹漩涡、贪吃蛇、骑士、圣诞、静态渐变、RGB 测试、交替、闪烁共 10 种动画详见 docs/features/rgblight.mdWS2812 灯带数据引脚为 D3。指示 LED 与附加特性indicators: { caps_lock: B2, on_state: 0 }, features: { backlight: true, bootmagic: true, extrakey: true, mousekey: true, nkro: true, rgblight: true }, qmk: { locking: { enabled: true, resync: true } }Caps Lock 指示 LED 接在 B2且为低电平点亮on_state: 0内置特性包括 Bootmagic可通过按键组合触发特殊功能、多媒体键extrakey、鼠标键mousekey、全键无冲NKRO与 RGB 灯效QMK 的锁定键Caps Lock / Num Lock / Scroll Lock支持锁定与重同步行为。布局系统四种配列一键切换AMJ40 最显著的特点是同一块 PCB 支持多种配列keyboard.json中定义了 4 个布局宏对应的键位图目录也一一对应布局宏名空格宽度对应键位图目录LAYOUT2.25u 2.75u 双空格keymaps/default/LAYOUT_625u_space6.25u 单空格keymaps/default_625u_space/LAYOUT_ortho_600u_space6u 单空格正交keymaps/default_ortho_600u_space/LAYOUT_ortho_275u_space2.75u 空格正交keymaps/default_ortho_275u_space/每种布局都通过matrix: [row, col]与x/y坐标把矩阵物理位置映射到视觉布局并支持w宽度字段定义大键如 1.25u、1.75u、2.25u、6.25u 等。编译时选择不同的键位图即可获得对应的配列固件例如make amjkeyboard/amj40:default_ortho_600u_space四种配列的矩阵差异对比四种布局的matrix映射可以发现同一矩阵在不同配列下键位归属不同标准配列LAYOUT / 625u_space第 2 行左移一位[2,0]为 1.75u 左 Shift[2,1]缺省底部一行由 1.25u/2.25u/2.75u 等宽度键组合正交配列ortho 系列第 1、2 行均为满 12 键[1,0]~[1,11]、[2,0]~[2,11]底行只使用部分矩阵列如[3,0]、[3,1]、[3,2]等形成标准的 40% 正交键盘形态。从源码结构看这种“同一 PCB 通过不同 layout 宏映射出不同物理配列”的设计正是 QMKLAYOUT宏体系的价值所在键位图作者只需按对应宏提供键码序列即可。默认键位图深度解析经典三层 Adjustkeymaps/defaultdefault 键位图 由 Fabian Topfstedt 编写Copyright 2017其设计说明记录在 keymaps/default/readme.md 中——它结合了 TMK 时代 AMJ40 原始键位图与 Planck 正交键盘的 “Lower / Raise / Adjust” 分层思想并且同时提供了开关按键背光与底灯underglow的按键。键位图定义了 4 个命名层与 4 个自定义键码enum layer_names { _QWERTY, _LOWER, _RAISE, _ADJUST }; enum custom_keycodes { QWERTY SAFE_RANGE, LOWER, RAISE, ADJUST };并通过process_record_user()中的layer_on/layer_off与update_tri_layer()实现层切换与三键组合QWERTY 层默认标准字母区底行两个空格被替换为LT(_LOWER, KC_SPC)与LT(_RAISE, KC_SPC)即按住空格时切换层、轻点仍是空格的 Layer-Tap 用法LT3_LGU为LT(_ADJUST, KC_LGUI)LOWER 层符号层~ ! # $ % ^ * ( )F1~F12 功能键、以及BL_TOGG / BL_UP / BL_DOWN背光控制和方向键RAISE 层数字层 1 2 ... 0、常用符号与UG_TOGGRGB 灯效开关ADJUST 层系统功能层包含QK_BOOT重启进入 Bootloader、音频开关AU_ON / AU_OFF、Mac/Win 按键交换AG_NORM / AG_SWAP、RGB 亮度/饱和度/色相调节键UG_HUEU ... UG_VALD以及KC_SLEP睡眠键。层间组合逻辑采用update_tri_layer(_LOWER, _RAISE, _ADJUST)当 LOWER 与 RAISE 同时按住时自动叠加到 ADJUST 层详见 docs/features/tri_layer.md。6.25u 单空格default_625u_space由 noroadsleftJames Young于 2021 年编写使用LAYOUT_625u_space宏底行为6.25u 大空格 右侧两个 Layer-Tap 键#define LT1_SCL LT(1, KC_SCLN) #define LT2_QUO LT(2, KC_QUOT)第 0 层为标准 QWERTY;键在按住时进入第 1 层、键按住时进入第 2 层第 1 层提供数字与符号输入第 2 层提供 F1~F12、QK_BOOT、背光控制BL_TOGG / BL_DOWN / BL_UP / BL_STEP以及方向键。6u 单空格正交default_ortho_600u_space同样出自 noroadsleft使用LAYOUT_ortho_600u_space宏键盘呈现为标准 4×12 正交形态第 0 层为标准 QWERTY底行使用MO(1)与MO(2)两个临时层按键按下时切层、松开即回第 1 层为数字与符号层并带方向键第 2 层为功能层提供QK_BOOT、打印屏幕与背光控制。2.75u 空格正交default_ortho_275u_space使用LAYOUT_ortho_275u_space宏底行为2.75u 空格其余键位为 1u第 0 层 QWERTY/键定义为LT(2, KC_SLSH)按住进第 2 层第 1 层为符号层~ ! # ...并带方向键第 2 层为数字与功能层含QK_BOOT与背光控制。扩展阅读与后续步骤完整的 QMK 新手流程Complete Newbs Guide编译命令详解Getting Started Make Guide背光配置与键码docs/features/backlight.mdRGB 灯效配置与键码docs/features/rgblight.md三层组合逻辑docs/features/tri_layer.md同厂商其他键盘可参考 keyboards/amjkeyboard/ 下的 amj60、amj66、amj84、amj96、amjpad 目录需要特别说明的是AMJ40 硬件目前已不再公开发售但上述固件与键位图依然保留在 QMK 仓库中对于拥有该 PCB 的用户来说本文的编译、刷写与布局定制流程完全适用对 40% 键盘数据驱动配置感兴趣的同学也可以将其keyboard.json与四种布局宏作为学习样本。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考