目录
周五晚上十一点,购物车里的第三把键盘终于结算了。
第一把是 87 键青轴,买它是因为「机械键盘打字快」;第二把是 65% 配列,买它是因为「桌面更干净」;第三把是客制化套件,买它是因为「这把的 gasket 结构更软弹」。
两个月后,你的打字速度还是 72 WPM。唯一的变化是,你现在能在三秒内听出同事的空格键有钢丝音。
键盘圈有句自嘲:打字五分钟,调轴两小时。 这不是一篇劝退文——折腾键盘是合法的爱好,甚至是一门手艺。但它有一个常见的自我欺骗:我们把「手感变好了」翻译成「我要变快了」,然后为后者买单。可手感和速度,恰好是两套不同的参数。
一、你调的参数,大多不负责「快」
先看轴体。市面上的机械轴大致分三类:
- 线性轴(红轴、银轴):直上直下,没有段落感;
- 段落轴(茶轴):中途有一个轻微的凸起;
- Clicky 轴(青轴):段落之外还有一声清脆的响。
它们的常见规格是:触发压力 45 cN 上下,段落峰值 55–60 cN,总行程 4 mm,触发点 2 mm 左右。换成普通话:按下去要用多大力、按到多深才触发、会不会响。这些参数真实、可测量,也真的影响手感——但它们不决定你每分钟能打多少个字。
客制化圈的黑话更具体:
| 你做的事 | 你改变的是什么 |
|---|---|
| 润轴 | 轴芯摩擦的顺滑度与声音 |
| 换弹簧 | 回弹力度与跟手感 |
| 加棉、垫底 | 空腔音与敲击声的「厚度」 |
| 开槽 PCB、Gasket 结构 | 整块板的软弹程度 |
| 调卫星轴 | 大键(空格、回车)的钢丝音 |
| 换键帽高度 | 手指落点、声音与视觉 |
每一条都真实可感。它们的共同点是:优化的是「你愿不愿意在这把键盘前多坐一小时」,不是「这一小时能多打几个字」。
打字速度的上限主要在手指协调和练习量。Dan Luu 记录过一个反例:他自己在键程极短的 Apple Magic Keyboard 上打得更快。这不能证明「换键盘能提速」,只能说明键程是一个变量——而这个变量并不按价格排序。
二、三个真正可测量的指标
如果你真想用参数判断一把键盘,值得看的不是「轴体颜色」,而是下面三件事。
1. 同时按键:6KRO 不是玄学,是 USB 启动协议
很多人听过「普通键盘只能同时按 6 个键」。这句话对,但只说对了一半。
USB HID 的**启动协议(boot protocol)**为了让 BIOS/UEFI 不用解析复杂的报告描述符,规定了固定格式:8 个修饰键(Ctrl、Shift、Alt 等)加 6 个普通键槽位。超过 6 个普通键,硬件就没有地方报告了。这就是 6KRO 的来源。
但 USB HID 并不限制键盘只能 6 键。切换到**报告协议(report protocol)**后,键盘可以自己定义报告描述符,用位图表示按键状态,理论上可以做到全键无冲(NKRO)。很多键盘的做法是:系统里走 NKRO,进 BIOS 时自动退回 6KRO。
另一个容易混淆的概念是鬼键(ghosting)。它来自键盘矩阵的电路设计,和 6KRO 不是一回事;加二极管可以防鬼键,而 NKRO 说的是报告格式。厂商把它们混在一起宣传,消费者就很难判断自己买的到底是哪一种。
Dan Luu 测试过一把宣称「最多 10 键同时按下」的游戏键盘,结果很多三键组合根本不工作。他的评价很克制:「up to 10」里的「up to」,承担了太多工作。
2. 消抖:5 ms 是默认值,不是物理定律
机械轴的金属触点闭合时会弹跳几下,固件必须等它稳定,否则一次按键会被识别成好几次。这个等待窗口叫消抖时间。
QMK 的默认值是 5 ms,可以在 config.h 里改:
// QMK config.h:默认 5ms,改成 3ms 试试// 太低可能连击,太高会增加按键延迟#define DEBOUNCE 35 ms 听起来不长,但它不是免费的。好消息是,消抖不必真的增加按下延迟:用 eager 算法或迟滞(hysteresis),可以在检测到第一个边沿时就报告按下,把等待放在释放侧。Dan Luu 在 2022 年的更新里提到,这件事这几年才逐渐成为键盘厂商的共识——在此之前,不少做键盘的人坚称「消抖必然带来延迟」。
3. 延迟:15 ms 到 60 ms,贵的未必快
Dan Luu 用逻辑分析仪测过二十来把键盘的「按键开始移动到 USB 包发出」延迟。结果跨度很大:
| 键盘 | 延迟(ms,四舍五入到 5ms) | 备注 |
|---|---|---|
| Apple Magic(USB) | 15 | 键程极短 |
| HHKB Lite 2 | 20 | |
| Microsoft Natural 4000 | 20 | |
| Das Keyboard 3 | 25 | |
| Logitech K120 | 30 | |
| Unicomp Model M | 30 | |
| Vortex Pok3r | 30 | |
| Filco Majestouch | 30 | |
| Razer Ornata Chroma | 35 | 游戏键盘 |
| OLKB Planck Rev 4 | 40 | |
| Ergodox | 40 | |
| Easterntimes i500 | 50 | 游戏键盘 |
| Kinesis Advantage | 50 | |
| Topre Type Heaven | 55 | |
| Logitech K360 | 60 | 无线 |
最快和最慢之间差了 45 ms,相当于 60 fps 下的 2.7 帧。而两把游戏键盘并没有比普通键盘更快;最快的那把反而是以设计而非速度著称的 Apple Magic。
几个常见的误解可以顺便澄清:
- 「1000Hz polling 更快」:从 125Hz 提到 1000Hz,平均只省下约 3.5 ms。它真实存在,但和 45 ms 的跨度相比,不是主要矛盾。
- 「延迟主要来自 USB」:大多数键盘离 USB 总线的极限还很远,瓶颈在扫描、消抖和键程。
- 「轴体触发快就整体快」:键程本身占了大头。240 fps 的高速摄影下,普通键从开始下压到触底要 4–8 帧,也就是 16–32 ms;Apple Magic 的键程短到拍不到,小于 4 ms。
当然,Dan Luu 自己也说这套装置的误差在 1–10 ms,数字也做了 5 ms 取整。所以正确的读法是「量级和排序」,不是「拿来做规格书」。
三、在浏览器里测一测
下面这段代码可以丢进任意 HTML 文件。它统计三件事:你同时按住了几个键、两次按下之间隔了多久、浏览器拿到的是物理键位还是当前布局下的字符。
<!doctype html><meta charset="utf-8"><title>键盘事件测试</title><pre id="out">按住几个键试试(Esc 清空)</pre><script> const held = new Set(); const out = document.querySelector('#out'); let maxKeys = 0; let lastDown = 0;
addEventListener('keydown', (e) => { if (e.code === 'Escape') { held.clear(); maxKeys = 0; out.textContent = '已清空\n'; return; } if (e.repeat) return; held.add(e.code); maxKeys = Math.max(maxKeys, held.size); const gap = lastDown ? (e.timeStamp - lastDown).toFixed(1) : '—'; lastDown = e.timeStamp; out.textContent = [ `code=${e.code} key=${e.key}`, `按住 ${held.size} 个,历史最多 ${maxKeys} 个`, `距上一次按下 ${gap} ms`, `当前:${[...held].join(' + ')}`, ].join('\n'); });
addEventListener('keyup', (e) => held.delete(e.code)); addEventListener('blur', () => held.clear());</script>event.code 是物理键位(比如 KeyA),event.key 是当前布局下的字符(比如 a 或 ф)。想验证换布局有没有生效,看 key;想验证键盘有没有把键送上来,看 code。
但它有一个诚实的局限:网页只能看到操作系统送来的事件。 如果键盘固件或系统在更下层就把第 7 个键丢了,页面根本不知道自己少收了一个键。所以这个测试测的是「整条链路」,不是「这颗轴」。想测轴体和消抖,还是得上逻辑分析仪或高速摄影——那又是另一个坑了。
四、该不该买:一张判断表
| 你的问题 | 换键盘能解决吗 | 更该做什么 |
|---|---|---|
| 打字慢 | 基本不能 | 练盲打、减少看键盘;低键程可以试,但别按价格预期速度 |
| 游戏多键冲突 | 能,但要确认是 NKRO 还是防鬼键 | 用具体键位组合实测,别信「up to 10」 |
| 同事嫌吵 | 能 | 静音轴、线性轴、加棉,或者干脆用薄膜 |
| 手腕疼 | 不该指望 | 先看医生,调整桌椅高度和姿势,定时休息 |
| 就是喜欢 | 能,但这是爱好 | 承认它是消费而不是性能投资,预算反而好定 |
第一把键盘解决「有没有」,第二把解决「配列顺不顺手」,第三把开始解决的是「我今天心情好不好」。
这没什么可羞耻的。键盘是少数你每天摸八小时、还能完全按自己喜好定制的工具。喜欢折腾没有错,错的是给折腾编一个性能理由——因为那个理由经不起测量,而手感经得起。
下次有人问你为什么又买键盘,诚实一点:
因为它好看。
这句话比「这把延迟更低」更难反驳,也更接近真相。
参考来源
- Does keyboard latency matter? — Dan Luu
- Contact bounce / contact chatter — QMK Documentation
- Device Class Definition for Human Interface Devices (HID) 1.11 — USB Implementers Forum
- Cherry Mechanical Switch Guide — Keychron
延伸阅读:本博客里还有几篇讲「工具与折腾」的文章——《摸鱼的艺术:办公室生存指南》讲的是怎么把等待时间自动化掉;《我的开发环境配置 2026》讲的是把 dotfiles 当软件项目维护;《程序员与咖啡因》讲的是另一种日常消费。