QMK 中的 Chew 34 键 Choc 紧凑键盘:monobloc 与 split 双版本固件配置与刷写指南
2026/9/19 16:43:36 网站建设 项目流程

QMK 中的 Chew 34 键 Choc 紧凑键盘:monobloc 与 split 双版本固件配置与刷写指南

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

Chew 是一款被设计者称为 "crunched"(极致压缩)的 34 键 Choc 间距机械键盘,在 QMK 固件仓库中同时提供 monobloc(一体式)与 split(分体式)两种形态,均以 Waveshare RP2040-Zero 为核心主控。本篇指南将以 keyboards/chew/readme.md 为主线,结合仓库内的 info.json、mono/keyboard.json、split/keyboard.json 与两套默认键位文件,完整讲解两种版本的系统需求、矩阵与分体通信配置、默认键位设计以及 RP2040 的双重方式进入 Bootloader 与固件刷写流程。

键盘概览:为极致便携而压缩的 34 键布局

Chew 是一把 34 键的 Choc 矮轴间距键盘,核心卖点是在保证可用性的前提下把按键数量压缩到最少,配合 Choc V1 矮轴与矮键帽,实现极薄、极便携的携带形态。其 QMK 支持由 Florent Linguenheld 维护,固件支持以chew/monochew/split两个独立目标存在于仓库中,二者共享同一套 34 键键位思路,但硬件形态与矩阵实现截然不同。

仓库内的目录结构清晰地将两个版本分开管理:

keyboards/chew/ ├── info.json # 全系列共用信息(处理器、bootloader、features、USB 描述) ├── readme.md # 系列总览 ├── mono/ # 一体式版本 │ ├── keyboard.json # 矩阵引脚与 LAYOUT 定义 │ ├── readme.md # 一体版物料清单与刷写说明 │ └── keymaps/default/keymap.c └── split/ # 分体式版本 ├── keyboard.json # 直接矩阵 + 分体通信配置 ├── readme.md # 分体版物料清单与刷写说明 └── keymaps/default/keymap.c

从系列共用的 info.json 可以看到硬件核心信息:

{ "manufacturer": "florent@linguenheld.fr", "maintainer": "florent@linguenheld.fr", "bootloader": "rp2040", "features": { "bootmagic": true, "extrakey": true, "mousekey": true, "nkro": true }, "processor": "RP2040", "usb": { "device_version": "1.0.0", "pid": "0x0000", "vid": "0xFEED" } }

关键点包括:处理器为 RP2040(ARM Cortex-M0+ 双核),Bootloader 采用 RP2040 平台原生方案,并在默认 feature 中开启了bootmagic(可在启动时通过按键组合重置 EEPROM/进入 Bootloader)、extrakey(媒体键)、mousekey(鼠标键)与nkro(全键无冲),这些都是后续键位设计与日常使用的基础能力。

两种形态:monobloc 一体式与 split 分体式

chew/mono是单 PCB 的一体式版本("monobloc"),chew/split则是左右手各一块 PCB、通过 TRRS 线连接的分体版本。二者共享 34 键位规划,但矩阵实现、所需 PCB 数量与附加硬件完全不同,对比关系如下:

对比项chew/monochew/split
PCB 数量1x PCB2x PCB(左右手各一)
主控1x RP2040-Zero2x RP2040-Zero
连接方式单板直连 USB2x TRRS 插座 + TRRS 线
矩阵扫描行列矩阵(COL2ROW)直接矩阵(direct pins)
分体通信RP2040 原生串行(vendor driver),GP11
左右手判定通过 GP10 引脚电平判定
可选扩展热插拔轴座、背板热插拔轴座、背板、Tenting 支撑

从 mono/keyboard.json 可以看到一体版采用传统行列扫描:

{ "keyboard_name": "chew/mono", "diode_direction": "COL2ROW", "matrix_pins": { "cols": ["GP28", "GP27", "GP26", "GP15", "GP14", "GP4", "GP3", "GP2", "GP1", "GP0"], "rows": ["GP5", "GP6", "GP7", "GP8"] } }

