如果你逛键盘圈够久,应该见过那种左右分开、带弧度的分体键盘。我第一次看到 OpenRIG 这个开源项目时,第一反应是:这不就是把一把正常键盘拦腰拆成两半,中间再加根线吗?有什么稀罕的。直到后来我下载了它的全套开源资料,对着原理图、矩阵接线图和固件配置文件仔细读了一遍,又亲手从零焊完一整把,才意识到这个项目的价值根本不在"分体"两个字上——它其实是一套把键盘从"买来就用"变成"完全自己掌控"的完整路径。
这篇文章我会把 OpenRIG 从项目背景、硬件选型、矩阵原理、手焊实操到固件配置、外壳组装整个流程原原本本讲一遍,重点放在那些资料里不会写、但你实际操作时一定会踩的坑上。无论你是想入门客制化键盘、想搞懂 QMK 固件是怎么跑的,还是单纯想给桌面添一把手感不错又不会撞款的键盘,这篇应该都能给你省下不少摸索的时间。
1. 先搞清楚OpenRIG是什么,再做决定不迟
很多朋友看到"开源键盘"四个字就直接去 GitHub 点下载,结果拉下来一堆 KiCad 工程文件、Gerber 光绘文件和密密麻麻的 C 代码,当场就懵了。我自己也经历过这个阶段,所以先把 OpenRIG 到底是个什么东西讲清楚。
1.1 它不是套件,而是一整套可以自己复制的设计
OpenRIG 本质上是一个"开放硬件"的分体式机械键盘项目。所谓开放硬件,意味着不仅固件开源,连 PCB 原理图、电路板 layout、外壳 3D 模型、键位矩阵定义这些"物理部分"也全部公开。你可以直接拿去打板厂做 PCB,去嘉立创或者捷配花几十块钱打回来五套板子,再自己去电子市场买齐元件,然后用烙铁一点一点把它焊起来。
这和市面上绝大多数量产的"分体式键盘"有本质区别。量产键盘你买回来,能改的顶多是键帽和轴体,键位布局是固化在固件里的,想动一个按键的位置都得看厂商脸色。OpenRIG 则是从底层设计到顶层键位全是你的,矩阵怎么走线、主控放在哪一边、用多少颗二极管、键位怎么分配,全部可以按自己的习惯调整。
1.2 项目整体架构:主控加从控的经典分体方案
OpenRIG 默认采用了我个人很喜欢的"主从分离"方案。左右两块 PCB 各有一颗主控芯片,左边那块作为主控负责连接电脑,右边那块作为从控负责采集右侧按键信号,两块板之间通过一根 TRRS 音频线(就是四极的 3.5mm 耳机插头线)通信。
这样设计的好处有两个。第一,左右手之间只有一根细线连接,桌面看起来非常清爽;第二,左右两块板的电路完全对称,打板时只需要做同一块 PCB,左边装主控固件、右边装从控固件,成本直接砍半。坏处也很明显——TRRS 线是模拟音频标准的接口,不是专门为键盘通信设计的,如果你在键盘通电状态下插拔它,很容易造成瞬间短路,轻则键盘失灵,重则烧掉主控芯片。这一点后面我会专门讲怎么避坑。
项目默认的主控芯片是树莓派 RP2040。这块芯片因为树莓派 Pico 开发板的爆火,价格被打到了十块钱以内,性能却一点不弱:双核 ARM Cortex-M0+,133MHz 主频,还能原生支持 USB HID,跑 QMK 固件绰绰有余。对于想自己动手做键盘的人来说,RP2040 几乎是当前性价比最高的选择,没有之一。
2. 物料选型的底层逻辑:别小看每一颗二极管
OpenRIG 打样只需要一张 PCB 图纸,但焊一把成品需要的东西就多了:主控板、轴体、二极管、轴座、连接线、外壳、键帽,七七八八加起来一堆。这一节我把选型逻辑讲透,你以后再做其他项目也用得上。
2.1 主控为什么选RP2040而不是STM32
早几年的开源键盘项目,主控清一色用 STM32F103 或者 STM32F072,大家图的是资料多、例程全。但 STM32 有个很实际的问题:市面上假货太多,价格波动又大,对新手非常不友好。你从淘宝买了十个芯片,可能一半是翻新片,焊上去之后跑起来没问题,用两个月突然某颗引脚坏了,排查起来极其痛苦。
RP2040 就没有这些毛病。它是树莓派基金会亲自设计的芯片,供货渠道稳定,而且大多数场景下你根本不用直接买裸片——直接买一块 Raspberry Pi Pico 开发板,把板载的 RP2040 当作键盘主控用就行。开发板上自带了 USB 接口、Boot 按键、晶振和 Flash 存储,全部帮你接好了,你只需要从 Pico 板上引出必要的 GPIO 引脚,接到键盘矩阵上。
更重要的是,RP2040 的 Boot 模式是原生支持 UF2 烧录协议的。按住 Boot 键插上 USB,电脑就会识别出一个 U 盘,把编译好的固件文件拖进去就完成烧录了。不需要额外的烧录器,不需要装驱动,全程傻瓜式操作。这一点用 STM32 是无论如何也做不到的,光是折腾 ST-Link 就能劝退一多半新手。
2.2 二极管、轴座与连接线的具体选择
OpenRIG 的电路板上每颗轴位旁边都有一颗二极管,用途我在下一节详细讲,这里先说选型。最常见的型号是 1N4148,一种小信号开关二极管,价格低到可以忽略不计——一百颗大概也就两三块钱。它的反向恢复时间够快,正向压降也合适,做键盘矩阵是标准选择。
注意,千万别用 1N4007 这种整流二极管顶替。1N4007 的恢复速度太慢,在高频扫描矩阵时会出现串键和误触问题,我当时图省事用过一次,结果好几个按键触发不稳定,最后全部拆掉重焊,血泪教训。
轴座方面,如果你打算长期用,建议选"五脚轴座"或者兼容 PCB 的贴片轴座,这样轴体可以直接卡在 PCB 上,不用单独买定位板也能正常使用。很多人觉得定位板是必须的,其实不是——PCB 本身厚度足够的话,五脚轴直接固定在板子上也完全可行,手感上会因为少了金属板回弹稍柔一点,但稳定性没有问题。
TRRS 线我建议买那种带屏蔽层的四极线,长度控制在 20 到 30 厘米最合适。左半部分放在桌上,右半部分放在鼠标旁边,中间留点余量但不要拖地,太长的线反而容易把键盘绊住。买的时候注意插头要买 4 段式的,别买成 3 段式单声道线,那种线只有三芯,无法完成左右通信。
2.3 轴体与键帽怎么配不踩坑
轴体选择看个人手感偏好,但有一点技术参数得注意:键盘矩阵扫描时,轴体内部两个触点闭合后,需要等待去抖时间,也就是说轴的"抖动时长"直接影响按键触发的一致性。传统 Cherry 轴触发行程 2mm,总行程 4mm,数据稳定;如果换成那种超短行程的"快银轴",你需要去固件里调整去抖参数,否则可能出现双击。
键帽更简单,OpenRIG 默认键位布局是类似 Ergodox 风格的分体布局,最底下一行的拇指区域用了不少 1U(一个标准键位宽度)和 1.5U 的键帽。普通标准 104 键键帽套装里这些尺寸通常不够,选购时要特意看键帽是否支持"Ergodox 增补"或"分体键盘增补",否则装到最后有几个键帽对不上,很难受。
3. 矩阵扫描原理:为什么每个轴都要配一颗二极管
键盘不能像接线板一样每个按键单独拉一根线到主控——那需要上百个引脚,主控根本不够用。所以键盘内部全部采用"矩阵扫描"的方式,用行线和列线交叉来定位按键位置,OpenRIG 也不例外。这一节我们从原理层面拆解,这是后面配置固件和理解故障的基础。
3.1 行列扫描是怎么工作的
想象一下 4 行 6 列的矩阵,一共有 4 根行线和 6 根列线,交叉点有 24 个。主控不断给每一行通高电平,然后读取每一列的电平状态。如果第 2 行的某个位置按键被按下,那么第 2 行和对应列之间就会导通,主控在给第 2 行通电时,就会在那一列上读到电信号,从而知道"第 2 行第 3 列这个位置被按下"。
问题来了:如果你同时按下第 2 行第 3 列和第 3 行第 5 列两个键,矩阵里会形成一条通路——电流可以从第 2 行流入,经过第 3 列的按键,再经过第 5 列的按键流到第 3 行,然后被主控误判为"第 2 行第 5 列也被按下"。这就是经典的多键冲突也叫鬼键。
解决鬼键的方法就是在每个按键的通路上串一颗二极管。二极管是单向导通的,电流只能从行流向列,这样一来上面说的反向通路就被切断了,无论你按多少键,矩阵都能准确定位。这就是每颗轴旁边那颗 1N4148 的全部意义。
3.2 OpenRIG 的矩阵排布与二极管方向
OpenRIG 的电路图上,每一半键盘的矩阵大约是 4 行、每行 7 到 8 列,左右各有一颗主控,所以左右矩阵是独立扫描的,之间通过串口把数据同步给主控,再由主控统一上报给电脑。默认布局里,左半的拇指区有 3 个键,右半拇指区也是 3 个,整体算下来总共约 58 键左右。
二极管方向有个非常关键的原则:二极管必须串在行线和键位之间,阴极朝行线方向。如果你焊反了,单个键位大概率还是能用,但多键同时按下时会触发错乱;更常见的是整行失灵,因为你等于把整个行通路给堵死了。我建议你在焊之前拍一张电路图照片,焊的时候每焊一颗就对照一下朝向,别靠记忆硬肝,真的会翻车。
3.3 手焊飞线好,还是直接打PCB好
OpenRIG 提供了完整的 PCB 工程文件,直接打板是最省事也最可靠的方式。但很多入门玩家为了方便修改布局,会选择"手焊飞线"——不用 PCB,直接在亚克力板或 3D 打印板上把轴位固定好,然后用漆包线一根一根把行线和列线连到主控引脚上。
我的看法是:第一次做 OpenRIG,除非你只是玩票,最好还是老老实实打 PCB。原因很简单,OpenRIG 的布局是经过作者反复调整的,你手焊飞线时不仅要保证走线正确,还得考虑绝缘、扎线固定和理线,出错概率翻了好几倍。打一套 PCB 的成本也就二十来块钱,把折腾飞线的精力省下来去打磨键位配置,性价比高得多。飞线方案适合那些后续想改布局、加旋钮、加屏幕的老玩家,而不适合第一次上手的萌新。
4. 焊接实操全记录:从烙铁温度到二极管极性
如果你已经决定动手,那么恭喜你进入了整个项目里最痛苦也最好玩的环节。焊接本身不难,难的是焊接结果不短路、不虚焊、不焊反。这一章我把实操顺序和自己翻过的车全部交代清楚。
4.1 工具准备与焊接顺序
最低配置需要:一把调温烙铁、含铅焊锡丝(含铅的流动性比无铅好太多,新手强烈建议)、助焊剂、吸锡带、镊子、万用表。烙铁温度我习惯设在 320℃ 左右,不要超过 350℃,否则容易把焊盘烫掉。
焊接顺序务必要规划好:先把所有二极管焊完,再焊主控板或者主控排针,最后再装轴座和轴体。先焊二极管的原因是它们贴在 PCB 上,不占空间,焊完之后剩下的元件就不会挡住操作了。焊二极管时,用镊子夹住管体轻轻按压在焊盘上,先给其中一个焊盘上锡固定,确认位置正了之后再焊另一头。每颗焊接时间控制在两秒左右,不要长时间加热。
焊完之后别急着通电,先用万用表二极管档测一下每颗二极管是否有正向导通压降,如果某个位置读出来是无穷大,说明虚焊或者没焊好,直接返工。
4.2 二极管极性这个最常见的坑
我在群里见过不下十个人,第一把 OpenRIG 焊完插上电脑,发现左侧某一行完全没反应,最后排查出来都是二极管极性装反了。原因是大多数人的习惯是先看 PCB 上丝印,但 OpenRIG 的 PCB 丝印上二极管符号可能比较小,在强光下很难看清哪边是阴极。
这里分享一个不依赖丝印的验证方法:二极管表面会有一条银灰色的横杠,代表阴极方向;把二极管放在 PCB 上时,让横杠方向对准丝印上那个竖线的一端即可。如果你的 PCB 丝印实在看不清,直接用万用表的二极管档测量:红表笔接横杠一端(阴极),黑表笔接另一端,数字表应该显示 0.5 到 0.7 左右的压降;如果读数显示 1(超量程),就说明极性接反了。
千万别觉得"焊反了再拆下来重新焊就行",二极管贴在 PCB 背面、焊盘细,拆的时候很容易连焊盘一起拽掉。焊之前认真对好方向,远比事后补救省心。
4.3 飞线布线与绝缘
如果你是严格按照 PCB 打板走的,这一步基本可以跳过。但如果你想自己加装 RGB 灯、旋钮编码器或者小型 OLED 屏幕,那就绕不开飞线。飞线最核心的礼貌是:不要让裸露的线芯和相邻走线有任何接触的可能。
我的习惯是,飞线一律使用 30AWG 左右的特氟龙硅胶线,颜色按照电源、信号、行线、列线分开。走线时尽量贴着 PCB 表面,拐弯处留出倒角,不要直角硬折,否则内芯容易断。几条线需要交叉时,用一根短线跳过去,而不是硬拉长距离去够。
加装 RGB 灯时还要注意供电问题。RP2040 的 3.3V 引脚能提供的电流有限,你如果给一整排灯珠供电,电压会被拉垮,矩阵扫描都变得不稳定。最简单粗暴的解法是外接一个 5V 电源模块,单独给灯带供电,地线跟主控共地即可。我自己第一次加灯就栽在这上面:焊完灯带,上电后键盘偶尔断连,拔掉灯带立刻恢复正常,查了半天才想到是功耗问题。
5. 固件烧录与键位配置:让键盘真正听你的话
硬件焊完只算完成了一半。OpenRIG 默认支持的固件是 QMK,这是目前开源键盘圈事实上的标准。配置完这一层,你的键盘才真正算"活"了。
5.1 编译环境的搭建与选择
QMK 的官方文档其实已经把环境搭建写得很清楚了,我只说几个实操重点。Linux 和 macOS 直接按官方脚本装就行,Windows 上维护最省心的方案是 MSYS2 环境,装好之后执行 qmk setup 会把整个工具链和所有键盘定义拉到本地。
如果你是纯小白,强烈建议先用 QMK 的在线配置工具(QMK Configurator)生成一个最简单的 keymap,编译好 JSON 之后再用 qmk compile 生成 hex 文件。这样能避免一开始就陷入 C 语言代码的泥潭。跑通一次之后再回到源码里去改布局,心里就有谱了。
OpenRIG 在仓库里提供了专门的键盘定义文件夹,安装 QMK 之后,把它复制到 qmk_firmware/keyboards 目录下,直接运行:
qmk compile -kb openrig -km default如果编译没报错,会在当前目录下生成一个 openrig_default.uf2 文件,这就是你要拖进 RP2040 的固件。
5.2 keymap 配置的实际操作
编译通过只是开始,真正需要花时间的是 keymap.c 里的布局排列。OpenRIG 的键位定义格式和常见分体键盘不太一样,但 QMK 的可读性做得很好,你打开文件后对照矩阵定义,基本能猜出每个位置的作用。
我建议第一版配置不要贪多,先把主键区、拇指区、Shift、Enter 这些基础键位排好,烧录进键盘试打两天,再根据习惯微调。有些人一开始就直接上一堆层:Layer 0 主键盘,Layer 1 数字区,Layer 2 多媒体区,Layer 3 功能键区,结果打到一半按错层,整个输入节奏全乱。不是不能加层,而是先从简单的来。
下面是一段极简的 keymap 开头示例,用来示意矩阵列数和行数如何与硬件对应:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, MO(1), ... ), };5.3 烧录Bootloader与常见排错
RP2040 的烧录几乎不会出大问题,前提是你知道怎么进入 DFU 模式。操作方式很简单:把键盘用 USB 线连上电脑后,按住 PCB 上的 Boot 按钮(或短接两个 Boot 焊盘),同时再次插入 USB 线,电脑里会出现一个名为 RPI-RP2 的 U 盘。把编译好的 .uf2 文件拖进这个 U 盘,指示灯闪两下,固件就写入了。
如果拖进去之后键盘没反应,优先检查两点:第一,Boot 模式下 U 盘是否正确识别;第二,固件里的键盘名和设备生产商标识是否匹配系统要求。通常 Windows 会识别为一个 USB 输入设备,macOS 需要在"系统设置—键盘—修改键盘"里重新选择一下键盘类型。
遇到"能进 Boot 模式但烧录后无反应"的,大概率是你编译时选错了芯片型号。RP2040 的 Boot 模式下必须烧录 .uf2,不能烧 .hex,否则芯片不认。这个坑不算大,但很容易被忽视。
5.4 按键触发测试:万用表与QMK测试模式
焊接结束、固件烧好之后,先不要上键帽,用 QMK 自带的测试模式直接看矩阵每个交叉点的通断状态最方便。默认的 QMK 固件若开启了 DEBUG_MATRIX,在终端里用 qmk console 连接键盘,每按下一个键位就能看到类似 "matrix row 2 col 5: down" 的输出。
如果没有开启调试选项,也可以用最朴素的万用表二极管档,把两支表笔分别点在行线和列线的焊盘上,按下对应轴体,看万用表是否导通。这种方式适合物理排查,比软件更快定位到哪一行、哪一列出了问题。实测下来,超过一半的"整行失灵"都是飞线松脱或者二极管虚焊造成的,万用表一测就知道在哪一段。
6. 外壳组装与手感调校
焊好 PCB、刷好固件,键盘已经可以用了,但裸板摸起来硌手、踩上去也不稳。外壳是手感的一部分,这里结合 OpenRIG 的开源 3D 打印模型说说怎么处理。
6.1 3D打印外壳的参数与后处理
OpenRIG 默认的外壳模型是上盖加底壳的上下结构,上盖用于固定轴体,底壳用于支撑 PCB。打印建议使用 PLA 材料已经足够,如果你想要更耐热、更结实的,PETG 是更好的选择,但打印温度要相应提高。
打印参数上,推荐层高 0.2mm,壁厚 3 到 4 层,填充 20% 到 30%。填充太低会导致螺丝柱强度不够,拧螺丝时容易滑牙;填充太高则浪费时间且没必要。打印完成后,需要把支撑材料清理干净,特别留意轴体安装孔附近有没有残余支撑毛刺,否则轴体装进去会卡住,按下去手感很涩。
如果你想省掉打印环节,用亚克力激光切割也可以,但要注意 PCB 的厚度和外框预留的卡槽宽度是否匹配,否则装进去要么松松垮垮,要么塞不进去。
6.2 手感调校:定位板、轴体与键帽的综合体
分体键盘的"手感"是个玄学,但有几个变量是可调的。第一是轴体:线性轴手感直上直下,适合打字量大的人;段落轴手感明确,适合不喜欢"触底才发现按到了"的人。第二是键帽高度:原厂高和 OEM 高的键帽最通用,分体键盘的拇指区域因为位置偏下,建议用更矮的 DSA 或 XDA 球帽,否则手指够起来累。
第三才是外壳。OpenRIG 默认的硬质外壳属于"硬性安装",没有 gasket 结构那种缓冲效果,所以键盘敲起来会比较"脆"。如果你偏好更柔和的手感,可以在 PCB 和底壳之间垫一层 1.5mm 的硅胶垫,品牌叫"轴下垫"或者"底棉",淘宝买一张自己裁切就行。这东西成本极低,但能明显降低空腔音和震动。
6.3 日常使用中的稳定性表现与隐藏问题
把 OpenRIG 作为主力键盘用了大半个月之后,我的评价是:稳定性和量产键盘没有可感知的差距,但有几个隐藏问题必须在入手前想清楚。
第一,TRRS 线连接处因为是外露的,搬动机箱或推键盘时容易扯到。最好养成轻拿轻放的习惯,别在通电的时候热拔插 TRRS 线。第二,RP2040 的 USB 接口位置如果在 PCB 边缘,线材弯折受力会传导到焊盘上,建议用带编织网的短线而且要稍微留出弯折余量。第三,分体键盘的左右两块之间没有连体固定,桌面必须足够平整,否则左右高度稍有差异,长时间打字手腕会歪。
这些都不是什么致命伤,但你在上手第一天就应该了解,后面用起来会舒服很多。
6.4 进阶玩法:ZMK蓝牙方案与自定义扩展
如果你不满足于有线的 OpenRIG,也可以把它改成无线。思路很简单:把主控换掉,用支持蓝牙的开源主控比如 Nice!Nano(nRF52840 平台),同时把固件从 QMK 换成 ZMK。ZMK 在蓝牙连接稳定性、多设备切换这些方面比 QMK 原生 BT 方案体验好不少,而且同样支持 ZMK Studio 在线改键。
不过要做好心理准备,换主控不只是换芯片这么简单。Nice!Nano 的引脚定义和 RP2040 不一样,矩阵接线位置要重新对应;电池充电、电池电量检测也得自己加电路;固件配置语法和 QMK 也有区别。这个方案适合已经把 QMK 玩明白的人,不要在第一次做 OpenRIG 时就上无线,给自己徒增难度。
比较温和的扩展倒是值得推荐:在左右任意一侧加一个 EC11 旋转编码器,用 QMK 的 encoder 功能可以调音量、翻页面;或者加一块 0.91 寸 OLED 小屏幕显示当前层数和 CapsLock 状态。这些外设都是 RS232 级别的基础通信,焊接难度不高,却能让键盘瞬间有了"终极装备"的气质。
OpenRIG 的好玩之处正在于此:它不像量产键盘那样给你一个完整到无需思考的答案,而是把所有选择都摊开在你面前。选中这项目之后,你被迫去理解矩阵、理解固件、理解焊接工艺,而这个过程才是真正让人上瘾的部分。我已经把手里这把改了三版 keymap,加了旋钮和一块小屏幕,接下来打算再做一把左右完全对称的版本试着只用一颗主控驱动两边,继续跟它较劲。