here you go:
#import <Carbon/Carbon.h> EventHandlerUPP hotKeyFunction; pascal OSStatus hotKeyHandler(EventHandlerCallRef nextHandler,EventRef theEvent, void *userData) { FooBar *obj = userData; [obj foo]; return noErr; } @implementation FooBar - (id)init { self = [super init]; if (self) { //handler hotKeyFunction = NewEventHandlerUPP(hotKeyHandler); EventTypeSpec eventType; eventType.eventClass = kEventClassKeyboard; eventType.eventKind = kEventHotKeyReleased; InstallApplicationEventHandler(hotKeyFunction,1,&eventType,self,NULL); //hotkey UInt32 keyCode = 80; //F19 EventHotKeyRef theRef = NULL; EventHotKeyID keyID; keyID.signature = 'FOO '; //arbitrary string keyID.id = 1; RegisterEventHotKey(keyCode,0,keyID,GetApplicationEventTarget(),0,&theRef); } return self; } - (void)foo { } @end
valexa
source share