Cocoa глобальные ярлыки?

Я хочу создать глобальный ярлык для моего приложения. Я использовал "классный новый способ" для этого с помощью метода addGlobalMonitorForEventsMatchingMask. Проблема в том, что мои события не "потребляются": моя ярлык включает пробел, поэтому всякий раз, когда я использую ярлык, Quicklook появляется, когда я нахожусь в Finder.

Как я могу предотвратить это? Я знаю, что это возможно, потому что многие приложения, например приложение для контроллера Bowtie iTunes, делают это.

Ответы

Ответ 1

addGlobalMonitorForEventsMatchingMask: не является подходящей заменой для существующего API-интерфейсов Carbon Hotkey по разным причинам; это ужасно неэффективно, для одного. И из документов:

... вы можете наблюдать за событием; вы не можете изменять или иным образом препятствовать доставке события в исходное целевое приложение.

и

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

API Hotkey по-прежнему остается единственным способом реализации глобального ярлыка в OS X. Но в отличие от многих API-интерфейсов Carbon, API Hotkey доступен для 64-разрядных приложений.