Alex Rivera | Logout

System-wide hotkey for an application

Asked 2010-09-21T12:38:50.553
10

I have a simple window with 3 buttons and I am trying to add a system-wide hot key so i can "press" those buttons without having to switch to that app, press a button and then go back to what I was doing.

Something like Cmd + Shift + 1 press button 1, Cmd + Shift + 2 press button 2, etc.

Is there any way to achieve this in Cocoa (with Objective-C)?

Edit
Report

1 Answer

12

I also didn't like PTHotKey, so I ended up writing a new wrapper, available here:

http://github.com/davedelong/DDHotKey

edit

The 2 files you'd need are:

And you'd use it something like this:

- (IBAction) registerHotkey:(id)sender {
  DDHotKeyCenter * c = [[DDHotKeyCenter alloc] init];
  if (![c registerHotKeyWithKeyCode:kVK_ANSI_1 modifierFlags:(NSCommandKeyMask | NSShiftKeyMask) target:self action:@selector(hotkeyWithEvent:) object:nil]) {
    NSLog(@"unable to register hotkey");
  } else {
    NSLog(@"registered hotkey");
  }
  [c release];
}

- (void) hotkeyWithEvent:(NSEvent *)hkEvent {
  NSLog(@"Hotkey event: %@", hkEvent);
}
answered 2010-09-22T01:36:55.940

Your Answer