ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Artemis Paragon 键盘 QMK 固件指南:从编译、刷写到布局与编码器配置

Artemis Paragon 键盘 QMK 固件指南:从编译、刷写到布局与编码器配置 Artemis Paragon 键盘 QMK 固件指南从编译、刷写到布局与编码器配置【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本篇指南以 QMK Firmware 仓库中 Artemis Paragon 键盘说明文档 为核心系统讲解这款 60% 客制化键盘的固件结构、编译方法、刷写流程与 Bootloader 进入方式并结合仓库内真实的info.json、keyboard.json与默认键位源码深入剖析其矩阵设计、多布局支持与旋钮编码器配置。读完本文你将能够独立完成 Paragon 热插拔/焊接两版 PCB 的固件编译与烧录并掌握在 QMK 中自定义键位、切换布局和配置编码器的完整方法。键盘与固件概览Artemis Paragon 是 Artemis 品牌推出的一款支持热插拔Hotswap与焊接Soldered两种 PCB 版本的客制化键盘其 QMK 支持由维护者Sleepdealer仓库中维护者字段为Sleepdealr负责硬件获取方式标注为团购GB。在 QMK 仓库中该键盘的完整固件支持位于 keyboards/artemis/paragon/ 目录目录结构如下路径作用readme.md官方说明编译/刷写命令与 Bootloader 进入方法info.json键盘级数据驱动配置MCU、Bootloader、USB 描述符、默认布局hotswap/keyboard.json热插拔版的矩阵引脚、编码器引脚与布局定义soldered/keyboard.json焊接版的矩阵引脚、编码器引脚与布局定义hotswap/matrix_diagram.md热插拔版矩阵示意图ASCII 图soldered/matrix_diagram.md焊接版矩阵示意图ASCII 图keymaps/default/keymap.c默认键位映射含编码器映射keymaps/default/rules.mk默认键位构建选项可以看到Paragon 采用了 QMK 的**数据驱动配置data-driven configuration**方式键盘级与版本级参数全部收敛到info.json/keyboard.json中键位层逻辑则由独立的keymap.c承担。这与 QMK 官方推荐的 数据驱动配置规范 完全一致。硬件规格从 info.json 读出的事实info.json 直接定义了 Paragon 的硬件事实整理如下配置项值说明keyboard_nameParagon键盘名manufacturerArtemis制造商maintainerSleepdealr维护者processoratmega32u4AVR 主控8 位 MCUbootloaderatmel-dfuAtmel 官方 DFU Bootloaderdiode_directionCOL2ROW矩阵二极管方向列到行usb.vid0x8C27USB 厂商 IDusb.pid0x3449USB 产品 IDusb.device_version1.0.0设备版本build.ltotrue启用链接时优化压缩固件体积features字段声明了默认启用的功能集合features: { bootmagic: true, extrakey: true, mousekey: true, nkro: true, encoder: true }bootmagic支持通过按住矩阵(0,0)键上电进入 Bootloaderextrakey提供多媒体与系统控制键mousekey鼠标键模拟nkroN 键无冲NKROencoder支持旋转编码器旋钮。processor为atmega32u4、Bootloader 为atmel-dfu意味着正常情况下键盘以自定义 VID/PID0x8C27:0x3449枚举进入 DFU 刷写模式后则以 Atmel DFU 设备身份出现。仓库的 驱动安装文档 中列出atmel-dfu对应的ATm32U4DFU设备 VID/PID 为03EB:2FF4在 Windows 下需要将其驱动切换为 WinUSB 才能被刷写工具识别。编译固件环境准备编译前需要先完成 QMK 构建环境搭建仓库内提供了完整的引导文档首次上手从 Complete Newbs Guide 开始构建环境搭建参考 Getting StartedMake 命令的完整语义参考 Make 指南想理解固件整体工作方式可阅读 Understanding QMK。编译命令官方说明文档给出了 Paragon 热插拔版默认键位的编译命令make artemis/paragon/hotswap:default由于焊接版是独立目录对应命令为make artemis/paragon/soldered:default命令格式遵循 QMK 通用的make keyboard:keymap规则其中keyboard为artemis/paragon/hotswap或artemis/paragon/solderedkeymap为键位目录名仓库内置default你也可以在keymaps/下新建自己的键位目录如keymaps/mine/然后执行make artemis/paragon/hotswap:mine。刷写固件编译并刷写一条命令完成make artemis/paragon/hotswap:default:flash焊接版同理make artemis/paragon/soldered:default:flash刷写流程要求键盘先进入 Bootloader见下一节。关于:flash目标、DFU 刷写细节以及 Windows 下的驱动处理可参考 Flashing 指南 与 Zadig 驱动安装指南。进入 Bootloader 的三种方式官方文档明确说明Paragon 支持三种进入 Bootloader刷写模式的方法Bootmagic 复位按住矩阵中(0,0)位置的按键通常是左上角第一颗键或 Escape 键同时插入 USB 线物理复位按键短按 PCB 背面的复位按钮——部分批次可能没有按钮而是需要短接的焊盘pads键位中的 Bootmagic 键码在任意布局层中按下映射为QK_BOOT的按键若可用。QK_BOOT是 QMK 中重启进入 Bootloader的标准键码详细清单见 Quantum 键码参考。Bootmagic 复位机制深入Paragon 的info.json中features.bootmagic: true对应 QMK 的 Bootmagic 功能文档。这是一种无物理复位键也能进入 Bootloader的机制实现上由bootmagic_scan()在固件初始化早期检查指定矩阵位置的按键状态一旦按住即调用bootloader_jump()跳转。默认触发键就是矩阵坐标(0,0)。若键盘矩阵特殊可以在config.h中通过BOOTMAGIC_ROW/BOOTMAGIC_COLUMN覆盖#define BOOTMAGIC_ROW 0 #define BOOTMAGIC_COLUMN 0从矩阵定义看Paragon 的(0,0)正是第一行第一列即左上角 Esc 位。需要特别注意的是使用 Bootmagic 进入刷写模式会同时重置 EEPROM此前通过EEPROM保存的设置如默认层、背光配置等会丢失。矩阵与两种 PCB 版本Paragon 的矩阵为6 行 × 16 列二极管方向为COL2ROW全键扫描范围足够覆盖标准 60% 配列加上旋钮位。两版 PCB 的引脚分配不同热插拔版hotswap/keyboard.jsonmatrix_pins: { cols: [F7, F6, F5, F4, F1, F0, C7, E6, B0, B3, B6, B5, B4, D7, D4, D6], rows: [D2, D1, D0, B2, B1, C6] }焊接版soldered/keyboard.jsonmatrix_pins: { cols: [E6, F0, F1, F4, F5, F6, F7, B0, B1, B3, D0, D1, D2, D3, D7, D5], rows: [B2, C7, C6, B6, B5, B4] }两版矩阵引脚完全独立定义这也是它们被拆分为两个独立键盘目录的原因。仓库还分别提供了 ASCII 矩阵示意图 热插拔版 与 焊接版例如热插拔版顶部示意┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐ │00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │Rot│ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘其中Rot即旋钮编码器的位置00/02等是矩阵坐标行号列号十六进制可帮助排查矩阵映射问题。布局支持热插拔与焊接的差异热插拔版布局热插拔版在 keyboard.json 中定义了 4 种 ANSI 布局并在 info.json 顶层额外提供LAYOUT_all全键位含分体空格与 2U Backspace 的组合同时通过layout_aliases将LAYOUT别名指向LAYOUT_all方便旧式键位代码引用布局名说明LAYOUT_all全键位布局顶层 info.json 定义LAYOUT_ansi_rwklANSI 配列右 Win/菜单键区RWKL Right Win Key LayoutLAYOUT_ansi_rwkl_split_bsANSI 分体退格LAYOUT_ansi_wklANSI WKL无右下角 Win 键底部为 7U 空格LAYOUT_ansi_wkl_split_bsANSI WKL 分体退格焊接版布局焊接版在 soldered/keyboard.json 中提供了 8 种布局除 ANSI 外还完整覆盖 ISO 配列布局名说明LAYOUT_ansi_rwklANSIRWKLLAYOUT_ansi_rwkl_split_bsANSI 分体退格LAYOUT_ansi_rwkl_split_spaceANSI 分体空格LAYOUT_ansi_rwkl_split_space_split_bsANSI 分体空格 分体退格LAYOUT_iso_rwklISORWKL含 1.25U×2H 的 ISO 回车LAYOUT_iso_rwkl_split_bsISO 分体退格LAYOUT_iso_rwkl_split_spaceISO 分体空格LAYOUT_iso_rwkl_split_space_split_bsISO 分体空格 分体退格ISO 布局在键盘数据中以w: 1.25, h: 2的尺寸字段描述左移回车键例如焊接版LAYOUT_iso_rwkl中的{matrix: [3, 13], x: 13.75, y: 2.5, w: 1.25, h: 2}关于数据驱动配置中x/y/w/h等字段的完整语义可参考 info.json 数据参考布局与键位层的关系参见 Feature: Layouts。默认键位与编码器映射默认键位源码默认键位 keymaps/default/keymap.c 使用LAYOUT_all定义层 0完整呈现了 Paragon 出厂配列顶部 F 区 12 键、分体退格KC_BSPC, KC_BSPC、分体空格中间插入MO(1)临时层键const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] { [0] LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_GRV, 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_BSPC, KC_BSPC, KC_HOME, 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_BSLS, KC_PGUP, 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_NUBS, KC_ENT, KC_PGDN, KC_LSFT, KC_NUHS, 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_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) };从中可以看到MO(1)被安排在分体空格的中间作为临时层切换键方向键放在右下角KC_LEFT/KC_DOWN/KC_RGHT与KC_UP/KC_END位置KC_HOME/PGUP/PGDN则位于右上功能位——这套配列兼顾了日常输入与导航操作。自定义层与MO()等层切换键的用法参见 Feature: Layers。旋钮编码器配置Paragon 的旋钮由encoder配置项定义。热插拔版使用D3/D5引脚焊接版使用D4/D6引脚分辨率均为 2即每个棘爪对应 2 个脉冲encoder: { rotary: [ { pin_a: D3, pin_b: D5, resolution: 2 } ] }分辨率resolution定义了编码器在两次棘爪之间需要记录的脉冲数调整它会改变旋钮的响应灵敏度修改后需要重新刷写固件才能生效详见 Encoder 功能文档。默认键位通过 rules.mk 开启了编码器映射ENCODER_MAP_ENABLE yes并在 keymap.c 中定义了层 0 的旋钮行为——逆时针音量加、顺时针音量减#if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] { [0] { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) } }; #endifENCODER_CCW_CW(ccw, cw)宏按逆时针动作、顺时针动作的顺序接收两个键码。你也可以为每一层独立定义不同的旋钮行为例如在层 1 改成滚动页面只需在encoder_map中继续添加[1] { ... }条目。自定义你的 Paragon 固件总结一套面向 Paragon 的固件自定义流程复制键位在keymaps/下创建新目录如keymaps/mine/复制keymaps/default/keymap.c与rules.mk作为起点选择布局宏根据你的 PCB 版本与配列ANSI/ISO、WKL、分体空格、分体退格在keymap.c中改用对应的LAYOUT_*宏热插拔版可用LAYOUT_all最大兼容调整键位按需修改各层键码可参考 Keymap 教程 与 基础键码配置旋钮在encoder_map中为每层定义旋钮行为保持ENCODER_MAP_ENABLE yes编译验证执行make artemis/paragon/hotswap:mine或soldered版本确认编译通过刷写按上文三种方式之一进入 Bootloader执行make artemis/paragon/hotswap:mine:flash。需要说明的是两版 PCB 的矩阵引脚与编码器引脚不同键位和布局文件必须针对对应版本目录hotswap/soldered组织混用会导致按键错位或旋钮失效。掌握以上要点后你即可完全驾驭 Artemis Paragon 的 QMK 固件开发与维护。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表