这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» DIY与开源设计» 电子DIY» [转]什么是N-key与按键冲突?原理说明、改善技术、选购注意完全解析

共34条 1/4 1 2 3 4 跳转至

[转]什么是N-key与按键冲突?原理说明、改善技术、选购注意完全解析

工程师
2015-08-22 23:05:03 打赏

本文转自:http://www.techbang.com/posts/10235-keyboard-triggers-do-not-bomb-almighty-from-the-matrix-to-the-circuit-n-key-conflict-with-the-keys-in-the-end-is-what-computer-king-75-fully-understood?page=1

不管是文书处理或游戏中,我们都经常会使用到组合键,也就是多颗按键一起按下,执行某些特定的功能。有时候你可能会发现,明明只按下2颗键,再按下第3颗键时信号却没有输出。要是打报告到一半遇到这种状况还好,如果在游戏中遇到,那可能发生被大屠杀的惨剧。而造成这些情况产生,就是键盘的「键位冲突」(或称「按键冲突」)所致。
再举个简单的例子,当在CS游戏中拿着小刀要往斜后方行走时(按下S+D键或A+S键),这时看到敌人要切换武器(压下数字键2或3),有些键盘就无法直接拿出武器,一定要放开行走的按键才能切换武器。这并不是游戏的Bug,而是因为键盘内部先天性设计所产生的问题。



工程师
2015-08-22 23:14:58 打赏
2楼
键位冲突不是卡键
键位冲突与卡键事实上是不相同的情况,许多人习惯以后者来形容键位冲突,而且在网络以讹传讹的结果,就把这2种名词变成同义了。事实上,「卡键」代表键帽压下时陷在键盘内,弹不回来原有的位置,或者弹回来的时间比正常的时间还长,完全直接是照字面意思来解释的。


工程师
2015-08-22 23:15:31 打赏
3楼
结构、信号双管齐下
要认识什么是键位冲突,就必须分2个部分来讨论。第1部分得先了解键盘内部的构造,信号是如何判断与传递,以及遇到错误该如何避免;第2部分是探讨如何将键盘信号传输至电脑端,内在构架虽然不会造成键位冲突,但不同键盘的连接界面可能会造成影响,而无法顺利将每个信号送出。将2个部分整合起来,才能完全认识键位冲突原理。

工程师
2015-08-22 23:18:17 打赏
4楼
非编码键盘当道
键盘依转换代码来分类,可以分为编码键盘与非编码键盘2种。编码键盘是指按下按键时,直接由数位电路上产生出ASCII码,或者特别编码来输出。非编码键盘则是将键盘按键排成矩阵形式(Keyboard Matrix),当按键触发时,由键盘控制器(Keyboard Controller)依照行(Clown)与列(Row)的信息,来查询键盘码表格,借此找出使用者压下的按键信息并输出。非编码键盘的键盘码表格较容易重新定义,结构技术不难。对于不同国家的键盘配置都容易进行键位设计,所以已经成为目前键盘主要的设计方式。
薄膜式键盘的行与列电路,会分散到键盘的2层薄膜电路上,而机械式则设计在PCB电路板上。这些行与列至少会由16条线路与8条线路交叉形成,组合出共有128个交叉点。目前键盘按键数大约为103键,就算语系不同按键数也不会相差太多,这128个点可以运用到目前所有的键盘。不过这种矩阵的设计方式代表压下就会形成渠道,如果一次压下太多键,就有可能造成信号误判。

工程师
2015-08-22 23:21:05 打赏
5楼
行与列判断信号
接下来,我们来看看是键盘信号是如何侦测与送出。键盘的按键信息都是设计在键盘矩阵中,里面每个行与列的交错点都代表着1颗按键信息。当按键被触发时,键盘就会进行扫描,查询是哪颗键被压下。首先会以行为单位会轮流扫描,之后再判断是哪一列形成渠道。
当单一按键被压下时,键盘扫描行与列的原理非常简单,很容易就会找到是哪颗键被压下,立即就会将信号送出,但如果同时触发超过1颗按键时,则是另一种情况。键盘矩阵中最小矩形单位会是由4颗按键所组成,4颗键压下任何1颗键都能顺利输出信号。任意2颗键按下时,键盘控制器也能依行列信息判断是哪些键被触发。当同时压下1颗键与2颗键时,键盘很容易就能判断信号并将其送出。

