Mac OS X on x86 Hardware 2008–2024 Technical Archive
InfiniteMac OSx86 › OSx86 Core & 10.X › Microsoft Mouse driver for non-MS mice
40,774 reads · 2009-06-03 – 2012-07-28
Dossier 10.X Core

Microsoft Mouse driver for non-MS mice

I was looking for more windows/linux like mouse movement under OSX and the closest solution i came up with was Microsoft Intelli mouse(explorer) with Microsoft IntelliPoint driver. I have Logitech MX400 Laser mouse and Logitech VX nano…

Primary Author
@milanca Published 2009-06-03
Collection
OSx86 Core & 10.X
Archival Footprint
40,774 historical reads · 5 curated field notes (from 8 dispatches) · 2009-06-03 – 2012-07-28
Credited Voices (6)
@milanca (2)@NghiaDev (2)@elk@broker220981@Symbiosis@Andru

I was looking for more windows/linux like mouse movement under OSX and the closest solution i came up with was Microsoft Intelli mouse(explorer) with Microsoft IntelliPoint driver. I have Logitech MX400 Laser mouse and Logitech VX nano cordless. Logitech software allows me to map the buttons but the acceleration curve is still in OSX fashion. IntelliPoint driver completely replaces it with its own acceleration curve and the mouse movement is more in Windows-like manner.

Searching the net i found this post explaining how to use MS driver (IntelliPoint software can be downloaded from MS site) with non-MS mice.

http://groups.google.com/group/alphagrip/browse_thread/… ↗

I have tested it with VX nano cordless mouse and A4Tech X7 mouse. I started to love my Hack again. Here is also a quick howto, with some more details, based on the original link, if you would like to use this driver for your mouse.

Open SystemProfiler, navigate to USB section:

My A4Tech mouse has product id: 0x000e and vendor id:0x09da. You can use osx calculator (apple+3 to switch) to convert hex to dec values. Converted product id is 14 and vendor id is 2522.

Install Microsoft IntelliPoint software (can be downloaded from MS site) and after restart navigate to:

/System/Library/Extensions/MicrosoftMouse.kext/Contents/Plugins/MicrosoftMouseUSB.kext/

If you open Package Contents you'll have Info.plist here which you can edit with PlistEditor, TextMate, etc.

Add this section before first <key>:

		<key>A4Tech</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>14</integer> 
                        <key>idVendor</key> 
                        <integer>2522</integer>
			<key>bInterfaceClass</key> 
			<integer>3</integer> 
			<key>bInterfaceProtocol</key> 
			<integer>2</integer> 
			<key>bInterfaceSubClass</key> 
			<integer>1</integer>
                </dict>

Change key name and Product/Vendor ids with your converted values. If you use TextMate you can save the file at this point.
Launch terminal and become 'su' so we can fix permissions/ownership/extensions cache

sudo -s
cd /System/Library/Extensions
chmod -R 755 MicrosoftMouse.kext
chown -R root:wheel MicrosoftMouse.kext
cd ..
rm -rf Extensions.*
kextcache -k Extensions/
reboot

After restarting you can use this driver. In system preferences->microsoft mouse->pointer speed you can switch from OSX mouse tracking to IntelliPoint pointer speed and adjust it to your needs. Check if the driver is properly loaded by clicking on mouse pointer icon (top right corner next to the '?' icon). Under Mouse Info you should have something like this:

Author Updates & Technical Revisions

Follow-up dispatches by @milanca

Author Update #1 @milanca 2009-12-16

@NghiaDev, thanks.

@broker220981, yes i guess you're right, mac os x native driver is still active in a way and MS driver is recalculating the movement in its way. Far from perfect solution but a bit better, or at least it seems to me.

What i wanted, and actually tried, is to re-compile IOHIDFamily back in 10.5.x. Mouse movement and accel. curve is there and the code is very old; I compared it with tiger's kext (part with mouse movement and acc.) and its the same one. I wanted to disable acceleration at all but the kext is missing zillion files to compile properly. So i gave up setting up its build environment. When i have some more free time i will try to set it up in Snow Leopard and try to patch it again. Just hope i won't give up that soon.

Synthesized Community Field Notes

5 technical responses curated from 8 original dispatches

Field Note #1 @elk 2009-06-03

Nice Idea and a very good tutorial.
But I have a question: Could I use this for trackpads (in my case a synaptic) too? I love OSX, but the cursor-acceleration is crap

Best regards,
elk

Field Note #2 @broker220981 2009-09-25

Still not the same

Tried that, still not the same.
Driver recognized my mouse, but it still feels wrong - like if mac driver is actually active, but Microsoft one sits on top of it and tries recalculate the movement.
I have windows machine on the same table with exact the same mouse. The difference feels especially when doing lots of short fast movements (shaking).

Field Note #3 @NghiaDev 2009-12-16

Well done! Really good guide!
I followed the instructions and everything works fine.
In my opinion the mouse and font rendering from Microsoft Windows are better than Mac OS X's way.
It's really difficult to control the mouse that doesn't move at the same speed ( Mac OS X )
Snow does not offer this option for users ( bad )

Field Note #4 @Symbiosis 2011-09-15

I have a MacBookPro with 10.7 Lion and Logitech mouse. Made all by tutorial, it is very simple... But Intellimouse does not recognise my mouse. Show: No microsoft mouse was found. Why it happens ? Please, Help me ! (((

Field Note #5 @Andru 2011-09-16 ↳ Re: @Symbiosis
@SymbiosisBut Intellimouse does not recognise my mouse. Show: No microsoft mouse was found. Why it happens ? Please, Help me ! (((

Hi, Symbiosis. New versions of Microsoft drivers need to be a binary patch.
Navigate to MicrosoftMouse.kext/Contents/MacOS and open MicrosoftMouse file in any Hex Editor. Find the line 077D and replace it on your Product ID. Save and exit from the Hex Editor. Then go to MicrosoftMouse.kext/Contents/Plugins/MicrosoftMouseUSB.kext/Contents and open Info.plist. Find there <key>M077D</key> and change Product/Vendor IDs below.
Good luck.

Corroborated & Participated: @NghiaDev
Sources & Contributor Provenance (6 credited usernames · Thread #3054)
UsernameDossier ContributionDispatchesActive Window
@milancaPrimary Author22009-06-03 → 2009-12-16
@NghiaDevContributor22009-12-16 → 2012-07-28
@elkContributor12009-06-03
@broker220981Contributor12009-09-25
@SymbiosisContributor12011-09-15
@AndruContributor12011-09-16