QMK 固件中的 Chavdai40:一款可自由装饰的 40% 键盘从编译到刷写全指南

QMK 固件中的 Chavdai40:一款可自由装饰的 40% 键盘从编译到刷写全指南 QMK 固件中的 Chavdai40一款可自由装饰的 40% 键盘从编译到刷写全指南【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmwareChavdai40 是一款由 t-miyajima 设计、主打简单、可自由装饰的 40% 键盘官方仓库收录了其 rev1 与 rev2 两个 PCB 版本的完整 QMK 支持。本文以 keyboards/chavdai40/readme.md 为核心结合仓库中的 rev1/keyboard.json、rev2/keyboard.json、官方键位与底层配置系统讲解该键盘的固件结构、编译、刷写、矩阵定义与键位定制读完即可独立完成 Chavdai40 固件的构建与个性化配置。一、键盘概览设计定位与硬件信息根据官方 readmeChavdai40 被定位为 very simple decoratable 40% keyboard即一款结构简单、方便用户自行装饰的 40% 配列键盘。以下是 readme 中声明的关键信息项目内容Keyboard Maintainert-miyajimaHardware SupportedChavdai40 PCB rev1、rev2配列40%官方键位为 42 键 / 44 键两种在 QMK 目录结构中该键盘的顶层入口位于 keyboards/chavdai40/info.json其中记录了制造商manufacturer为t-miyajima维护者maintainer同为t-miyajimaUSB VID/PID 为0x16D0/0x0F95。目录内同时包含 rev1 与 rev2 两个版本子目录以及board.h、chconf.h、halconf.h、mcuconf.h等 ChibiOS/ARM 平台相关文件说明该键盘基于 ARM 主控而非 AVR。二、硬件与固件基础rev1 / rev2 的区别readme 明确声明硬件支持 Chavdai40 PCB rev1, rev2 两个版本两者的核心差异体现在矩阵引脚分配上。分别查看 rev1/keyboard.json 与 rev2/keyboard.json可以归纳出配置项rev1rev2keyboard_nameChavdai40Chavdai40 rev2device_version0.0.10.0.2列引脚13 列B8, B4, B3, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1B7, B4, B3, A8, B1, B0, A7, A6, A5, A4, A3, A2, A1行引脚4 行A0, A15, B5, B6A0, A15, B5, B6可见 rev1 与 rev2 的主控、行引脚和整体配列完全一致仅在列引脚上做了调整rev1 的 C0 列使用 B8rev2 改为 B7rev1 的 C3 列使用 B2rev2 改为 A8。这一差异也解释了为什么两个版本需要分别编译固件必须为不同 PCB 提供不同的矩阵扫描引脚配置。两个版本共用的底层配置还包括主控processor: STM32F042即 ST 的 STM32F042 系列 Cortex-M0 芯片32KB Flash 级别对应 board.h 中的STM32F042x6与BOARD_NAME Chavdai40。Bootloaderbootloader: stm32-dfu使用 ST 官方 DFU 协议刷写。二极管方向diode_direction: COL2ROW即二极管从列到行列驱动、行扫描读取。功能开关bootmagic: true、extrakey: true、mousekey: true、nkro: false即默认开启 Bootmagic、多媒体扩展键与鼠标键NKRO 关闭使用 6KRO。USB 供电max_power: 100单位 mA。启动行为rev1/rev2 的 config.h 均定义EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE控制早期初始化阶段的 bootloader 跳转行为。三、编译固件make 命令详解readme 给出了在搭建好构建环境后编译该键盘的标准命令make chavdai40/rev1:default make chavdai40/rev2:defaultQMK 的 make 目标格式为键盘路径:键位名称。其中chavdai40/rev1与chavdai40/rev2对应键盘的物理路径分别指向 keyboards/chavdai40/rev1 与 keyboards/chavdai40/rev2default是官方提供的默认键位见 keymaps/default/keymap.c。编译产物通常生成在build/目录下。构建环境搭建与 make 用法的详细说明可参考仓库内的 新手指南开始使用 与 make 指南。四、刷写固件stm32-dfu 流程readme 同时给出了刷写命令make chavdai40/rev1:default:flash make chavdai40/rev2:default:flash在编译目标末尾追加:flash即可在编译完成后自动进入刷写流程。由于该键盘的 bootloader 为stm32-dfu刷写前需要让 PCB 进入 DFU 模式通常是通过 Bootmagic 组合键或 PCB 上的复位方式触发。具体刷写步骤可参考 刷写指南 中关于 DFU 设备的说明。需要特别注意的是刷写命令与编译命令一样必须按版本区分rev1 与 rev2 的固件不可混用因为二者的矩阵列引脚定义不同。五、矩阵与布局定义源码视角矩阵结构从 rev1/keyboard.json 与 rev2/keyboard.json 可以看出Chavdai40 采用4 行 × 13 列的矩阵配合COL2ROW二极管方向。行列引脚的具体映射见上文表格这组引脚会被 QMK 的矩阵扫描代码用于逐行逐列读取按键状态。两种物理布局42 键与 44 键keyboard.json 中定义了两个 layoutLAYOUT_42key42 键配列。最底行仅 5 个键位Alt、Win、Space、Win、Alt没有独立的 Esc 与 Layer 键F 区符号键需要由其他键位承担见下文 Dvorak 42 键键位。LAYOUT_44key44 键配列。最底行 7 个键位Alt、Win、Layer、Space、Win、Alt、Esc比 42 键多出 Layer 切换键与 Esc 键。以 LAYOUT_44key 为例其布局数据通过x、y、w坐标描述物理排布第一行 13 键首尾 1.5u第二行 12 键首键 1.75u、尾键 2.25u第三行 12 键首键 2.25u、尾键 1.25u ×2底行 7 键整体呈 40% 键盘典型的分区错位结构。这些坐标数据不仅用于可视化也是 QMK 生成键位映射、支持 QMK Configurator 等工具的基础。六、官方键位映射分析仓库在 keymaps/ 下提供三套官方键位1. default44 键 QWERTYdefault/keymap.c 使用LAYOUT_44key包含两层Base LayerQWERTY 布局。第一行Tab Q W E R T Y U I O P - Bspc第二行Ctrl A S D F G H J K L ; Enter第三行Shift Z X C V B N M , . / Del底行Alt Win Layer(1) Space Win Alt Esc其中MO(1)用于临时切入 Layer 1。Layer 1数字与符号层。第一行是~ ! # % ^ * ( ) [ ]第二行1-0第三行F2-F10与其余为KC_TRNS透传。2. 44keys-dvorak44 键 Dvorak44keys-dvorak/keymap.c 结构与 default 完全一致仅将字母区替换为 Dvorak 布局如第一行为/ , . P Y F G C R L -第二行为A O E U I D H T N S等符号键-、[、]等也按 Dvorak 习惯放置。3. 42keys-dvorak42 键 Dvorak42keys-dvorak/keymap.c 使用LAYOUT_42key。由于没有独立的 Layer 键和 Esc 键其设计把第三行末尾的Z键之后直接放MO(1)Layer 键且取消了 Esc数字/符号层逻辑与前两者保持一致第一行符号、第二行数字、第三行 F2-F10。官方键位中的 tap-hold 调参default/config.h 是一个值得注意的细节它包含三行键位级覆盖配置#define PERMISSIVE_HOLD #define RETRO_TAPPING #define TAPPING_TERM 5PERMISSIVE_HOLD放宽 Mod-Tap 的判定——在 Tap 键期间按下其他键时立即触发 Hold 修饰键提高组合键响应速度RETRO_TAPPING允许在 Tap 超时后仍按点按处理已按下的键TAPPING_TERM 5将 tap-hold 判定窗口设置为极短的 5ms属于高度个性化的激进调参普通用户若复制此配置需结合自己的输入习惯评估是否合适。七、自定义键位动手修改的建议若要为 Chavdai40 编写自己的键位建议从复制官方键位开始操作步骤为在keyboards/chavdai40/keymaps/下新建目录例如keymaps/mylayout/在其中创建keymap.c仿照 default/keymap.c 的结构使用LAYOUT_42key或LAYOUT_44key宏填充键值如需调整 tap-hold 或启动行为可再创建config.h覆盖默认参数编译验证make chavdai40/rev1:mylayout按你的 PCB 版本选择 rev1 或 rev2。注意LAYOUT_42key与LAYOUT_44key的参数个数不同42 与 44 个键值编写键位时须与所选宏严格对应。八、延伸阅读构建环境搭建新手指南开始使用make 规则详解make 指南刷写流程刷写固件键位编写基础键位映射Keymap层与 MO 键说明层Layers综上所述Chavdai40 是一套结构清晰、双版本并存的 40% 键盘 QMK 支持理解 rev1/rev2 的引脚差异、掌握make chavdai40/revX:default[:flash]的构建刷写流程、结合 keyboard.json 与官方键位进行二次定制即可完整驾驭这款小巧的可装饰键盘。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考