为什么我的键盘每次只能接受 6 次按键?

为什么我的键盘每次只能接受 6 次按键?

当我把手放在键盘上时,最多只能注册 6 个键,我在过去几分钟内对此进行了测试,但无法获得超过 6 个键。所有键盘都一样吗?如果不是,区别因素是什么?如果是:为什么具体是 6 个?

澄清一下:我没有这方面的用例,我只是好奇

答案1

并非所有键盘都是这样的。你指的是滚下或者密钥翻转。这只是指计算机正确处理多个同时击键的能力。

X 键无冲突指的是您可以同时按下多少个键,同时仍被计算机注册。

我不知道是否有标准的“默认”级别,但许多键盘都是 6 键翻转。有些游戏键盘和高端键盘有真正的全键无冲,这意味着键盘硬件会完全独立地扫描每个按键。这样可以确保无论同时按下多少个其他按键,每次按键都能被正确检测到。

根据你的键盘,你可以选择使用 6 键翻转或启用真正的 n 键翻转。例如,我有一台 Deck Hassium Pro,默认情况下具有 6 键翻转,但有一个热键可以启用真正的 n 键翻转。

答案2

搜索密钥翻转

  • 出现一个限制是因为大多数键盘没有为每个键配备单独的线路;相反,键盘有一个矩阵(或多个矩阵),其中每个键连接特定的行/列,并且当在同一个矩阵中同时建立太多连接时,它们变得无法区分。

    因此,第一个同时按下的键数取决于键盘的电子元件的设计方式。搜索“键盘矩阵重影“关于这个话题的很多文章。

  • 如果键盘的硬件避免了物理问题,则其他限制是由于 USB HID 设备使用的协议(或者说是两种协议)造成的。引用维基百科:

    为了让用户获得完整的 n 键翻转功能,必须将完整的按键状态传输到计算机。当通过 USB 协议发送数据时,有两种操作模式:人机接口设备 (HID)“报告协议”和“启动协议”。启动协议在启动时启用,限制为 8 个修饰键 [...],后跟最多 6 个键代码。这将限制可以报告的同时按键次数。要获得完整的 n 键翻转功能,必须在键盘和计算机上实施 HID 报告协议。

    (如果您确定键盘支持它,那么可能只是在 Windows 中切换驱动程序的问题。)

答案3

键盘不会单独连接每个按键。薄膜键盘使用一种稀疏网格,刚好足以分辨出当前按下的是哪个键。根据型号不同,薄膜和控制器板之间大约有 20 个触点,包括接地。

每个按键是否被按下,每个轮询间隔都会产生 104 位数据。如果膜片包含可以编码这些数据的半导体元件,它就可以将这些数据发送到控制器。但膜片只是一层带有一点银迹的塑料薄膜 - 一个并行模拟接口,其容量不超过其接触针的数量。这些迹线的放置方式可以识别同时按下的几个按键以及修饰键。

高端键盘几乎全部采用机械键盘,采用 PCB 结构,支持电路板上任何位置的有源电子元件。早期的机械键盘包括一些 6KRO 型号,但如今大多数机械键盘都支持 NKRO,这意味着可以同时注册任意数量的按键。

如果您不容易溅水,并且希望确保按键准确,那么如今机械键盘是您的最佳选择。(溅水后,大多数背光机械键盘会因高电流导致背光照射到控制器而损坏。)一小部分人仍然喜欢剪刀薄膜键盘,而非剪刀薄膜键盘仍然是继 Topre 电容键盘之后第二款防溅实用键盘,通常与机械键盘混为一谈。

答案4

虽然这个网站上的视频不能提供很好的答案,但我还是建议n 键翻转如何工作?作者:Ben Eater。他演示了廉价的 2 键翻转键盘和优质 n 键翻转键盘之间的区别,描述了这些键盘中的电路如何工作以显示廉价键盘缺少什么,并从键盘捕获实际的 USB 设置和数据包以准确显示它们如何与主机通信。

你可以将此视频与他之前的视频进行比较那么 PS/2 键盘接口如何工作?了解 USB 和 PS/2 协议之间的差异。他还制作了几个视频,其中他为基于 6502 的计算机编写软件,将这些关键事件转换为文本。

PS/2 协议最有趣的地方在于,无需进行任何更改即可适应 n 键翻转,但这只是因为它将大量工作推到了计算机本身。计算机必须具有足够大的缓冲区来保存键盘上每个键的至少一个按键事件,或者需要将这些按键事件转换为当前按下的键的位图。在 USB 键盘上,键盘本身必须维护该缓冲区或位图。该缓冲区通常有六个键的空间(尽管原则上它可以是任意长度),这足以满足大多数用户的需求,但不支持真正的 n 键翻转。一些按键翻转少于 6 的键盘仍然有一个带有六个键缓冲区的 USB 芯片。

另外,计算机上的操作系统会将按键和释放按键事件传递给您正在运行的程序,几乎与 PS/2 协议传递的事件完全相同,因此它必须将缓冲区转换为六到十二个事件。同样,位图最终可能会转换为一百多个事件。游戏引擎经常将这些事件转换回按下的按键位图¹,以供游戏检查。

这基本上就是小丑鞋。

¹ 或者有时是一个更大的位图,指示此帧开始按下哪些键、已按下多帧的键以及此帧释放的键。

相关内容