OSX Carbon: кварцевые события, чтобы получить ввод с клавиатуры - PullRequest
2 голосов
/ 12 июля 2011

Я хочу получить ввод с клавиатуры в OSX с использованием c ++ без использования какао, устаревших обработчиков Carbon UPP и, если возможно, без использования IOHID, так как это много дополнительной работы.Я уже реализовал простой класс мыши, используя кварцевые отводы событий, и он работает как шарм, и теперь я хотел бы использовать их для реализации класса клавиатуры.В любом случае, в качестве ссылочного состояния в CGEventTapCreate : http://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

вы можете получить доступ к ключевым событиям, только если выполняется одно из следующих условий:

  1. Текущий процессработает как пользователь root.
  2. Доступ для вспомогательных устройств включен.В Mac OS X v10.4 вы можете включить эту функцию, используя Системные настройки, панель универсального доступа, представление клавиатуры.

, что является очень серьезным ограничением, поскольку я также хочу, чтобы мое приложение работало без каких-либо странных действий.настройки. Есть ли способ обойти это? Если нет, есть ли альтернатива использованию метчиков в углероде?Спасибо!

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Вы можете попробовать использовать AXMakeProcessTrusted .Предполагается, что это то же самое, что и Доступ для вспомогательных устройств для каждого процесса.

0 голосов
/ 12 июля 2011

Самый простой способ - использовать полугодовую функцию углерода RegisterEventHotKey, см., Например, в этом вопросе и ответе .

Если нет, вам нужно жить с этим ограничением. Существует ограничение, позволяющее злоумышленнику установить кейлоггер негласно. Вам нужно попросить пользователя открыть настройки, ввести пароль администратора и т. Д.

...