Клавиатура: N-Key Rollover (NKRO) и задержка ввода в играх
Резюме (TL;DR)
Когда я в режиме тренировки Street Fighter 6 быстро повторял «шорюкен» Рю на мембранной клавиатуре за 30 долларов без диодов, регулярно ловил момент «DP вроде нажал, а персонаж стоит». То, что одна комбинация целиком пропадает или воспринимается как нажатие другой клавиши, называется гостинг (ghosting), а способность клавиатуры корректно обрабатывать N одновременно нажатых клавиш — rollover. Дешёвые мембранные устройства стабильно держат обычно 2–3 клавиши; большинство механических клавиатур по умолчанию гарантируют 6KRO по USB HID boot protocol (6 клавиш + модификаторы). Настоящий N-Key Rollover (NKRO) требует либо отдельного «full» HID-отчёта, либо кастомного USB-дескриптора. Типовые полл-рейты — 125/500/1000/8000 Гц; для игр 1000 Гц фактически стандарт, а дальше разница на вкус и требует реальных измерений. В статье разбираю отличия 1KRO/6KRO/NKRO, влияние полл-рейта на задержку и как с помощью браузерного теста rollover и монитора полл-рейта понять, «что на самом деле у меня за клавиатура».
Предыстория и концепции
Внутри клавиатуры переключатели соединены в матрицу; контроллер быстро сканирует строки и столбцы и определяет, что нажато. Конструкция простая, но с побочным эффектом: при определённых комбинациях несколько клавиш создают «ложный путь» в матрице, и контроллер видит нажатие, которого не было. Это и есть гостинг. Чтобы этого не случалось, к каждому переключателю добавляют диод, пропускающий ток только в одну сторону; дешёвые клавиатуры без диодов по природе ограничены в одновременных нажатиях. Аналоговые клавиатуры на эффекте Холла вроде Wooting 80HE вообще уходят от матрицы — каждый переключатель имеет собственный магнитный сенсор.
В спецификации USB HID есть boot protocol, который должен работать и из BIOS: он использует фиксированный формат отчёта и поддерживает до 6 обычных клавиш плюс модификаторы. Именно благодаря ему клавиатуры работают в загрузчике; но для отчёта большего числа клавиш нужен расширенный формат. Производители реализуют NKRO обычно двумя способами: либо boot 6KRO + переключение в NKRO по физическому тумблеру или программной опции, либо через отчёт на основе битовых полей по умолчанию. Razer Huntsman и Corsair K70 ближе к первому варианту; Wooting и клавиатуры на кастомной прошивке QMK/VIA — ко второму.
Полл-рейт — это частота, с которой хост опрашивает состояние клавиатуры. 125 Гц — раз в 8 мс, 1000 Гц — раз в 1 мс. Чем выше, тем ниже теоретическая задержка, но в большинстве случаев время debounce переключателя и период сканирования матрицы играют большую роль, и выше 500–1000 Гц разницу на ощупь поймать сложно.
Сравнение и данные
| Параметр | 1KRO | 6KRO | NKRO |
|---|---|---|---|
| Где встречается | Дешёвые мембранки, часть компактных устройств | Базовый режим большинства USB-клавиатур, HID boot-режим | Средние и дорогие механические/игровые клавиатуры |
| Как проверить | Теряет уже при 2–3 одновременных клавишах | Стабильно до 6, начиная с 7-й — пропуски или проблемы с модификатором | 10+ клавиш одновременно — все регистрируются |
| Влияние на игры | Частые пропуски сочетаний в шутерах и файтингах | Повседневной игры хватает, но кастомные макросы и несколько модификаторов упираются | Важно для файтингов, ритм-игр, RTS — всего, где много одновременных клавиш |
Полл-рейт — это отдельная ось от 1KRO/6KRO/NKRO, но при разговоре о задержке их рассматривают вместе. Механический debounce обычно лежит в 2–5 мс, то есть он сам по себе «шире», чем 1 мс, обещаемая опросом на 1000 Гц. Современные игровые клавиатуры с 8000 Гц (Razer Huntsman V3 Pro, Wooting 80HE и др.) одновременно оптимизируют debounce и логику сканирования, чтобы реально понизить задержку, но ощущение выигрыша — это уже территория киберспортсменов с тонкой реакцией. В обычной офисной работе вслепую отличить 1000 Гц от 8000 Гц практически невозможно.
Практические сценарии
Сценарий 1 — файтинги и ритм-игры. В жанрах, где клавиши жмутся пачками — направление + атака + модификатор, — даже 6KRO начинает ронять сложные комбо, где нужна 7-я клавиша. В файтингах сочетания типа «низкий блок + отмена прыжка + удар» часто задействуют Shift/Ctrl, и пропуски чувствуются сразу. Если вы играете в Street Fighter 6 или Guilty Gear Strive с клавиатуры, быстрее всего проверить состояние NKRO в браузерном тесте rollover.
Сценарий 2 — обычная печать и офис. Человек физически редко держит нажатыми больше 6 клавиш одновременно. Дефолтного 6KRO достаточно, и поднятие полл-рейта до 1000 Гц почти не меняет ощущения при наборе текста. На офисной работе ощущение и звук, раскладка и тактильность клавиш меняют опыт сильнее, чем rollover.
Сценарий 3 — стриминг и макросы. Горячие клавиши OBS и макропады часто срабатывают сочетаниями модификаторов вроде Ctrl+Alt+F12, и тут полл-рейт и отклик макросов становятся важнее. Но реальный боттлнек часто лежит в обработке хоткея программой, так что одной только подъёмки полл-рейта клавиатуры может быть недостаточно.
Распространённые заблуждения
«Все механические клавиатуры — NKRO». Многие — да, но не все. Встречаются схемы «по умолчанию 6KRO + переключение в NKRO», а в дешёвых линейках NKRO и вовсе не бывает — только 6KRO. Искать нужно явное упоминание «USB NKRO» в прошивке или документации. Даже внутри линейки Razer разные модели ведут себя по-разному; надёжнее смотреть страницу спецификаций производителя, а не коробку.
«Чем выше полл-рейт, тем лучше». При печати между 500 Гц и 1000 Гц разницу почти не поймать, а в соревновательных играх 1000 Гц — стандарт, и дальше отдача от роста быстро убывает. Если после апгрейда полл-рейта вы не чувствуете разницы — это нормально, а не аномалия. 8000 Гц имеет смысл только когда монитор тоже даёт 240 Гц и выше, мышь на том же уровне, а игровой движок держит соответствующий тикрейт; в остальных случаях это просто лишние прерывания CPU без ощутимой пользы.
«В офисе пропуски — это из-за NKRO». На рабочих машинах пропуски ввода чаще случаются из-за маршрута через USB-хаб, драйвера, загрязнения контактов или прошивки. Реальный лимит 6KRO в повседневной работе почти не проявляется; при повторяющихся симптомах логичнее сперва подключить напрямую (минуя хаб), перезагрузиться, почистить клавиатуру и обновить прошивку.
Чек-лист
- Откройте в браузере страницу теста rollover. Пробуйте одновременно удерживать несколько клавиш и проверяйте, все ли отображаются.
- Нарастите от 1–6 до 7+. Если с 7-й клавиши регистрация теряется — 6KRO; если видно 10+ — NKRO.
- Если NKRO — через тумблер, активируйте его (Fn-сочетание или софт от производителя) и повторите тест.
- Измерьте реальный полл-рейт. Даже при заявленных 1000 Гц из-за USB-стэка хоста и хаба фактическая цифра может быть ниже.
- Определите цель по жанру. Шутер, файтинг, ритм — NKRO обязателен; обычная печать — хватит 6KRO.
- Если общая задержка по-прежнему велика — проверьте дисплей, аудио и сеть. Часто дело не в одном только вводе.
Связанный инструмент
Диагностика клавиатуры Patrache Studio показывает одновременно зажатые клавиши прямо в браузере — так легко увидеть реальный потолок rollover. Хорошей парой к диагностике ввода идёт Тест монитора на битые пиксели, а когда речь идёт о полном бюджете задержки в играх, разумно смотреть и аудио-часть — Измерение аудио-латентности микрофона и динамиков, чтобы сбалансировать всю цепочку «глаза + руки + уши».
Источники
- Официальная страница USB HID — https://www.usb.org/hid
- Документация Wooting по реализации NKRO — https://wooting.io/
- Обзоры клавиатур RTINGS — https://www.rtings.com/keyboard