Большая часть задержки между твоим пальцем и игрой живёт в самой клавиатуре, а не в Windows. Нажатие проходит шесть этапов, прежде чем на экране поменяется хоть один пиксель, и программа может укоротить ровно два из них. Если ты пришёл сюда за значением реестра, которое убирает лаг клавиатуры, честный ответ такой: такого значения не существует — но на трёх из шести этапов бывают настоящие, проверяемые неисправности, и на них стоит потратить двадцать минут.
Эта страница разбирает путь по частям, называет владельца каждой из них и прямо говорит, до чего дотянуться нельзя.
Какой путь на самом деле проходит нажатие
| Этап | Чей он | Может ли программа его укоротить? |
|---|---|---|
| 1. Переключатель замыкается; контроллер клавиатуры опрашивает свою матрицу и гасит дребезг контакта | Прошивка клавиатуры | Нет |
| 2. Клавиатура выкладывает отчёт на свою конечную точку прерываний USB — с тем интервалом, который запросила её прошивка | Прошивка клавиатуры | Нет |
3. Хост-контроллер забирает отчёт; kbdhid.sys и kbdclass.sys передают его выше | Windows + драйвер чипсета | Только удалением драйвера, который тормозит |
| 4. Отчёт проходит через фильтрующие драйверы и низкоуровневые перехватчики, сидящие на пути ввода | Программа клавиатуры, макрослой, оверлей | Да |
| 5. Игра читает ввод — в большинстве движков раз в кадр | Игра | Косвенно, через рост частоты кадров |
| 6. Кадр рисуется, выводится, развёртывается и зажигается на матрице | Видеокарта, Windows, монитор | Частично — смотри Задержка ввода, которую не исправит ни одна программа |
Этап 1 — то, до чего не дотянется никто
Клавиатура не шлёт сигнал в момент замыкания переключателя. Её собственный контроллер по кругу опрашивает матрицу клавиш, а увидев контакт, выжидает дребезг, прежде чем считать клавишу нажатой. Это ожидание — константа прошивки. Windows его не видит, ни один драйвер не может его прочитать, и ни одно значение реестра на твоей машине его не меняет.
Именно поэтому две клавиатуры на одном и том же ПК ощущаются по-разному при всех прочих равных, и именно поэтому «лаг клавиатуры» так часто оказывается железным ответом, переодетым в программный.
Этап 2 — интервал опроса задаёт сама клавиатура, и это записано
USB-устройства ввода передают данные через конечную точку прерываний, а в дескрипторе этой точки есть поле bInterval, которое сообщает, как часто хосту следует опрашивать устройство. Собственная документация Microsoft по этой структуре не оставляет разночтений: «This value reflects the device's configuration in firmware. Drivers cannot change it.»
Та же страница даёт и пересчёт. На устройстве full-speed bInterval, равный 1, означает период опроса в один кадр длиной 1 миллисекунда — те самые 1000 Гц, которые клавиатуры пишут на коробке. На устройстве high-speed период считается в микрокадрах, по восемь на миллисекунду, по формуле Period = 2 ** (bInterval - 1).
Отсюда следуют две вещи, и это самые полезные предложения на всей странице:
- Клавиатура, отчитывающаяся на 125 Гц, просит опрашивать её раз в 8 мс. Ничто в Windows не заставит её отчитываться чаще. Если эта цифра для тебя важна, решение принимается на уровне прошивки или на уровне покупки.
- Если у твоей клавиатуры есть переключатель или программа настройки, задающая частоту отчётов, эта программа пишет конфигурацию прошивки. Другого пути нет.
Некоторые клавиатуры приезжают в режиме совместимости (его часто подписывают «boot protocol» или привязывают к переключателю 6-клавишного rollover), и он заодно снижает частоту отчётов. Загляни в руководство самой клавиатуры или в её программу настройки, прежде чем решать, что тормозит Windows.
Две настройки, которые люди меняют и которые этого не делают
Обе есть в каждом списке «как убрать лаг клавиатуры». Ни одна из них не укорачивает путь от нажатия до игры, и нам проще сказать это прямо, чем продавать тебе плацебо.
Задержка и скорость автоповтора клавиш. KeyboardDelay и KeyboardSpeed в HKCU\Control Panel\Keyboard управляют тем, что происходит, когда ты удерживаешь клавишу: через сколько символ начнёт повторяться и как быстро он повторяется дальше. На первое нажатие это не влияет вообще. w0a умеет выставить задержку на самый короткий шаг, и собственное описание в продукте говорит, что именно ты этим получаешь: быструю консоль, чат и меню, а не быстрый выстрел. Если прежняя программа оставила здесь странные значения, карточка Скорость и задержка повтора клавиш вернёт значения Windows по умолчанию.
Размер очереди данных клавиатуры. KeyboardDataQueueSize задаёт, сколько отчётов может удержать драйвер класса, если разбирающий их поток на мгновение подвис. Очередь побольше — меньше потерянных отчётов во время такого подвисания. Прийти раньше от этого не может ни один отчёт, и продукт говорит это прямо в своём интерфейсе, а не сноской. Очереди ввода объясняют, что это за значение и как вернуть его назад.
Если где-нибудь тебе скажут, что увеличение размера очереди снижает задержку ввода, ты уже знаешь достаточно, чтобы не поверить. Очередь — это запас против потерь, а не короткий путь.
Этап 4 — единственный этап, который действительно твой
Именно здесь на обычной машине живёт настоящая, измеримая задержка клавиатуры — и именно этот этап почти никто не проверяет.
Всё, что хочет увидеть твои нажатия раньше игры, встраивается в путь ввода: фирменные программы клавиатур с макродвижками, службы подсветки, реагирующие на набор, оверлеи стриминга и чата, программы записи экрана, утилиты переназначения клавиш, средства специальных возможностей. Каждая из них — лишний перегон, а перегон, который занят или завис, держит весь путь.
На этот случай в Windows есть тайм-аут. Когда низкоуровневый перехватчик ввода не отвечает в течение LowLevelHooksTimeout миллисекунд, Windows пропускает его и идёт дальше; Windows 10 1709 и новее используют не больше 1000 мс, каким бы большим ни было значение. Сколько Windows ждёт, когда значение не задано, не задокументировано, и мы этого не измеряли. На странице Твики реестра в w0a есть запись Ограничить, как долго зависший перехватчик ввода держит мышь: она задаёт для этого ожидания 1000 мс, записывая LowLevelHooksTimeout в HKCU\Control Panel\Desktop.
Прочитай это честно: ограничение тайм-аута не ускоряет здоровый перехватчик. Оно укорачивает заморозку, когда перехватчик уже сломался. Вещь полезная — но это не снижение задержки.
Что действительно стоит сделать, по порядку:
- Закрой собственную программу клавиатуры полностью — не сворачивай её в трей. Выйди из неё и сыграй раунд.
- Закрывай оверлеи по одному: оверлей игровой платформы, оверлей голосового чата, программу записи, оверлей производителя видеокарты.
- Если ощущение изменилось — ответ найден, и дальше ты сам решаешь, какая функция каких миллисекунд стоит.
- Если ничего не изменилось, здесь больше не ищи. Переходи к этапу 3.
Этап 3 — драйвер, занявший ядро, которое нужно клавиатуре
Отчёт клавиатуры приходит как прерывание. Если на этом ядре процессора сидит посторонний драйвер — внутри прерывания или отложенного вызова, — твоё нажатие ждёт, и ждёт оно выше любого приоритета потоков в системе, а значит, не попадает ни в один график времени кадра и ни в один диспетчер задач.
Это измеримо — и это единственная часть пути, которой можно поставить число прямо на твоей машине:
- Открой Тест задержки в w0a.
- Нажми старт и двигай мышью все 12 секунд — мышь даёт тесту тот трафик, по которому он и опрашивает путь ввода.
- Смотри на Самое долгое удержание драйвером и на список драйверов под ним: он отсортирован по длительности удержания и называет файл.
- Всё, что достигает 1 мс, вытесняет отчёты. Всё, что достигает 4 мс, чинится раньше всего остального.
С драйвером, удерживающим ядро, первым делом стоит попробовать обновить именно этот драйвер с сайта производителя железа. Как читать тест задержки объясняет цвета и — что полезнее — то, чего это число намеренно не включает.
Этап 5 — игра читает ввод по своему расписанию
В большинстве движков игра опрашивает ввод раз в кадр. Игра на 60 FPS смотрит на твою клавиатуру каждые 16,7 мс; на 240 FPS — каждые 4,2 мс. Это арифметика, а не измерение, и точный тайминг ввода не публикует ни один движок — так что считай это описанием механизма, а не цифрой по конкретной игре.
Практический вывод: подъём низкого фреймрейта укорачивает ожидание на этом этапе, и на 40 FPS тебя ограничивает не клавиатура. Если твой фреймрейт не низкий, а нестабильный, для этого есть Что ищет сканер фризов.
Что осталось и что с этим делать

