2009-08-27 157 views
2

我收到了來自不同地方的衝突報告。 Engadget的評論顯示InputManager插件被完全忽略(如果應用程序以32位模式加載,會導致奇怪的行爲),但this mailing list thread表示如果32/64位兼容性正確,它們將工作。Snow Leopard中的InputManager插件(OS X 10.6)

所以我有兩個問題:

  • 我們會得到雪豹使用InputManagers?
  • 如果是,它的工作方式與Leopard相同。如果不是,有什麼好的解決方法(因爲1Password顯然正在修復)?
+0

輸入管理者不是「插件」,他們是黑客:http://www.macjournals.com/news/inputmanagerhacks.html(不只是處理文字輸入,同時修補了整個應用程序中的,如1Password,Inquisitory,Chax 2等)。 – 2009-09-01 08:44:43

回答

3

如果你真的需要將代碼注入應用程序來完成你想要做什麼,使用mach_inject

而且請file a bug請求掛鉤,以便將來可以以更安全的方式實現您的軟件。

+1

當我嘗試mach_info鏈接,我得到了'頁面未找到'類錯誤。這裏有另一個鏈接:http://rentzsch.com/mach_inject/ – johne 2009-08-31 18:14:39

+0

對不起,這是堆棧溢出代碼中的一個錯誤(http://meta.stackexchange.com/questions/3657/can-an-unescaped-underscore-be -included-in-a-link),我不小心再次觸發。嘆。 – 2009-08-31 19:52:29

3

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

位於InputManagers文件夾束的自動加載現在官方支持。有效的輸入管理器包的條件進一步收緊。未來版本中可能會禁用此功能。

  1. 有效的安裝,現在僅限於 /庫/ InputManagers唯一文件夾中。 在其他位置的套裝是 默默忽略。

  2. 束中的所有文件和/庫/ InputManagers文件夾本身 必須由root用戶和 admin組所有。 包內沒有文件可以具有組或其他寫入 權限。與根特權運行

  3. 進程(的getuid()== 0或geteuid() == 0)不能加載任何束輸入管理器。

  4. 使用輪組特權運行的進程無法加載任何包 輸入管理器。

  5. 該進程必須在 加載捆綁包時處於活動工作區會話中。

  6. 進程必須不改變用戶或組ID被感染(由 issetugid(選中))。

  7. 沒有64位進程可以加載任何bundle輸入管理器。

+0

第二個問題? – aditya 2009-08-28 05:56:55

+0

不知道,但GLIMS傢伙已經設法獲得GLIMS以64位模式下工作:http://www.facebook.com/pages/Glims-for-Safari/93636796317?v=feed&story_fbid=122556062674&ref=nf – 2009-08-28 18:00:43

1

它看起來像Chax(用於iChat中的輸入管理插件)現在已經切換到正在爲一個的iChat應用程序啓動器:您運行Chax.app和它加載的iChat額外UI黑客。

快速查看微型啓動程序二進制Chax中的字符串。app/Contents/MacOS/Chax,似乎他正在選擇一種比已經提到的mach_inject更簡單的庫攔截技術:而不是在啓動目標應用程序(如Linux中的LD_PRELOAD)之前使用just set the DYLD_INSERT_LIBRARIES環境變量。

當然,這並不讓我喜歡的InputManagers,MultiClutch和水上,雪豹再次合作 - 他們是最有用的,因爲他們與所有Cocoa程序的工作。仍然不確定這些應用的最佳解決方法。

我沒有下載的1Password 3測試版試用,看看他們在做什麼,因爲它看起來像你必須先簽署一份NDA虛。

相關問題