Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Mac OS X pointing acceleration curve



Hi,

I'm interested in comparing the Mac OS X and Windows XP mouse acceleration curves. The Windows XP acceleration curve is well documented (http://www.microsoft.com/whdc/device/input/pointer-bal.mspx) whereas it's very difficult to find any information on the Mac OS X one. Looks like Microsoft copied the Mac OS X curve in some way.

I've found some code from the Darwin project that handles the mouse:
http://darwinsource.opendarwin.org/10.3/IOHIDFamily-86/IOHIDSystem/IOHIPointing.cpp

I'm not familiar with Darwin so I would to know:
1°) Is that code used to handle the mouse on Mac OS X?
2°) Where is stored the pointing acceleration curve and what are the coordinates of the points used?

For question 2, I've found three device key entries using a developer utility on Mac OS X to dump the device tree info.
Here is one of those:

            CFBundleIdentifier = "com.apple.driver.AppleUSBOpticalMouse"; 
            HIDDefaultBehavior = Mouse; 
            HIDPointerAccelerationTable = <00008000 5553422a 00070000 00000001 00010000 00010000 00002000 00100000 713b0000 4ce30004 4ec5000d 37040005 44000014 80000007 2c000023 e0000009 00000034 b000000a d8000045 f000000d 08000057 9000000f 60000069 00000012 1000007a 80000015 00000089 00000017 c0000091 0000001a c0000096 b000001d 90000099 b0000020 a000009b 30000023 f000009c 30000027 b000009c 30000000 80000012 0000713b 0000567f 00044a00 000ea000 00063a00 001f4000 00072800 00290000 0008d800 003c6000 0009b800 00474000 000ab000 00533000 000bc000 00603000 000cc000 006c2000 000ee000 00842000 00116000 009d2000 00140000 00b40000 0016c000 00c70000 0019a000 00d40000 001ce000 00db0000 00208000 00e00000 00244000 00e30000 0027a000 00e30000 0000b000 00140000 713b0000 614e0004 4a00000f 60000005 32000017 60000006 32000020 a0000007 2c00002c 20000008 08000037 a0000008 e4000043 40000009 c0000050 8000000a a000005f 2200000b 9000006d 7000000c 7000007b 0000000e 80000098 a0000010 c00000b6 0000001
3 400000d2 00000016 600000e9 0000001a 200000fa 0000001d a0000103 00000021 20000107 00000024 8000010a 00000027 a000010c 00000000 e0000011 0000713b 00006d77 00041a00 0011f000 00051a00 001bf000 0005f000 00266000 0006fc00 00340000 00084c00 004fe000 00096c00 006de000 000a7800 008dc000 000bb000 00b64000 000d5000 00d98000 00110000 00f78000 0015c000 01110000 00196000 01200000 001d4000 01280000 00210000 012e0000 00248000 01320000 00278000 01350000 00005000 00120000 713b0000 4bb00004 4c00000e 00000005 40000015 50000007 24000026 20000008 b4000035 c000000a 90000049 8000000b e8000056 8000000d 20000062 0000000e 1800006a d000000f 18000074 00000011 90000087 80000014 5000009a 00000017 600000a9 8000001a 600000b4 0000001d 500000b9 00000020 d00000bc 80000024 200000bd 80000027 b00000be 80000001 00000010 0000713b 0000567f 0003b800 0012a000 00052000 00254000 00060800 00378000 0006f000 005f0000 0007f000 008a0000 00092800 00cb2000 000af000 00f78000 000d2000 011c8000 00100000 01380000 00144000 014a000
0 00190000 01530000 001cd000 01570000 0020e000 015b8000 00242000 015d8000 0027a000 015e0000 00527000 000994d1 00593000 000a1269 005ff000 000a9000 0066b000 0000e000 001c0001 18550001 30000001 b2280002 f0000002 53690006 a0000003 6f4a0010 d0000003 ad780014 58000003 eba50017 e0000004 29d3001b 68000004 6800001e f0000004 a2010022 98000004 d9560026 20000005 14ab0029 68000005 5000002c b0000005 80010031 c8000005 b5560036 40000005 eaab003a b8000006 2000003f 30000006 62000043 dc000006 9eab0048 78000006 db56004d 14000007 18000051 b0000007 7a010056 dc000007 d956005b f8000008 38ab0061 14000008 98000066 30000009 1601006c 00000009 91560071 d000000a 0cab0077 a000000a 8800007d 70000001 00000013 00011855 00013000 0001b228 00031000 00025369 00071000 00032f4a 00118000 0003acfb 001c8800 00043aab 0028e000 00048156 00308800 0004c800 00383000 00050d56 00409800 00055000 0048f000 0005c6ab 0052b000 00063800 005c7000 0006f156 0067c000 00074cab 006d5800 0007a800 0072f000 00084c00 00790400 0008f000 007f180
0 00099400 00852c00 000a3800 008b4000 >; 
            IOClass = AppleUSBOpticalMouse; 
            IOProviderClass = IOUSBInterface; 
            IOUserClientClass = IOUSBHIDDriverUserClient; 
            SwitchTo2000FPS = 1; 
            bConfigurationValue = 1; 
            bInterfaceNumber = 0; 
            idProduct = 775; 
            idVendor = 1452; 

Look like the curve is stored in the HIDPointerAccelerationTable. To try to understand that, I divided all the value by 2^16 and among a lot of mysterous values, I found 3 set of points that look like to correspond to acceleration curves (values from 41 to 77, 120 to 154 and 193 to 225). When I plot the curves, the X axis seems to correspond to the mouse speed in inch/s (it goes up to 40 inch/s, which is the maximum speed of the mouse). For the Y axis, I have no idea to what it corresponds. Also, why is there three curves and how are they used?
 
Any help to understand how the pointing acceleration is done on Mac OS X would be very much appreciated.

Thank you in advance.

Géry
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-drivers mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-drivers/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.