Większość opóźnienia między twoim palcem a grą siedzi w klawiaturze, a nie w Windowsie. Naciśnięcie klawisza przechodzi przez sześć etapów, zanim zmieni się jakikolwiek piksel, a oprogramowanie potrafi skrócić dokładnie dwa z nich. Jeśli przyszedłeś tu po wartość w rejestrze, która usuwa opóźnienie klawiatury, uczciwa odpowiedź brzmi: taka wartość nie istnieje — ale trzy z tych sześciu etapów mają realne, sprawdzalne usterki i te są warte dwudziestu minut.
Ta strona rozkłada tę drogę na części, wskazuje właściciela każdej z nich i mówi wprost, które kawałki są poza zasięgiem.
Droga, którą naprawdę pokonuje naciśnięcie klawisza
| Etap | Czyja to część | Czy oprogramowanie może ją skrócić? |
|---|---|---|
| 1. Styk się zwiera; kontroler klawiatury skanuje swoją matrycę i wygasza drgania styku | Firmware klawiatury | Nie |
| 2. Klawiatura udostępnia raport na swoim punkcie końcowym przerwań USB, w odstępie, o jaki poprosił jej firmware | Firmware klawiatury | Nie |
3. Kontroler hosta odbiera raport; kbdhid.sys i kbdclass.sys podają go wyżej | Windows + sterownik chipsetu | Tylko przez usunięcie sterownika, który się zacina |
| 4. Raport przechodzi przez sterowniki filtrujące i niskopoziomowe haki siedzące na ścieżce wejścia | Pakiet do klawiatury, warstwa makr, nakładka | Tak |
| 5. Gra czyta wejście — w większości silników raz na klatkę | Gra | Pośrednio, przez wyższą liczbę klatek |
| 6. Klatka jest renderowana, prezentowana, wysyłana na ekran i zapalana | GPU, Windows, monitor | Częściowo — zobacz opóźnienie wejścia, którego nie naprawi żaden program |
Etap 1 — część, której nikt nie dotknie
Klawiatura nie wysyła sygnału w chwili, gdy styk się zwiera. Jej własny kontroler w pętli przeczesuje matrycę klawiszy, a gdy wykryje zwarcie, odczekuje drgania styku, zanim uzna klawisz za wciśnięty. To odczekanie jest stałą firmware'u. Nie jest wystawione do Windows, żaden sterownik go nie odczyta i żadna wartość w rejestrze na twojej maszynie go nie zmienia.
Dlatego dwie klawiatury na tym samym pececie potrafią dawać zupełnie inne wrażenie przy identycznych wszystkich pozostałych zmiennych — i dlatego „lag klawiatury” tak często okazuje się odpowiedzią sprzętową przebraną za programową.
Etap 2 — odstęp odpytywania ustala klawiatura, na piśmie
Urządzenia USB wysyłające wejście robią to przez punkt końcowy przerwań, a deskryptor tego punktu niesie pole o nazwie bInterval, które mówi, jak często host ma pytać. Własna dokumentacja Microsoftu do tej struktury nie zostawia miejsca na wątpliwości: "This value reflects the device's configuration in firmware. Drivers cannot change it."
Ta sama strona podaje przelicznik. Na urządzeniu full-speed bInterval równy 1 oznacza okres odpytywania długości jednej 1-milisekundowej ramki — czyli te 1000 Hz, którymi klawiatury się reklamują. Na urządzeniu high-speed okres liczy się w mikroramkach, po osiem na milisekundę, według wzoru Period = 2 ** (bInterval - 1).
Wynikają z tego dwie rzeczy i są to najbardziej użyteczne zdania na tej stronie:
- Klawiatura raportująca z częstotliwością 125 Hz prosi, żeby odpytywać ją co 8 ms. Nic w Windowsie nie zmusi jej do szybszego raportowania. Jeśli ta liczba ma dla ciebie znaczenie, jest to decyzja o firmwarze albo decyzja zakupowa.
- Jeśli twoja klawiatura ma przełącznik albo narzędzie konfiguracyjne ustawiające jej częstotliwość raportów, to narzędzie zapisuje konfigurację firmware'u. To jedyna droga.
Część klawiatur wychodzi z fabryki w trybie zgodności (często opisanym jako „boot protocol” albo powiązanym z przełącznikiem 6-key rollover), który przy okazji obniża częstotliwość raportów. Zajrzyj do instrukcji klawiatury albo do jej oprogramowania konfiguracyjnego, zanim uznasz, że to Windows jest wolny.
Dwa ustawienia, które ludzie zmieniają, a które tego nie robią
Oba pojawiają się na każdej liście „jak naprawić lag klawiatury”. Żadne z nich nie skraca drogi od naciśnięcia do gry i wolimy to powiedzieć, niż sprzedać ci placebo.
Opóźnienie i częstotliwość powtarzania klawiszy. KeyboardDelay i KeyboardSpeed w HKCU\Control Panel\Keyboard rządzą tym, co się dzieje, gdy przytrzymasz klawisz: po jakim czasie znak zaczyna się powtarzać i jak szybko powtarza się dalej. Na pierwsze naciśnięcie nie mają wpływu w ogóle. w0a potrafi ustawić to opóźnienie na najkrótszy stopień, a własny opis w produkcie mówi, co ci to daje — szybszą konsolę, okno czatu i menu, a nie szybszy strzał. Jeśli wcześniejsze narzędzie zostawiło te wartości w dziwnym miejscu, karta Szybkość i opóźnienie powtarzania klawiszy przywraca domyślne ustawienia Windows.
Rozmiar kolejki danych klawiatury. KeyboardDataQueueSize ustala, ile raportów może przetrzymać sterownik klasy, jeśli wątek, który je opróżnia, na moment się zatnie. Większa kolejka oznacza mniej zgubionych raportów w czasie takiego zacięcia. Nie sprawia, że jakikolwiek raport dociera wcześniej, i produkt mówi to we własnym interfejsie, a nie w przypisie. Kolejki wejścia opisują, czym jest ta wartość i jak ją przywrócić.
Jeśli jakakolwiek strona mówi ci, że zwiększenie rozmiaru kolejki obniża opóźnienie wejścia, wiesz już dość, żeby w to nie uwierzyć. Kolejka to bufor chroniący przed stratą, a nie skrót.
Etap 4 — jedyny etap, który naprawdę należy do ciebie
To tutaj na normalnej maszynie mieszka prawdziwe, mierzalne opóźnienie klawiatury — i to jest etap, którego prawie nikt nie sprawdza.
Wszystko, co chce zobaczyć twoje naciśnięcia wcześniej niż gra, instaluje się na ścieżce wejścia: pakiety producentów klawiatur z silnikami makr, demony podświetlenia reagujące na pisanie, nakładki do streamowania i czatu, programy do nagrywania ekranu, narzędzia do remapowania klawiszy, narzędzia ułatwień dostępu. Każde z nich to jeden przeskok, a przeskok zajęty albo zawieszony trzyma całą drogę.
Windows ma limit czasu przewidziany dokładnie na taki przypadek. Gdy niskopoziomowy hak nie odpowie w ciągu LowLevelHooksTimeout milisekund, Windows go pomija i idzie dalej; Windows 10 1709 i nowsze używają najwyżej 1000 ms, niezależnie od tego, jak duża jest wartość. Ile Windows czeka, gdy wartość nie jest ustawiona, nie jest udokumentowane, a my tego nie mierzyliśmy. Strona Tweaki Regedit w w0a ma wpis, który ustawia to czekanie na 1000 ms, zapisując LowLevelHooksTimeout w HKCU\Control Panel\Desktop.
Przeczytaj to uczciwie: ograniczenie limitu czasu nie przyspiesza zdrowego haka. Skraca zamrożenie w chwili, gdy hak już się zepsuł. To się przydaje i nie jest to zmniejszenie opóźnienia.
Co właściwie zrobić, po kolei:
- Zamknij do końca oprogramowanie samej klawiatury — nie minimalizuj go do zasobnika. Wyjdź z niego i zagraj rundę.
- Zamykaj nakładki po jednej: nakładkę platformy z grami, nakładkę czatu głosowego, program do nagrywania, nakładkę producenta karty graficznej.
- Jeśli wrażenie się zmieni, masz swoją odpowiedź i możesz zdecydować, która funkcja jest warta którego opóźnienia.
- Jeśli nic się nie zmienia, przestań szukać tutaj. Przejdź do etapu 3.
Etap 3 — sterownik trzymający rdzeń, którego potrzebuje klawiatura
Raport klawiatury przychodzi jako przerwanie. Jeśli jakiś niepowiązany sterownik siedzi na tym rdzeniu procesora w przerwaniu albo w wywołaniu odroczonym, twoje naciśnięcie czeka — i czeka ponad każdym priorytetem wątku w systemie, więc nie pojawia się na żadnym wykresie czasu klatki ani w menedżerze zadań.
To da się zmierzyć i jest to jedyna część drogi, do której można przypiąć liczbę z twojej własnej maszyny:
- Otwórz Test opóźnień w w0a.
- Naciśnij start i ruszaj myszą przez pełne 12 sekund — mysz jest ruchem, którym test próbkuje ścieżkę wejścia.
- Odczytaj wartość Najdłuższe zatrzymanie przez sterownik i listę sterowników pod nią, posortowaną według najdłuższego zatrzymania i podającą nazwę pliku.
- Wszystko od 1 ms w górę wypycha raporty. Wszystko od 4 ms w górę to rzecz do naprawienia przed czymkolwiek innym.
Pierwszym rozwiązaniem do wypróbowania dla sterownika trzymającego rdzeń jest aktualizacja tego konkretnego sterownika od producenta sprzętu. Jak czytać test opóźnień tłumaczy kolory i — co bardziej użyteczne — to, czego ta liczba celowo nie zawiera.
Etap 5 — gra czyta wejście według własnego harmonogramu
W większości silników gra próbkuje wejście raz na klatkę. Gra chodząca w 60 FPS zagląda do twojej klawiatury co 16,7 ms; przy 240 FPS — co 4,2 ms. To arytmetyka, a nie pomiar, i żaden silnik nie publikuje swojego dokładnego czasu obsługi wejścia — więc traktuj to jako mechanizm, a nie jako liczbę dla konkretnego tytułu.
Praktyczny wniosek jest taki, że podniesienie niskiej liczby klatek skraca czekanie na tym etapie i że przy 40 FPS to nie klawiatura cię ogranicza. Jeśli twoja liczba klatek jest raczej niestabilna niż niska, właściwą stroną jest Czego szuka skan przycięć.
Co zostaje i co z tym zrobić

