Mac OS X 10.6 — Cocoa
I\'m using global event monitor for displaying status item menu using custom keyboard shortcut:
globalEventMonitor
Seems impossible. Beeping is the default behavior of [NSResponder noResponderFor]. So an application beep unless it override that behavior by adding a last responder, which is unlikely doable from outside the application.
In your event monitor, you need to activate your app so that it will receive the key event.
[NSApp activateIgnoringOtherApps:YES];
Otherwise, the event will be passed to the current active application (which will beep).
EDIT: It looks like this won't work.
According to the docs "you cannot modify or otherwise prevent the event from being delivered to its original target application".
So Snow Leopard's new addGlobalMonitorForEventsMatchingMask
API is not suitable for handling hot keys. You will need to continue to use the old Carbon RegisterEventHotKey
API. Fortunately, this API is compatible with 64-bit Cocoa on Snow Leopard.