键盘有没有NKRO ?微软帮你测

玩家甚至媒体的解读是错的,所以小编在此重点说明一些概念、并分享如何测试。在许多游戏与软体中都会使用组合键功能,也就是同时按下特定几个按键之后就能触发特别的功能,简单的说就是一些动作的快捷键。不过,有时候按不出功能并不是软体的问题,而是键盘内部硬体的问题。
键盘内部为矩阵设计
不管是薄膜式键盘或机械式键盘,内部都有行与列组成的电路图,这些行与列都至少会有16条线路与8条线路交叉形成,组合出共有128个交叉点。目前键盘按键数大约为103键,所以这些电路已经足够使用。由于键盘的按键资讯都是设计在键盘矩阵中,里面每个行与列的交错点都代表着1个按键资讯。当有按键被压下时,键盘就会进行扫描动作来查询是哪颗键被压下。这部分是很容易理解的,不过当使用者同时按下的按键越多时,状况就有点不同。
产生鬼键造成键位冲突
当只有1个按键被压下时,键盘会进行扫瞄行与列资讯来判断,但如果超过1颗按键同时按下时就没这么容易。在同一个井字矩阵电路中的4个按键讯号,如果有同时3个按键被按下,会送出2个行与2个列的资讯,键盘是无法反推判断是哪3个按键,而会认为是4个按键同时按下,这时没有真正按下却被送出的按键就称为鬼键(Ghost Key)。
有些键盘会避免输出错误的按键资讯,选择忽略玩家按下的第3个键,这时便会有按下3个键却只输出2个按键讯号的状况,这些都是为了避免产生鬼键造成键位冲突所采用的一种应变方式。不过有的键位设计则是设法加以改良,注明支援N-Key Rollover(NKRO),也就是可以同时输出多颗按键,不会有键位冲突的问题。也有一些电竞键盘,针对游戏常用的特定按键进行矩阵电路最佳化避免键位冲突,也可以减少玩家出错的机会。

▲薄膜式键盘与机械式键盘内部都是由矩阵电路所组成,此为键盘讯号示意图,实际电路图每家厂商都有所不同。
微软线上进行简易判断键位讯号
透过国外的KeyboardTest付费软体(约新台币768元),或者由台湾玩家Ivan Lin开发的hKBTEST免费软体都能测试,不过无论如何方便性也比不上直接开启网页就能测试。微软设计了一个网页平台,可以让玩家利用网页上的元件就能测试键盘的按键讯号。测试时可以分别将常用的3个键各别测试,比较容易判断出哪些键一起按时会产生鬼键,这些都可以在设定快捷组合键时做为一个重要的参考指标。网址是:http://www.microsoft.com/appliedsciences/KeyboardGhostingDemo.mspx。

▲微软提供线上测试键位冲突问题,直接在网页上就能即时测试。
打字快与键位冲突无关
近来有些玩家与媒体认为,打字输入太快会造成键位冲突,小编在这里可以跟各位挂保证这完全是两回事。键位冲突的发生与否,与打字输入的快慢毫无关系,按下去会产生鬼键的这3个按键,并不会因为速度太快或太慢而改善,千万不要被误导了。
如果以连接介面来说,对于内部设计会造成键位冲突的键盘,就算更改成PS/2与USB都还是会造成键位冲突。唯一差别的在于USB键盘通常都会受到USB规范所限制,只能有6+2键输出,不能像PS/2键盘可以达到全部按键同时输出。况且键盘冲突是键盘内部设计所造成的问题,跟外部输出介面不同没有相对关系。一般玩家看到这里就可以了,如果真的很有兴趣,可以翻阅75期电脑王杂志,会有更详细的说明。
键盘有没有NKRO ?微软帮你测的更多相关文章
- WinForm中为按钮添加键盘快捷键,超简单,亲测有效
博主并没有多少Windows平台下程序的开发经验,一年前使用过MFC设计过一个指纹识别系统的页面,后来就没有使用过几次.现在C#课程实验要求实现一个简易计算器,为了便于快速录入数据,使用键盘会比使用鼠 ...
- .NET下如何拦截鼠标、键盘消息?Win32NET来帮你
Win32NET是一个Win32API的.NET下封装的类库,包含: 1: 常用win32的API的net封装 2:鼠标.键盘.热键hook钩子模块, 3:模拟键盘输入文字(支持各种字符文字.不同语言 ...
- WPF 自定义键盘焦点样式(FocusVisualStyle)
WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌.这时,其自带的键盘焦点样式(FocusVisualSt ...
- Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html
一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...
- 深入浅出话VC++(1)——Windows程序内部运行机制
一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...
- VS Code好用到飞起的配置设置
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux.它内置了对JavaScript,TypeScript和Node. ...
- 【.NET与树莓派】上手前的一些准备工作
.NET Iot 不是什么新鲜事物,百科很强大,故老周在此也不必多介绍.现在的时代和老周当年学 QBasic 的时代不同,那时候拉根电话线上网,下载速度只有可怜的 3.5 kb/s.而且还要去店里买上 ...
- Microsoft Build 2016 Day 1 记录
去年今日:Microsoft Build 2015 汇总 今年的 Bulid 时间是 3.30-4.1,第一天的主角主要是 Windows 10.人工智能.HoloLens.小娜等,详细介绍:3 分钟 ...
- [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...
随机推荐
- ubuntu Python2.7 安装PIL问题
$sudo easy_install PIL WARNING: '' not a valid package name; please use only.-separated package name ...
- LeetCode_Interleaving String
Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: s1 ...
- TextReader/TextWriter 的类
TextReader以及TextWriter这两个类,非常有用,很多方法都接受它们作为参数. TextReader有两个子类: StringReader/StringWriter 用于读取字符串: S ...
- C++ 11学习(1):lambda表达式
转载请注明,来自:http://blog.csdn.net/skymanwu #include <iostream> #include <vector> #include &l ...
- 在COM组件中调用JavaScript函数
转载自: http://blog.csdn.net/cheungmine/article/details/1451489 要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS) ...
- Invert Binary Tree 解答
Quetion Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Solution 1 -- R ...
- 在C++中打印出变量的方法
在C++中只能显示出字符串,而如果要想打印出其他类型的变量,则只能将其先转换为字符串类型. 例如:想打印出int型变量value的值 int value; 则需: char str[1];//定义一 ...
- Volist标签 key值的使用
Volist标签是thinkphp框架view中常用到的一个标签.主要用于在模板中循环输出数据集或者多维数组.今天使用key属性时出了点问题,记录一下. volist标签(循环输出数据) 闭合 非闭合 ...
- Eclipse 快捷键总结
导包:alt+/ctrl+shift+o (alt+/) 全局文件搜索:ctrl+shift+r 全局关键词搜索:ctrl+h 查看解决方案:ctrl+1 自动补全:abcdefghjklmnopqr ...
- 手动调整导航控制器中的viewcontroller
NSMutableArray *array = [[NSMutableArray alloc]initWithArray: [self.navigationController viewControl ...