Microsoft’s ‘excellent’ article and Windows’ mouse handling (when Enhance Pointer Precision is enabled) actually contain a large conceptual error.
The error is this: the ‘mickey’ value in the Vmouse formula is (should be) a different mickey value than the one in the Vpointer formula, BUT in the actual implementation (the mouse driver) they are assumed to be the same.
This error has the effect that the mouse sensitivity depends upon the screen refresh rate, which doesn’t make any sense.
Try this:
-
Enable Enhance Pointer Precision.
-
Set your display’s refresh rate to the lowest usable value (warning: one older equipment, setting refresh rate outside the bounds of your monitor can damage the monitor…)
-
VERY SLOWLY, move the mouse a defined distance on the MOUSE PAD.
-
NOTE how far the pointer moves on the screen.
-
Set your display’s refresh rate to the highest usable value.
-
VERY SLOWLY, move the mouse the same defined distance on the MOUSE PAD.
-
NOTE how far the pointer moves on the screen.
(What happens is that the higher the screen refresh rate, the further (and faster) the pointer on the screen moves.)
Now WHY should the distance moved by the pointer on the screen be different for the two different screen refresh rates?
If your refresh rate is higher, do you want the mouse to move further and faster for a given mouse input?
NO you don’t: it doesn’t make sense. It’s a bug caused by the conceptual error.
Gamers know about this, and create workarounds to remove the effect:
http://www.gotfrag.com/cs/forums/thread/346432/ (post #5)
Jeff, you have repeated the conceptual error with your 3 mickeys example: In the context of polling the mouse, the mouse says: I have moved 3 mickeys since I was last polled.
If we know the mouse is polled 500 times a second, and the 3 mickeys of movement happened in 1/500th of a second, then in one second, we expect 3 * 500 mickeys.
What of the screen refresh rate? 3 mickeys of movement during one screen refresh? In 1/60th of a second, we saw 3 mickeys of movement, so then in one second we will see 3 * 60?
NO. Why would there be 3 mickeys of movement in 1/60th of a second when the mouse tells us it has seen 3 mickeys in 1/500th of a second?
We would expect MICKEYpointer to be ~25 in 1/60th of a second.
There is a larger conceptual problem: Why introduce screen resolution and refresh rate at all?
Could not / should not the problem of mouse acceleration be stated within, and solved within, the realm of mickeys and Vmouse alone?
Windows 2000 and earlier managed to handle mouse input and acceleration without having to reference display parameters in the equation (1 mickey == 1 pixel + acceleration as configured).