Good job with pushing the display refresh rate support forward!
Amazing job!
But wait, you noted that:
Right, bummer...Low Mouse DPI Also Sabotages High Hz
In addition, the use of low mouse DPI (400dpi-800dpi) can sabotage the benefits of your high refresh rate display, for slow mouselooks.
Moving a mouse at 400dpi at 0.25 inches per second only shows 100 mouselook frames per second, utilizing only one-tenth the refresh rate of a new 1000 Hz monitor! Therefore, this can hurt some competitive advantages in certain games that may utilize frequent slower mouse tracking operations.
There's a reason people don't use much more than 800-1600 DPI.
Coz it makes your cursor or camera move dizzy fast.
But wait... isn't the DPI a precision attribute, not speed attribute?
Yup, but not what games see. They just see counts, or just the C in CPI, basically same number that is termed DPI for mice for some reason. Dots per inch are kind of silly with mice. Whatever, I'll say CPI/DPI interchangeably from now on.
Wouldn't it be nice if those mice would report their current CPI setting?
Then Windows could normalize the counts it gets from mice during each poll.
And well even more nice would be if they normalized that and told to games and other software how many mm or inches (the I in CPI) the mouse moved? That would be nice.
Then in game I could set that I want e.g. 3.6 degree/mm camera movement.
And think how nice: this would be same units in EVERY GAME, heck it could be ever written down in Windows mouse settings panel for all games to read that user wants x degrees of mouse movement per every mm, regardless of game, mouse, CPI setting, or anything else. How crazy would that be?
And the beef: you can now safely use the maxed out DPI setting in the games for better precision (less quantization error) at same camera movement speed per mouse movement!
Want to take it further. Okay let's go.
Windows could also configure cursor movement in "screen height / mm".
Why? Because then I can not only max out my mouse settings while moving camera in game,
but also when I move the cursor in the game... or in Windows GUI!
Yeah! That's right, now I can just keep my mouse in max DPI setting ALL THE TIME!
Crazy cool!
And if you think about it, it's so simple thing to want. All that is needed is the current CPI count reported in standard way to windows and windows reporting that to games in consistent way. One damn integer number is what's missing.
And to think that this one thing missing is what would have made the DPI race to silly mouse speeds actually worthwhile. We could have solved the above quoted problem already decades ago with that one missing number instead of that insane mouse speed/sensitivity race the mouse vendors undertook.
Want to take it further? Instead of having the mouse report just the CPI to Windows, why not include the poll rate too? And make both configurable. Just like we do with displays when we set resolution and refresh rate.
With great respect, Mark Rejhon, since you have such great contact with the industry, why don't you ask if they would be willing to fix this?
I asked ChatGPT to draft some letters if you want some idea where to get started:
Letter 1 — Microsoft
Subject: Make Windows mouse input CPI-aware
To the Windows input, gaming, and platform teams,
Higher mouse CPI is widely treated as if it mainly exists to make the pointer or camera move faster. That is the wrong model. The real value of higher CPI is higher spatial precision. A higher-CPI sensor should reduce quantization and jitter by measuring smaller movements more finely. That matters more as display refresh rates and polling/report rates increase, because poor spatial granularity becomes easier to see.
But that extra precision is only useful if the input is normalized. Without normalization, software receives abstract counts whose meaning changes with the current CPI setting. With normalization, software gets a stable, CPI-independent input value and can map it consistently to cursor motion or camera motion.
Polling/report rate matters for the same reason in the temporal domain. CPI determines spatial precision. Polling/report rate determines temporal precision. If Windows is going to turn modern mouse hardware into normalized motion rather than mere speed, both need to be standardized, readable, listable, and writable.
The hardware already exists. The bottleneck is the standards, firmware conventions, and OS stack. Working together with USB-IF and mouse vendors, Windows should support a standard way to read the current CPI and polling/report rate, list the supported CPI and polling/report rate values, and set those values. Mouse vendors need to implement that standard in hardware and firmware. Windows then needs to build settings and APIs on top of it that normalize motion into physical units.
- Work with USB-IF and mouse vendors on standard CPI and polling/report-rate controls
- standard USB/HID support for reading current CPI
- listing supported CPI values or ranges
- writing CPI settings
- reading the current polling/report rate
- listing supported polling/report rate values
- writing polling/report rate settings
- Build Windows settings and APIs on top of those standardized capabilities
- support meaningful user-facing motion controls without tying Windows to vendor-specific utilities
- give software a stable, standardized foundation instead of forcing every application to guess or work around hardware differences
- Add a Windows API for normalized mouse motion
- use CPI to convert raw counts into physical movement
- expose normalized motion directly to applications in physical units such as millimeters
- use floating-point values so the added precision is preserved
- keep this usable for both cursor movement and application input
- Keep speed scaling separate from sensor precision
- pointer speed and other scaling choices should remain policy layers above normalized motion
- CPI should be treated as sensor resolution, not as a speed knob
A standardized CPI-aware mouse stack would let Windows turn better mouse hardware into a visible platform advantage instead of leaving that value fragmented behind vendor utilities.
Letter 2 — Mouse Vendors
Subject: Standardize CPI and polling as precision controls, not speed controls
To mouse manufacturers and gaming peripheral vendors,
Higher CPI is widely marketed and understood as a way to make the pointer or camera move faster. That is the wrong model. The real value of higher CPI is higher spatial precision.
A higher-CPI mouse should reduce quantization and jitter by measuring smaller movements more finely. That matters more now because display refresh rates and polling/report rates have increased, so poor spatial granularity is easier to notice.
But that extra precision is only useful if the platform can normalize the input. Without normalization, software sees abstract counts whose meaning changes with the current CPI setting. With normalization, operating systems and games get a stable, CPI-independent input value and can use it consistently.
Polling/report rate matters for the same reason in the temporal domain. CPI determines spatial precision. Polling/report rate determines temporal precision. If the platform is going to use modern mouse hardware properly, both need to be standardized, readable, listable, and writable.
The hardware already exists. The bottleneck is the standards, firmware conventions, and OS stack. Working together with Microsoft, other OS vendors, and the USB-IF/HID standards process, vendors should implement standard hardware support for reading current CPI, listing supported CPI values, and writing CPI settings. The same should apply to reading the current polling/report rate, listing supported polling/report rate values, and writing those settings. Once that exists, operating systems can build normalized motion APIs and user-facing controls on top of it.
- Implement standard USB/HID CPI and polling/report-rate controls
- read current CPI
- list supported CPI values or ranges
- write CPI settings
- read the current polling/report rate
- list supported polling/report rate values
- write polling/report rate settings
- Work with Microsoft and other OS vendors on adoption
- make the standardized controls usable from operating-system settings and developer APIs
- stop forcing users to depend on vendor-specific utilities for basic motion settings
- Report accurate CPI values
- if a device reports a CPI value, it should be accurate enough for operating systems and applications to use as a physical conversion factor
- Treat CPI as precision in product design and messaging
- the point of higher CPI is finer motion measurement
- speed should be handled separately by the operating system or application
In the era of high-refresh displays, this would make better mouse hardware more desirable by allowing its extra sensor precision to produce a clearer and more consistent user benefit.
Letter 3 — USB-IF / HID Standardization Bodies
Subject: Standardize CPI and polling capabilities for USB mice
To the USB-IF HID and related standardization groups,
The USB HID mouse model solved compatibility, but it did not solve interpretation.
Today, a USB mouse works everywhere as a mouse, but the standard path still gives hosts abstract relative counts while the settings that determine what those counts mean—especially CPI and polling/report rate—remain largely vendor-private.
That is why higher CPI is so often treated as if it were mainly about speed. The real value of higher CPI is higher spatial precision: less quantization, less jitter, and finer motion measurement. But that extra precision is only useful if the host can normalize the input. Without normalization, software sees abstract counts whose meaning changes with the current CPI setting. With normalization, software gets a stable, CPI-independent input value it can use consistently.
Polling/report rate matters for the same reason in the temporal domain. CPI determines spatial precision. Polling/report rate determines temporal precision. If the standard is to make modern mouse hardware broadly useful, both need to be standardized, readable, listable, and writable.
The hardware already exists. The bottleneck is the standards, firmware conventions, and OS stack. Working together with mouse vendors and OS vendors such as Microsoft, USB/HID should standardize support for reading the current CPI and polling/report rate, listing supported CPI and polling/report rate values, and setting those values. That would give operating systems a stable foundation for settings and APIs that expose normalized motion directly to software.
This gap matters more now because display refresh rates and mouse polling rates have increased. Temporal sampling has improved, but spatial interpretation is still fragmented.
- Define standard USB/HID controls for CPI and polling/report rate
- read current CPI
- list supported CPI values or ranges
- write CPI settings
- read the current polling/report rate
- list supported polling/report rate values
- write polling/report rate settings
- Define accuracy expectations for reported CPI
- the reported value should be usable as a meaningful physical conversion factor
- Preserve the legacy mouse path
- the new capability/configuration layer should be additive and coexist with the standard HID mouse interface
- Design the extension for OS adoption
- make it straightforward for Microsoft and other OS vendors to build settings and APIs that convert raw counts into normalized motion using standard CPI and polling information
Standardizing this capability would keep modern mouse functionality inside the interoperable HID model instead of leaving it fragmented across vendor-private extensions.

