InputManager plugins in Snow Leopard (OS X 10.6)

I am getting conflicting reports from various places. Engadget's review says that InputManager plugins are completely ignored (and cause strange behavior if the application is loaded in 32-bit mode), but this mailing list thread says they will work if 32/64-bit compatible.

I have two questions:

  • Are we getting to use the InputManager in Snow Leopard?
  • If so, will it work the same as in Leopard. And if not, what's a good workaround (because 1Password is apparently working on a fix)?
+2


source to share


4 answers


If you really need to inject code into applications to accomplish what you are trying to do, use mach_inject .



And please include a bug when requesting interceptors so that you can implement your software more securely in the future.

+3


source


http://developer.apple.com/releasenotes/Cocoa/AppKit.html#NSInputManager



Automatic loading of packages located in InputManagers folders is not officially supported. The conditions for a proper input control pool are even more tight. This functionality is likely to be disabled in a future release.

  • The actual installation is now limited to / Library / InputManagers. Bundles elsewhere are silently ignored.

  • All files in the bundle folder and / Library / InputManagers must themselves be owned by root and admin. No files inside the package can have a group or other permission entry.

  • Processes running as root (getuid () == 0 or geteuid () == 0) cannot load the Package Injection Manager.

  • Processes running with the wheel group privilege cannot load any input manager set.

  • The process must be in an active workspace session while downloading packages.

  • The process should not be corrupted by changing the user or group id (checked by issetugid ()).

  • No 64-bit processes can load any package injection managers.

+3


source


It looks like Chax (the InputManager plugin for iChat) has now switched to an iChat app: you launch Chax.app and load iChat with additional UI hacks.

Quickly looking at the lines in the small binary Launcher Chax.app/Contents/MacOS/Chax, it seems to choose a simpler library interception method than the already mentioned mach_inject: instead, you just set the environment variable DYLD_INSERT_LIBRARIES before launching the target application (e.g. LD_PRELOAD on Linux).

Of course, that doesn't make my favorite InputManager, MultiClutch and Afloat work again in Snow Leopard - they were most useful because they worked with all Cocoa applications. Still not sure what the best solution would be for these applications.

I didn't download the 1Password 3 beta to try and see what they do because it looks like you need to sign a virtual NDA first.

+1


source


1Password 3.0 works around the need for an InputManager instead in addition to the Safaris browser API . The linked article also gives a very pragmatic comparison of the different coding options for InputManagers.

+1


source







All Articles