Krótka, odwracalna lista kontrolna. Każdą z tych rzeczy da się cofnąć, a te punkty poniżej, które prowadzą do karty Fix, zapisują z powrotem domyślną wartość Windows niezależnie od tego, które narzędzie wprowadziło zmianę.
- Podłącz klawiaturę do portu w samej maszynie, a nie do huba w monitorze, huba bez zasilania czy przełącznika KVM. Każde z nich to kolejny kontroler między urządzeniem a hostem.
- Sprawdź, co ten port naprawdę robi. Strona Porty USB w w0a wypisuje każde urządzenie z odstępem odpytywania, o jaki poprosił jego firmware, obok częstotliwości raportów zmierzonej z prawdziwego wejścia. Urządzenie proszące o 1 ms i dostarczające dużo mniej to problem łącza albo sterownika, a nie problem klawiatury.
- Cofnij stare tweaki wejścia. Mysz, klawiatura i touchpad oraz Kolejki wejścia przywracają domyślne ustawienia Windows, jeśli zmieniło je starsze narzędzie.
- Nie pozwól, żeby zarządzanie energią USB uśpiło port, jeśli twoja klawiatura jest ospała przy pierwszym naciśnięciu po przerwie. Odpowiada za to karta Ustawienia zasilania portów USB.
- Zmierz, potem decyduj. Zrób Test opóźnień przed każdą zmianą i po niej. Zmiana, której nie widać w pomiarze, to zmiana, którą powinieneś cofnąć.
Czego oprogramowanie tu nie potrafi
- Nie potrafi zmienić odstępu skanowania twojej klawiatury ani czasu wygaszania drgań styku. To firmware, a Windows nigdy go nie widzi.
- Nie potrafi zmusić urządzenia do raportowania szybciej, niż prosi o to jego własny deskryptor — dokumentacja Microsoftu mówi, że sterowniki nie mogą zmienić tego pola.
- Nie potrafi usunąć próbkowania wejścia przez grę raz na klatkę.
- Nie potrafi skrócić części drogi należącej do monitora. Ta należy do opóźnienia wejścia, którego nie naprawi żaden program.
Potrafi natomiast wyrzucić zawieszony hak, ujawnić sterownik trzymający rdzeń i nie dać portowi zasnąć. Na zdrowej maszynie sumuje się to do mniej, niż ludzie liczą, a na chorej jest całą różnicą. Pomiar jest sposobem, żeby się dowiedzieć, którą maszynę masz.
Powiązane
- Dlaczego celowanie jest opóźnione
- Słyszę kroki później, niż je widzę
- Jak zmniejszyć input lag: co program może skrócić, a czego nie
- Jak czytać test opóźnień
- Tweaki myszy i klawiatury
Z jakichś dwunastu etapów między kliknięciem a zmianą piksela trzy należą do oprogramowania, a resztę mają firmware, ekran i gra: Jak zmniejszyć input lag: co program może skrócić, a czego nie
Czy ta strona pomogła?
Czego zabrakło albo co nie zadziałało? Czytamy każdą taką wiadomość.
Jeśli ta strona nie rozwiązała problemu, napisz do nas — podaj, który artykuł czytasz, a poprawimy ten artykuł.