Mouse & keyboard tweaks

Larger input queues, a shorter freeze on a hung input hook, a shorter key-repeat delay. None makes a click arrive sooner.

What this section changes

Larger input queues, a shorter freeze on a hung input hook, a shorter key-repeat delay. None makes a click arrive sooner.

SettingWhat it doesRegistry path
Mouse data queue sizeRaises the mouse class driver's report buffer from 100 to 150. It does not shorten latency; it keeps a high-rate mouse from losing reports when the reading thread stalls. Also written to mouhid, where nothing has been found that reads it.HKLM\...\Services\mouclass + mouhid\Parameters\MouseDataQueueSize
Keyboard data queue sizeRaises the keyboard class driver's key-report buffer from 100 to 150. It does not shorten latency; it leaves headroom against dropped input. Also written to kbdhid, where nothing has been found that reads it.HKLM\...\Services\kbdclass + kbdhid\Parameters\KeyboardDataQueueSize
Cap how long a stalled input hook blocks the mouseWindows skips an input hook that stops answering once this timeout runs out; this sets it to one second, the most Windows 10 1709 and later allow. The default when unset is undocumented and was not measured. A hook slow under load can be dropped too; restarting its tool brings it back.HKCU\Control Panel\Desktop\LowLevelHooksTimeout
Cut the key-repeat delay to the shortest stepCuts the half-second wait before a held key repeats to 250 ms (the shortest step) and sets the fastest repeat rate. Single presses in a game never pass through this; it shows in the console, chat and menus. Too eager while typing? Undo it on the Fix page.HKCU\Control Panel\Keyboard\KeyboardDelay + KeyboardSpeed

Applying it

  1. Open w0a
  2. Go to the Regedit Tweaks page in the left menu
  3. Find this section and press Apply on the entries you want

Every entry has its own button, so you are not required to apply a whole section — Apply All at the top of the page is there for when you do want all of them.

Undoing it

Two ways, both of which work:

puts back everything applied after that point, later checkpoints included — the confirmation says exactly that before it starts.

read a backup, so it works even if w0a's own backup file is gone.

The undo log lives at %ProgramData%\w0a\backup.json, outside your user profile.

The risk

Everything here is a documented value Windows supports; none of it is kernel-level and none of it is irreversible. The honest sentence is still this: a setting may have no measurable benefit for you. If you apply a change and feel no difference, you are probably right — these pages are not selling you a feeling, they are telling you what was changed.

If you want to measure it, the rule from reading the benchmark applies: change one thing at a time, and read the lows rather than the average.

First, the honest sentence

None of the four boxes makes a click or a key press reach the game sooner. Two make a buffer deeper, so input is less likely to be lost when the thread reading it stalls; one shortens how long a hung input hook can freeze the mouse and keyboard; one changes what a held key does. Whether any of them changes a match has not been measured: lost mouse reports have never been counted with and without the larger queue, and the hook timeout only matters once a hook has stopped answering.

Box by box

Mouse data queue size — writes MouseDataQueueSize=150 (REG_DWORD) under HKLM\SYSTEM\CurrentControlSet\Services\mouclass\Parameters, and the same under HKLM\SYSTEM\CurrentControlSet\Services\mouhid\Parameters. The default is 100 on the class driver, and a clean Windows has no value under mouhid. It is a queue depth, not a latency setting: a smaller queue cannot hand a report on sooner, it only drops reports earlier when something briefly stops draining it, and on an 8000 Hz mouse a dropped report is lost input. 150 is headroom that does not treat the queue's memory as free. Only mouclass is known to read it; a scan of mouhid.sys (10.0.26100.1) finds no such name, and that write stays until it is measured. Read when the driver loads: takes effect after a restart.

Keyboard data queue size — the same for the keyboard: KeyboardDataQueueSize=150 (REG_DWORD) under HKLM\SYSTEM\CurrentControlSet\Services\kbdclass\Parameters and HKLM\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters. The default is 100 on kbdclass and nothing under kbdhid; kbdhid.sys carries no such name either. Takes effect after a restart.

Cap how long a stalled input hook blocks the mouse — writes LowLevelHooksTimeout=1000 (REG_DWORD, milliseconds) under HKCU\Control Panel\Desktop. Overlays, macro tools and chat programs install low-level hooks that every input event passes through, one by one. Microsoft documents that a hook which does not return within this time is skipped — on Windows 7 and later, silently removed — and that from Windows 10 1709 on, 1,000 ms is the most Windows allows. One second is long enough for a hook that is only busy, short enough that a hung one is not felt as a freeze. The trade: a hook that is merely slow under load can be dropped too; restarting that tool brings it back. The Windows default is no value. How long Windows waits then, Microsoft does not say and we have not measured. Takes effect after you sign out and back in.

Cut the key-repeat delay to the shortest step — writes KeyboardDelay="0" and KeyboardSpeed="31", both REG_SZ, under HKCU\Control Panel\Keyboard. Windows ships "1" and "31". Microsoft puts 0 at about 250 ms and 31 at about 30 repeats a second, real figures depending on the hardware. Strings, because Windows ignores a DWORD written over them. KeyboardSpeed is written even at its default of 31: an accessibility profile can leave it lower. Takes effect after you sign out and back in.

How to check it yourself

reg query "HKLM\SYSTEM\CurrentControlSet\Services\mouclass\Parameters" /v MouseDataQueueSize
reg query "HKLM\SYSTEM\CurrentControlSet\Services\mouhid\Parameters" /v MouseDataQueueSize
reg query "HKLM\SYSTEM\CurrentControlSet\Services\kbdclass\Parameters" /v KeyboardDataQueueSize
reg query "HKLM\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters" /v KeyboardDataQueueSize
reg query "HKCU\Control Panel\Desktop" /v LowLevelHooksTimeout
reg query "HKCU\Control Panel\Keyboard" /v KeyboardDelay
reg query "HKCU\Control Panel\Keyboard" /v KeyboardSpeed

reg query prints a DWORD in hexadecimal: 150 is 0x96, 100 is 0x64, 1000 is 0x3e8. No value under mouhid or kbdhid, or no LowLevelHooksTimeout, is what a clean Windows has.

What this section does not do

It does not touch pointer speed. A box once forced MouseSensitivity to the unscaled 6/11 notch, overriding speeds people had chosen. Games that read raw input never see that value, so it changed nothing in a game and everything outside one; it was removed.

It never makes a queue smaller. An earlier build wrote 20, below the default of 100, under a label promising a deeper queue; a smaller queue cannot deliver a report sooner, only lose one sooner.

Outside this page

On the Fix page, Input queues puts both queue values back; Key repeat rate and delay restores the repeat pair without touching the mouse; Window focus and helper tools deletes the hook timeout; Mouse, keyboard and touchpad restores the queues and the repeat pair and also resets pointer acceleration and the touchpad. Mouse acceleration is a separate box on the Optimizations page, Disable mouse acceleration (consistent aim). If a click feels late, Why my aim feels delayed and Why key presses feel late go through the whole chain.

Which Windows settings change anything in a game, who each one helps and who it does nothing for: How to optimize Windows 11 for gaming: the settings that actually matter

w0a changes no Windows setting until you ask it to, and before a tweak writes a new value it saves the old one. Get notified

Did this page help?

What was missing, or what did not work? We read every one of these.

If this page did not solve it, write to us — say which article you read, and we will fix the article.