工程师
2015-08-22 23:23:19 打赏
6楼
产生Ghost Key
不过同时3颗键压下时,就会送出2个行信息与2个列信息到键盘控制器。由于2行与2列共可形成4颗键,所以光靠行列信息无法推算是4颗键中的哪3颗,而这时意外被导通电路的第4颗键,称为Phantom Key(幽灵键)或Ghost Key(鬼键)。

Ghost Key出现时,控制器因无法判断正确按键而产生错误的判断信息,为了避免错误信号被送出,键盘控制器就会忽略第3颗压下的信号,只会输出前2颗键一定正确的信号。这就是目前使用者常会疑惑,明明已经压下按键,为什么电脑却没有送出信号,其实就是因为产生Ghost Key发生键位冲突。

▲此为键盘矩阵简化图,在3行3列的电路中配有Q、W、E、A、S、D、Z、X、C键共9键。实际键盘矩阵不会如此简单,会更为复杂。


▲当Q键压下时:从C1开始扫描,R1有被导通电路,R2没有,所以推论出C1R1被压下。再从C2开始扫描,R1与R2都没有形成渠道。结论得到C1R1即Q键被触发。


▲当Q、S键压下时:从C1开始扫描,R1有被导通电路,R2没有,所以推论出C1R1被压下。再从C2开始扫描,R1没有形成渠道,R2有被导通电路,所以推论出C2R2被压下。结论得到C1R1与C2R2即Q键、S键被触发。


▲当Q、W、A键压下时:从C1开始扫描,R1被导通电路,R2也被导通电路,所以推论出C1R1、C1R2都形成渠道。再从C2开始扫描,R1被导通电路,此时R2透过C1也被导通电路,所以推论出C2R1、C2R2都形成通路。结论得到C1R1、C1R2、C2R1、C2R2即Q键、W键、A键、S键都被触发,不过实际并不是如此。S键没有按下却意外被导通,此键就命名为Phantom Key,即Ghost键(鬼键)。


工程师
2015-08-22 23:33:18 打赏
7楼
键盘矩阵分2类
由键盘矩阵表可以观察到,同一个矩阵里,如果恰好都在相邻的4个位置上,只能同时压下2颗,压下第3颗按键时就会产生Ghost Key。如果没有经过特别设计避掉Ghost Key的话,键盘基本上都是属于2-Key Rollover。所以对于键盘来说,只要是键盘矩阵构架,就只有2种:2-Key Rollover与N-Key Rollover。
N-Key Rollover
N-Key Rollover(NKRO)代表能同时任意压下N颗按键,并正确输出。换句话说,就是同时任意按下N个键都不会发生键位冲突,N代表着正整数。当直接以N来表达就代表着无限大的意义,也就是整把键盘都能同时压下并输出信号。目前市面许多键盘都会强调N-key功能,不过仍有人误解原意而误用。

工程师
2015-08-22 23:34:34 打赏
8楼
从键盘矩阵改进
其实键盘厂商很早就注意到键位冲突的问题,对于常用组合键都会刻意避开。如常见的Ctrl+Alt+Delete,理论上这3键应该没有键盘无法输出,其他例如Ctrl与Shift键的组合等等,也都是因为厂商特别设计,所以这些常用的键才能正常使用。

在制造厂来说,只要能够顺利使用以上常见组合键,并且不会造成键位冲突的键盘就能满足绝大多数的使用者。但各厂商的Keyboard Matrix设计都不同,相同的组合键透过各种设计都能达到相同的结果。要让2-Key Rollover变成N-Key Rollover的话,有很多方法可以达成,这里整理出几种常见方法给大家参考。

更改键盘结构

将键盘以结构来区分,除了薄膜式、机械式之外,还有电容式键盘。薄膜式与机械式都是以键盘矩阵来来判断,先天性就会有键位冲突的问题。电容式键盘是以电阻改变的方式来触发,可以由电阻大小来判断使用者按下哪些按键,所以电容式键盘不受键盘矩阵影响,天生就拥有N-Key Rollover功能。市面上较为常见的电容式键盘以Realforce为主,目前已从PS/2转为USB界面。Realforce键盘虽然内在是N-Key Rollover构架,不过受到USB限制只能任意6键输出,有点可惜。

用电容式设计