Короткий и обратимый чек-лист. Отменить можно каждый его пункт, а те пункты, что ведут на карточки Fix, записывают значение Windows по умолчанию независимо от того, какая программа его меняла.
- Втыкай клавиатуру в порт на самой машине, а не в хаб монитора, в хаб без питания или в KVM. Каждый из них — ещё один контроллер между устройством и хостом.
- Посмотри, что на самом деле делает порт. Страница USB-порты в w0a показывает по каждому устройству интервал опроса, который запросила его прошивка, рядом с частотой отчётов, измеренной по реальному вводу. Устройство, которое просит 1 мс, а выдаёт заметно меньше отчётов, — это проблема линии или драйвера, а не проблема клавиатуры.
- Откати старые твики ввода. Мышь, клавиатура и тачпад и Очереди ввода возвращают значения Windows по умолчанию, если их менял более старый инструмент.
- Не давай управлению питанием USB усыплять порт, если клавиатура тормозит на первом нажатии после паузы. Это карточка Настройки питания USB-портов.
- Сначала измерь, потом решай. Снимай Тест задержки до и после каждого изменения. Изменение, которого не видно в измерении, — это изменение, которое надо откатить.
Чего программа здесь не может
- Она не может изменить интервал сканирования твоей клавиатуры или время гашения дребезга. Это прошивка, и Windows её вообще не видит.
- Она не может заставить устройство отчитываться чаще, чем просит его собственный дескриптор, — в документации Microsoft прямо сказано, что драйверы это поле не меняют.
- Она не может убрать покадровый опрос ввода в игре.
- Она не может укоротить ту часть пути, которая принадлежит монитору. Это Задержка ввода, которую не исправит ни одна программа.
Что она может — убрать зависший перехватчик, показать драйвер, удерживающий ядро, и не дать порту уснуть. На здоровой машине в сумме это меньше, чем люди надеются; на больной — это вся разница. Какая машина у тебя, выясняется измерением.
Похожие статьи
- Почему прицел запаздывает
- Я слышу шаги позже, чем их вижу
- Как уменьшить input lag в CS2 и других играх: что может программа, а что нет
- Как читать тест задержки
- Твики мыши и клавиатуры
Из примерно дюжины этапов между кликом и сменой пикселя программе принадлежат три, остальное принадлежит прошивке, монитору и игре: Как уменьшить input lag в CS2 и других играх: что может программа, а что нет
Эта страница помогла?
Чего не хватило или что не сработало? Мы читаем каждый такой ответ.
Если эта страница не решила проблему, напиши нам — скажи, какую статью ты читал, и мы её исправим.