有什么理由禁用 n-key rollover(NKRO)?

有什么理由禁用 n-key rollover(NKRO)?

阅读Das 键盘的功能,我看到以下内容:

游戏玩家和快速打字者会很高兴听到 Das Keyboard 4 支持通过 USB 实现全键无冲 (NKRO)。无需再使用 PS2 适配器。只需按下 Shift + 静音即可切换 NKRO。

为什么键盘可以切换 NKRO?有什么理由让你不是想要 NKRO 吗?

答案1

原因似乎是为了支持较旧的主板。

我联系了 Das Keyboard,他们给出了以下答复:

感谢您花时间与我们联系。

NKRO 切换的原因是一些较旧的主板不“理解”或“无法”通过 USB 进行 NKRO。这比这要复杂一些,但这是最简单的说法 - 这样使用较旧主板的用户就可以通过 USB 毫无问题地使用键盘。当然,他们可以使用 PS/2 适配器来实现 NKRO,但由于当今世界全是 USB,并不是每个人都能访问他们机器上的 PS/2 端口。

答案2

除了旧主板外,大多数KVM 切换器不适用于 NKRO 键盘。

答案3

有一个漫长的讨论https://geekhack.org/index.php?topic=37567.0关于 NKRO 有时会导致问题的技术原因。本次讨论的 TLDR 如下:

  • NKRO 最有可能导致 BIOS 和 KVM 切换器出现问题。这些问题是由成本削减措施引起的,而不是 NKRO 固有的问题。
  • 6KRO 适合任何日常用途,包括大多数游戏。

该讨论帖中最有启发性的评论如下:

USB 标准在任何版本中都没有关于键盘或鼠标等的具体规定。

这是 HID 标准所为。6 键加修饰键报告结构实际上只是为了简化 BIOS 的工作(这样它们就不必解析报告描述符),但无论如何它都成为了键盘的事实“标准”。但是,HID 标准允许各种不同的报告,并且所有主流操作系统都完全支持它,因此不需要额外的驱动程序。

另一个限制是低速 USB 数据包最多只能有 8 个字节。报告可以更大,但发送需要花费大量时间。USB 标准仅允许低速设备每 10 毫秒(每个端点)发送一个数据包。操作系统通常会将其推高至 8 毫秒,即 125Hz(无黑客攻击)。需要长达 16 毫秒才能将按键发送到主机,这太糟糕了!因此,我们经历了制造商试图从低速芯片中获取超出其实际处理能力的更多东西的阶段,使用多个端点等技巧。 :(

全速 USB 摆脱了这些限制。每个数据包可以是 64 个字节,并且可以每 1ms 发送一次(同样,每个端点)。这使得 HID 标准能够得到充分发挥。

最后,NKRO 并非只是为了它而做。执行完整的 NKRO 只需要每个键一个位,而不是一个字节,并且不必将修饰符视为特殊情况。因此,键盘可以在仅仅 13 个字节中发送例如 104 个键 - 使用其他方案 13 个字节只能管理 11KRO(11 个键 + 修饰符 + 一个保留字节)。当然,这仍然有很多键,但这种方法远没有那么优雅(并且仍然“不是 6KRO”,因此仍然可能与愚蠢的主机不兼容)。

答案4

在某些情况下(不是全部,但有些情况下),NKRO 也会阻止 Ubuntu 正确使用 Linux 键修饰符。

因此,切换功能对于日常使用 Linux 的用户来说非常有价值。

相关内容