此外,i-rocks也要推出电容式键盘。不同于以往电容式键盘都需要仰赖PCB才能触发,i-rocks使用IC芯片,将电容等元件都包含在IC内。虽然外观与一般薄膜式键盘相近,但内部薄膜电路要经过特别设计与处理才能使用,而非一般薄膜电路。所以这款键盘在PS/2界面拥有N-Key Rollover功能,而在USB界面底下还不确定。



工程师
2015-08-22 23:49:28 打赏
9楼

加二极管变单向电路

薄膜式与机械式键盘想要避免Ghost Key,还是有方法可以做到。例如在每个按键信号的地方,都加1颗二极管(Diode)隔离电流倒灌,就不会使电路被意外导通而出错。目前市面上许多机械式键盘的处理方式,都是以加二极管来达成N-key功能。至于薄膜式键盘,要将二极管加在导电薄膜较不容易,这个方法不太可行。

▲Cherry G80-3494LYCUS-2键盘是在轴上加上二极管,而不是在PCB上直接焊上二极管,与目前常见的机械式键盘处理方式不同。

加上二极管处理示范图


▲在每个信号连接后,都加上二极管防止电流倒灌。

▲此示例一样使用Q键、W键、A键来示范,看是否一样会产生Ghost Key。

▲从C1开始扫描,R1有被导通电路,R2没有,所以推论出C1R1被压下,得到Q键与A键被压下。

▲再从C2开始扫描,R1形成渠道,R2没有被导通电路,推论出C2R1被压下,得到只有W键被压下。所以经过C1与C2扫描后,正确得到Q键、W键、A键共3键被压下,没有产生Ghost Key。


工程师
2015-08-22 23:52:49 打赏
10楼
将Controller改成ASIC
1996年Compaq申请过一个专利,特别强调不需要加二极管也能拥有N-Key Rollover功能。Compaq抛弃键盘矩阵的想法,将原本在键盘上的8 bit MicroController 8051以ASIC(Application Specific Intergrated Circuit)取代。简单说,就是将I/O针脚增加,让每颗按键都能有独立针脚传送信号,就不会产生Ghost Key。不过ASIC开发成本高,也不能随时修改,一修改就是从头设计,所以键盘后来也没有采用此技术。

▲此为Compaq在1996年的美国专利,专利号码:US005523755A。

▲FIG. 1为当时键盘的设计,下方的Keyboard都通过MicroController之后,才传送至电脑。FIG. 2为如果要让2-Key Rollover的键盘提升至N-Key Rollover,作法就是要在每个Keyboard Matrix交叉点的信号都加上二极管。

▲FIG. 3为Compaq的专利,将原本的MicroController替换成ASIC。FIG. 4就是原本再交叉点上的按键全变成独立信号。
减少二极管使用量
由于开发ASIC需要花更多费用,所以要达到N-Key还是得回到增加二极管的方法。不过使用二极管的数量是随着键盘按键数量而改变,所以当键盘有101键时,那就需要101个二极管,对于成本而言相当高。
2009年韩国厂商Skydigital提出了一个解决方法,将键盘矩阵特别设计,增加I/O针脚将信号拉出,统一集中到薄膜电路外的二极管来处理信号,这可以省下二极管数量又能达到N-Key Rollover的效果。目前Skydigital在韩国已经推出一款薄膜式N-Key Rollover键盘nKEYBOARD,就是采用自家的技术,不过成本还是不够低。

▲Skydigital在官方站点上有特别提出他们的独家专利说明,Patent Cooperation Treaty(PCT)号码:WO 2009/119947 A1。
利用电阻直达N-Key Rollover
微软在2010年对于N-Key Rollover提出新解决方法,不使用二极管而采用电阻来判断。微软增加电阻的方式,是直接把薄膜电路的信号线加长,线路距离加长意即增加电阻,而不是直接在上面加上电阻电路。
由于每个按键的电阻都不同,所以当按键送出信号时,可以由键盘控制器来判断是哪些按键的信号,透过这种方法可以达到N-Key Rollover功能。当然电阻也不是只能放在薄膜电路上,也能利用在PCB板上,所以此方法也能应用在机械式键盘上。

▲微软提出的专利后,直接运用在目前的游戏键盘SideWinder X4上。(专利号码:US20100066567A1)

共34条 1/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]