10 列 × 4 行共 40 个矩阵交叉点,其中 34 个被实际使用,diode_directionCOL2ROW,即二极管阳极连接列、阴极连接行,这是最常见的扫描方向配置。

而 split/keyboard.json 则采用直接矩阵(每键一个独立 GPIO),并完整声明了 QMK 分体键盘的配置:

{ "keyboard_name": "chew/split", "matrix_pins": { "direct": [ ["GP4", "GP3", "GP2", "GP1", "GP0"], ["GP15", "GP26", "GP27", "GP28", "GP29"], ["GP14", "GP13", "GP9", "GP8", "NO_PIN"], ["GP7", "GP6", "GP5", "NO_PIN", "NO_PIN"] ] }, "split": { "enabled": true, "handedness": { "pin": "GP10" }, "matrix_pins": { "right": { "direct": [ ["GP0", "GP1", "GP2", "GP3", "GP4"], ["GP29", "GP28", "GP27", "GP26", "GP15"], ["GP8", "GP9", "GP13", "GP14", "NO_PIN"], ["GP5", "GP6", "GP7", "NO_PIN", "NO_PIN"] ] } }, "serial": { "driver": "vendor", "pin": "GP11" }, "transport": { "watchdog": true } } }

几个值得注意的设计点:

  • 左右手判定(handedness):通过读取GP10的引脚电平来确定左右手,而不是依赖 EEPROM 刷写左右手标记,硬件上由 PCB 上拉/下拉电阻决定,使用更省心。
  • 分体串行通信serial.drivervendor,这是 RP2040 平台推荐的原生串行驱动(基于 PIO,不占用 UART 外设),通信引脚为GP11。从仓库中其他 RP2040 键盘/转换器的配置(如 promicro_to_kb2040/converter.mk 中的SERIAL_DRIVER ?= vendor)可以印证,vendor驱动正是该平台分体键盘的标准选择。
  • 通信看门狗transport.watchdog开启后,在分体通信异常(如拔掉 TRRS 线)时会触发看门狗复位,避免单侧失效导致键盘行为异常。

在 quantum/split_common/transport.c 中可以找到这套配置对应的底层实现——分体初始化会分别调用soft_serial_initiator_init()soft_serial_target_init()(分别对应左右手),随后通过soft_serial_transaction(id)完成主从之间的周期事务通信,左右手按键矩阵、灯效等数据都依赖这条串行链路同步。

硬件需求与物料清单

两个版本在 mono/readme.md 与 split/readme.md 中分别给出了明确的物料清单。

chew/mono(一体式)必需物料:

  • 1x PCB(一体式单板)
  • 1x 主控板 RP2040-Zero
  • 34x 1N4148W SMD 二极管
  • 34x Choc V1 轴体(仅限 Choc V1,不兼容其他高度轴体)
  • 34x Choc V1 键帽

chew/mono 可选物料:

  • 18x Mill Max 低剖面插座(用于可拆主控)
  • 34x Kailh Choc 热插拔轴座(免焊接换轴)
  • 1x 背板 PCB + 螺丝螺柱(增加强度与外观)

