尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

QMK 固件中的 Corne (CRKBD) 分体键盘完全指南:构建刷写、Bootloader 与 RGB Matrix 进阶配置

QMK 固件中的 Corne (CRKBD) 分体键盘完全指南:构建刷写、Bootloader 与 RGB Matrix 进阶配置 QMK 固件中的 Corne (CRKBD) 分体键盘完全指南构建刷写、Bootloader 与 RGB Matrix 进阶配置【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmwareCorneCRKBD是当前开源社区中极具代表性的 3×6 垂直错列分体键盘单侧 3 行 6 列共 18 个按键外加 3 枚拇指键并支持扩展列与旋转编码器。本文以 QMK Firmware 仓库中 keyboards/crkbd/readme.md 为骨架结合仓库内 rev1/rev4 的配置数据与crkbd.c、默认 keymap 等源码系统讲解 Corne 的固件编译与刷写命令、Bootloader 进入方式以及用 RGB Matrix 替代 RGB Light 的完整配置方案。读完本文你将能独立完成 Corne 各版本固件的编译刷写并掌握逐键 RGB 动画的精细调校。Corne 在 QMK 仓库中的组织方式在 QMK 仓库中Corne 相关代码全部位于 keyboards/crkbd/ 目录按版本与变体组织rev1/v1–v3 PCB 的固件定义keyboard.json基于 Pro MicroATmega32U4平台rev4_0/与rev4_1/v4 PCB改用 RP2040 主控并提供mini与standard两种子型号的布局数据r2g/全 SMD 贴装版本 CRKBD R2G 的独立支持目录keymaps/default/官方默认键位keymap.c与 config.hcrkbd.c键盘级逻辑主要是 OLED 显示的实现顶层 info.json 声明了全系列公共属性。顶层 info.json 中可以看到 Corne 的核心硬件事实制造商maintainer为 foostanUSB VID 为0x4653已启用bootmagic、extrakey、nkro、oled与rgb_matrix特性rgblight默认关闭并声明了LAYOUT_split_3x5_3、LAYOUT_split_3x6_3两种社区布局——前者即裁掉最外侧一列的 3×5 变体。layout_aliases中的LAYOUT指向LAYOUT_split_3x6_3这也是默认 keymap 实际使用的布局宏名。固件编译与刷写v1–v3 与 v4 的命令差异原文档给出的刷写命令按版本区分直接决定了你要用的-kb目标名称。v1–v3 版本Pro Micro 主控qmk flash -kb crkbd/rev1 -km defaultv4 版本RP2040 主控qmk flash -kb crkbd/rev4 -km default这两条命令都会使用 keymaps/default 作为键位方案编译固件并直接烧录。其中-kb crkbd/rev4实际会被解析到 rev4_0/rev4_1 的具体配置仓库中以rev4_0/、rev4_1/目录分别存放其 info.json。若使用传统 make 方式命令等价写作make crkbd/rev1:default。对比两份键盘配置可以看到两代硬件在 QMK 侧的差异点配置项rev1v1–v3rev4_0/rev4_1v4主控/开发板Pro Microdevelopment_board: promicroRP2040Bootloader常规 AVR bootloaderrp2040并启用RP2040_BOOTLOADER_DOUBLE_TAP_RESET见 rev4_0/config.h矩阵接线行列扫描COL2ROW列脚F4/F5/F6/F7/B1/B3、行脚D4/C6/D7/E6直接接线direct pins矩阵左右手分别定义分体串行半双工串行split.serial.pin: D2全双工 USARTSERIAL_USART_TX_PIN GP12、SERIAL_USART_RX_PIN GP13driver: vendorWS2812 灯带引脚D3引脚GP10driver: vendor旋转编码器默认无GP5/GP7、GP6/GP7两组右手侧另有定义并启用encoder特性此外 rev4 还额外启用了mousekey特性并在 rev4_0/info.json 中配置了dynamic_keymap.layer_count: 6即动态键位表预留 6 层支持在运行时通过 QMK VIA 等工具编辑键位。分体通信方面rev4 开启了split.transport.watchdog与usb_detect.timeout: 500用于在单侧未接 USB 时可靠启动。R2G 变体的刷写命令略有不同键位示例为mb_viaqmk flash -kb crkbd/r2g -km mb_via编译与刷写的前提是完成 QMK 构建环境配置。新手可以按仓库中的 docs/newbs.md 与 docs/newbs_building_firmware.md 一步步搭建环境、创建自己的 keymap刷写细节可参考 docs/flashing.md。进入 Bootloader 的两种方式原文档指出Corne PCB 在 TRRS 插座旁提供了Reset与Boot两颗按钮按下即可直接进入 bootloader 等待刷写。更方便的方式是利用 Bootmagic按住Q左半侧最上方外侧键或P右半侧对应位置再插入 USB 线键盘会跳转进入 bootloader同时重置 EEPROM持久化存储。这个键位选择与布局定义中的bootmagic.matrix配置一一对应左手侧 Bootmagic 矩阵位置[0, 1]分体模式下右半侧对应位置为[4, 1]见 info.json。文档特别说明由于 PCB 最外侧一列设计为可掰断breakaway column理论上最角落的键位[0, 0]与[4, 0]可能已被移除因此 Bootmagic 入口保留在 Q/P 两个键上以兼容不同焊接方案。对于 v4RP2040还有第三种方式RP2040_BOOTLOADER_DOUBLE_TAP_RESET被启用后rev4_0/config.h在上电后的RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT500ms窗口内快速双击 Reset 也可进入 bootloader。此外默认 keymap 第 3 层把左上角键位绑定为QK_BOOTkeymap.c开机后按下MO(3)层再按该键同样能触发复位。用 RGB Matrix 替换 RGB Light逐键灯效的完整配置原文档的核心实操内容是把 Corne 的灯效系统从 RGB Light 切换到 RGB Matrix。前者只能整体统一变色而后者支持逐键独立控制的动画效果体验明显更好。前提是键盘确实焊接了轴下灯in-switch LEDs否则无需进行此项改造。第一步在 keymap 的rules.mk中切换特性RGBLIGHT_ENABLE no RGB_MATRIX_ENABLE yes这两行的作用是把 RGB Light 关闭、RGB Matrix 打开。仓库顶层 info.json 中features字段的rgblight: false、rgb_matrix: true正是这套推荐的默认组合而 rev1 的 keyboard.json 里features.rgblight: true保留了旧版灯效支持的兼容入口方便希望沿用 RGB Light 的用户。第二步在config.h中启用行为宏与动画宏在原文档给出的完整配置基础上逐项说明其作用#ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) # define RGB_MATRIX_SLEEP // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. # define RGB_MATRIX_HUE_STEP 8 # define RGB_MATRIX_SAT_STEP 8 # define RGB_MATRIX_VAL_STEP 8 # define RGB_MATRIX_SPD_STEP 10 /* Enable the animations you want/need. You may need to enable only a small number of these because * * they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */ // RGB Matrix Animation modes. Explicitly enabled // For full list of effects, see: // https://docs.qmk.fm/#/feature_rgb_matrix?idrgb-matrix-effects # define ENABLE_RGB_MATRIX_ALPHAS_MODS # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT # define ENABLE_RGB_MATRIX_BREATHING # define ENABLE_RGB_MATRIX_BAND_SAT # define ENABLE_RGB_MATRIX_BAND_VAL # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL # define ENABLE_RGB_MATRIX_CYCLE_ALL # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL # define ENABLE_RGB_MATRIX_DUAL_BEACON # define ENABLE_RGB_MATRIX_RAINBOW_BEACON # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS # define ENABLE_RGB_MATRIX_RAINDROPS # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS # define ENABLE_RGB_MATRIX_HUE_BREATHING # define ENABLE_RGB_MATRIX_HUE_PENDULUM # define ENABLE_RGB_MATRIX_HUE_WAVE # define ENABLE_RGB_MATRIX_PIXEL_RAIN # define ENABLE_RGB_MATRIX_PIXEL_FLOW # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined # define ENABLE_RGB_MATRIX_TYPING_HEATMAP # define ENABLE_RGB_MATRIX_DIGITAL_RAIN // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE # define ENABLE_RGB_MATRIX_SOLID_REACTIVE # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS # define ENABLE_RGB_MATRIX_SPLASH # define ENABLE_RGB_MATRIX_MULTISPLASH # define ENABLE_RGB_MATRIX_SOLID_SPLASH # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif关键宏的含义与调校建议RGB_MATRIX_KEYPRESSES/RGB_MATRIX_KEYRELEASES让灯效对按键按下/释放产生反应是 reactive 类动画的前提RGB_MATRIX_SLEEP系统挂起时自动关闭灯效省电且避免 OLED/背光常亮RGB_MATRIX_FRAMEBUFFER_EFFECTS开启帧缓冲类效果如打字热力图TYPING_HEATMAP、DIGITAL_RAIN数字雨RGB_MATRIX_MAXIMUM_BRIGHTNESS 150把最大亮度限制在 255 的 150文档明确警告过高亮度可能导致控制器崩溃——这一约束在仓库数据中同样存在rev1 的rgb_matrix.max_brightness为 120rev4 更保守地设为 50RGB_MATRIX_HUE_STEP/SAT_STEP/VAL_STEP/SPD_STEP控制每次按键调节色相、饱和度、亮度、速度的步进值步进越大调节越快注释中的RGB_MATRIX_LED_PROCESS_LIMIT与RGB_MATRIX_LED_FLUSH_LIMIT分别限制单次任务处理的 LED 数量与动画刷新频率16ms ≈ 60fps可用于提升键盘响应速度适合在开启大量动画后固件性能吃紧时启用每个ENABLE_RGB_MATRIX_*只负责把对应动画编入固件以节省 Flash 空间实际运行中通过RM_*键码切换。需要注意依赖关系TYPING_HEATMAP、DIGITAL_RAIN需要RGB_MATRIX_FRAMEBUFFER_EFFECTSSOLID_REACTIVE_*、SPLASH系列需要RGB_MATRIX_KEYPRESSES或RGB_MATRIX_KEYRELEASES配置时请按注释成组启用并确认编译通过。完成以上配置后键盘就使用 RGB Matrix 效果操作逻辑回归 QMK 标准的 RGB 控制键码。这一点在默认 keymap 中有直观体现第 3 层Adjust 层的按键即RM_TOGG开关灯效、RM_NEXT下一个动画、RM_HUEU/RM_HUED、RM_SATU/RM_SATD、RM_VALU/RM_VALD调节色相/饱和度/亮度见 keymap.c该层同时把旋转编码器顺时针/逆时针绑定为RM_VALU/RM_VALDENCODER_MAP_ENABLE分支中的encoder_map实现了不用看键盘即可滚动调节亮度的操作体验。从仓库数据理解灯珠布局rev1 的 keyboard.json 声明了rgblight.led_count: 54与split_count: [27, 27]——即左右手各 27 颗 LED 共 54 颗并在rgb_matrix.layout中以matrix坐标 x/y物理坐标 flags的形式逐颗定义了 LED 与按键的映射关系flags 1 表示键位灯、2 表示下灯/背光、4 表示可随键位变化的按键灯。理解这份映射是后续手动定制逐键动画如按层变色的基础。rev4 由于去掉了最外侧 breakaway 列LED 总数调整为 46 颗split_count: [23, 23]。配套的 OLED 与分体特性源码佐证虽然原文档未展开但仓库源码显示了 Corne 与上述灯效并列的两项关键能力有助于完整理解这块键盘在 QMK 中的实现OLED 显示crkbd.c 在OLED_ENABLE下实现了完整的键盘级 OLED 逻辑——主手master一侧渲染当前层状态Default/Lower/Raise/Adjust与最近按键日志行列号、键码、字符副手offhand一侧通过oled_init_kb翻转 180° 并渲染 Corne logo 位图oled_render_logo。字符位图来自 lib/glcdfont.crev4 的 post_config.h 将OLED_FONT_H指向该文件并把OLED_UPDATE_INTERVAL设为 50ms。分体架构rev1 通过split.serial.pin走半双工串行同步矩阵状态rev4 改用全双工 USART 并允许通过GP21引脚split.handedness.pin在固件层判定左右手配合split.enabled与矩阵/编码器的左右手镜像定义保证任意一侧单独接 USB 都能正常工作。小结围绕 Corne 在 QMK 中的使用可以归纳为三条主线按版本选择正确的编译目标v1–v3 用crkbd/rev1v4 用crkbd/rev4R2G 用crkbd/r2g用 Reset/Boot 按钮、Q/P Bootmagic 或 RP2040 双击 Reset 进入 bootloader以及在rules.mk与config.h中启用 RGB Matrix 并获得逐键动画能力。本文给出的所有配置项均可在仓库对应文件中直接核对结合 keymaps/default 与各版本 info.json你可以在此基础上定制自己的分层灯效、编码器映射与 OLED 显示构建出完全个人化的 Corne 固件。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表