Multiclutch X64 SIMBL Plugin

Getting multiclutch working with Safari running in 64 bit mode.

I am a huge fan of Multiclutch, and I have been running Safari in 32 bit mode exclusively just so that I could keep using my multitouch gestures. It makes Safari so much more productive for me.

Anyway, I really wanted to get it working under 64 bit, and the source was open! And, it seems that SIMBL now works in 64 bit! So I decided to port over the Multiclutch code which was available on GitHub to work in SIMBL. This was a very rough port as I don’t code in OSX at all, and I just wanted to get it working!

What I modified:

  • Added MulticlutchPlugin.[hm] to replace the NSApplication_GESTURES, that implements the SIMBL required load
  • Modified Info.Plist to allow SIMBL to load it

Again, it’s very rough, and the developer should clean it up before releasing it. At the moment, it only loads on Safari.

A binary (Intel x64 only) for those who want to test it:
Multiclutch SIMBL Bundle

The bundle has to be copied to ~/Library/Application Support/SIMBL/Plugins as per any other SIMBL plugin.

12 thoughts on “Multiclutch X64 SIMBL Plugin”

  1. hi, installed SIMBL but i still can’t find the ~/Library/Application Support/SIMBL/Plugins directory anywhere. is it hidden? should i make it myself? have uninstalled and reinstalled SIMBL 0.9c three times already

  2. This is amazing… Fantastic job! One problem, however, is that the AirKeysInputManager.bundle causes Firefox to crash following any trackpad gestures (except single-finger mouse positioning and clicking). Do you think this has an easy fix?

  3. Ah I was able to reproduce it for a few gestures. Can you try creating a shortcut in the prefpane for all gestures.

    The problem seems to be that some gestures aren’t being handled by multiclutch, and so they are sent to Firefox, which doesn’t expect it and crashes. So if Multiclutch handles all the gestures, it should work fine in FF.

    I am not yet sure how to fix it properly for future though.

  4. Hi Prashant,

    I can’t believe you got onto this so fast — great. I tried the new .bundle (did I get the right link? http://blog.prashantv.com/files/multiclutch/AirKeysInputManager.bundle.zip).

    It seems not to have fixed the problem on my machine. I’m afraid that’s not very helpful feedback…

    But your idea of assigning all the gestures in the prefpane for Firefox does work, in principle. So assigning three finger swipes stops them crashing Firefox (and they do implement the assigned shortcut). The problem for me is that two-fingered scrolling also crashes Firefox, and there is no option to assign shortcuts to this gesture in the Multiclutch prefpane.

    Thanks for all the time you’ve already spent on this. I should try learning something about all this instead of just complaining… If you would like any other info, let me know….

    Thanks again….

  5. Hi Prashant.

    Here’s what was written to the console when Firefox crashed (after a two-fingered scroll).

    Sunday, 27 September 2009 13:33:48 Europe/London
    Sep 27 13:34:05 Josh-Nunns-MacBook-Air SIMBL Agent[232]: received {n NSApplicationBundleIdentifier = “org.mozilla.firefox”;n NSApplicationName = Firefox;n NSApplicationPath = “/Applications/Firefox.app”;n NSApplicationProcessIdentifier = 643;n NSApplicationProcessSerialNumberHigh = 0;n NSApplicationProcessSerialNumberLow = 364633;n NSWorkspaceApplicationKey = ;n}
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: Performance: Please update this scripting addition to supply a value for ThreadSafe for each event handler: “/Library/ScriptingAdditions/SIMBL.osax”
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: InjectEventHandler
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: MulticlutchPlugin installed
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: Loading Stoplight…
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: Swapping: __stoplight_zoom:
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: Swapping: __stoplight_close
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air firefox-bin[643]: Can’t open input server /Library/InputManagers/MultiClutchInputManager.bundle
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: objc[643]: Class GestureShortcutsController is implemented in both /Users/josh/Library/Application Support/SIMBL/Plugins/AirKeysInputManager.bundle/Contents/MacOS/AirKeysInputManager and /Library/InputManagers/MultiClutchInputManager/MultiClutchInputManager.bundle/Contents/MacOS/MultiClutchInputManager. One of the two will be used. Which one is undefined.
    Sep 27 13:34:06 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: objc[643]: Class ExtendedGesturePoint is implemented in both /Users/josh/Library/Application Support/SIMBL/Plugins/AirKeysInputManager.bundle/Contents/MacOS/AirKeysInputManager and /Library/InputManagers/MultiClutchInputManager/MultiClutchInputManager.bundle/Contents/MacOS/MultiClutchInputManager. One of the two will be used. Which one is undefined.
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: Can’t open input server /Library/InputManagers/MultiClutchInputManager.bundle
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: 2009-09-27 13:34:15.517 crashreporter[647:903] Can’t open input server /Library/InputManagers/MultiClutchInputManager.bundle
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air SIMBL Agent[232]: received {n NSApplicationBundleIdentifier = “org.mozilla.crashreporter”;n NSApplicationName = “Crash Reporter”;n NSApplicationPath = “/Applications/Firefox.app/Contents/MacOS/crashreporter.app”;n NSApplicationProcessIdentifier = 647;n NSApplicationProcessSerialNumberHigh = 0;n NSApplicationProcessSerialNumberLow = 368730;n NSWorkspaceApplicationKey = ;n}
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air SIMBL Agent[232]: warning: failed to get scripting definition from /Applications/Firefox.app/Contents/MacOS/crashreporter.app; it may not be scriptable.
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: Performance: Please update this scripting addition to supply a value for ThreadSafe for each event handler: “/Library/ScriptingAdditions/SIMBL.osax”
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: InjectEventHandler
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: 2009-09-27 13:34:15.564 crashreporter[647:903] InjectEventHandler
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: objc[647]: Class GestureShortcutsController is implemented in both /Library/InputManagers/MultiClutchInputManager/MultiClutchInputManager.bundle/Contents/MacOS/MultiClutchInputManager and /Users/josh/Library/Application Support/SIMBL/Plugins/AirKeysInputManager.bundle/Contents/MacOS/AirKeysInputManager. One of the two will be used. Which one is undefined.
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: objc[647]: Class ExtendedGesturePoint is implemented in both /Library/InputManagers/MultiClutchInputManager/MultiClutchInputManager.bundle/Contents/MacOS/MultiClutchInputManager and /Users/josh/Library/Application Support/SIMBL/Plugins/AirKeysInputManager.bundle/Contents/MacOS/AirKeysInputManager. One of the two will be used. Which one is undefined.
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: MulticlutchPlugin installed
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: 2009-09-27 13:34:15.566 crashreporter[647:903] MulticlutchPlugin installed
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: Loading Stoplight…
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: Swapping: __stoplight_zoom:
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air crashreporter[647]: Swapping: __stoplight_close
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: 2009-09-27 13:34:15.571 crashreporter[647:903] Loading Stoplight…
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: 2009-09-27 13:34:15.572 crashreporter[647:903] Swapping: __stoplight_zoom:
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air [0x0-0x59059].org.mozilla.firefox[643]: 2009-09-27 13:34:15.572 crashreporter[647:903] Swapping: __stoplight_close
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air com.apple.launchd.peruser.501[188] ([0x0-0x59059].org.mozilla.firefox[643]): Job appears to have crashed: Bus error
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air ReportCrash[648]: Saved crash report for firefox-bin[643] version 3.5.3 (3.5.3) to /Users/josh/Library/Logs/DiagnosticReports/firefox-bin_2009-09-27-133415_Josh-Nunns-MacBook-Air.crash
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air UserNotificationCenter[649]: Can’t open input server /Library/InputManagers/MultiClutchInputManager.bundle
    Sep 27 13:34:15 Josh-Nunns-MacBook-Air pbs[650]: Malformed Services entries in Info.plist for Service at URL /Applications/TeX/LaTeXiT.appn The value for key NSTimeOut was supposed to be of type NSString, but instead it was of type NSNumbern The value for key NSTimeOut was supposed to be of type NSString, but instead it was of type NSNumbern The value for key NSTimeOut was supposed to be of type NSString, but instead it was of type NSNumbern The value for key NSTimeOut was supposed to be of type NSString, but instead it was of type NSNumbern The value for key NSTimeOut was supposed to be of type NSString, but instead it was of type NSNumbern The value for key NSTimeOut was supposed to be of type NSString, but instead it was of type NSNumber

  6. That fixed it! Thanks so much. And thanks for your patience… Ah what a weird geeky buzz it is when something works…. Thanks again Prashant!

Leave a Reply

Your email address will not be published. Required fields are marked *