7

I upgraded from MacOS Catalina straight to Monterey. In Monterey or Big Sur, Apple seem to have introduced an aggressive mouse acceleration function.

i.e.: Acceleration in moving the mouse cursor (not referring to scrolling).

I am able to temporarily get rid of the mouse acceleration, by entering the below command into Terminal and then rebooting (or potentially logging out and in, though that has been unreliable at times):

defaults write -g com.apple.mouse.scaling -integer -1

However, this setting is not permanent and seems to get lost on reboot or shut down (potentially also at idling, sleep or logout – I have not investigated thoroughly).

How can I make this setting permanent?


Please note: Preferably, I want to make the setting permanent inside of native MacOS settings, or some "light software" like a script, rather than relying on heavy external software. I have seen people suggest e.g. LinearMouse or CursorSense which have settings for disabling mouse acceleration – but when trying them, unfortunately because they also handle other mouse-related functions, it seems to tend to interact negatively with other mouse software (making the cursor movements "choppy") and even Universal Control. I am still interested in hearing your suggestions on third-party software – but optimally the answer to my question should be how to permanently disable mouse acceleration in the Apple native preference files, or similar.

P A N
  • 9,794
  • 20
  • 77
  • 114

3 Answers3

6

I was able to disable it on startup by creating the following launchd configuration and placing it in the /Library/LaunchDaemons folder (named it com.ryan.disablemouseacceleration)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.ryan.disablemouseacceleration</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/defaults</string>
        <string>write</string>
        <string>.GlobalPreferences</string>
        <string>com.apple.mouse.scaling</string>
        <string>-1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>
Alexander
  • 8,363
2

This is (finally!) a built-in feature!

  1. Go to the Mouse system setting pane
  2. Click Advanced... in the bottom right
  3. Toggle the Pointer acceleration setting
A screenshot of the advanced settings dialogue, showing the pointer acceleration toggle.

You can also script the same change with defaults:

# When linear, acceleration is off
defaults write NSGlobalDomain com.apple.mouse.linear -bool YES
Alexander
  • 8,363
1

This looks like a good piece of free software to do what you're looking for: https://triq.net/mac/mouse-acceleration It basically only does this, it's a simple preference pane.