为什么我的键盘一次只能消化 6 个按键?

Fol*_*ing 68 keyboard

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

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

DrZ*_*Zoo 90

并不是所有的键盘都这样。您所指的称为rolloverkey rollover。这只是指计算机正确处理多个同时击键的能力。

X-key rollover是指你一次可以按下多少键,同时仍然被电脑注册。

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

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

  • 6 键限制的原因之一:HID 规范要求键盘一次向 BIOS 报告的键数不能超过 6 个(尽管操作系统没有此类限制)。请参阅 https://usb.org/sites/default/files/documents/hid1_11.pdf 附录 B 以供参考。我怀疑只是没有人愿意处理具有 BIOS 模式和带有 n 键翻转的“扩展模式”。 (69认同)
  • @AndrewSun:奇怪的是,这只是 USB 的限制。PS/2 键盘可以支持真正的 n 键翻转,而无需提供“我在与 BIOS 对话吗?” 逻辑。 (23认同)
  • @JDL 比我想象的更难测试,但答案是肯定的。 (14认同)
  • 声称 HID 规范要求这样做真的是一个神话。引导报告描述符格式不支持超过 6 个键的翻转(不包括修饰符)。但这并不排除 USB 设计的东西:替代报告描述符格式。人们可以_并且确实_使用这些。https://unix.stackexchange.com/a/401773/5132 (8认同)
  • 如果您在敲击时已经按下了其他六个键,那么 n-key-rollover-hotkey 是否有效? (5认同)
  • @Kevin 我不确定,但我怀疑这是因为操作系统直接读取 PS/2 端口,而不是首先由 BIOS 解释——那么唯一的限制就是操作系统支持的内容(在每种情况下)我知道)是 n 键。 (2认同)
  • @Kevin 事实上,PS/2 本身支持 NKRO,此外它的信号是基于中断而不是基于轮询的(我相信 USB 使用 5kHz 轮询频率),实现更低的延迟使其优于 USB 键盘用于游戏。我相信这是因为 PS/2 键盘是无状态的,并且在按下或释放键时发送独立信号,而 USB 键盘必须跟踪键盘状态并定期向操作系统发送更新,告诉它当前按下了哪些键. (2认同)

use*_*686 56

搜索密钥翻转

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

    因此,同时键的第一个数量取决于键盘的电子设备是如何设计的。搜索“键盘矩阵重影”可以找到很多关于这个主题的文章。

  • 如果键盘的硬件避免了物理问题,则由于 USB HID 设备使用的协议——或者更确切地说,是两种协议,会出现另一个限制。引用维基百科:

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

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

  • 第一个问题可以通过将每个键与一个二极管串联来解决。 (2认同)