Подключаемые модули InputManager в Snow Leopard (OS X 10.6) - PullRequest
2 голосов
/ 27 августа 2009

Я получаю противоречивые сообщения из разных мест. В обзоре Engadget говорится, что плагины InputManager полностью игнорируются (и вызывают странное поведение при загрузке приложения в 32-разрядном режиме), но этот поток списка рассылки говорит, что они будут работать при совместимости с 32/64-разрядными верно.

Итак, у меня два вопроса:

  • Можно ли использовать InputManager в Snow Leopard?
  • Если да, будет ли он работать так же, как в Leopard. И если нет, что является хорошим решением (потому что 1Password, очевидно, работает над исправлением)?

Ответы [ 4 ]

3 голосов
/ 30 августа 2009

Если вам действительно нужно внедрить код в приложения для достижения цели, используйте mach_inject .

И, пожалуйста, сообщите об ошибке , запрашивая хуки, чтобы вы могли в будущем реализовать свое программное обеспечение более безопасно.

3 голосов
/ 27 августа 2009

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

Автоматическая загрузка пакетов, расположенных в папках InputManager, теперь официально не поддерживается. Условия для действительного пакета менеджера ввода еще более ужесточены. Эта функция, вероятно, будет отключена в будущем выпуске.

  1. Допустимая установка теперь ограничена / Library / InputManagers только папка. Связки в других местах молча игнорируется.

  2. Все файлы в комплекте и самой папке / Library / InputManagers должен принадлежать пользователю root и админ группа. Нет файлов внутри связка может иметь групповую или другую запись разрешения.

  3. Процессы, запущенные с привилегией root (getuid () == 0 или geteuid () == 0) не может загрузить менеджер входных данных в комплекте.

  4. Процессы, работающие с привилегией группы колес, не могут загрузить ни один пакет менеджер ввода.

  5. Процесс должен быть в активном сеансе рабочей области во время загрузка пачек.

  6. Процесс не должен быть испорчен при изменении идентификатора пользователя или группы (проверено issetugid ()).

  7. Никакие 64-битные процессы не могут загружать любые менеджеры ввода пакета.

1 голос
/ 01 сентября 2009

1Password 3.0 позволяет обойтись без InputManager, добавив к API плагина браузера Safari . В связанной статье также приведено очень прагматичное сравнение различных альтернатив внедрения кода к InputManager.

1 голос
/ 31 августа 2009

Похоже, что Chax (плагин InputManager для iChat) теперь превратился в средство запуска приложений для iChat: вы запускаете Chax.app и загружаете iChat с дополнительными взломами пользовательского интерфейса.

Быстро просматривая строки в крошечном бинарном файле запуска Chax.app/Contents/MacOS/Chax, кажется, что он выбирает более простой метод перехвата библиотеки, чем уже упомянутый mach_inject: вместо этого вы просто устанавливаете DYLD_INSERT_LIBRARIES переменная среды перед запуском целевого приложения (например, LD_PRELOAD в Linux).

Конечно, это не заставляет мои любимые InputManager, MultiClutch и Afloat снова работать в Snow Leopard - они были наиболее полезны, потому что они работали со всеми приложениями Cocoa. Все еще не уверен, какой лучший обходной путь будет для этих приложений.

Я не скачал бета-версию 1Password 3, чтобы попытаться увидеть, что они делают, потому что похоже, что сначала нужно подписать виртуальный NDA.

...