Ever since Mac OS X 10.4, Apple did a disservice to the computing community by severely crippling the mouse movement behaviour. The mouse acceleration and movement is simply too erratic and not very smooth compared to the Windows and Linux motions. There are, no doubt, proponents of the movement that will say that this is the proper behaviour and that Apple got it right while everyone else screwed up but I disagree. I struggled long and hard to adapt to the mouse acceleration curve but after a few months, I simply couldn’t handle it anymore and used USB Overdrive to alter the mouse movement behaviour. I might add that as good as USB Overdrive is, the movement still doesn’t feel quite right. Now before critics slam me for this post, I should point out that this mouse movement wasn’t always a problem. Back in the days of System 6 (6.1.3 was when I first got my own Mac—a MacSE), the mouse movement was normal. Same in System 7. Somewhere between System 7 and OS X, I stopped using Macs. I came back with the advent of Tiger where it was first reported that the mouse acceleration problem existed.
Many people have reported this problem and, likewise, equally many people have probably posted to say that nothing is wrong. But to me, something is wrong! The Mac platform is supposed to be providing the best user experience out of all operating systems. How can it do this when they’ve purposely crippled the control panel to not allow customization to ones liking in even something as primal as the mouse movement? To me, this is tantamount to fixing the key repeat delay to 5 seconds at a rate of 10 characters per second and purposely not providing a vehicle to change the setting. Or perhaps, it’s tantamount to setting your display resolution to 1024×768 no matter what resolution your panel supports.
Of course, the Mac platform has always been about doing things one way. I suppose the mindset is probably something to the effect that any user should be able to use a Mac and feel at home. You can only feel at home if you are familiar with the interface. Hence, the purposeful limiting of user customizability. Sure, you can change the selection colour and the size of the dock, but that’s about it. You can’t change the fonts used or the size. Wanna theme those windows? No way! As with most things in life, this has two sides of the coin. Those who love the UI wouldn’t have it any other way and so, they don’t really care. Those who loathe the UI are repulsed by the inability to change things to their liking.
Linux is a perfect example of where this issue sort of mentality applies. There are those who love Linux because of the ability to customize nearly everything. My window manager of choice back in the day was FVWM and I had everything customized—including the keyboard and mouse bindings to manipulate windows. When other people came to use my terminals, they couldn’t do anything properly because of all my customizations. But, the customizations definitely made me more efficient—much more efficient. Today things are a little better with Gnome and KDE providing somewhat familiar interfaces but the two camps are pretty divided in philosophy. This is one of the reasons why Linux has had trouble gaining traction with mainstream computer users—perhaps this will change with the advent of netbooks like the Asus EEE PC which comes with Xandros Linux.
Anyway, back to the mouse issue…. I never did pay for USB Overdrive—not because I thought the author didn’t deserve it (quite contrary, I’m very sympathetic to shareware developers)—mostly because it just never felt quite right. When I bought a new Macbook Pro with Leopard, I read somewhere that Microsoft Intellipoint was the solution for some. Well, I had a Microsoft Wheel Optical mouse lying around, so I plugged it in, installed Intellipoint and voila! normal mouse movement! So, for many months now, my Logitech mice (including the G5 version 2) have just sat there collecting dust. It wasn’t until I came across this post: http://groups.google.com/group/alphagrip/browse_thread/thread/4174e7cf5ed909aa that I found the solution I had long needed. For my Logitech G5 v2 mouse, I added the following lines of code:
<key>USB Gaming Mouse</key> <dict> <key>CFBundleIdentifier</key> <string>com.microsoft.driver.MicrosoftMouseUSB</string> <key>HIDPointerAccelerationTable</key> <data> AACAAFVTQioABwAAAAAAAQABAAAAAQAAAAAgAAAQAABxOwAATOMA BE7FAA03BAAFRAAAFIAAAAcsAAAj4AAACQAAADSwAAAK2AAARfAA AA0IAABXkAAAD2AAAGkAAAASEAAAeoAAABUAAACJAAAAF8AAAJEA AAAawAAAlrAAAB2QAACZsAAAIKAAAJswAAAj8AAAnDAAACewAACc MAAAAIAAABIAAHE7AABWfwAESgAADqAAAAY6AAAfQAAABygAACkA AAAI2AAAPGAAAAm4AABHQAAACrAAAFMwAAALwAAAYDAAAAzAAABs IAAADuAAAIQgAAARYAAAnSAAABQAAAC0AAAAFsAAAMcAAAAZoAAA 1AAAABzgAADbAAAAIIAAAOAAAAAkQAAA4wAAACegAADjAAAAALAA ABQAAHE7AABhTgAESgAAD2AAAAUyAAAXYAAABjIAACCgAAAHLAAA LCAAAAgIAAA3oAAACOQAAENAAAAJwAAAUIAAAAqgAABfIgAAC5AA AG1wAAAMcAAAewAAAA6AAACYoAAAEMAAALYAAAATQAAA0gAAABZg AADpAAAAGiAAAPoAAAAdoAABAwAAACEgAAEHAAAAJIAAAQoAAAAn oAABDAAAAADgAAARAABxOwAAbXcABBoAABHwAAAFGgAAG/AAAAXw AAAmYAAABvwAADQAAAAITAAAT+AAAAlsAABt4AAACngAAI3AAAAL sAAAtkAAAA1QAADZgAAAEQAAAPeAAAAVwAABEQAAABlgAAEgAAAA HUAAASgAAAAhAAABLgAAACSAAAEyAAAAJ4AAATUAAAAAUAAAEgAA cTsAAEuwAARMAAAOAAAABUAAABVQAAAHJAAAJiAAAAi0AAA1wAAA CpAAAEmAAAAL6AAAVoAAAA0gAABiAAAADhgAAGrQAAAPGAAAdAAA ABGQAACHgAAAFFAAAJoAAAAXYAAAqYAAABpgAAC0AAAAHVAAALkA AAAg0AAAvIAAACQgAAC9gAAAJ7AAAL6AAAABAAAAEAAAcTsAAFZ/ AAO4AAASoAAABSAAACVAAAAGCAAAN4AAAAbwAABfAAAAB/AAAIoA AAAJKAAAyyAAAArwAAD3gAAADSAAARyAAAAQAAABOAAAABRAAAFK AAAAGQAAAVMAAAAc0AABVwAAACDgAAFbgAAAJCAAAV2AAAAnoAAB XgAAAFJwAAAJlNEAWTAAAAoSaQBf8AAACpAAAGawAAAA4AAAHAAB GFUAATAAAAGyKAAC8AAAAlNpAAagAAADb0oAENAAAAOteAAUWAAA A+ulABfgAAAEKdMAG2gAAARoAAAe8AAABKIBACKYAAAE2VYAJiAA AAUUqwApaAAABVAAACywAAAFgAEAMcgAAAW1VgA2QAAABeqrADq4 AAAGIAAAPzAAAAZiAABD3AAABp6rAEh4AAAG21YATRQAAAcYAABR sAAAB3oBAFbcAAAH2VYAW/gAAAg4qwBhFAAACJgAAGYwAAAJFgEA bAAAAAmRVgBx0AAACgyrAHegAAAKiAAAfXAAAAEAAAATAAEYVQAB MAAAAbIoAAMQAAACU2kABxAAAAMvSgARgAAAA6z7AByIAAAEOqsA KOAAAASBVgAwiAAABMgAADgwAAAFDVYAQJgAAAVQAABI8AAABcar AFKwAAAGOAAAXHAAAAbxVgBnwAAAB0yrAG1YAAAHqAAAcvAAAAhM AAB5BAAACPAAAH8YAAAJlAAAhSwAAAo4AACLQAA= </data> <key>IOClass</key> <string>MicrosoftMouseUSB</string> <key>IOProviderClass</key> <string>IOUSBInterface</string> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>49225</integer> <key>idVendor</key> <integer>1133</integer> <key>bInterfaceClass</key> <integer>3</integer> <key>bInterfaceSubClass</key> <integer>1</integer> <key>bInterfaceProtocol</key> <integer>2</integer>
With this code added to the Info.plist, I rebooted, and now my Logitech G5 v2 is being controlled by the Microsoft driver providing smooth mouse movement. What’s more, the two thumb buttons operate as Forward and Back in the browser even though they can’t be configured as such in Intellipoint. Currently, Intellipoint only sees three buttons. I believe the tilt buttons of the scroll wheel appear on a different USB interface (bInterfaceNumber 1 and 2) so they may be a lost cause.
Anyway, I’m not much happier to have my Logitech working in what I view is the proper manner.
Thank you! I use a MS mouse for this very reason, I bought a Logitec mouse and could not stand its inaccuracy in OSX, so thats on my work PC now. I will have to give it a try again because this MS mouse is starting to die on me.
Let me know if you need any help.
I’m trying to use the MS driver with my Logitech Cordless Optical Mouse. I tried putting in the IDs for my mouse but that didn’t work. Are you supposed to put in the IDs for the USB receiver? I’m going to try that out now. But I have another question. What is the bInterfaceClass/SubClass/Protocal values and how can I find which ones I need to set mine to? Thanks in advance!
The easiest way to get this information is to use lsusb. I did it under Linux but I suspect that not everyone has access to a Linux machine. I tried to look for the lsusb port for Mac OS X but could not find it so I just ended up compiling it myself. You can find it here:
http://rapidshare.com/files/146616592/lsusb.html
Download it, make sure the file is executable, and run it in a terminal. If you’re wary about running binaries from anonymous people (as you should be), I’d be happy to tar up the source files so you can compile them yourself. That being said, I promise that the binary was compiled from clean code that was modified only to get it to compile properly under OS X.
Hi man behind the mac. I really do appreciate your help, but the file did not work. This stuff is actually really over my head so maybe I was doing something wrong. Send along any other advice if you can. If you don’t, I’ll understand. Why in the world can’t Logitech make a decent mouse driver for OS X? Anyway, thanks again!
You will also need to have the usb.ids file in the same directory as the lsusb file found here:
http://rapidshare.com/files/146617541/usb.ids.html
After editing your Info.plist file, don’t forget to do:
touch /System/Library/Extensions
before rebooting. Also, when you run lsusb -vv, be sure you pick out information from the right section—especially for combo packages that have a keyboard and mouse.
If this works, you will be my savior, I’ve been looking for a decent fix for over a year now. However, I’d prefer not to have the default Microsoft acceleration curve. Instead, I’d like it to behave as if “Enhanced Pointer Precision” were disabled – i.e. NO ACCELERATION at all.
Any ideas on finding an appropriate HIDPointerAccelerationTable for that?
Microsoft drivers worked well, but I’m still looking for an acceleration curve that is completely linear. I’ll try passing an empty value and see what happens.
For anyone interested, the HIDPointerAccelerationTable value is Base64 encoded. Though, I don’t know what to do with it once its decoded.
Any help would be greatly appreciated. If you know anything about removing the mouse acceleration completely, please post back here
I haven’t had a chance to look into this yet. It’s pretty crazy that all this control is shrouded behind what appears to be a veil of secrecy. Apple has some really primitive code examples about dealing with mouse acceleration in their developer documents but beyond that, there doesn’t seem to be any documentation about the function calls that they use in their example!
It’s difficult to say, even if manage to decipher what the parameters in the table represent, whether we’ll be able to really implement the non-”Enhance Pointer Precision” functionality of Windows (which is, in itself, well-documented).
I’ve also been trying to find more examples of ‘HIDPointerAccelerationTable’ values. Haven’t really found much. Really, just the Apple and Microsoft tables so far.
The no-acceleration ‘curve’ has been compared to behavior typically seen with a tablet pen. So I’ve been trying to find tablet drivers with custom-made acceleration tables, but have yet to find anything useful.
So I just did a bit of digging and I think the relevant information is here. This is taken from the IOHIPointing.cpp source code that is part of Darwin as found here: http://www.opensource.apple.com/darwinsource/10.5.4/IOHIDFamily-258.1/IOHIDSystem/
Once you decode the base64 table, as I read the code this is what I interpret:
4 bytes -> scale
4 bytes -> skipped (looks like this is possibly identifier info?)
2 byte -> count (this seems to be the number of acceleration thresholds—in our case maybe 1796 of them?)
for each threshold:
4 bytes -> acceleration value
2 bytes -> number of points
each “point” takes 8 bytes (presumably 2 32-bit fixed point numbers…seen later?)
There is a “desired” value which I presume is the desired acceleration level. The algorithm tries to find the thresholds that straddle the “desired” acceleration amount. The coding seems to indicate that the table is encoded with lowest acceleration values and increasing as the table is read.
A scale factor is created based on the two acceleration values that straddle the desired amount.
An array of “segments” is created with the number of entires being double the number of points that is greater between the two thresholds is created.
Each point in the threshold is a 32-bit pair for the X and Y coordinates. Each pair of points between the thresholds forms a line. Each segment stores this properties of this line—the scaled X device units, the slope, and the intercept. Basically, I think the general idea behind what this algorithm is trying to do is this: Each acceleration threshold has a defined curve. If you set a desired acceleration that sits between two thresholds (rather than being exactly equal to one), this algorithm will try to interpolate an acceleration curve between the two curves defined in the straddling thresholds. Once all these segments have been calculated, the driver simply calculates the movement differential for a certain time interval (this yields the delta) and then the driver will look to the segments to find one that has a delta greater than the current delta. It them uses the segment information (slope, intercept) to calculate the new X and Y coordinates.
Anyway, that’s the gist of it. Whether this is what the Microsoft driver actually does really remains to be seen. Maybe Microsoft just copied the exact same Info.plist file without even using that information?
BTW, the only reason why I’m assuming Microsoft is using this algorithm is because this same table under the same key (HIDPointerAccelerationTable) of the IOKitPersonalities can be found in: /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBOpticalMouse.kext/Contents/Info.plist.
What’s interesting is that the AppleBluetoothHIDMouse, the AppleUSBMultitouch drivers use different acceleration tables. What’s more, the acceleration table for the AppleHIDMouse.kext mentioned in the Google posting metioned above, doesn’t even have the acceleration table anymore. Perhaps it is, thus, using the default acceleration table that’s found in the actual driver code. It’s impossible for me to tell when the table was removed but the Google posting makes reference to 10.4.11 as still having it so I can only assume it was removed with Leopard (I sold my copy of Tiger along with my Mac). It’s not even clear if the table was the same as what is found in the Apple optical mouse driver and/or Microsoft driver. What would be interesting, as an exercise, for now, would be to take the table and plop it into the Apple kext to see if it makes the motion smoother.
Back to your enhance pointer position, I’m afraid there’s no direct bit that you can flip to get what you want. In fact, what Microsoft describes here: http://www.microsoft.com/whdc/archive/pointer-bal.mspx is very similar to what’s being done by the driver code in Apple’s mouse driver. According to that page, turning off enhanced pointer position is tantamount to disabling acceleration and simply applying a scale factor. I actually don’t notice a large difference between having EPP on or off on my Windows machines—both are infinitely superior to the default Mac behaviour and I’m pretty accurate with both. Maybe you can get used to the EPP motion and, if not, maybe just create a new table with a straight line and an appropriate scale factor?
I think it would be constructive to actually find as many Acceleration Tables as possible and actually graph the acceleration curves. At least now you know the algorithm and you probably know what your prefered behaviour is so maybe we can figure this thing out after all. I’ll try to write a program to graph the curves sometime later today or the day after tomorrow (not available tomorrow).
Thanks for that. I had looked at that exact source file, from an older Darwin source. I’ll try to reverse the code at some point – if I’m up to it. At this point its so upsetting I might just forget about it :\
Unfortunately, I can only use a mouse with no acceleration. I used to compete in video games at a professional level – a lot of time and research went into determining the most accurate acceleration curve. The answer is simply none – the cursor should do exactly what your brain tells your hand to. Any player in the competitive community would say the same.
Acceleration isn’t bad, it’s perfect for users who want the mouse to move with the minimal amount of physical effort. Unfortunately, at higher speeds, its not very precise OR accurate. I’m in the higher speed category
I wrote a paper comparing the two a few years ago for my Human/Computer Interaction course back in school, I’ll post a link to it if I can find it
Thank you again for all your help I’ll be sure to let you know my progress.
Hi,
thanks for the useful post!
I am trying to fix an issue related to the mac os mouse driver (random freeze and axis inversion) without going through an archive&install…
I have a question though. I applied the solution you suggest with my Logitech Trackman Wheel, and I got vendor id and product id from About this Mac -> More info. I am sure they are right (I also doublechecked them with the lsusb version you posted), but it doesn’t look like it’s working. If I open the prefPane of Microsoft Intellimouse and check for connected devices it says “No microsoft mouse connected”. Most important, settings modifications in the mouse speed and buttons assignments are not reflected on mouse behaviour…
I think the modifications I made to Info.plist in microsoft mouse kext are correct: any guess what the issue could be?
Thanks!
Other than the vendorID and productID, did you set the other fields as well? Also, the vendorID and productID reported are in hexadecimal so you have to convert it to decimal.
Last thing to check would be to whether you issued a ‘touch /System/Library/Extensions’ and then reboot.
Let me know if you have more problems.
Hi again. It’s the other Charles from the states. I wanted to thank you again for helping me with getting my Logitech mouse working with the Intellimouse software.
I noticed in your post that you couldn’t configure the extra buttons and features with the Intellimouse software. May I suggest you update to the newest Intellimouse software. It is version 6.3. I think it might help you out.
Anyway, I did have another help request. My wireless keyboard and mouse set uses the same USB receiver. I have the Logitech EX110. Without the Intellimouse software installed, the multimedia keys on my keyboard all function correctly. However, with the Intellimouse software, I get the mouse recognized by Intellimouse, but the multimedia keys on the keyboard do not work. I tried various programs (such as Spark, ControllerMate, Ukele, etc.) to see if Mac OS detects the key press, but it does not. I even installed and successfully hacked the Intellitype software to get it to take control over the keyboard, but that did not help either. (It did help me swap the ALT and Windows keys–and get the Application key to function as the Option key tough.) Do you think there is a way to get my keyboard’s multimedia keys to function correctly while at the same time have Intellimouse control my mouse?
Any help would be great. Thanks in advance.
Happy holidays.
Hey I’m new. How do you execute the file Isusb from the terminal? I’m not good with code. Thx
Hi,
Sorry for my absence. I’ve been quite busy lately.
I haven’t tried using the latest Intellimouse drivers yet. I’m not 100% certain if it will fix the mouse button issue but it’s certainly worth a try. I’ll give it a shot when I have a chance.
I’m not certain if there is a solution to the multimedia key problem. It’s entirely possible that the multimedia keys have keycodes that the Microsoft driver doesn’t recognize. Multimedia keys are typically custom keycodes. I think if I were to try this, the first thing I would do is take the keyboard to a Linux box and run xev to see what the X events being generated by the multimedia keys are (if it’s even possible to see). Only then, will you have a chance of knowing what might be going on. You can probably do this in OS X somehow but I’m not sure what the best mechanism is. With xev under OS X, the OS seems to intercept the multimedia keys (of course, they work in my case which is maybe why). If I get a chance, I’ll fire up the Linux box and see.
Brad, once you download the program, you should be able to run it just by ‘cd’ing to the directory where the program is and doing ./lsusb. Assuming the program is executable, that should work. Otherwise, you’ll have to do a ‘chmod 755 lsusb’.
Thanks a lot for this!
I’m a new macos user, and the weird acceleration was driving me insane.
I got my Logitech MX518 to work using this string with Intellipoint 6.3. Tried your version but for some reason I had no luck until I omitted the bInterface keys.
http://pastebin.com/f6ae76547
Hi!
”..
before making me swear “you are my saviour!
please
help me..
I am an architect from italy.
don’t know anything about coding nor using terminal..
can you detail me the exact steps for doing it?
I have a new logitech V550 nano.
please just some kinda of minitutorial for dummies!!:-)
with all the required steps.
PS:by the way, if this works you’ll make millions of people happy.and that’s a very nice thing under christmas
Hi Marco,
Let me work on a script tonight that will try to automate the process for you. Stay tuned…
holy shit, thanks!!!
Hi Marco,
Try this:
http://rapidshare.com/files/175361245/patch_ms_driver.dmg.html
I wrote a script to grab the information and graft it into the MS driver. Give this a whirl. Download the disk image, double click on the file (if the volume doesn’t automatically get mounted) and then double click the application.
It should take a couple of seconds and then you should reboot.
Incidentally, I’ve noticed that sometimes when the USB probe is issued, my keyboard will hang. Unplugging it and plugging it back in restores it.
Hi man..
I’ve removed LCC and steermouse.
I did have intellipoint already installed for my old microsoft mouse.
the software succesfully installed. asked me to reboot.
rebooted..
but nothing happens…
the mouse feel in the same as before.
I guess the intellipoint doesn’t recognize the mouse
at all.
Tried to assign different speed to the cursor or giving different buttons to try if there is some comunication between the intellipoint and the logitech mouse but nothing..
ps: first time I’ve tried to lounch your app, without dragging it in the applications folder, I had a warning saying something like “can’t recognize your mouse” but then I’ve dragged it in the app folder and the installation succeded.
don’t know what to do..
this mouse is a christmas gif from my gf.
I would not want to return it..
(and don’t know if they would take this back..)
what do you think?
Hi Marco,
You shouldn’t need to drag the application to the Applications folder. You should be able to just double click the program and then reboot.
I’m not at my Mac right now so I will check some things when I get home. I’ll probably need you to send me your Info.plist file just to make sure that it actually did something. Could you please post or email me your Info.plist file located at: /System/Library/Extensions/
MicrosoftMouse.kext/Contents/PlugIns/MicrosoftMouseUSB.kext/Contents?
Thanks!
hi!
can’t locate
/System/Library/Extensions/
MicrosoftMouse.kext/Contents/PlugIns/MicrosoftMouseUSB.kext/Contents
all I can find is a file in
/System/Library/Extensions/
called:
MicrosoftMouse.kext
tried to upload it on rapidshare but doesn’t let me select it, it appears somewhat transparent and dosen’t let me upload (I can upload anything else beside it..)
if this is the file
I can e-mail it to you but.. can’t find your e-mail address..
thanks in advance for all your effort in helping me..
you should had a donate button to your blog..
Hi Marco,
You need to right click on the MicrosoftMouse.kext and then select the “Show Package Contents” menu item. That way it will show you the contents of the kernel extension. Then you should be able to find the file.
didn’t know..kext was a package..
anyway I’ve found it. and posted the file on rapidshare.
ps:I have reinstalled steermouse for now..
do you need me to uninstall it and resend the plist.info after?
http://rapidshare.com/files/175891634/Info.plist
It looks like the program can’t identify the Logitech mouse string. I’m looking explicitly for the Logitech string. I knew I should have put out more debugging information.
Could you please download this verison:
http://rapidshare.com/files/175898626/patch_ms_driver.dmg.html
run it and then copy and paste every in the output screen into a file and upload it to rapidshare? Or you can email me (I think you can click on my name to get my email address).
can’t find your e-mail even clicking on your name..
I’ve uninstalled steermouse again, run the new driver version,
and now my mouse only moves up and down on a straight vertical line
tried tochange settings on the intellipoint driver and does not have any effect on the mouse.
anyway, I’ve uploaded on rapidshare the screen I got just after teh installation
http://rapidshare.com/files/175928214/Immagine_2.png
and the new info.plist file I have.
http://rapidshare.com/files/175928927/Info.plist
Hi,
searchin for it and found here
Thanks
SonyaSunny
Sad
Worked for me, BUT it has just replaced Apple’s acceleration with Microsoft’s acceleration. I’m unhappy with any kind of it, and IntelliPoint driver doesn’t allow to completely turn acceleration off.
Anyone knows HIDPointerAccelerationTable values corresponding to no acceleration?
kasym, waiting for exactly the same thing. Still can’t quite crack the HIDPointerAccelerationTable curve. If I could do this, I’d actually consider switching to the Mac permanently. This is so easy to do in Ubuntu and Windows :\
Can you send me your lsusb sources? I have twice now downloaded it and found that the ids file is missing and expects to be under your home directory. I was planning on figuring out how to package it for macports as a test exercise.
Long time unix/linux/bsd hacker trying to learn this macos variant
When i worked on windows i always turned “enhance pointer precision off”. Now, on mac, the pointer seem to have a similar behavior of that, when “enhance pointer precision” was on, but i dont know where to turn it off like i knew on windows. What should i do?
Wondering if you can help. I got this far with the lsusb. Here is what shows up for my Logitech mouse:
Bus 003 Device 003-046d-c018-00-00: ID 046d:c018 Logitech, Inc.
How do I translate this to put in the Info.plist file?
Thanks!
You need more output from lsusb than what you’ve shown. Did you run it with the -vv switch (for verbose output)?
I finally got it. I did what one of the other users suggested
About This Mac -> More Info, then I converted it. Now my Logitech Mouse is working like a champ.
Thanks for putting together the information. Now only if the edges on my mbp weren’t razor sharp and the text was as clear as Windows, it would be perfect.
Good job. Yeah, I can’t stand the edges of the MBP either. I’m sort of convinced that Apple has compromised ergonomics for the sake of looks but that’s a topic for discussion for another day.
[...] Lastly, OS X has pretty poor mouse support. If you come from a PC, you’ll notice that the mouse is slow and jerky. Some people have resorted to using a program called USB Overdrive, but that still doesn’t completely solve the issue. I found the best resolution was to install Microsoft’s Intellipoint for mac. You can also do a cool hack to make your Logitech mouse work with it. Good post on how to do it here. [...]
Man Behind the Mac, I was following you instruction, but couldn’t succeed. Is it possible to contact you by email?
You can email me at: woodworking.fanatic@gmail.com
[..] A bit unrelated, but I quite simply liked this webpage post [..]
Hi Man Saviour of all of us. Well i’ve read your post and before i try anything else i will update you on my situation.
I’ve purchased yesterday a new mouse. Razer Deathadder Mouse 3500DPI 3.5G Mouse.
Unfortunately i am a starcraft 2 player and as everyone feel mac’s acceleration i’ve tried usb overdrive and even changing the acceleration curve on controllermate close to a windows curve even using help of razer driver mouses but i couldn’t get it right. Same problem as you.
My question is, can i make my razor mouse work with microsoft intelligentpoint driver? If yes can you help me? I don’t mind donating you some money if this really works out, so please help me.
Many THanks
Paulo Carvalho
Hi Paulo,
In my experience, even with the Intellipoint hack, Starcraft does not appear to use it and seems to have the same crappy mouse movement. I don’t know why this is but it’s bad enough that I almost never play Starcraft on the Mac anymore (as seldom as playing SC is these days) and will always use the PC. It’s an unfortunate situation and I hope one of these days, Apple gets its act together because the need to do these hacks is ridiculous.
I can’t get it to work with my Razer Deathadder or My logitech mouse. I’ve reprogrammed the code and checked carefully for mistakes or syntax error. I use mac OS X 10.6.3 and Intellipoint 7.1 and no luck. =(
I haven’t upgraded to Snow Leopard yet but hope to do so in the coming weeks (I’ve had the upgrade CD in my hands for a few months now). When I do upgrade, I’ll see if the same hacks work. Which Logitech mouse do you have?
Hi Man behind the mac
I bought the new MacBook Pro about 2 weeks ago, and cant stand the mouse acceleration either.
After i read about MS Intellipoint, I rushed out and bought a Microsoft Arc mouse.
I have now installed the Intellipoint 7.1 on snow leopard, but unfortunately I still feal the mouse acceleration – even on my microsoft mouse :S ..
Do you have any idea why this is :/ ?
I have a Microsoft Basic Optical Mouse and a Microsoft IntelliMouse Explorer 4.0. I have Intellipoint 7.1 installed. My Microsoft Basic Optical Mouse feels like it should (so this one works perfectly) but has a little low DPI (400) for StarCraft but when I try to use my Explorer (800 DPI) mouse it already feels like there is a little mouse curve again as well as the mouse seems to bug out on Mac OS X when moving rapidly, the mouse works fine under bootcamp…I have given up on the whole finding a new mouse thing and I will just stick to my Microsoft Basic Optical Mouse for now until Apple fixes this problem.
Would it be possible to get the file uploaded again? “patch_ms_driver.dmg”. Does it work with other mices other than Logitech?
I’ve tried IntelliPoint on both OS X 10.5 and 10.6 with Microsoft and Logitech mouses. In all cases I couldn’t feel any difference between Mac OS X default curve and IntelliPoint acceleration. In all cases, though, the mouse was definitely handled by the MS driver, because I could assign buttons and speed was changing when I moved the slider on “IntelliPoint pointer speed” scale.
By the way, the hack above did not work for me on 10.6 for my Logitech MX518 until I applied the following commands (after editing the plist):
sudo chmod -R 755 /System/Library/Extensions/MicrosoftMouse.kext
sudo chown -R root:wheel /System/Library/Extensions/MicrosoftMouse.kext
sudo touch /System/Library/Extensions/MicrosoftMouse.kext
sudo touch /System/Library/Extensions/
(After that — reboot).
But I’m not sure which of those commands actually helped.
I thought that possibly I was doing something wrong, so I bought a brand new Microsoft mouse. On the box it states that it is Mac compatible. IntelliPoint recognized it without a problem, but the feeling is pretty much the same.
I noticed the text which explains what is this IntelliPoint acceleration:
http://www.imagocentre.com/images/61/Wider-range-of-speeds_56.png
So basically the only difference to default Mac OS X acceleration is that it allows a wider range of values. You can achieve the same if you install MouseZoom or Mouse Acceleration Preference Pane (see: http://triq.net/mac/mouse-acceleration-preference-pane-mac-os-x)
So if you find it comfortable, then most likely you’ve got used to Mac OS X default acceleration.
I am trying to map raw mouse movements in mac os x to the corresponding pointer/cursor movement. I replicated the source code provided by IOHID drivers in IOHIPointing.cpp file (http://www.opensource.apple.com/source/IOHIDFamily/IOHIDFamily-315.0.1/IOHIDSystem/IOHIPointing.cpp). The only relevant functions here are “SetupAcceleration” and “ScaleAxes”. I am sure that the acceleration curves being generated are exactly as they must be. However, when I scale the input values in the “ScaleAxes” function to get the corresponding pointer movement I do not get the expected output – correct and exact – but not what is expected. I suspect that the raw mouse movements are not input to “ScaleAxes” as soon as an interrupt arrives. Rather, I believe that the raw input to “ScaleAxes” is a cumulative raw movement accumulated over a certain fixed period of time. I wish to confirm is such is the nature of the underlying drivers, i.e., to provide a cumulative raw movement? The domain of my questions thus lies in the driver layers underneath the IOHIPointing driver.
Ugh. I’ve been swamped and haven’t had a chance to even think about this. I recently installed Snow Leopard and haven’t bothered to try the driver fix yet but the crappy mouse acceleration is back so one thing is for certain…I haven’t “gotten used” to the native mouse movement. There is definitely something different under the MS driver that makes it act like Windows/Linux and every OS under the sun except OSX. My understanding is that with 10.6, apple changed, again, the underlying API for cursor movement so some of the programs that used to work no longer do.
magnum_pi, unfortunately, you’re already digging quite a bit deeper than me and I have no insight into answering your question. I’ve considered whether or not it would be worthwhile *trying* to write a new mouse driver but given that programs such as USB Overdrive have tried and, IMO, failed, I suspect this is a lot hard to do than it would appear.
Since 2007 and my first iMac, I unsuccessfully looked for a method to resolve this mouse issue. I tried different mouses, different OS ( 10.4, 10.5 and 10.6 ), different hardwares ( iMac 20, Macbook unibody, Imac 27 ), different softwares ( steerMouse, USB Overdrive, ControllerMate ) but no way !
I use my Macbook every day at work, and I feel very uncomfortable: I can’t move my wrist anymore in the evening. The best walkaround for me, is using a Microsoft Standard USB Mouse with ControllerMate and a custom acceleration curve ( like in Microsoft XP ). But even that, is not good enough.
As far I am concerned, I think that there is 2 issues. The first one concerns the bad acceleration curves of OSX, and the second one the bad USB polling rate. For example, I tried to make drawing curves with the same mouse on Paint on XP, and Paintbrush on Snow Leopard ( It is nearly the same softwares ). On XP, when you move the mouse rapidly, the drawing remains smooth. On the opposite, on snow Leopard, when you move the mouse rapidly, the curve is made with segments…