键盘延迟:延迟从哪来,又是怎样测出来的

键盘延迟是从手指开始按下按键,到键盘把这次按键发送给电脑之间的时间。它在四个环节中累积:按键行程、键盘扫描按键、防抖和 USB 轮询。没有任何网站能测出键盘延迟,因为浏览器要等键盘发出按键之后才会得知。评测者用电磁铁按下按键,再用 USB 分析仪记录这次按键离开键盘的时间。要降低键盘延迟,可以使用更短的触发键程、最高的回报率,以及不会让按键重复输入的最低防抖设置。

键盘测试

一次按键在电脑收到之前要在哪里等待

  1. 按键行程按键向下移动到开关触发的位置
  2. 扫描键盘芯片逐行检查按键网格
  3. 防抖等开关触点停止弹跳,或者忽略弹跳
  4. USB 轮询按键要等到电脑下一次向键盘询问新输入

合起来:键盘延迟

网页只能从这里开始计时

电脑和屏幕 游戏使用这次按键并绘制一帧,屏幕再显示出来:这是输入延迟的其余部分

测量键盘的评测者只计算前四个环节:从有东西碰到按键的那一刻,到 USB 数据包离开键盘的那一刻。

延迟从哪来

回报率换算成毫秒

两次轮询之间的时间等于 1,000 ms 除以回报率。平均来说,一次按键要等这段时间的一半。

回报率换算成毫秒
回报率轮询间隔平均等待
125 Hz8 ms4 ms
250 Hz4 ms2 ms
500 Hz2 ms1 ms
1000 Hz1 ms0.5 ms
8000 Hz0.125 ms0.0625 ms

从 125 Hz 提高到 1,000 Hz,平均能节省 3.5 ms。实测键盘之间的差距远比这大:2017 年 Dan Luu 测了 21 款键盘,结果在 15 到 60 ms 之间,其中两款游戏键盘并不比其他键盘快。

键盘延迟是怎样测试的

为什么没有网站能测试键盘延迟

浏览器要等键盘发出按键、电脑再把它转交过来之后,才会得知这次按键,所以本页描述的所有环节,在网页开始计时之前就已经发生了。从出现信号到你按下按键的计时测试,测的是你的反应,而反应所需的时间远比键盘长。浏览器能检查的,是每个键是否都能被识别、能同时按下几个键(用键盘测试),以及按键是否会重复输入(用键盘双击测试)。

如何降低键盘延迟

线性轴、段落轴和有声轴有什么区别,以及厂商给出的触发键程和触发压力,见键盘轴体。

资料来源:Dan Luu(英文),键盘延迟;RTINGS(英文),键盘延迟测试方法;LTT Labs(英文),Labs 如何进行键盘测试;QMK(英文),防抖算法;Wooting(英文),如何设置 Rapid Trigger;OSLTT(英文),开源延迟测试工具。