41

I've been looking for a solution to the unusable mouse problem in Mac OS X for ages. I've tried a gazillion programs and fiddled with every setting there is or there can be added. So far, I haven't found a way to get linear mouse response in Mac OS X.

At this point I'm seriously considering installing another operating system.

But before I do that, or go hacking around OS binaries, maybe someone here has a solution?

I want linear mouse response. I want high sensitivity. I like my touchpad acceleration and would like to keep it if possible. Any ideas?

P.S. I've been at this for a long time, I'll probably have already tried the most popular answers.

I'm running Mac OS X 10.6.5 on a MacBook Pro. I don't use a particular brand of mouse.

I'm not looking for any commercial solutions.

I've tried:

From what I've gathered so far, the only method to kill the acceleration curve seems to be to set the mouse scaling to a negative value (for which there are apparently two methods.) Unfortunately, this also kills the tracking speed. Before 10.4, there was a function to which you could pass your own acceleration curve which solved everything.


By the way, here is the Linux counterpart to this question: Disabling mouse acceleration in X.Org (Linux)

...and here's the programmatical variant, as I'll be trying to roll my own solution: Disabling mouse acceleration in Mac OS X @ SO

17
  • 1
    This was posted in August: A rather desperate solution hacking the mouse driver. I'm don't expect alternatives have popped up in the short time since then.
    – Daniel Beck
    Dec 4, 2010 at 15:58
  • 1
    @aib If you're up for writing your own, it's likely that the mouse curve app is just tweaking the acceleration settings (HIDPointerAccelerationSettings, HIDPointerAccelerationTable, HIDPointerAccelerationType, etc.) in the IORegistry of the IOHIDPointing object associated with the mouse. IOHIDFamily is open source, so you can figure out how the driver interprets those settings. Dec 18, 2010 at 18:43
  • 8
    If you're here you're probably frustrated, so here's some trivia to lighten your mood: Did you know that the first time I tried to use the mouse on a Mac it took me more than 10 seconds to click a large 32x32 Firefox button (only ~3 of which I spent banging my head on the desk)? The muridae challenged Quake 3 railgunner that I am, I kept under- and overshooting it.
    – aib
    Dec 23, 2010 at 8:42
  • 4
    Funny, it literally is a matter of getting things straight. (In this case, it would be the pointer curve.) I'm not going to discuss things further, because I've already conceded the point that linear response is the only logical, universal choice in favor of calling it all "personal preference." Still, it amazes me how some people have no standards about a device they use for hours on end to interact with a device they do all their work on.
    – aib
    May 7, 2011 at 10:23
  • 4
    Personal preferences are just that: personal. If somebody does or doesn't like mouse acceleration, that's their prerogative. The point of Super User is to get answers to questions about computers, and this is a perfectly valid question. Please stop bickering about whose OS is "superior", or the irrelevant comments will be deleted.
    – nhinkle
    May 8, 2011 at 21:42

19 Answers 19

9

Use your manufacturer's mouse driver, if available

Alternatives are the general, commercial, all-purpose mouse utilities/drivers USB Overdrive or Steermouse, or use Mouse Acceleration Preference Pane.

4
  • 1
    I have to use the newer version of MAPP, which doesn't have curve editing. Right now the closest I can get to a linear response is at -0.4x acceleration, but the sensitivity is terrible. I will not use commercial software simply because I find it ridiculous to buy software in order be able to use a mouse. I would rather spend a couple of hours to write one myself, though I guess that's a topic for SO.
    – aib
    Dec 4, 2010 at 13:03
  • 1
    @aib You don't have to buy software to use a mouse, you just want to alter the way the mouse works. Apr 25, 2011 at 19:19
  • 3
    OK, I'll agree that it's a point-of-view-issue. To me (and I, apparently, might be the only person on the planet with this point of view) it is the difference between "working" and "not working". I've unplugged my mouse and stopped using anything on Mac that can't be controlled via the touchpad or a graphic tablet.
    – aib
    Apr 25, 2011 at 19:59
  • 1
    @aib +2 for not being the only person in the planet that is frustrated. Right now I bought a new Logitech laser mouse and it's sitting right next to the computer as a decoration device. Feeling like going back to Best Buy and getting my money back. May 7, 2011 at 2:44
6

Short answer, write on a Terminal:

defaults write .GlobalPreferences com.apple.mouse.scaling -1
defaults write .GlobalPreferences com.apple.trackpad.scaling -1

That should do it for both mouse and trackpad. If you want to restore the default values, type:

defaults write .GlobalPreferences com.apple.mouse.scaling 

Big-time answer, check out Mouse Curves Acceleration Preference Pane (free download). Open your Preferences Panel > Mouse Acceleration and set the Mouse value to 0.0x

That should do it but if you want more control you can also check the App at the same page that gives you full control on these and other mouse settings.

