QMK 固件之 Crawlpad:Keycrawl 限定 4x4 小键盘/数字键盘的构建与固件解析 📅 发布时间:2026/9/20 13:16:25 👁 浏览次数: 嵌入式固件驱动开发硬件开发【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址https://gitcode.com/GitHub_Trending/qm/qmk_firmware点击查看免费下载Crawlpad 是 QMK 固件仓库中一款 4x4 正交 macropad/numpad宏键盘/数字小键盘由 Cole Markham 展开并结合 keyboard.json、config.h 与默认键位源码为你完整还原该键盘的硬件配置、编译方法、默认键位布局以及板载 LED 的实现原理帮助你掌握从零编译固件到自定义键位的完整路径。一、Crawlpad 是什么Crawlpad 是一块 4 行 × 4 列的正交小键盘。从其定位看它既可作为独立数字小键盘使用默认键位直接给出完整小键盘布局也可当作自定义宏键盘承载任意快捷操作。readme 中明确说明其硬件仅在 Keycrawl 活动中提供属于限量/活动专属硬件。项目说明键盘名称Crawlpad制造商WoodKeys.Click维护者Cole Markham硬件形态4x4 正交 macropad/numpad硬件获取仅限 Keycrawl 活动详情可联系 awwwwwwyeaahhhhhh二、固件编译从环境准备到刷写QMK 的键盘都遵循配置即声明、make 即编译的统一流程。Crawlpad 的 readme 给出了核心编译命令make crawlpad:default其中crawlpad是键盘名对应 keyboards/crawlpad 目录default是键位名对应 keymaps/default/keymap.c。执行前需要先完成 QMK 构建环境搭建如果是第一次接触 QMK建议从新手指南开始。编译成功后产物即为可刷入 MCU 的固件文件。在刷写环节Crawlpad 的 bootloader 配置为atmel-dfu见 keyboard.json主控为 Atmel AVR 家族的atmega32u4USB VID/PID 分别为0xFEED与0x6070设备版本号0.0.1。这意味着刷写时通常需要使用支持 DFU 协议的刷写工具如dfu-programmer或 QMK 内置的 dfu 刷写命令。此外默认键位在功能层上直接暴露了QK_BOOT键按下即可让键盘进入 bootloader 模式无需拆壳短接复位脚。三、硬件矩阵与电气配置键盘的核心是矩阵扫描Crawlpad 的矩阵引脚定义在 keyboard.json 中matrix_pins: { cols: [D4, D5, D6, D7], rows: [F0, F1, F4, F5] }, diode_direction: ROW2COL4 列D4、D5、D6、D74 行F0、F1、F4、F5二极管方向ROW2COL即二极管正极接行、负极接列这是 QMK 中常见的矩阵接法决定扫描时行列驱动的方向必须在配置中与硬件实际接线保持一致。配合数据驱动配置QMK 的>rgblight: { led_count: 3, animations: { breathing: true, rainbow_mood: true, rainbow_swirl: true, snake: true, knight: true, christmas: true, static_gradient: true, rgb_test: true, alternating: true, twinkle: true } }, ws2812: { pin: D3 }由于在配置中开启了rgblight功能并声明了对应动画编译后固件会自动包含 RGBLIGHT 驱动与全部动画实现运行时可通过 QMK 的 RGB 控制键码如RGB_TOG、RGB_MOD等切换颜色、模式与亮度无需编写任何 C 代码。2. 四颗行 LED自定义驱动除了 RGB 灯Crawlpad 还在 config.h 中定义了四颗与矩阵行对应的独立 LED#define LED_ROW_PINS { 8, 9, 10, 11 }注意这里使用的是 AVR 的裸引脚编号8/9/10/11注释也说明应改为使用命名引脚即建议改用B4这类命名宏。在 keymaps/default/keymap.c 中可以看到完整的驱动逻辑const uint8_t LED_PINS[] LED_ROW_PINS;将宏展开为引脚数组matrix_init_user()中通过gpio_set_pin_output(B4..B7)与gpio_write_pin_low(B4..B7)将 B4-B7 设为输出并拉低熄灭自定义键码 BL1-BL4 在process_record_user()中通过gpio_write_pin(pin, record-event.pressed)直接控制对应引脚电平实现按下点亮、松开熄灭另有set_led()函数展示了更底层的 AVR 端口寄存器操作_SFR_IO8配合_BV可作为直接操作端口的参考写法。由此可以看到Crawlpad 把声明式配置RGB 手写 GPIO 控制行 LED两种风格结合在了一起前者适合零代码启用高级灯效后者适合做精确到引脚的硬件控制。五、默认键位小键盘即用、功能层可扩展默认键位文件 keymaps/default/keymap.c 定义了完整的双层布局层 0默认层标准数字小键盘KC_P7 KC_P8 KC_P9 KC_PPLS KC_P4 KC_P5 KC_P6 KC_PMNS KC_P1 KC_P2 KC_P3 KC_PAST MO(1) KC_P0 KC_PDOT KC_ENT左上角到右下角依次为数字键 7-9、4-6、1-3以及加减乘除、小数点、回车等小键盘符号左下角是MO(1)按住进入层 1。层 1功能层KC_NUM BL1 KC_TRNS KC_PSLS QK_BOOT BL2 KC_TRNS KC_TRNS KC_TRNS BL3 KC_TRNS KC_TRNS KC_TRNS BL4 KC_TRNS KC_TRNSKC_NUMNum Lock 开关QK_BOOT一键进入 bootloader配合atmel-dfubootloader 完成刷写BL1-BL4自定义键码控制四颗行 LED 的点亮/熄灭KC_TRNS透传键继续沿用层 0 对应位置的键值KC_PSLS小键盘斜杠。自定义键码从SAFE_RANGE开始声明BL1 SAFE_RANGE, BL2, BL3, BL4这是 QMK 官方推荐的自定义键码起始点可避免与内置键码冲突。整份默认键位开箱即用无需任何修改即可作为数字小键盘或刷机工具使用。六、布局支持ortho_4x4 社区布局Crawlpad 在 keyboard.json 中声明了community_layouts: [ortho_4x4]并定义了LAYOUT_ortho_4x4其 16 个键位从matrix [0,0]到matrix [3,3]按 4x4 顺序排列x/y 坐标从 0 到 3。对应的社区布局位于 layouts/community/ortho_4x4其中 layout.json 以 JSON 形式描述了这个 4x4 的物理排布[,,,], [,,,], [,,,], [,,,]声明社区布局后任何ortho_4x4布局用户都可以在符合该布局的键盘间复用同一份键位定义这正是 QMK 社区布局community layouts机制的价值——Crawlpad 用户可以直接借助仓库中所有ortho_4x4相关资源来起步。七、其他功能开关速览keyboard.json 中的features与qmk段定义了编译期功能开关features: { bootmagic: false, extrakey: true, mousekey: true, nkro: true }, qmk: { locking: { enabled: true, resync: true } }extrakey: true启用系统/媒体控制键码如音量、亮度等mousekey: true启用鼠标键功能nkro: true启用 N 键无冲突NKRO支持更多按键同时按下bootmagic: false关闭 Bootmagic 快捷键功能qmk.locking.enabled/resync: true启用 QMK 层面的锁定键Caps Lock 等状态支持与状态重同步。这些开关在编译时直接决定固件体积与包含的功能模块开发者可根据实际需求在自定义键位或键盘级配置中调整。八、动手实践如何自定义你的 Crawlpad在完成环境搭建后可按以下路径自定义固件复制默认键位以 keymaps/default 为模板新建你自己的键位目录例如keymaps/mine复制其中的 keymap.c改写键位数组将keymaps[][MATRIX_ROWS][MATRIX_COLS]中的键值替换为 docs/keycodes.md 中定义的标准键码或仿照默认键位自定义SAFE_RANGE起始的自定义键码并在process_record_user()中处理编译验证执行make crawlpad:mine检查编译输出刷写固件通过功能层QK_BOOT进入 DFU 模式后刷写注意主控为atmega32u4、bootloader 为atmel-dfu。总结Crawlpad 虽是一款活动限定的 4x4 小键盘却是理解 QMK 项目结构的绝佳样本数据驱动的硬件声明矩阵、RGB、USB、bootloader集中在 keyboard.json底层引脚宏与命令键定义位于 config.h而完整的双层默认键位与 GPIO 行 LED 控制逻辑则沉淀在 keymaps/default/keymap.c。从make crawlpad:default一行命令出发你可以沿着配置、编译、刷写、自定义键位这条链路把一块 4x4 小键盘从数字小键盘改造成完全贴合自己工作流的专属宏键盘。赞分享嵌入式固件驱动开发硬件开发【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址https://gitcode.com/GitHub_Trending/qm/qmk_firmware点击查看免费下载相关推荐QMK 键盘固件开发实战Clawsome NumerosLos Numeros5x4 数字小键盘固件解析与编译QMK 键盘固件开发实战Clawsome NumerosLos Numeros5x4 数字小键盘固件解析与编译 导读 本文以 QMK Firmware 仓嵌入式固件驱动开发硬件开发QMK PocketPad 键盘固件完全指南18 键宏数字小键盘的构建、刷写与 Bootloader 详解QMK PocketPad 键盘固件完全指南18 键宏数字小键盘的构建、刷写与 Bootloader 详解 PocketPad 是 ButterKeebs 推嵌入式固件驱动开发硬件开发QMK 中 ai03 Soyuz 单 PCB 数字小键盘固件键盘配置解析与键位定制实战QMK 中 ai03 Soyuz 单 PCB 数字小键盘固件键盘配置解析与键位定制实战 QMK 固件仓库中的 ai03/soyuz 是一款单 PCBsing嵌入式固件驱动开发硬件开发上一篇探索算法之旅深度挖掘《算法》一书的开源解决方案下一篇hvpp 开源项目安装与使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考