玩家甚至媒体的解读是错的,所以小编在此重点说明一些概念、并分享如何测试。在许多游戏与软体中都会使用组合键功能,也就是同时按下特定几个按键之后就能触发特别的功能,简单的说就是一些动作的快捷键。不过,有时候按不出功能并不是软体的问题,而是键盘内部硬体的问题。

键盘内部为矩阵设计

不管是薄膜式键盘或机械式键盘,内部都有行与列组成的电路图,这些行与列都至少会有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 ?微软帮你测的更多相关文章

  1. WinForm中为按钮添加键盘快捷键,超简单,亲测有效

    博主并没有多少Windows平台下程序的开发经验,一年前使用过MFC设计过一个指纹识别系统的页面,后来就没有使用过几次.现在C#课程实验要求实现一个简易计算器,为了便于快速录入数据,使用键盘会比使用鼠 ...

  2. .NET下如何拦截鼠标、键盘消息?Win32NET来帮你

    Win32NET是一个Win32API的.NET下封装的类库,包含: 1: 常用win32的API的net封装 2:鼠标.键盘.热键hook钩子模块, 3:模拟键盘输入文字(支持各种字符文字.不同语言 ...

  3. WPF 自定义键盘焦点样式(FocusVisualStyle)

    WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌.这时,其自带的键盘焦点样式(FocusVisualSt ...

  4. Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html

    一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...

  5. 深入浅出话VC++(1)——Windows程序内部运行机制

    一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...

  6. VS Code好用到飞起的配置设置

    Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux.它内置了对JavaScript,TypeScript和Node. ...

  7. 【.NET与树莓派】上手前的一些准备工作

    .NET Iot 不是什么新鲜事物,百科很强大,故老周在此也不必多介绍.现在的时代和老周当年学 QBasic 的时代不同,那时候拉根电话线上网,下载速度只有可怜的 3.5 kb/s.而且还要去店里买上 ...

  8. Microsoft Build 2016 Day 1 记录

    去年今日:Microsoft Build 2015 汇总 今年的 Bulid 时间是 3.30-4.1,第一天的主角主要是 Windows 10.人工智能.HoloLens.小娜等,详细介绍:3 分钟 ...

  9. [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据

    继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...

随机推荐

  1. SQLServer XML类型

    SQL Server从2005起开始支持xml类型,这个数据类型对于后期的改变非常有用.一对多的关系在后期变成了多对多的关系,XML类型就是一个不错的选择. 1.创建测试数据 创建表 --创建表,包含 ...

  2. jQuery之Jcrop

    头像裁剪是一个经常用到的功能,实现原理也较为简单,就是在本地选择好所需裁剪图片的坐标,将坐标发送到服务器,由服务器执行图片裁剪操作. jQuery插件Jcrop提供了强大的图片裁剪坐标选择插件.一下来 ...

  3. javascript之Function函数

    在javascript里,函数是可以嵌套的. 如: function(){ funcrion square(x){ return x*x;  } return square(10); } 在javas ...

  4. Android中退出多个Activity的两个经典方法

    这里介绍两种方法:一种把每个activity记住,然后逐一干掉:另一种思路是使用广播. 方法一.用list保存activity实例,然后逐一干掉 上代码: import java.util.Linke ...

  5. java设计模式--创建模式--原型模式

    原型模式: 原型模式 概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性 .当一个系统应该独立于它的产品创建.构成和表示时. .当要实例化的类是在运行时刻指定时,例如,通过 ...

  6. Impala 3、Impala、Hbase整合

    Impala可以通过Hive外部表方式和HBase进行整合,步骤如下: • 步骤1:创建hbase 表,向表中添加数据 create 'test_info', 'info' put 'test_inf ...

  7. 【转】Linux内核调试方法总结

    目录[-] 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG_ON() 2  dump_sta ...

  8. scrollTo和scrollTo.js

    最近做一个项目前端要用到scrollTo和滚动视觉差.顺便把两个东西拿出来温习一下. HTML DOM里面定义了scrollTo方法,用法:scrollTo(xpos,ypos),把内容滚动到当前的指 ...

  9. linux网络编程--跳水send和recv

    要了解一个概念:所有的TCP socket在内核具有发送缓冲器和接收缓冲器.TCP除了全双工操作模式TCP滑模取决于这两个单独buffer和这个buffer填充状态. 接收缓冲器数据缓存入内核.应用进 ...

  10. jquery .net 无刷新多文件上传

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示 ...