本帖最后由 深澜大叔 于 2017-1-5 01:08 编辑
继2016年5月发帖后2017年1月5日第一次重新编辑,修改个别有歧义的部分 前言
薄膜键盘、机械键盘到底谁更适合游戏?谁更牛逼?这个问题一提出来,必然两派打的不可开交。吵来吵去,两派还是按着各自的想法认为,没什么结果。到底谁更适合游戏不是谁嘴炮放的响谁就有理的,可能很多人都只是从手感上去分析,且仅仅是从感觉上判断。
对于游戏操作来讲,按键即是控制,“控制”有3个需求: 1.回馈感(即手感,至少你得知道按键成没成功吧) 2.快速响应(别人打你,你躲慢了就挨揍) 3.按键无冲突(有冲突就相当于想给人一拳发现胳膊被人拽住了)
因为字数太多,薄膜键盘、机械键盘到底谁更适合游戏?我分成两部分来写,其中回馈感(手感)的讨论请见 http://www.inwaishe.com/thread-5557-1-1.html
除了手感,对于游戏来讲,要求就是快速响应与按键无冲突,这个帖子就着重介绍一下按键响应与无冲,且包含了很少有人介绍的按键调速的相关内容。文字较多,意见不同欢迎讨论,但想喷的话先把全文一字不差的看完再评论!
1.各家所采用的方案不同,以下所介绍的按键响应方案、无冲方案、按键调速方案不一定涵盖所有方案。另外技术日新月异,此帖某些观点不代表未来仍然适用。 2.因为人与设备多方面的因素(电脑配置、网速、你的游戏技术水平/击键频率)夹杂在一起,虽然追求更快的响应是刚需,但目前普遍的做法是满足绝大多数人(95%以上)的需求的,因为现在没有多少人能够感受到热卖外设的按键延时对自己游戏发挥造成的影响(发现问题大多数也并非按键延时的问题)。 请确认已经熟读以上两点声明! 大家可能都会知道“1ms快速响应”这个词,那么这个1ms是怎么来的呢?是不是真的1ms所按即所得呢?请仔细往下看。
键盘按下以后被电脑识别且在游戏中展现,经历了这么些过程:按键→开关触发→电路(矩阵)识别→计算机接收信号→(上传网络→)游戏响应。 SO,我说1ms响应,你信吗?但是不用担心!按照现在的技术来说,大家基本都差不多!细微差别待我慢慢讲:
按键即是上一篇讨论的问题:触发键程与触底键程对按键的影响。而开关触发就需要着重讲一下防抖了:我们拿机械键盘来讲,众所周知机械键盘的特点在于每个按键都是一个独立开关,即轴,每个轴的触发是由动片与静片么么哒实现的,但由于动片与静片有弹性以及个别其它原因导致这个碰撞会有抖动,所以在触发初期矩阵无法确定动静片是否是真的在么么哒,这个阶段即机械抖动。为了防止抖动,有硬件防抖和软件防抖两种方式,按照血手幽灵的铺天盖地的介绍来看,貌似机械键盘大多用的都是软件防抖中的延时防抖,即在检测出么么哒后执行延时程序,产生5~20 ms的延时(我了解到的最高有做到60ms以上的,据说樱桃自己的键盘都是40ms延时,但是无从考证),抖动消失后再一次检测,如果检查仍在么么哒,则认定真正有键按下。同理,在松开按键的时候,也会有这个延时。同理,薄膜键盘触发时也是有抖动的。
如果你在快速按键的时候发现有延迟,可能就是防抖的时间设置过长,这时你可以求助厂商更新固件给你。而有些键盘做的就比较不错,比如贼鸥的TK-2000,键盘预设三种防抖时间:30ms/40ms/50ms(然而我并没有方法测试这个是否真的能用……)。有人可能会问这个防抖时间对游戏有什么影响呢?在FPS类游戏中,切枪的时候,如果防抖时间过长,可能就无法正常切枪了。即快速连续两次连点按键的时候,第一次按键开始时有个延时,结束又有个延时,当你第二次按键的时候,可能键盘以为是抖动,那么第二次按键就无效,若键盘识别了按键,那么会继续有防抖延时,这样按键就会出现延时。
通过以上可以发现,没有机械碰撞就可以避免机械抖动进而省去抖动延时,血手幽灵在2014年推出了轰动一时的光轴——LK轴(light key),原理即通过红外线控制电路导通/断开,光可是嗖的一下就过去了,没有任何接触,收到光就确认信号,没有机械抖动一说,从开关端使触发变得省去了延时时间。血手幽灵光轴的1ms触发指的即是这个。
同样的无抖动延时的轴体还有2015年computex展会上ADOMAX公司展出的Flaretech轴(这个轴同时支持热插拔的,血手二代光轴,就是青轴那版也能热插拔……)与2015年11月华诺发布的磁轴。前者是通过光的折射实现触发(还可以通过光发射的角度进行模拟量控制),后者是通过霍尔元件检测磁铁的磁场进行触发。都是没有接触直接触发的。(同理鼠标微动也有机械抖动,光微动与磁微动也应运而生)
通过邀请2016樱桃杯打字大赛冠军宇师进行试验,10ms的防抖延时即可以满足他极点五笔输入法每分钟240-260汉字、英文480-540字母、瞬时最高击键12-15的速度。而对于我这个全拼每分钟95汉字、击键6的速度而言,30ms都没有什么影响……
另外除了强制防抖以外,目前还有智能防抖的方案,即根据你的手速与轴体,MCU自动判断所需的最低防抖延时,这种智能方案对于大多数人来说是比较靠谱的,但是对于长时间高速击键(类似于宇师这类大神)的人来说,还是强制低防抖更稳定一些。还要补充的是,并不是防抖越低就越好,因为防抖低了,可能会有键盘自己误判双击等问题。还有就是,不同轴体、不同触发方式所对应的最佳防抖时间都是不同的,从最低稳定防抖延时也是可以看出轴体设计、动静片好坏的。另外随着轴体的老化、动静片弹性的不足,防抖延时也是需要增加的,所以目前智能防抖的方案是比较合理的。
声明:我不知道现在的,民用键盘是否都是延时防抖,所以我不确定除了以上提及的光轴和磁轴外所有键盘都有防抖延时。
在电路识别按键触发这个过程中,矩阵扫描是要时间的,横1→横2→……→横n、纵1→纵2→……→纵m,横纵都导通即触发,这个时间要多少嘞,樱桃表示大约20ms,我所知道目前这种传统的扫帧最低的时间是5ms。
樱桃MX6.0节省了这段时间,推出了RK(realkey)技术,和以往矩阵扫描不同,RK技术将矩阵的每一行与每一列均设置不同的电压,使每个按键在触发的时候其电流都是唯一的,MCU可以直接从电流大小检测到是哪个按键触发(英文原文:The analog connection between the controller and each keyswitch guarantees the highest precision.There are different voltages at the individual conductor tracks,when the circuit is closed by the press of a button,the controller detects how much current is flowing,so each key on the keyboard is read analogously in realtime by the controller.)。这即是樱桃所谓的1ms触发。樱桃最新发布的MX6.0固件中,声称又提高20%扫描和响应速度。最大扫描速率为0.24ms,响应时间最小可达0.5ms,理论最大值为1.5ms。
由于民用键盘都是非编码键盘(我不确定),MCU接收到了键盘的位置码后转换成对应的ASCⅡ码,再传送给CPU进行处理。现在就需要讲清楚一个问题,即键盘是被动的传输给电脑信息,只有电脑CPU和键盘索要数据,键盘的数据才会被上传到电脑里,即回报率这个概念是CPU向键盘要数据的频率,而不是键盘主动向CPU传输数据的频率。了解了回报率真实的概念以后,还要了解一下“传输速率”,即是大家一直错误认为的回报率的概念:键盘向CPU传送数据的速度。下面就要谈下两个接口:
1. USB接口:最高回报率1000Hz,广大厂商的“1ms快速响应”即1000Hz的回报率。全速传输速率1.5 Mbps(貌似USB协议限制键鼠最高就这些,而不是12 Mbps)
2. PS/2接口:因为也有回报率与传输速率,所以这方面PS/2与US在通讯上可以认为是一样。PS/2的最高回报率与传输速率均达不到USB的高速,且不支持热插拔,等等一系列原因,PS/2渐渐被淘汰。但是比USB好的地方是,直接传输数据,有多少传多少,不用动手脚(下面会讲USB为啥默认仅6键无冲),在硬件支持全键无冲的情况下一定支持。
然后假如是单机游戏,游戏就会对信号进行处理然后展现到游戏内了。如果是网络游戏,还要通过网络上传到服务器内,然后再通过下载游戏数据将按键的效果传输回你的电脑。当然这步已经和键盘无关了哈
经历了这么多步,你认为真的有1ms响应吗?光轴磁轴没抖动,但是你有矩阵扫码的时间啊~樱桃RK再快你也有机械抖动啊~但是就像最开始我在声明中说的,目前普遍的做法是满足绝大多数人的需求的,而很多人所谓的感觉自己更厉害了,从游戏数据上并没有体现,只是心理作用罢了。
防抖延时短+扫帧延时短绝逼是响应速度最快的,那么触发键程短对于提高输入速度是否有影响呢?答案为是的,下面开始算一笔账。以高桥名人单指每秒按键最快16次为例,手柄的按键以2mm键程为例,按一次键需要62.5ms。即2mm触发键程时,人类极限为两次按键间隔最短62.5ms,这个时间对于防抖+扫帧也是够了的。如果缩短触发键程为1mm,理想状态下2mm键程按一次键要走4mm行程,即1秒16次要16*4=64mm行程,改为1mm键程,则1秒64/2=32次,即理论来讲,缩短触发键程有利于提高输入速度(但从实际快速连击按键来讲,不一定走满整个按键行程,而且每个人操作习惯也不同,所以以上结论均为理论下合理计算)。
还有就是去年血手幽灵开过一次发布会,PK响应时间,这种比较在本人看来很是鸡肋,因为不知道测试软件到底是测的哪一部分响应时间。另外虽然看起来是同时按键,但触发键程一样吗?就算触发键程一样,确保每次都能按到平衡木中心位置一点偏差没有吗?另外触发压力不同的话,即使你在平衡木中心位置按下,两边也不会同时被按下!
下面讲一下很多朋友关注网上却一直没有过多介绍的键盘调速功能!
关于这方面,我也没有研究透,以下仅为我的实际测试结论。我询问了很多搞单片机的同学、搞软件的同学,但均没有得到理论层面的专业回答;也咨询了跑跑卡丁车官方、QQ飞车官方,碍于源代码保密及其它原因也没有得到肯定的回答。为了测试这方面的内容,我测试了以下几把键盘:i-rocks IK3(KR-6260)、Zowie(卓威)Celeritas、SKG2000(改装调速)、狼派虚空战舰机械版、魔力鸭Ducky One、酷冷至尊极光100C的调速功能,在跑跑卡丁车、QQ飞车、QQ炫舞游戏中进行了测试,同时咨询了使用调速键盘的跑跑大神与飞车大神。
首先说一下控制面板与注册表,在控制面板中有个键盘的板块,在键盘中有重复延迟与重复速度两个选项。重复延迟可调节按住按键时出现的首字符与第二字符间的时间间隔。重复速度可调节按住按键时出现的第二字符与后面的字符出现的频率。这两个选项对应注册表中的KeyboardDelay与KeyboardSpeed,系统默认为“1、31”。很多跑跑的玩家最早从韩国职业玩家中学到的即调节注册表中的这两个数值。
那么现在先要说明的是,调节控制面板中键盘板块的两个选项会在打字输入中实时反应出效果。但是在不动键盘选项的情况下,单独修改注册表的数值是不会在打字输入中实时反应出效果的,即控制面板键盘设定为“4、0”,则修改了注册表为“0、100”,在打字时,还会按照“4、0”的重复延迟、重复速度进行响应。而不管注册表修改成什么值,只要在控制面板中对打开键盘板块点击应用或者确定,注册表的值均会变成与两个选项对应的数值。通过以上我想说明的是:
1.网上说的“不用调注册表,调控制面板”就行的言论仅在“4~0、0~31”的范围内有效,超过这个范围就是扯淡。
2.只要不碰控制面板,注册表你想调多少调多少,实际在游戏中的得到的按键反馈即由注册表的数值决定。控制面板的选项只是对应打字输入时的重复延迟与重复速度。但我没想通为什么注册表的数值会对游戏操作产生微妙影响?请win系统下键盘设定方面的程序大神看到后帮忙解答……
在实际游戏中测试,因为跑跑年久不玩,且习惯了飞车的指法,已经无法连喷,所以调KeyboardSpeed的值并没有感觉到有差别,而通过与众多跑跑大神的沟通,得知改变KeyboardSpeed的值为自己习惯的值可以使连喷的节奏更容易被自己把控。在QQ炫舞中也并没有感受到特别的影响(可能是因为我连P的准度还不够专业无法体会自己细微的差别?),也没有发现炫舞大神去改这个值。在QQ飞车中倒是有人修改这个值,我与几个小伙伴分别测试了一下,小伙伴均说能够影响拉车头的流畅程度,我在第一次从31改到1000的时候也感受到了拉车头的差距,但后来几次测试就没有太明显的感受了,所以具体是心理作用还是真的有关系,我无法解答,但从跑跑和飞车的反馈来看,貌似还是有作用的。(懂win系统或游戏内对这两个值给按键输入能带来什么区别的请回复帮忙解答,不要凭经验回答,要理论知识!)KeyboardSpeed的上限是多少?KeyboardDelay会不会影响高频连击按键时系统识别每次按键?这些还需要专业的人来回答一下了。
对于几把有调速功能的键盘,经过测试我发现共有这么几种调速方式:
1.单纯增加每分钟字符数(重复延迟与重复速度均改变):代表为i-rocks IK3,Zowie Celeritas,SKG2000,不得不说这三款键盘是必须在PS/2接口时才能实现调速功能。我们在控制面板中调节重复速度为31即每秒约31个字符。
i-rocks IK3的调速功能官方称为“每秒最大可同时输入多少按键”,一目了然。在USB接口下,仅可以开启Turbo 13功能,即限制每秒仅能输入13键,13键是少于31键的,所以在使用过程中我曾发现这样一个问题:每秒按键超过13次(输密码时很容易超过13次,不是上面说的高桥名人单指按键)可能使键盘失灵,情况不严重时会键盘断电几秒后自动恢复;而若情况严重就需要拔下来USB重插了。所以我不禁陷入思考,KeyboardSpeed的值是否可折算为限制每秒最大输入数量?即输入数量超过这个数值,超过部分即无法被识别?这也需要专业的人来回答了。在测试Turbo 50与Turbo 120时,测试结果均与50、120相近,确定了这个调速功能的实际作用。另外在每个Turbo下测试的键盘延迟时间是相同的。
Zowie Celeritas的1x即每秒约31个字符,经测试2x的字符为60/秒,4x为125/秒,8x为250/秒,其每个档位的延迟时间是相同的。咨询了跑跑大神,很多人反映使用2x和8x跑的成绩相差不多,只是用8x跑的时候画面看起来比2x快很多。对于飞车来讲,对于拉车头可能是有一定影响的。在炫舞中,按住按键并不会使后面的按键自动输入。
SKG2000的调速旋钮与以上两把键盘的测试结果也是相近的,只是提升了字符重复速度,在软件中测试对延迟没什么影响。
2.仅减少重复延迟,且按一次按键相当于正常情况下按住按键不松:代表为魔力鸭Ducky One(USB插口),即魔力鸭的“首字延迟速度”。在调到8倍速时,虽然快速点击一下按键,却会出现一串按键,相当于首字符与第二字符之间延迟很小且在按住按键不松。在跑跑与飞车中漂移会被切断成一段一段,转弯会感觉到前前右前前右前前右,根本无法正常操作。在炫舞中,若调成高倍速,虽然按一次按键却会输入很多,也是无法正常操作的。从软件检测上来看,在1x的时候,延迟时间与按键速度有关,15字符/秒的速度下大概是60ms,30字符/秒的速度下可达1ms。按住按键的时候延迟时间可无限大(不知道是什么逻辑)。在8x的时候,单点按键延迟时间固定在30ms左右,且按下时间试松开速度而定,但不超过15ms,快速击键时瞬时延时可达1ms。按住按键时延迟时间固定在30ms左右,按下时间固定在15ms,字符33/秒。通过数据可以直观的反应出上述为何快速按一次按键就会出现一串字符。
3.仅增加重复速度,且按住按键时相当于高频连点按键:代表为狼派虚空战舰机械版(USB插口)与魔力鸭Ducky One(USB插口)。 虚空战舰的分为40/ms、20/ms、10/ms、5/ms,不知道他这个标的是啥含义,把“/”去掉也不对劲……在5/ms时,按住按键即相当于高频连点,测试字符250/秒,在炫舞内按住按键会导致自动连续触发。
Ducky One的这一功能即“字键重复速度”,与虚空战舰不同的是,其按住按键后出现重复字符,在约第9个字符才开始进入高频连点模式。在调到8倍速时,在跑跑与飞车中使用氮气会出现刚使用即取消的效果(相当于按ctrl使用氮气后,松开了↑键,因为↑键被按住,但相当于在高频连点),转弯会感觉到前右前右前右,根本无法正常操作。在炫舞中按住按键会导致连续触发,也是无法正常操作的。从软件检测上来看,在1x的时候与上述相同,在8x的时候,单点按键与快速击键的情况与1x相同,在按住按键约1秒后(即上述在约第9个字符开始进入高频连点模式),延迟时间与按键时间固定在1ms,字符500/秒。
4.相当于将上述2与3结合在一起:代表为酷冷至尊极光100C(USB插口),快速点击一下按键就会出现一大串按键,按住更是能把系统干蒙逼……从软件检测上来看,在1x的时候就是正常模式,在8x的时候,单点按键、快速击键、按住按键的延迟时间与按键时间均固定在1ms,字符500/秒。
以上这些调速,貌似都是MCU自己计算后给CPU传输的按键功能,是固件内的算法。那说了这么多,现在市面上能买到的调速键盘到底对游戏有没有用呢?对于竞速类游戏来说,第一类比较适合。对于星际这类按住按键补兵的游戏,第二类和第四类开8速按一下就能补满了……对于喷人来说,不管哪类用ctrl+V都能碾压对方
写到这里我得问一问魔蝎,你们出的QQ炫舞纪念版薄膜键盘的调速到底是P口下能用还是U口下就能用啊?U口下没法调啊!换P口又不支持!
说到这里又要插一句,PS/2接口和USB接口直接通过转接头转换是有要求的,因为如果是全速USB键盘(即全速传输速率),则用了转换头在PS/2口下也是无法使用的,因为速度太快了,PS/2口“抓不到数据”。
那么机械键盘和薄膜键盘到底谁在按键响应上有优势呢?在排除机械抖动、接口(以USB为基准)、电脑配置、网速的情况下,就看MCU的能力了。现在很多高档游戏薄膜键盘的MCU也是很不错的!高档的游戏薄膜键盘也不便宜!
首先要说一下因为是矩阵扫描所以有先后顺序,还有你的手不能牛逼到一丝不差同时按下几个按键,所以按键无冲的意思并不是真的所有按键同时被触发了,而是你按下的所有按键均会被电脑识别(所以樱桃MX6.0的扫帧方式所介绍的真正的全键无冲是指不需要按顺序扫帧,直接同时被识别咯?)。因为矩阵扫描有先后顺序,所以大家分几次“同时”按了几个按键的时候,显示的可能会有不同的排列顺序。且因为系统的设定,所以同时按下并按住几个按键,在输出字符模式下,仅重复输出最后一个被按下的字符。
注意以下几个坑: 按键无冲并不表示任意按键无冲,全键无冲与任意按键无冲并不表示全键任意按键无冲!这些文字游戏经常坑人,要仔细甄别,与客服详细确认。 任意按键无冲可能仅是指定区域内任意按键无冲,即通过调整矩阵实现的,将常用的游戏按键与不常用的功能按键共用一个矩阵,实现指定区域内任意按键的无冲。 全键无冲可能是全键任意6键无冲,即由USB HID描述符限制的。 以下只说全键任意按键无冲,首先要记住以下两点: 1.所谓的PS/2口全键任意按键无冲,是在硬件支持无冲的情况下才无冲的,即有无冲二极管的话不是啥键盘都可以全键任意按键无冲! 2.PS/2口之所以在硬件支持的条件下能全键任意按键无冲是因为其不限制同时传输按键数量。而以前USB口最多只能任意6键无冲是在硬件必须支持无冲的条件下,方案商老老实实被USB HID描述符的限制没动手脚。
薄膜键盘必须有二极管才能做到全键任意按键无冲,而在软性薄膜电路上拉出来一根根线接二极管不会有人愿意做,所以薄膜键盘全键任意按键无冲可以当作都是硬质PCB电路板的做法,像机械键盘一样把二极管焊在板子上。这里又要提一下上一篇手感里提到的问题:薄膜键盘的定义并不是以是否采用软性薄膜电路而定的!而是以其触发方式而定的!机械键盘与薄膜键盘定义的区别是触发结构的不同!与用什么电路没关系!如果没有二极管,目前我知道的薄膜键盘仅能做到任意26键无冲。
现在USB口已经能做到全键任意按键无冲了,是怎么做到的呢?有人说是将键盘虚拟成好几个键盘,这样就相当于有多个任意6键无冲,合起来就是全键无冲啦~——这种说法我得到的反馈是错误的,我所接触的都没有做过这种虚拟设备的,都是真实的多个设备!所谓的虚拟成几个键盘的说法是怎样形成的呢?见下图,有一天有人发现就插了一把键盘怎么设备管理器里这么多USB设备和HID设备!喔我键盘是全键无冲的!所以……
我所了解的这些USB设备和HID设备是怎么来的呢?键盘有多媒体键对吧?有调灯光的对吧?可能还有免驱宏对吧?没错,就是这样把键盘分为普通键盘HID设备、多媒体控制按键HID设备、键盘灯光控制USB设备、键盘宏设置USB设备等等。
其实大多数的做法是修改USB HID描述符。USB键盘和鼠标都归为HID类设备,即通过HID描述符进行传输数据。通俗的讲一下,正常的描述符是每次路口只能过6辆车,每辆车仅带一个字符,所以USB下只能支持全键任意6键无冲。但是每辆车可以坐好多人呀,所以把每辆车的每个人定义成一个字符,这样每次就可以有好多字符被识别了,全键任意按键无冲搞定~另外最新得到的消息是,现在已经不需要这么麻烦了,因为USB推出了新的HID描述符协议,可以直接进行所有字符的传输。
那为什么有些键盘仍保留6键无冲与全键无冲切换呢?是因为将仅识别6个按键的描述符修改成N个按键,在BIOS模式、其它系统等特殊情况下,设备可能会无法识别描述符内的字符,所以加6键无冲更保险一些,这也是为什么雷蛇的键盘一直不做全键任意按键无冲的原因。那么为啥有些切换6/N无冲的键盘要断电,有些不用断电就能切换呢?通俗的讲即是在写方案的时候,会直接写两种键盘的HID进去,一种是普通的6键无冲,一种是全键无冲,是两种信号源。需要断电才能切换的键盘即只有通过断电才能切换信号通道,而无需断电的就是不需要断电咯。无法切换6/N无冲的键盘目前应该有两种,一种是智能切换HID,默认是6键无冲,按下超过6个按键时,自动切换到全键无冲上,这样在特殊环境下也不会出现键盘不被识别的情况,又能做到全键无冲。另一种是因为现在有了新的HID协议,直接采用新协议的(这种纯个人猜测)。
不管是薄膜还是机械,都可以做到全键任意按键无冲,只是成本增加而已。如果没必要买全键任意按键无冲的键盘,在价格较低时选择一款指定区域内任意按键无冲或者普通任意6键无冲的键盘也是可行的.
至此,到底玩游戏用薄膜键盘好还是机械键盘好相信你已经有所判断了,答应我不要再人云亦云以讹传讹了好吗?将这两篇帖子分享给你的小伙伴,让大家能够理智的选择适合自己的键盘!
|