QMK 中 Piantor Pro 键盘实现解析:RP2040 上的 42 键热插拔 Split 键盘构建与烧录
2026/9/17 16:10:35 网站建设 项目流程

QMK 中 Piantor Pro 键盘实现解析:RP2040 上的 42 键热插拔 Split 键盘构建与烧录

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

QMK 仓库中 keyboards/beekeeb/piantor_pro/readme.md 定义了 Piantor Pro——一款基于 RP2040 的 42 键热插拔(hotswappable)键盘。本文以该文档为主体,结合其 config.h、keyboard.json 与默认键帽映射 keymap.c 的源码,完整覆盖从编译(make beekeeb/piantor_pro:default)、四层键位解析到 RP2040 bootloader 烧录的全流程,读完后可独立完成该键盘的固件构建、键位定制与固件烧写。

产品定位与硬件概况

原文档给出的核心信息为:

  • 键盘型号:Piantor Pro,42 键、热插拔、RP2040 主控;
  • 键盘维护者:beekeeb;
  • 固件构建命令make beekeeb/piantor_pro:default(需先搭好 QMK 构建环境);
  • 烧录方式:按住 BOOT 键插入 USB 进入 bootloader,再运行make beekeeb/piantor_pro:default:flash,或直接将编译出的 uf2 固件拷贝到 U 盘形态的存储设备。

从 keyboard.json 可进一步确认其硬件画像:

  • processorRP2040bootloaderrp2040(即 UF2 固件形态);
  • 键阵方向为COL2ROW
  • 启用了 QMK 的 split 键盘框架(split.enabled: true,串行驱动为vendor)——从源码结构看,左右两半共用同一颗 RP2040,通过本地矩阵模拟 split 结构,左右半侧的区分由 config.h 中的SPLIT_HAND_PIN(GP17)判断;
  • 启用的固件特性:bootmagicextrakeymousekeynkro(N-Key Rollover,全键无冲);
  • USB 标识为厂商 beekeeb 申请的0xBEEB(VID)/0x0002(PID),设备版本1.0.0

该键盘与仓库中的近亲型号 Piantor(RPi Pico 平台、可断列、Cantor fork)同属 beekeeb 系列,二者构建命令格式一致,可互为参考。

构建环境与编译

原文档给出的构建入口为:

make beekeeb/piantor_pro:default

其中beekeeb/piantor_pro是键盘在仓库中的相对路径,default是 keymaps/default/keymap.c 对应的键位配置名。原文档同时指出,正式编译前需先完成构建环境搭建,仓库内对应的官方文档为:

  • 构建环境搭建说明;
  • make 编译指南;
  • 零基础入门可参考 QMK 新人完整指南。

编译产物位于.build/beekeeb_piantor_pro_default/下,其中beekeeb_piantor_pro_default.uf2即为烧录用的 UF2 固件。

键阵与引脚分配解析

keyboard.json 中的matrix_pins定义了 42 键的物理键阵:

"matrix_pins": { "cols": ["GP11", "GP12", "GP13", "GP14", "GP15", "GP16"], "rows": ["GP7", "GP8", "GP9", "GP10"] }

名义上是 4 行 × 6 列,但 Piantor Pro 将其拆成左右两个镜像的 4×6 半区共 48 个物理位置,其中 42 个实际布键(每侧 3×6 主区 + 3 个 thumb 键)。keymap.c 的注释布局图印证了这一结构:

