键盘的「冲突」与「无冲」

曾经键盘冲突是很常见的情况,比如在玩双人游戏《混乱大枪战》(Gun Mayhem) 的时候,很可能会出现按键无法生效,或者输出了原本没有按下的「鬼键」,背后的原因是矩阵电路的设计以及 USB HID 报告问题。

矩阵电路 是一种能减少线路的方案,被键盘与电子琴使用,如果每一个按键都用导线连接到处理器,那么 104 键的键盘以及 88 键的电子琴都会变得更复杂,不利于生产,不过矩阵电路就存在缺陷,除非使用二极管来限制信号,不过成本和制造难度会增加。

USB HID 报告是键盘与电脑沟通的方式,报告的长度只有 8 字节,前两字节用来标明自己的键盘身份以及保留用,所以只有 6 个字节传输按键,但是当时的 USB HID 报告不像现在的手柄协议,比如比如 A B X Y 分别是 10 20 40 80,全部都按下会得到 F0,还剩下半字节传输其他的内容,而 USB HID 协议使用 1 字节传输一个按键信号,也就是只能传输 6 个按键信号。

USB HID 协议是历史遗留的问题,这在信息技术中很常见,为了兼容性一般不会修改,除非这是完全无法绕过的巨大问题,现在的解决方法比较暴力,就是模拟、申报多个 USB HID 设备,以实现无冲突 (NKRO),好在并没有什么副作用,估计未来 USB HID 协议也不会轻易改变吧。

#原理 #Wikipedia
 
 
Back to Top