Плагины InputManager в Snow Leopard (OS X 10.6)

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

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

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

person aditya    schedule 27.08.2009    source источник
comment
Диспетчеры ввода - это не плагины, это хаки: macjournals.com/news/inputmanagerhacks.html (те, которые не просто обрабатывают ввод текста, но исправляют все приложение, например 1Password, Inquisitory, Chax 2 и т. д.).   -  person Alexander Klimetschek    schedule 01.09.2009


Ответы (4)


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

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

person Nicholas Riley    schedule 30.08.2009
comment
Когда я попробовал использовать ссылку mach_info, у меня возникла ошибка типа «страница не найдена». Вот еще одна ссылка: rentzsch.com/mach_inject - person johne; 31.08.2009
comment
К сожалению, это ошибка в коде переполнения стека (заголовок meta.stackexchange.com/questions/3657/), которую я снова случайно активировал. Вздох. - person Nicholas Riley; 31.08.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. Процессы, запущенные с привилегией группы wheel, не могут загружать какой-либо диспетчер ввода пакетов.

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

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

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

person Bjorn    schedule 27.08.2009
comment
Понятия не имею, но парню из glims удалось заставить Glims работать в 64-битном режиме: facebook.com/pages/Glims-for-Safari/ - person Bjorn; 28.08.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, чтобы посмотреть, что они делают, потому что казалось, что сначала нужно подписать виртуальное соглашение о неразглашении.

person cce    schedule 30.08.2009

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

person Kevin Yank    schedule 01.09.2009