Snow Leopard中的InputManager插件(OS X 10.6)

时间:2009-08-27 05:12:32

标签: macos plugins osx-snow-leopard 32bit-64bit

我收到来自不同地方的相互矛盾的报道。 Engadget的评论称InputManager插件被完全忽略(如果应用程序以32位模式加载,会导致奇怪的行为),但this mailing list thread表示如果32/64位兼容性正确,它们将起作用。

所以我有两个问题:

  • 我们是否可以在Snow Leopard中使用InputManagers?
  • 如果是,它的工作方式与Leopard相同。如果不是,什么是好的解决方法(因为1Password显然正在修复)?

4 个答案:

答案 0 :(得分:3)

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

  

现在,官方不支持自动加载位于InputManagers文件夹中的软件包。有效输入管理器捆绑的条件进一步收紧。在将来的版本中可能会禁用此功能。

     
      
  1. 现在,有效安装仅限于   / Library / InputManagers文件夹。   其他地方的捆绑包是   默默地忽略了。

  2.   
  3. 捆绑包中的所有文件和/ Library / InputManagers文件夹本身   必须由root用户拥有并且   管理组。里面没有文件   bundle可以有组或其他写   权限。

  4.   
  5. 使用root权限运行的进程(getuid()== 0或geteuid()   == 0)无法加载任何包输入管理器。

  6.   
  7. 使用wheel group权限运行的进程无法加载任何bundle   输入经理。

  8.   
  9. 该进程必须在当时的活动工作区会话中   加载捆绑包。

  10.   
  11. 不得通过更改用户或组ID来识别该过程(选中   issetugid())。

  12.   
  13. 没有64位进程可以加载任何bundle输入管理器。

  14.   

答案 1 :(得分:3)

如果您确实需要将代码注入应用程序以完成您要执行的操作,请使用mach_inject

file a bug请求挂钩,以便将来以更安全的方式实施您的软件。

答案 2 :(得分:1)

看起来Chax(iChat的一个InputManager插件)现在已经切换为iChat的应用程序启动器:你运行Chax.app并加载带有额外UI黑客的iChat。

快速查看微型启动器二进制文件Chax.app/Contents/MacOS/Chax中的字符串,看起来他正在选择一种比已经提到的mach_inject更简单的库拦截技术:而不是之前的just set the DYLD_INSERT_LIBRARIES环境变量启动目标应用程序(如Linux中的LD_PRELOAD)。

当然,这并没有让我最喜欢的InputManagers,MultiClutch和Afloat再次在Snow Leopard中运行 - 它们最有用,因为它们适用于所有Cocoa应用程序。仍然不确定这些应用程序的最佳解决方法是什么。

我没有下载1Password 3测试版试图看看他们在做什么,因为看起来你必须首先签署虚拟NDA。

答案 3 :(得分:1)

1Password 3.0通过piggybacking on Safari’s browser plug-in API来解决对InputManager的需求。链接的文章还提供了对InputManagers的各种代码注入替代方案的非常实用的比较。