chew/split(分体式)必需物料:

  • 2x PCB(左右手各一)
  • 2x 主控板 RP2040-Zero
  • 2x TRRS 插座
  • 34 个 Choc V1 轴体(仅限 Choc V1
  • 34 个 Choc V1 键帽

chew/split 可选物料:

  • 23 个 Mill Max 低剖面插座
  • 34 个 Kailh Choc 热插拔轴座
  • 2x 背板 PCB + 螺丝螺柱
  • 2x Tenting 支撑件(抬升打字角度的楔形支架)
  • 2x 三脚架(配合 Tenting 实现更大角度的倾斜支撑)

默认键位设计解读

两个版本的默认键位都放在各自keymaps/default/keymap.c中,采用最典型的 34 键列式布局:字母区全部保留,最下排仅保留拇指区 6 键。

一体版 mono/keymaps/default/keymap.c 的布局注释直观展示了键位分布:

┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ├───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤ │ Z │ X │ C │ V │ │ M │ , │ . │ / │ └───┴───┼───┼───┼───┬───┼───┼───┴───┴───┘ │ B │Bsp│Alt│ ␣ │Ent│ N │ └───┴───┴───┴───┴───┴───┘

对应代码如下:

[0] = LAYOUT( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_B, KC_BSPC, KC_RALT, KC_SPC, KC_ENT, KC_N )

分体版 split/keymaps/default/keymap.c 键位逻辑一致,只是被拆成左右两半(左手 QWERT 五行,右手 YUIOP 五行),拇指区对应变为B / Bspc / AltSpace / Enter / N

[0] = LAYOUT( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_B, KC_BSPC, KC_RALT, KC_SPC, KC_ENT, KC_N )

可以注意到:默认键位把 Backspace、Enter、Space、Alt(右 Alt)都放在拇指区,是典型的 34 键布局惯例——符号、数字与功能键依赖层切换实现,这部分由用户按需在 feature_layers.md 等文档指引下自行扩展。

同时,mono/keyboard.json 中LAYOUT的 34 个矩阵坐标映射与 split/keyboard.json 中带有x/y偏移(含0.250.125等小数偏移)的坐标定义,共同决定了 QMK Configurator 与在线编辑器中键位的可视化排布。

进入 Bootloader:RP2040 的两种方式

主控 RP2040-Zero 板载两个按键(BOOT 与 RESET),因此可以通过两种方式进入 Bootloader(见 mono/readme.md 与 split/readme.md):

  • 方式一:按住BOOT键的同时插入 USB 线,RP2040 会直接以 USB Mass Storage(UF2 拖拽盘)模式枚举。
  • 方式二:快速连按两次RESET键,触发 RP2040 平台的"双复位进入 Bootloader"机制。

方式二在 QMK 平台层有明确的代码支撑:RP2040 板级配置中定义了RP2040_BOOTLOADER_DOUBLE_TAP_RESET宏(例如 GENERIC_PROMICRO_RP2040/configs/config.h),启用后,MCU 在短时间内检测到两次复位信号,会跳过正常启动流程直接进入 USB Bootloader,这也是 RP2040 键盘刷写时最常用的免拆机进入方式。

进入 Bootloader 后,bootloader 一章所描述的 RP2040 刷写流程即可适用:将固件以 UF2 格式拖入磁盘,或使用qmk flash自动完成。

编译与刷写

在已安装 QMK CLI 并完成固件环境初始化的前提下(参考 getting_started_introduction.md 与 cli.md),可以分别对两个版本进行编译:

# 一体式版本 qmk compile -kb chew/mono -km default # 分体式版本 qmk compile -kb chew/split -km default

连接键盘并进入 Bootloader 后,将compile换成flash即可直接刷写:

qmk flash -kb chew/mono -km default qmk flash -kb chew/split -km default

分体版本建议左右手分别刷写同一份固件:由于 split/keyboard.json 采用GP10引脚判定左右手,无需为左右手刷写不同镜像。若在编译前修改了键位,可先将keymaps/default复制为用户命名(如keymaps/default/keymap.c的同级自定义目录),再以对应 keymap 名编译,避免覆盖仓库内容。

从源码结构看设计要点与延伸阅读

  • 矩阵设计差异:一体版使用 10×4 行列矩阵配合COL2ROW二极管方向,可少占 GPIO;分体版使用直接矩阵,每个按键独占引脚,省去二极管,且左右手矩阵在 split/keyboard.json 中按镜像方式声明。
  • 分体通信可靠性vendor串行驱动 +watchdog的组合,是 RP2040 分体键盘保障左右手数据同步与异常恢复的典型方案,底层实现可进一步查阅 quantum/split_common/transport.c。
  • 默认特性bootmagicnkroextrakeymousekey已在系列级 info.json 中统一开启,编译时无需额外在 keymap 层配置。

若需要进一步自定义键位(层切换、Tap-Hold、组合键等),可阅读 keymap.md、feature_layers.md 与 tap_hold.md;刷写与 Bootloader 的更多细节参见 flashing.md。本键盘作者在外部维护的 Chew 专属仓库与 wiki 提供了成品固件发布与更多装配信息,可自行检索获取。

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

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

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

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

立即咨询