Multitouch on Unibody MacBooks
A little known fact about the unibody touchpad is that it can distinguish between up to eleven touch points - i.e., fingers.
Another little known fact is that the sensor knows about the contact surface area (in terms of ellipsoids).
Another yet less known fact is that Johan Nordberg didn't sleep much last night, and wrote a neat OS X application which simply plots what the trackpad (or Magic Mouse!) is saying about touches.
Download blä.se/FingerMgmtUB.zip to try it out.
Update: Apparently works on older MacBooks as well! Give it a shot, it might be your lucky day.

Fantastic!
Any ideas about why ELEVEN? Probably an accidental artifact but what if it were on purpose? An accessibility enhancement for those differently-abled folks with an extra finger? planning ahead for those games you play with two-hands-plus-tip-of-nose?
Nice app, I just used it to confirm that there's nothing wrong with my multi-touch trackpad even though the three finger and four finger swiping has stopped working! (Yes I've checked the preferences)
Was this compiled for 10.6 only? Any chance a 32-bit version might be forthcoming?
Benjamin: Yes it was, I'll see if I can't get the source released.
Here you go: 10.5 compatible universal binary
11 a Spinal Tap homage?`
Fortunately, the new Unibody MacBook Pros aren't required as this works with mine which is the generation before... Really cool...
Spiffy! Very nice.
Is it technically feasible (since you know the API) to hack this into something that allows mouse button mapping (third button->three touch, etc)?
Thanks.
Yea. With everyone crowing about how Windows 7 is multitouch, OS X has been multitouch for years. The great utility Multiclutch does some great things with mapping the baseline multitouch actions to keyboard shortcuts.
http://tr.im/ECkz
It would be great if FingerMgmt let you export a view as a vector format... pdf, svg, or ai
Cool, reminds me of how children play to create objects with a rubberband using their hands.
Any chance of getting the source to this? Would love to turn it into a noisemaker of some sort.
Alden, you shoud check out MiddleClick :
http://clement.beffa.org/labs/projects/middleclick/
This is interesting... The amount of information the trackpad can process is impressing. This should be enough to allow for some tapping rhythm of several fingers to replace a login password or such.
Even laying your hand flat on the trackpad with the fingers close together should give a unique pattern for a given hand. Just laying your hand on the trackpad to unlock the Macbook would make a great feature. Not as secure as a good password maybe, but good enough for home use.
A-MAZING !! Thanks
I second the request for see the source code. This looks really interesting... Thank you very much Johan. =)
Works on my early 2008 macbook pro, awesome app.
Thanks for the visualization!
Very nice. Does anybody know whether the iPhone sensor also knows the contact surface areas of each finger?
if you like that, you might want to check out this: http://www.apple.com/downloads/macosx/icons_screensavers/aurorascreensaver.html
When it detects 11 points, does it say "You killed my father! Prepare to die!"?
amazing! & works on my march '08 MBP. had no idea the trackpad was that capable.
Saunch, no. On the iphone you only get points.
Nice little application! There's a bug, though:
Exception Type: EXCBADACCESS (SIGSEGV)
Exception Codes: KERNINVALIDADDRESS at 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 com.apple.CoreFoundation 0x00007fff88a15fb2 _CFArrayCheckAndGetValueAtIndex + 66
1 com.apple.Foundation 0x00007fff87c67c2b -[NSCFArray objectAtIndex:] + 41
2 com.yourcompany.FingerMgmt 0x00000001000012e3 -[TouchView drawRect:] + 516
3 com.apple.AppKit 0x00007fff805d538a -[NSView _drawRect:clip:] + 3390
4 com.apple.AppKit 0x00007fff805d3ffd -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1325
5 com.apple.AppKit 0x00007fff805d4367 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2199
6 com.apple.AppKit 0x00007fff805d26cf -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 767
7 com.apple.AppKit 0x00007fff805d359b -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
8 com.apple.AppKit 0x00007fff805d21f3 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 254
9 com.apple.AppKit 0x00007fff805cea97 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 2683
10 com.apple.AppKit 0x00007fff80548237 -[NSView displayIfNeeded] + 969
11 com.apple.AppKit 0x00007fff805430e3 _handleWindowNeedsDisplay + 678
12 com.apple.Foundation 0x00007fff87cc7aa9 __NSFireTimer + 114
13 com.apple.CoreFoundation 0x00007fff88a0da78 __CFRunLoopRun + 5480
14 com.apple.CoreFoundation 0x00007fff88a0c03f CFRunLoopRunSpecific + 575
15 com.apple.HIToolbox 0x00007fff822cdc4e RunCurrentEventLoopInMode + 333
16 com.apple.HIToolbox 0x00007fff822cda53 ReceiveNextEventCommon + 310
17 com.apple.HIToolbox 0x00007fff822cd90c BlockUntilNextEventMatchingListInMode + 59
18 com.apple.AppKit 0x00007fff80518520 _DPSNextEvent + 718
19 com.apple.AppKit 0x00007fff80517e89 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155
20 com.apple.AppKit 0x00007fff804dda7d -[NSApplication run] + 395
21 com.apple.AppKit 0x00007fff804d6798 NSApplicationMain + 364
22 com.yourcompany.FingerMgmt 0x0000000100000dae main + 76
23 com.yourcompany.FingerMgmt 0x0000000100000d40 start + 52
It's working on my Magic Mouse as well! (only three points through)
i wonder if theres a way to detect if the touches come from a magic mouse, i would love to have a 3 finger expose gesture
As expected: doesnt work on a first generation macbook.
It doesnt even show one or two touches.
Source code would be awesome! :-)
This is fantastic! It works on my iMac, with new Magic Mouse.
It appears my Magic Mouse can detect 5!! independent fingers. Hopefully a Magic Mouse pinch and reverse pinch update is in the pipeline, that would be much much more useful than the crazy screen zoom.
Cheers,
Joseph.
Magic Mouse owner here…
I got five points of contact to register, but I couldn’t get more that that. It’s a bit tricky — but possible. Just play around a bit.
Thanks for this concept demo!
It works on the MBA (mac book air) too!
All 10?? Im not really sure how to test 11 :)
See, if i put my nose on the touch pad.... Then i cant see the screen...
And beyond my nose... I'm not a contortionist... or a pervert :)
But anyway... I wish that apple would add gesture management... like hotkey recognition...
If I could even do swipe in 4 directions with 1-4 fingers, and pinch in 2 directions with 1-2 fingers; that would be really useful for customization.
It also works with the new Magic Mouse!
Works on late '08 MB Air
I'd love to see the source code for this. It would be extremely useful for an experimental interface project I'd like to do for school. Please?
In response to all those who requested the source-code, I'm going to have to disappoint you -- I don't have it, so you'd be better off asking the author about it.
I can tip you off though, an image: http://bsg.lericson.se/jing/b1ce8c2f9b.png
It's awesome!
But what would be really great is a drawing application where you could draw using absolute positioning rather than relative.
In other words, drawing like how a pen tablet works rather than a mouse. This tech demo shows it's very possible, and even to have pressure sensitivity based on how large the pad of your finger is.
OMG i would love a drawing app.
This app proves to me that the Magic Mouse could be capable of understanding a right click even when both fingers are touching the surface of the mouse. Clearly software can figure out which finger is pressing due to the change in size and shape.
Any chance this app can morph into a supped up Magic Mouse driver with more features?
Wow, this really is a magic mouse! It can sense my finger hovering very close to the surface without touching it (it's interesting that it doesn't register that gesture for scrolling though)
How can we contact with the author?
I can get only 5 to map on the Magic Mouse, but still.
@av: my guess is the mouse can't distinguish where you CLICK, because it (i assume) only has a single physical button. iow, if it sees a touch on the left AND the right, and registers a click, it can't be sure which of the touches did the clicking.
only if ONLY the right side registers a touch, can it be sure that it as CLICKED on the right side...
got Magic Mouse today, less than 24 hours since ordered, now I'm teaching it to play Cat's Cradle... anybody up for a tournament? :D
BTW, too bad, but FingerMgmt crashed when I tried to do Cat's Cradle with one hand on the Magic Mouse and the other on my new MacBookPro :(
For those waiting for source, check out this guy's sample code: http://steike.com/code/multitouch/
I'm guessing this demo uses the same private API.
crashed for me after a little bit of strenuous use as well :/
This application does use the same Multitouch Support framework that http://steike.com/code/multitouch/ uses. The code from the link even offers dimensions and rotations for an ellipse.
The magic mouse has a lower touch sensor resolution than the MBP trackpads so they support fewer touch points.
It would be possible to have the magic mouse right click with both fingers are down like the previous mouse, but Apple decided that was a bad idea. The reason they can't use different size touches to differentiate left and right click is because fingers are different sizes and the forces on each register differently.
We just published a Quartz Composer patch using this Multitouch API: http://kineme.net/release/MultitouchPatch/1.0
Any chance the trackpad could be used as a low weight scale using pressure sensitivity?
Doesn't work on my Aug. '08 MacBook. Doesn't even register one point, for some reason.
That really is great. I've owned my new MacBook for less than a week and I'm really impressed. I was linked to you site by someone on DPReview where I was involved in a discussion defending my use of the tracpad for image editing in photoshop vs. a "real' graphics tablet.
Just like to say that this thing is fantastic, and I'm taking it in to a genius bar tomorrow to prove my trackpad is broken (you can see the duff signals on FingerMgmt).
As an idle aside, it'd be cool to see the patterns in something other than the window - would probably make a nice desktop background, like moving constellations...
I would love to see some source code too!
Why didn't the author answered the requests?
Sebastian, I've rewritten his code in Python and given the code out: http://lericson.blogg.se/code/2009/november/macbook-multitouch-in-python.html
You guys should really check out: http://blog.boastr.net/
He even implemented this tool(w/ permission of developer) into his app. AMAZING and is exactly what EVERYONE here is looking for.
Enjoy!
11 touch points 'eh? Sounds like they intended this thing for some yet unseen touch porn applications.
Nice app.
Have a look at this App:
http://www.apple.com/downloads/macosx/imaging_3d/inklet.html
You can use the trackpad to draw in photoshop!