3
  • 1
    Does not work for Snow Leopard because Jobs decided to drop an API function which is a dependency of that program. It only works for Mac users with old versions of the OS. May 7, 2011 at 2:49
  • Good news! It works again in 10.8
    – Jonathan
    Sep 28, 2015 at 21:54
  • 1
    works in el capitan 10.11.1 too! Great answer, for providing how to restore as well.
    – ahnbizcad
    Nov 5, 2015 at 0:02
5

I had the same problem because I wanted to try League of Legends, an RTS-like online game - mouse acceleration can be a pain when you want precision combined with swift movement of your hand.

I found ControllerMate, which worked like a charm after some tweaks and tests:

ControllerMate is a controller programming tool that allows you to customize the behavior of your HID devices — keyboards, keypads, mice, trackballs, joysticks, gamepads, throttles, among others. ControllerMate’s philosophy is to be as flexible as possible, to provide a set of basic programming tools, and to allow the user to combine those tools in an endless variety of ways.

enter image description here

2
  • I was never able to get USB Overdrive, MouseZoom, or anything else to produce a windows like cursor ballistic, but ControllerMate did the job. It's a bit of a hack and annoying, but at least it works. Since then I've moved to just using a mouse with OSX driver support.
    – David Ma
    Apr 25, 2011 at 9:42
  • 2
    I downloaded controllermate and it is highly unusable, plus you have to dole out cash for it. 15 minutes of my life that I'm never going to recover. May 7, 2011 at 2:46
4

See this thread : Tired of Mac OS X's mouse acceleration?

Several solutions are discussed, including the source of a 21-lines C program that will turn of scaling, also available as a downloadable attachment. I suggest reading the entire thread first.

3
  • Already read it, but might be something I missed the first time around so I'm gonna read it from the top again, and drop another feedback here.
    – aib
    Dec 20, 2010 at 12:30
  • 2
    Nope, sorry. This is the mouse acceleration preferences pane method, which kills tracking speed along with the acceleration curve.
    – aib
    Dec 23, 2010 at 8:24
  • @aib +1 for saving me 15 minutes of my life. May 7, 2011 at 2:45
4

Give MouseZoom a try, it worked for me to slow down mouse motion.

1
  • But I want to speed it up! Only without acceleration. By the way, if you want to know what the acceleration is like, try the maximum setting on that program. Tell me it's usable and I'll drop my quest for linear mouse response. That counter-intuitive response curve is exactly what's happening on the lower settings, only less exaggerated.
    – aib
    Dec 25, 2010 at 14:19
4
defaults write .GlobalPreferences com.apple.mouse.scaling -1

I use steermouse and it allows you to independently set acceleration and tracking speed. One thing, having manufacturer's driver and steermouse installed messes things up.

2
  • Worked for me in 10.8
    – Jonathan
    Sep 28, 2015 at 21:54
  • 1
    context please. where do we write this, and how do we get to it?
    – ahnbizcad
    Nov 4, 2015 at 23:52
3

I use this fix from TeamLiquid, dubbed MouseFixer2:

http://www.teamliquid.net/forum/viewmessage.php?topic_id=194668

2

SmoothMouse.com seems to be the solution. It is a project to improve mouse and trackpad usability.

It works great on my MacBook Air running OSX Mavericks.

1
  • This is a good utility although it conflicts with Karabiner which is a dealbreaker for me
    – cwd
    May 9, 2015 at 11:32
1

There is a preference pane which can be installed to eliminate acceleration in OS X, available here.

It may sound counter-intuitive, but to remove the acceleration, set "Mouse" to -6.0x.

1
  • 1
    Seems awfully familiar to the one I posted in my question. Sorry, but it kills mouse sensitivity along with the acceleration curve. It's what I'm using at the moment (or trying to, rather.)
    – aib
    Dec 23, 2010 at 8:21
1

If you also have a PC set up next to your Mac, you can use Synergy+ to share the PC's mouse. This has the added benefit of using the PC's mouse speed and acceleration settings, and if you're on Windows you can disable these from Control Panel.

Note that the Windows machine must be setup as the server, with the Mac as a client.

1

Give USB Overdrive a try.

2
  • Having used USB Overdrive and the Razer OSX drivers, USB overdrive is the clear winner. Apr 25, 2011 at 9:45
  • The user already responded in december (see my answer) that he didn't want to use that.
    – Daniel Beck
    Apr 25, 2011 at 10:06
1

Because of this issue, I put away a logitech G5. I solved the problem using a Magic Mouse. Its drivers provide a smooth pointer acceleration I didn't find in any other mouse.

This is not a good solution, but worked for me...

1

I'm using a Logitech G400 so this might only apply to that family of mice.

Using the Logitech gaming software, turn the DPI sensitivity all the way up (3600) and the polling rate all the way down (125).

Then in OSX mouse system preferences turn the tracking speed down almost all the way. This not only removed acceleration for me, but also fixed problems where the pointer would freeze or stick at low speeds.

1
  • here it is 2021, and this totally worked for me
    – LarrikJ
    Mar 22, 2021 at 16:41
1

As of MacOS 14 Monterey, 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
0

I hear there's a nice little App called Decelerator might just do the trick! ;-)

