应用程序的系统范围热键

时间:2010-09-21 12:38:51

标签: cocoa macos button

我有一个带有3个按钮的简单窗口,我正在尝试添加一个系统范围的热键,这样我就可以“按下”这些按钮而无需切换到该应用程序,按下按钮然后再回到我的状态做。

类似 Cmd + Shift + 1 按下按钮1, Cmd + Shift + 2 按下按钮2等

有没有办法在Cocoa中实现这个目标(使用Objective-C)? 谢谢,代码很受赞赏,因为我是Cocoa的新手。

3 个答案:

答案 0 :(得分:11)

我也不喜欢PTHotKey,所以我最后写了一个新的包装器,可以在这里找到:

http://github.com/davedelong/DDHotKey

修改

您需要的2个文件是:

你可以使用这样的东西:

- (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);
}

答案 1 :(得分:2)

PTHotKey在现代SDK上陈旧并且被破坏(生成大量警告)。请改用SGHotKeysLib

SGHotKeysLib和PTHotKey都是可重用的源代码。您只需要将类添加到您自己的项目中,然后在您自己的类中使用它们。

答案 2 :(得分:1)

有一个名为PTHotKey的库让这很容易。你可以谷歌PTHotKey或只是从http://code.google.com/p/shortcutrecorder/source/browse/trunk/Demo/HotKey/?r=2

抓取它