按键无冲、响应延时、键盘调速……
教你看懂机械键盘参数指标
在挑选机械键盘时,许多玩家可能都会在产品的介绍中看见“1ms快速响应”这个词,那么这个1ms是怎么来的呢?是不是真的1ms所按即所得呢?事实上,由于键盘按下后被电脑识别且在游戏中展现,需要经历以下这些过程:按键→开关触发→电路(矩阵)识别→计算机接收信号→(上传网络→游戏响应)。所以大多数玩家应该很难相信按键触发只有1ms响应的情况。不过,通过某些技术,机械键盘的触发的确可以大幅度降低响应时间,但大多数机械键盘的响应延时并不会特别大。那么,响应容易出现哪些延时呢?又是怎样的技术可以让响应越来越快呢?
TIps
1.由于不同厂商所采用的方案不同,所以本文介绍的按键响应方案、无冲方案、按键调速方案不一定涵盖所有方案。另外技术日新月异,本文的某些观点不代表未来仍然适用。
2.因为个人习惯与设备多方面的因素(电脑配置、网速、玩家的游戏技术水平、击键频率)夹杂在一起,虽然追求更快的响应是刚需,但目前普遍的做法是满足绝大多数人(95%以上)的需求的,因为现在没有多少人能够感受到热卖外设的按键延时对自己游戏发挥造成的影响(发现问题大多数也并非按键延时的问题)。
抖动延时
提到开关触发的响应延时,我们就不得不提一下防抖的问题。众所周知,机械键盘的特点在于每个按键都是一个独立开关,即机械轴。而每个轴的触发是由两块弹片相互摩擦实现的,但由于弹片的弹性以及个别原因导致摩擦时会产生抖动。而当弹片存在抖动时,键轴的触发初期也无法立马确定两块弹片是否是已经开始摩擦,而这也就是抖动延时出现的原由。事实上,为了防止抖动的影响,机械键盘厂商也开发出了硬件防抖和软件防抖两种方式。而目前市场中的大多数机械键盘大都是采用软件防抖中的延时防抖,即在检测出弹片摩擦后执行延时程序,产生5~20 ms的延时,抖动消失后再一次检测,如果检查出弹片仍在摩擦,则认定的确有按键触发。同理,在松开按键的时候,也会有这个延时。如果玩家在快速按键的时候发现有延迟,可能就是防抖的时间设置过长,这时玩家可以求助厂商提供最新的固件用以更新防抖时长。
或许有人会问防抖延时对游戏有什么影响呢?举个例子:在《穿越火线》中,许多玩家都有快速切枪的习惯,如果防抖延时过长,可能玩家们就无法正常快速切枪了。而这正是因为连续两次敲击按键时,第一次按键开始时存在延时,结束又存在延时,当玩家第二次按键的时候,若键盘认为这是前一次还未结束的抖动延时,那么第二次按键就无效,若键盘识别了按键,那么会继续有防抖延时,但这时的按键就会出现较为明显的延时。
通过以上我们可以发现,没有机械碰撞就可以避免机械抖动进而省去抖动延时,所以有些厂商就开始研发没有抖动延时的键轴,比如血手幽灵2014年推出了一款机械轴—光轴,原理即通过激光控制电路导通/断开,完成信号的发送,从而避免物理碰撞造成的抖动延时。
此外,同样的无抖动延时的机械轴还有2015年Computex展会上的Flaretech轴与2015年11月国产轴厂商华诺发布的磁轴。前者是通过光的折射实现触发(还可以通过光发射的角度进行模拟量控制),后者是通过霍尔元件检测磁铁的磁场进行触发。都是没有物理接触,所以同样不会存在机械抖动。
通过邀请2016樱桃杯打字大赛冠军宇师进行试验,10ms的防抖延时即可以满足他极点五笔输入法每分钟240~260汉字、英文480~540字母、瞬时最高击键12~15的速度。而对于普通用户全拼每分钟95汉字左右的速度而言,即使是30ms影响也不大。不过在游戏中,由于按键速度比通常比打字更加连贯、也更快,所以延时速度应该比打字延时更低。
事实上,除了强制防抖以外,目前还有智能防抖的方案,可以根据玩家的手速与轴体,MCU自动判断所需的最低防抖延时,这种智能方案对于大多数人来说是比较靠谱的,但是对于长时间高速击键的人来说,还是强制低防抖更稳定一些。值得说明的是,并不是抖动延时越低就越好,因为一旦抖动延时过低,可能会存在键盘自己误判双击等问题。此外,不同轴体、不同触发方式所对应的最佳防抖时间也有所不同,从最低稳定防抖延时也是可以看出轴体设计、弹片质量的优劣。另外随着轴体的老化、弹片弹性的不足,防抖延时也是需要增加的,所以目前智能防抖的方案是比较合理的。
按键过程存在的抖动延时
光轴没有抖动延时
Flaretech轴
Cherry的RK技术
扫描延时
在电路识别按键触发这个过程中,矩阵扫描是要时间的—横1→横2→……→横n、纵1→纵2→……→纵m,横纵都导通即触发。那么完成这所有的扫描需要多少时间呢?大约在20ms是机械键盘的鼻祖Cherry给出的结论。而Cherry MX6.0为了特地节省这段时间,推出了RK(realkey)技术,和以往矩阵扫描不同,RK技术将矩阵的每一行与每一列均设置不同的电压,使每个按键在触发的时候其电流都是唯一的,MCU可以直接从电流大小检测到是哪个按键触发,这也就是Cherry意义上的1ms触发。而Cherry最新发布的MX6.0固件中,声称又可以提高20%扫描和响应速度,使得机械键盘最大扫描速率为0.24ms,响应时间最小可达0.5ms,理论最大值为1.5ms。
假如是单机游戏,游戏就会对信号进行处理然后传输到游戏内了。如果是网络游戏,还要通过网络上传到服务器内,然后再通过下载游戏数据将按键的效果传输回你的电脑。经历了这么多步,你认为整个触发过程真的只有1ms响应吗?光轴磁轴没抖动,但是它存在矩阵扫码的延时啊,而Cherry RK技术再快,它也存在机械抖动。所以就像笔者在前面提到的那样,目前机械键盘所产生的延时是能够满足绝大多数玩家的需求,而很多人所谓的感觉自己更厉害了,从游戏数据上并没有体现,只是心理作用罢了。
触发键程的影响
事实上,拥有防抖延时以及防扫帧延时技术的确可以加快响应速度,那么触发键程短对于提高输入速度是否有影响呢?答案是肯定的,下面开始算一笔账。以高桥名人单指每秒按键最快16次为例,手柄的按键以2mm键程为例,按一次键需要62.5ms。即2mm触发键程时,人类极限为两次按键间隔最短62.5ms,这个时间对于防抖+扫帧也是够了的。如果缩短触发键程为1mm,理想状态下2mm键程按一次键要走4mm行程,即1秒16次要16x4=64mm行程,改为1mm键程,则1秒64/2=32次,即理论来讲,缩短触发键程有利于提高输入速度(但从实际快速连击按键来讲,不一定走满整个按键行程,而且每个人操作习惯也不同,所以以上结论均为理论下合理计算)。
USB接口与PS/2接口
键盘调速功能
关于键盘调速功能,虽然目前没有得到确切的结果予以认证它的实用性,但通过实际测试结论我们仍然能够得到一些信息说明。首先,我们需要着重强调一下控制面板与注册表的功能。在控制面板中有个键盘的板块,而它拥有重复延迟与重复速度两个选项。重复延迟可调节按住按键时出现的首字符与第二字符间的时间间隔。重复速度则可调节按住按键时出现的第二字符与后面的字符出现的频率。这两个选项对应注册表中的KeyboardDelay与KeyboardSpeed,系统默认为“1、31”。事实上,很多《跑跑卡丁车》韩国职业玩家就会调节注册表中的这两个数值。
其次需要说明的是,调节控制面板中键盘板块的两个选项会在打字输入中实时反应出效果。但是在不动键盘选项的情况下,单独修改注册表的数值是不会在打字输入中实时反应出效果的,若控制面板键盘设定为“4、0”,注册表修改为“0、100”,在打字时,键盘还会按照“4、0”的重复延迟、重复速度进行响应。而不管注册表修改成什么值,只要在控制面板中对打开键盘板块点击应用或者确定,注册表的值均会变成与两个选项对应的数值。通过以上信息笔者想说明的是:
1.互联网上关于“不用调制注册表,只调控制面板就行”的言论仅在“4~0、0~31”的范围内有效,超过这个范围修改无效。
2.只要不碰控制面板,注册表的数值可以任意修改,但实际在游戏中得到的按键反馈即由注册表的数值决定。控制面板的选项只是对应打字输入时的重复延迟与重复速度。
在实际游戏中测试,笔者选择赛睿APEX M500机械键盘作为测试对象,因为弃置《跑跑卡丁车》多年,笔者已经无法完成“连喷”操作,所以调制KeyboardSpeed的数值并没有为笔者带来游戏上的差别,但通过与众多《跑跑卡丁车》玩家的沟通时,得知改变KeyboardSpeed的值为自己习惯的值可以使连喷的节奏更容易被自己把控。同时,在《QQ炫舞》中笔者也并没有感受到特别的影响,也没有发现炫舞大神去改该数值。此外,在《QQ飞车》中,笔者的确发现有玩家去修改这个数值,与几个玩家分别测试了一下,玩家们均说能够影响“拉车头”的流畅程度,笔者在第一次从31改到1000的时候也感受到了“拉车头”的差距,但后来几次测试就没有太明显的感受了,所以具体是心理作用还是真的有关系,笔者尚且无法解答,但从这两款RAC游戏的反馈来看,似乎还是有一定的作用。至于KeyboardSpeed的上限是多少?KeyboardDelay会不会影响高频连击按键时系统识别每次按键?这些还需要多做研究才能解释,笔者不敢妄言。
键盘可以对回报率进行调整
键盘板块的重复延迟与重复速度
KeyboardDelay与KeyboardSpeed
TIpS
由于民用键盘都是非编码键盘,MCU接收到了键盘的位置码后转换成对应的ASCⅡ码,再传送给CPU进行处理,所以这里还需要讲清楚一个问题,即键盘是被动的传输给电脑信息,只有电脑CPU和键盘索要数据,键盘的数据才会被上传到电脑里。也就是说,回报率这个概念是CPU向键盘索要数据的频率,而不是键盘主动向CPU传输数据的频率。了解了回报率真实的概念以后,我们还需要了解一下“传输速率”,而它也时常被大家错误认为回报率。但如果要解释键盘向CPU传送数据的速度,我们又不得不介绍两个接口:
1.USB接口:最高回报率1000Hz,广大厂商的“1ms快速响应”即1000Hz的回报率。全速传输速率1.5 Mbps。
2.PS/2接口:与USB接口在通讯上可以认为是一样的,因为也是有回报率与传输速率的。PS/2的最高回报率与传输速率均达不到USB的高速,且不支持热插拔等一系列原因,PS/2渐渐被淘汰。但是比USB好的地方是,直接传输数据,有多少传多少,不用动手脚(USB为什么仅6键无冲,以下本文会详细介绍),在硬件满足全键无冲的条件下也一定支持全键无冲。
按键无冲
首先要说一下因为是矩阵扫描所以有先后顺序,而玩家们也不能做到一丝不差地同时按下几个按键,所以按键无冲的意思并不是真的所有按键同时被触发了,而是你按下的所有按键均会被电脑识别。因为矩阵扫描有先后顺序,所以大家分几次“同时”按了几个按键的时候,显示的可能会有不同的排列顺序。而且因为系统的设定,所以同时按下并按住几个按键,在输出字符模式下,仅重复输出最后一个被按下的字符。
当然,按键无冲并不表示任意按键无冲,全键无冲与任意按键无冲并不表示全键任意按键无冲。这些文字游戏经常坑人,要仔细甄别,与客服详细确认。任意按键无冲可能仅是指定区域内任意按键无冲,即通过调整矩阵实现的,将常用的游戏按键与不常用的功能按键共用一个矩阵,实现指定区域内任意按键的无冲。全键无冲可能是全键任意6键无冲,即由USB HID描述符限制的。如果玩家们想选购全键任意按键无冲的机械键盘,需要记住以下两点:
1.所谓的PS/2口全键任意按键无冲,是在硬件支持无冲的情况下才实现无冲的,如果仅有无冲二极管,则不是什么键盘都能够实现全键任意按键无冲。
2.PS/2口之所以在硬件支持的条件下能全键任意按键无冲是因为其不限制同时传输按键数量。而以前USB口最多只能任意6键无冲是在硬件必须支持无冲的条件下,方案商只能被USB HID描述符所限制。
当然,现在USB口也能做到全键任意按键无冲了,那么这又是怎么做到的呢?有人说是将键盘虚拟成好几个键盘,这样就相当于有多个任意六键无冲,合起来就是全键无冲——这种说法笔者得到的反馈是错误的。事实上,笔者所接触的机械键盘都没有做过这种虚拟设备的设定,它们都是真实的多个设备。那么所谓的虚拟成几个键盘的说法是怎样形成的呢?笔者猜想,或许是某些玩家发现设备管理器中出现多个USB设备和HID设备,以为是虚拟键盘。当然,这个想法也肯定是错误的。
那么这些数个USB设备和HID设备是怎么来的呢?事实上,因为键盘有许多多媒体按键、灯光调制按键,以及部分机械键盘拥有免驱动宏定制键,所以设备管理器也将一款机械键盘根据功能划分为普通键盘HID设备、多媒体控制按键HID设备、键盘灯光控制USB设备、键盘宏设置USB设备等等。
而真正的USB口下全键无冲,大多数的做法是修改USB HID描述符。USB键盘和鼠标都归为HID类设备,即通过HID描述符进行传输数据。通俗的讲一下,正常的描述符是每次路口只能过6辆车,每辆车仅带一个字符,所以USB下只能支持全键任意六键无冲。但是每辆车不仅仅只能坐一个人,所以如果把每辆车的每个人定义成一个字符,这样每次就可以有好多字符被识别了,全键任意按键无冲就可以在USB口的情况下实现了。事实上,根据最新得到的消息,USB口下实现全键无冲已经不需要这么麻烦了,因为USB正在推出了新的HID描述符协议,而这可以直接实现所有字符的传输工作。
那么为什么有些键盘仍保留六键无冲与全键无冲切换呢?是因为如果将仅识别6个按键的描述符修改成N个按键,在BIOS模式、其它系统等特殊情况下,设备可能会无法识别描述符中的字符,所以加六键无冲更保险一点。而这也是为什么某些厂商一直不生产全键任意按键无冲的原因。
那么为什么切换6/N无冲时有些机械键盘键盘要断电,有些则不用断电就能切换呢?简单的说,因为生产商在写方案的时候,会直接写两种键盘的HID进去,一种是普通的六键无冲,一种是全键无冲,它们是两种不同信号源,需要断电才能切换的键盘只有通过断电才能切换信号通道。而其它无法切换6/N无冲的键盘目前应该有两种,一种是智能切换HID,默认是6键无冲,按下超过6个按键时,自动切换到全键无冲上,这样在特殊环境下也不会出现键盘不被识别的情况,又能做到全键无冲。另一种则可能是采用了新的HID协议,可以支持不断电切换。事实上,依靠目前的技术,机械键盘完全可以做到全键任意按键无冲,只是成本增加而已。如果玩家没必要买全键任意按键无冲的键盘,在价格较低时选择一款指定区域内任意按键无冲或者普通任意6键无冲的键盘也是可行的。
按键无冲测试软件界面
无冲二极管
控制面板中的数个USB设备和HID设备
加载更多