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.


Comments
Posted by: David R §

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?

2009-11-06 @ 16:38:03
Posted by: John McKerrell §

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)

2009-11-06 @ 19:08:13
URL: http://johnmckerrell.com/
Posted by: Benjamin §

Was this compiled for 10.6 only? Any chance a 32-bit version might be forthcoming?

2009-11-06 @ 20:25:02
Posted by: §

Benjamin: Yes it was, I'll see if I can't get the source released.

2009-11-06 @ 20:34:48
Posted by: Johan §

Here you go: 10.5 compatible universal binary

2009-11-07 @ 16:44:18
URL: http://blä.se/FingerMgmtUB.zip
Posted by: Richard Earney §

11 a Spinal Tap homage?`

2009-11-09 @ 18:17:16
URL: http://methodphoto.com
Posted by: Sergio Salvatore §

Fortunately, the new Unibody MacBook Pros aren't required as this works with mine which is the generation before... Really cool...

2009-11-09 @ 18:25:36
Posted by: Alden §

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.

2009-11-09 @ 18:31:11
Posted by: elldove §

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

2009-11-09 @ 18:36:35
Posted by: elldove §

It would be great if FingerMgmt let you export a view as a vector format... pdf, svg, or ai

2009-11-09 @ 18:37:35
Posted by: Johan B §

Cool, reminds me of how children play to create objects with a rubberband using their hands.

2009-11-09 @ 18:46:11
Posted by: Russell Borogove §

Any chance of getting the source to this? Would love to turn it into a noisemaker of some sort.

2009-11-09 @ 18:48:59
Posted by: Adrien §

Alden, you shoud check out MiddleClick :
http://clement.beffa.org/labs/projects/middleclick/

2009-11-09 @ 19:07:20
Posted by: uhuznaa §

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.

2009-11-09 @ 19:16:43
Posted by: hl2run §

A-MAZING !! Thanks

2009-11-09 @ 19:38:05
Posted by: Hunter §

I second the request for see the source code. This looks really interesting... Thank you very much Johan. =)

2009-11-09 @ 19:50:18
Posted by: leon grant bussinger §

Works on my early 2008 macbook pro, awesome app.
Thanks for the visualization!

2009-11-09 @ 20:09:23
URL: http://www.originallgb.com
Posted by: Sounch §

Very nice. Does anybody know whether the iPhone sensor also knows the contact surface areas of each finger?

2009-11-09 @ 20:17:54
Posted by: peter §

if you like that, you might want to check out this: http://www.apple.com/downloads/macosx/icons_screensavers/aurorascreensaver.html

2009-11-09 @ 20:22:43
Posted by: Ted Brown §

When it detects 11 points, does it say "You killed my father! Prepare to die!"?

2009-11-09 @ 20:29:33
Posted by: Peter §

amazing! & works on my march '08 MBP. had no idea the trackpad was that capable.

2009-11-09 @ 20:48:15
URL: http://twitter.com/steinber
Posted by: will §

Saunch, no. On the iphone you only get points.

2009-11-09 @ 21:06:36
Posted by: Dan Villiom Podlaski Christiansen §

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

2009-11-09 @ 21:59:07
URL: http://blog.villiom.dk
Posted by: Amir Levy §

It's working on my Magic Mouse as well! (only three points through)

2009-11-09 @ 21:59:24
Posted by: Hezi Cohen §

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

2009-11-09 @ 22:05:02
URL: http://hezicohen.com
Posted by: maradatscha §

As expected: doesnt work on a first generation macbook.
It doesnt even show one or two touches.

2009-11-09 @ 22:05:21
Posted by: Davey §

Source code would be awesome! :-)

2009-11-09 @ 22:16:36
Posted by: Joseph Hinvest §

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.

2009-11-09 @ 22:29:12
Posted by: Jonathan Holbert §

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!

2009-11-09 @ 22:32:31
URL: http://infodriveway.net
Posted by: sean §

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.

2009-11-09 @ 23:01:23
Posted by: Justin §

It also works with the new Magic Mouse!

2009-11-09 @ 23:24:14
Posted by: MJMJ §

Works on late '08 MB Air

2009-11-09 @ 23:26:06
Posted by: George Johnson §

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?

2009-11-10 @ 00:17:39
URL: http://www.geojohn.net
Posted by: Ludvig Ericson §

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

2009-11-10 @ 00:58:11
URL: http://lericson.blogg.se/code/
Posted by: Dannyz §

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.

2009-11-10 @ 05:52:59
Posted by: §

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?

2009-11-10 @ 07:58:20
Posted by: micah §

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)

2009-11-10 @ 12:37:51
Posted by: Miguel §

How can we contact with the author?

2009-11-10 @ 13:09:00
Posted by: lkern §

I can get only 5 to map on the Magic Mouse, but still.

2009-11-10 @ 14:41:04
Posted by: marc hoffman §

@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...

2009-11-10 @ 16:17:28
URL: http://twitter.com/dwarfland
Posted by: Antonio §

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 :(

2009-11-10 @ 17:10:03
Posted by: natevw §

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.

2009-11-10 @ 21:07:57
URL: http://extinguishedscholar.com/wpglob/
Posted by: numist §

crashed for me after a little bit of strenuous use as well :/

2009-11-11 @ 01:59:42
Posted by: pzich §

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.

2009-11-12 @ 07:19:45
Posted by: Steve Mokris §

We just published a Quartz Composer patch using this Multitouch API: http://kineme.net/release/MultitouchPatch/1.0

2009-11-16 @ 18:29:57
URL: http://kineme.net
Posted by: James §

Any chance the trackpad could be used as a low weight scale using pressure sensitivity?

2009-11-23 @ 04:52:08
Posted by: Matt §

Doesn't work on my Aug. '08 MacBook. Doesn't even register one point, for some reason.

2009-11-27 @ 03:08:41
Posted by: Levi Starks §

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.

2009-12-02 @ 17:29:40
URL: http://photolt evi.zenfolio.com
Posted by: Z §

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...

2009-12-27 @ 03:53:12
Posted by: Sebastian §

I would love to see some source code too!
Why didn't the author answered the requests?

2009-12-29 @ 20:34:34
URL: http://daver.at
Posted by: Ludvig Ericson §

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

2009-12-30 @ 10:51:36
URL: http://lericson.blogg.se/code/
Posted by: Jared Kanter §

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!

2009-12-30 @ 18:44:31
URL: http://nymag.com
Posted by: Greg §

11 touch points 'eh? Sounds like they intended this thing for some yet unseen touch porn applications.

2010-01-04 @ 19:52:33
Posted by: Simon §

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!

2010-01-19 @ 16:03:01
Posted by: Chris §

Holy cow that app was amazing.

2010-03-09 @ 14:13:49
URL: http://noodlescape.com
Posted by: soeren §

Any chance you might show me how the programming is done? Source Code examples? It seems I´m too stupid to get any touchpad event handlers to be called apart from gesture events...
Cheers
Sören

2010-06-29 @ 13:08:12
Posted by: §

hi there

2011-04-12 @ 16:39:46
Posted by: Schiphol §

@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.

Posted by: mmx §

Is there any way to get the sources of this great work ? How did you get the absolute coordinates ???

2011-10-25 @ 18:28:43

Comment the entry:

Name: (required, possibly pseudonym)
Remember me (cookie)

E-mail: (not required, never published, solely for me to reply to you in person)

URL:

Comment:

RSS 2.0