На https://geekhack.org/index.php?topic=37567.0 ведется длительное обсуждение технических причин, по которым NKRO иногда вызывает проблемы. TLDR этого обсуждения:
- NKRO, скорее всего, вызовет проблемы с BIOS и KVM-переключателями. Эти проблемы вызваны мерами по сокращению расходов, а не присущи НКРО.
- 6KRO подходит для любого обычного использования, включая большинство игр.
Наиболее ярким комментарием в этой ветке обсуждения является следующее:
Стандарты USB не говорят ничего конкретного о клавиатурах, мышах и т.д. В любой версии.
Это стандарт HID, который делает. Структура отчета с шестью ключами и модификаторами действительно была предназначена только для того, чтобы упростить жизнь BIOS (чтобы им не приходилось анализировать дескрипторы отчетов), но фактически стала «стандартом» для клавиатур. Однако стандарт HID позволяет создавать всевозможные отчеты, и все основные ОС поддерживают его полностью, поэтому нет необходимости в дополнительных драйверах.
Другое ограничение заключается в том, что низкоскоростной пакет данных USB может быть не более 8 байтов. Отчет может быть больше, но его отправка занимает много времени. Стандарт USB позволяет только низкоскоростному устройству отправлять один пакет каждые 10 мс (на конечную точку). ОС обычно подталкивает это до 8 мс, то есть 125 Гц (без взломов). Потребовалось до 16 мс, чтобы получить ключ к хозяину, это будет дерьмо! Таким образом, у нас была стадия производителей, пытающихся получить больше от низкоскоростных чипов, чем они могут реально справиться, с помощью трюков, таких как множественные конечные точки и т.д. :(
Полноскоростной USB освобождает эти ограничения. Каждый пакет может иметь размер 64 байта и может отправляться каждые 1 мс (опять же, для каждой конечной точки). Это позволяет использовать стандарт HID в полной мере.
Наконец, НКРО не сделано только ради этого. Для выполнения полного NKRO требуется только один бит на ключ, а не один байт, и не нужно рассматривать модификаторы как особый случай. Таким образом, клавиатура может отправлять, например, 104 клавиши всего за 13 байтов - при использовании другой схемы 13 байтов будут управлять только 11 КРО (11 клавиш + модификаторы + один зарезервированный байт). Конечно, это все еще много ключей, но это гораздо менее элегантный метод (и все же «не-6KRO», поэтому он все еще может быть несовместим с немыми хостами).