(Shameless plug, I wrote it. :D)

1
  • 1
    Does it let you adjust the pointer speed? Without acceleration, that is.
    – aib
    Jul 21, 2011 at 21:20
0

I was going to toss BetterTouchTool into the ring but I saw your dislike for 3rd party software to make the mouse shape up. I'm adding it here in hope it helps someone else in the future.

5
  • I'm only against commercial solutions: It's ridiculous to have to pay money to be able to use a mouse. I'll give that a try, thanks.
    – aib
    Apr 25, 2011 at 10:52
  • @aib I find it interesting how you keep saying "ridiculous to have to pay money to be able to use a mouse". Having used Windows since 3.0 and OS X since 10.0 (plus System 7, 8 and 9) and a varieties of Linuxes and BSD, I have yet to find a mouse that requires me to pay something extra… they all work out of the box. Your rant about having to pay is incorrectly expressed. That'd be the same if I complained about XX feature of YY operating system and complaining that it's unusable and that I have to pay for it to be changed. Apr 25, 2011 at 19:24
  • @Martín Marconcini: I agree; I am romanticising the subject, but feature bloat is one of the things I cannot help feeling strongly about. It's a major usability issue (especially with Mac OS's acceleration curve) and to think that it could've been easily prevented - by removing code... Also, to make an easy point: If you've used so many systems, you already know that each one has a different acceleration code, and thus, mouse response. Linear response is the only universal one.
    – aib
    Apr 25, 2011 at 19:41
  • Oh, and I wasn't really exaggerating: See the 7th comment on this question. How hard should it be to land your pointer on a button?
    – aib
    Apr 25, 2011 at 19:48
  • @aib I know all the OSses use different algorithms and therefore the response is not the same, but I don't find it particularly hard to switch from one to the other; if anything I find Windows a little bit awkward to move. What I do believe is that one gets used after days of practice. Muscle memory is hard to beat, but not impossible. In any case, I really don't use the mouse that much these days. Launchbar and shortcuts are my mouse ;) Apr 25, 2011 at 20:33
0

Speaking for Big Sur:

CursorSense is capable of this, however it is paid software.

SteelSeries ExactMouse is also capable of this, however only for USB mice - not for touchpads.

Instead I found https://github.com/docwhat/killmouseaccel which is a free solution that will remove acceleration on a mouse or touchpad, while maintaining the ability to adjust sensitivity.

Launching it on startup is covered well here: https://stackoverflow.com/a/13372744

0

I have become accustomed to the Microsoft IntelliMouse acceleration curve. The driver is only compiled for Intel so doesn't work on new MacBooks.

I am in the process of writing a DriverKit driver for the mouse.

macOS pointer acceleration is performed here in IOHIDPointerScrollFilter.cpp. It is implemented as a CFPlugin, and roughly implements the IOHIDServiceFilter.h interface. The instantiation point of this "filter" is not open-source AFAICT.

$ sudo log stream --level debug --predicate 'subsystem == "com.apple.iohid"'

WindowServer: (IOKit) [com.apple.iohid:default] Add filter:IOHIDServiceFilter uuid:25268D26-BB27-4522-AEBC-02B6A6B920AC name:com.apple.iokit.hid.IOHIDPointerScrollFilter  for service:0x1000df3e6

An IOHIDPointerAccelerator is created which takes an algorithm as input. The algorithm can be created with an IOHIDTableAcceleration (which is how IntelliPoint encoded their accel curve), or with IOHIDParametricAcceleration. The parametric way seems like an improvement on the table, allowing for a smoother acceleration curve, rather than defining a jagged curve based on a few xy coords.

The IntelliMouse curve was defined in the Info.plist as a simple binary protocol under the key HIDPointerAccelerationTable. You can see a plot of the curve here.

IntelliMouse used to use IOHIPointing but this is now deprecated.

Normally, you can set properties for HID devices like so (this is matching my IntelliMouse):

hidutil property --matching '{"ProductID":0x47}' --set '{"HIDPointerAcceleration":0}'

This is how you would disable acceleration. However, it will not report when it fails to set a property, and these settings don't seem to update the System Preferences UI.

You can see here where IOHIDPointerScrollFilter will run its acceleration setup on response to a property change. However, it seems there is a whitelist of properties that are allowed to be set, and HIDPointerAccelerationTable is not one of them. If you could do this, then we would have full control over pointer acceleration from a single CLI command. Alas, I could not find a way.

The whitelist might be defined in IOHIDSystem::createParameters

This line in the HIDServiceFilterExample.m gives me some hope, but I don't think HIDServiceFilterExample is the same base that is being used by the IOHIDPointerScrollFilter.

This leaves me with the only option to write a driver and copy over the IOHIDPointerScrollFilter code. But DriverKit doesn't allow CoreFoundation or stdlib so it's taking some time.

Related: https://developer.apple.com/forums/thread/698409

-4

Magic Mouse. Inertial Scrolling set to off. You'll be back to Windows 3.0 but I have no idea why you would want to be.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .