Wednesday, March 3, 2010

The MarkC Windows 10 + 8.1 + 8 + 7 Mouse Acceleration Fix

The 'MarkC Windows 10 + 8.1 + 8 + 7 Mouse Acceleration Fix' is available for download from this link:
DO NOT USE THIS: MarkC_Windows_10+8.x+7_MouseFix.zip @ google drive (version 2.9).
Use this: MarkC_Windows_10+8.x+7_MouseFix.zip @ onedrive.com (version 2.9).

For help for the fix, visit the ESReality MarkC Windows 7 Mouse Acceleration Fix page:
http://www.esreality.com/?a=post&id=1846538

What is it?

It is a registry file that removes Windows 7 or 8 or 8.1 or 10 mouse pointer acceleration.

It is like the CPL Mouse Fix and Cheese Mouse Fix, but gives exactly 1-to-1 mouse to pointer response for Windows 7 or Windows 8.x or Windows 10.

Exactly 1-to-1 means no discarded or delayed mouse input while game playing.

How do you use it?

  • Find the display DPI that you currently use:
    Click Start, click Control Panel, select Appearance and Personalization, select Display.
    See if you have 100% or 125% or 150% selected.
    (On Windows 8.1 or 10, if you see a 'Smaller...Larger' slider, then:
    - the 1st slider position will be 100%,
    - the 2nd slider position will be 125%,
    - the 3rd slider position (might not be shown) will be 150%.)


  • Open the ZIP file at the link above.

  • Select the folder that matches the Windows version you use and Double-click it.

  • Select the REG file that matches the DPI% you use and Double-click it.

  • Answer Yes, OK to the prompts that appear.
    (See below for non-Administrator account use.)

  • Reboot or Log off to apply the fix (you have to reboot or Log off).

  • Enjoy exactly 1-to-1 mouse to pointer response!
    (If you applied one of the Windows 2000 or Windows 98/95 Acceleration fixes, then 'Enhance pointer precision' must be checked ON to enable it.)

Why do you need the fix?

If you don't know you need it, then you don't need it!

Some older games, such as Half-Life 1, Counter-Strike 1.x, Quake, Quake 2, Unreal and others, while they are active and running, call a Windows function intending to disable variable mouse acceleration by forcing ALL movement to be accelerated by the same amount (doubled).
On Windows 2000 and earlier, that removed all variable acceleration.
Pointing and aiming in those games was OK, because the mouse response was then linear (all movement was accelerated by the same amount; it was doubled).

In XP, and later Windows versions, Microsoft changed how mouse pointer acceleration worked.
Now when those games call the function (asking that all movement be accelerated), Windows enables the mouse 'Enhance pointer precision' feature, which adds mouse acceleration using a varying curve to control the mouse response. (It enables it even if you have it turned off in the Control Panel Mouse settings.)

With 'Enhance pointer precision' enabled, slower mouse movements make the pointer go extra slow and faster mouse movements make the pointer go extra fast. It is not linear and not straightline.

This is annoying, because where you are aiming at depends on how far you move your mouse, and also on how fast you moved the mouse to aim.

How does the fix work?

It redefines the curve used by the 'Enhance pointer precision' feature to be a completely straight line. The slope of the line is tuned so that every on-mouse-pad mouse movement is turned into exactly the same amount of on-screen pointer movement.

How do you know the fix is working?

You can test if it is working by temporarily turning on the 'Enhance pointer precision' feature and see how the mouse responds.
(NOTE: Unless you applied one of the Windows 2000 or Windows 98/95 Acceleration fixes, only turn 'Enhance pointer precision' on for testing: it should normally be set OFF.)

If you have 'Enhance pointer precision' OFF, then the fix will not be active (but it will be waiting to be activated when needed).
Just as some games turn it on when you don't want them to, we can turn it on manually to test that the fix is working properly.

  • Go to Control Panel, and select Hardware and Sound, then click Mouse. Select 'Pointer options' and check-ON/enable the 'Enhance pointer precision' option.

  • See how the mouse responds.

  • If you want, you can set the Control Panel 'pointer speed' slider set to the 6th, middle position and run the MouseMovementRecorder.exe program that is included in the ZIP file to see that the mouse and pointer movements are 1-to-1 and always the same.
    (The numbers in the MOUSE MOVEMENT column should be the same as the numbers in the POINTER MOVEMENT column. Any differences will appear in green or red.
    If you do see differences, also test with 'Enhance pointer precision' OFF, in case the problem is with Windows or MouseMovementRecorder.exe rather than a problem with the fix:
    - Press the A key on the keyboard while MouseMovementRecorder is running until EnPtPr Accel is Off. Press A TWICE if EnPtPr is already Off!
    - When EnPtPr Accel is OFF, if there is a lot of red and green, press the '+' key on the keyboard and move the mouse.
    - Repeat '+' and move the mouse until most of the red and green disappears.
    - Press the A key on the keyboard to toggle EnPtPr Accel and move the mouse.
    - If the amount of red and green is roughly the same when EnPtPr Accel is ON as when EnPtPr Accel is Off, then the fix is working.)

    (NOTE: If you use Windows 10, & scaling of items is not 100%, see below.)
    (NOTE: If you use Windows 8.1 and have too much green and red, see below.)
    (NOTE: While running a game, you may see many red and green lines.
    Games that need a fix usually frequently re-position the pointer and this confuses MouseMovementRecorder.exe but DOES NOT mean acceleration.

    See http://www.esreality.com/?a=post&id=1846538#pid1927879 - scroll to 'Comment #271'.)

  • Turn the 'Enhance pointer precision' option OFF when you have finished testing.
    (Unless you applied one of the Windows 2000 or Windows 98/95 Acceleration fixes, then leave 'Enhance pointer precision' checked ON to enable it.)

Does my game need a mouse fix?

You can test your game to see if it turns 'Enhance pointer precision' ON, and needs a mouse fix.

  • Turn the 'Enhance pointer precision' option OFF,
  • Run Mouse Movement Recorder (included in the ZIP file),
  • Run your game (aim at something!) and look at the 'EnPtPr' column footer at the bottom of the Mouse Movement Recorder window.
    If it is displayed with a red background then the game has turned acceleration ON and needs a mouse fix.

Is this fix different from the Cheese Mouse Fix?

The 'Enhance pointer precision' option works slightly differently in Windows 7 than it does in XP and Vista, and slightly differently again in Windows 8.x and 10.

The Cheese Mouse Fix gives exactly 1-to-1 mouse response for Windows XP and Windows Vista.

The MarkC Mouse Fixes give exactly 1-to-1 mouse response for Windows 7 & 8.x & 10.

(Note: Both fixes need the Control Panel 'pointer speed' slider set to the 6th, middle position to give exact 1-to-1.)

But I don't use the middle 6/11 pointer speed setting?

If you want exact 1-to-1 in-game response when the pointer speed slider is not in the 6/11 position, or you have a custom display DPI, see the MarkC Mouse Fix Builder, which works for Windows 10, 8.x, 7, Vista and XP.
For those older games that turn acceleration on, it gives the same response as position 6/11 does (1-to-1), without having to move the pointer speed slider to 6/11.
The MarkC Windows 10 + 8.1 + 8 + 7 + Vista + XP Mouse Acceleration Fix Builder

The MarkC Mouse Fix Builder can also create a fix that emulates Windows 2000 or Windows 98 or Windows 95 acceleration.

How do you remove it?

  • Open the ZIP file at the link above.
  • If you use Windows 7 or Vista or XP:
    Select 'Windows_7+Vista+XP_Default.reg' and Double-click it.
  • If you use Windows 8 or Windows 8.1 or Windows 10:
    Select 'Windows_10+8.x_Default.reg' and Double-click it.
  • Answer Yes, OK to the prompts that appear.
  • Reboot or Log off.

I use Windows 10 and scaling of text, apps and other items is not 100%

In later versions of Windows 10, Microsoft changed how the mouse pointer is moved in response to mouse input, when scaling of text, apps and other items is not 100%, and Enhance pointer precision is OFF.

Mouse pointer movements when Enhance pointer precision is OFF, are now scaled according to the per-monitor scaling of items setting.

When Enhance pointer precision is OFF, and the Control Panel pointer speed slider is set to 6/11, MouseMovementRecorder will not show all-black, exact 1-to-1, but instead Pointer Movement will be multiplied by the same scaling factor applied to text, apps and other items.

Games may also see this difference, or not, depending on their "DPI Awareness".

I use Windows 8.1 and see too much green and red in MouseMovementRecorder

Windows 8.1 introduced changes to mouse input processing to reduce power used and improve battery life:
Windows 8.1 delays and coalesces (merges) mouse input for programs, causing the effective mouse polling rate to be as low as 62 Hz in some cases (even for gaming mice with a higher polling rate).

This new processing can affect some games (games that don't use Raw Input and don't use DirectInput). Microsoft have a December 2013 Windows Update Rollup that includes a fix for those games, which will be automatically installed when you have Windows Update set to install updates automatically.
(See here: KB2908279 Mouse pointer stutters or freezes when you play certain games in Windows 8.1.)

The new processing can also affect MouseMovementRecorder and cause it to show red and green (with the mouse delays, MouseMovementRecorder sees a mouse movement from DirectInput, but doesn't see the pointer move until MUCH MUCH later and can't figure out what's going on and displays red and green).

If the KB2908279 update fix is installed, MouseMovementRecorder will activate it
to give more responsive mouse pointer movement and stop the red and green.

Otherwise, while running MouseMovementRecorder, select it and press the '+' key
on the keyboard a until the red and green stops.

If Control Panel, Appearance and Personalization, Display shows a 'Smaller...Larger' slider, high DPI monitors might need a custom size and/or a fix-builder fix to get exact 1-to-1.
See this blog article:
Windows 8.1 DPI Scaling Enhancements @ Extreme Windows Blog
The new multi-monitor DPI scaling in Windows 8.1 is a good thing if you have multiple monitors with different pixels-per-inch values, BUT it might make it harder to find the correct Item Size percentage when choosing which MarkC fix to use to get exact 1-to-1.
Try clicking the 'Let me choose one scaling level for all my displays' checkbox and then find the percentage needed so that your main (gaming) monitor looks the same as it did when using the 'Smaller...Larger' slider (this may require some reboots).
When you have the right percentage value, click '...one scaling level...' OFF (so that you get the benefit of the new Multi-monitor DPI scaling - if you need it) and use the percentage value to choose which fix you need, or to create a Fix-Builder fix.

Loading the fix with a non-Administrator account

When adding the mouse acceleration fix to the registry, you may get this error message:

"Cannot import (filename).reg: Not all data was successfully written to the registry."

This error happens because part of the fix turns off acceleration for the Welcome screen (the log on screen).
If you use the Welcome screen (or the Windows Log in dialog) and acceleration is NOT turned off for the Welcome screen, then the MarkC fixes have a 1 pixel / 1 mouse count error when the mouse changes direction left/right or up/down.

You can remove this 1 mouse count error by any of these methods:

  • Run Disable_WelcomeScreen+Login_Accel.CMD as Administrator (Right-click > Run as administrator).
  • Add/Merge Disable_WelcomeScreen+Login_Accel.reg to the registry while logged in as an administrator.
  • Run RegEdit.exe and edit 'HKEY_USERS\.DEFAULT\Control Panel\Mouse\MouseSpeed' to 0 (zero), while logged in as an administrator.
  • Not moving or touching the mouse while using the Welcome screen (use arrow keys to select the user and Enter key to log in).
  • Ignoring the 1 mouse count error! It's only a single count: You won't notice it.