[0] = LAYOUT_split_3x6_3( //,-----------------------------------------------------. ,-----------------------------------------------------. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, ... KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT

即左半区 18 键 + 右半区 18 键,外加中间底部一排 6 键(每侧 3 键),合计 42 键。

布局宏LAYOUT_split_3x6_3由社区布局提供:layouts/community/split_3x6_3/readme.md 声明了该布局宏名,默认实现可参考 layouts/default/split_3x6_3/default_split_3x6_3/keymap.c;keyboard.json 中的community_layouts字段也显式引用了它,并给出了带 x/y 坐标的 42 键物理坐标表(用于 QMK Configurator 渲染)。

config.h 则补充了板级硬件细节:

#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U #define SERIAL_USART_FULL_DUPLEX #define SERIAL_USART_TX_PIN GP0 #define SERIAL_USART_RX_PIN GP1 #define SERIAL_USART_PIN_SWAP #define USB_VBUS_PIN GP19 #define SPLIT_HAND_PIN GP17 #define SPLIT_HAND_PIN_LOW_IS_LEFT

逐项说明:

含义
RP2040_BOOTLOADER_DOUBLE_TAP_RESET+..._TIMEOUT 1000U开启“双击 RESET 进入 bootloader”:1 秒内双击复位键即可跳入 RP2040 的 UF2 bootloader,作为 BOOT 键方式之外的第二种进入手段
SERIAL_USART_*(GP0/GP1,全双工、引脚对调)RP2040 的 UART 引脚分配。从源码结构看,这些引脚在split.serial.driver: vendor配置下用于 split 框架的本地/硬件串口通道
USB_VBUS_PIN GP19检测 USB 供电(VBUS)的引脚,用于判断是否连接供电
SPLIT_HAND_PIN GP17+SPLIT_HAND_PIN_LOW_IS_LEFT通过 GP17 的电平判断当前是左半还是右半(低电平为左),供 split 框架定位半侧

默认键位:四层结构详解

keymaps/default/keymap.c 提供了 4 个 layer,全部使用LAYOUT_split_3x6_3

  • Layer 0(主层):标准 QWERTY 布局。左侧 Tab 置于左上角,底部 thumb 区为LGUI / MO(1) / SPC / ENT / MO(2) / RALT,两个MO键分别切换到 Layer 1 和 Layer 2;
  • Layer 1(数字与方向键):上排1–0数字键,右侧 thumb 区复用为方向键LEFT / DOWN / UP / RIGHT,底部切换键改为MO(3)
  • Layer 2(符号层):上排与右侧为 Shift 组合符号(! @ # $ % ^ & * ( )- = [ ] \_ + { } | ~`);
  • Layer 3(启动层):左上角放置QK_BOOT,按下即可直接重启进入 RP2040 bootloader,为日常烧录提供纯键盘操作入口。

一个值得注意的细节是 Layer 1/2 中方向键与符号键的排布:右侧 3×6 主区承担方向键和符号,而左侧大片区域标记为XXXXXXX(无功能占位),这说明该键位是按右手主操作习惯设计的,实际使用可按个人习惯重排。

自定义键位时,复制该 default keymap 目录、修改keymap.c并以新目录名作为 make 参数(如make beekeeb/piantor_pro:my_layout)即可,QMK 会按目录名自动定位键位文件。

固件烧录与 Bootloader 进入方式

原文档的 Flashing 章节给出:

先断开键盘与电脑的连接;按住BOOT键的同时将键盘插入电脑,即可进入 bootloader 模式。

随后两种写入方式:

# 方式一:make 直刷 make beekeeb/piantor_pro:default:flash # 方式二:手动拷贝 # 将 .build/beekeeb_piantor_pro_default/beekeeb_piantor_pro_default.uf2 # 拷贝到键盘挂载出来的 USB 大容量存储设备(U 盘)上

结合源码,该键盘实际拥有三种进入 bootloader 的途径:

  1. BOOT 键:原文档说明的硬件按钮方式,按住 BOOT 键插入 USB;
  2. 双击 RESET:config.h 中RP2040_BOOTLOADER_DOUBLE_TAP_RESET使能在 1 秒超时(1000U)内双击复位键直接进入 UF2 bootloader;
  3. 按键组合:默认 keymap Layer 3 左上角的QK_BOOT键,按下后固件自行重启并进入 bootloader,无需物理按键。

烧录完成后键盘会自动复位并以新固件启动。RP2040 的 UF2 bootloader 会将固件写入 flash 并重载,因此拷贝 uf2 的方式与make ...:flash效果等价,后者只是自动完成了“识别设备 + 拷贝”步骤。

特性与可定制点

除原文档的构建/烧录说明外,结合仓库文件可梳理出以下实用定制点:

  • NKRO:keyboard.json 中"nkro": true,出厂默认全键无冲;
  • Bootmagic:已启用,即在开机时按特定键组合(默认 Ctrl+左 Shift)可直接进入 bootloader;
  • Mousekey / Extrakey:默认启用鼠标键与扩展键(音量、媒体键等)支持;
  • split 半侧判定:如需调整左右半判定逻辑,改动点在 config.h 的SPLIT_HAND_PIN系列宏;
  • USB 描述符:VID/PID 固定为 beekeeb 厂商标识,make ...:flash即依赖该 PID 识别设备。

小结

Piantor Pro 在 QMK 中的实现是“单 RP2040 + split 框架 + 本地 4×6 键阵”的典型范例:readme.md 提供构建与烧录的最小操作集,keyboard.json 描述键阵、特性与 USB 标识,config.h 落实 BOOTLOADER 双击复位、串口与半侧判定引脚,keymap.c 给出含QK_BOOT启动层的四层默认键位。掌握以上文件即可独立完成该键盘的编译、键位定制与固件烧写。

【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询