我有一个带有3个按钮的简单窗口,我正在尝试添加一个系统范围的热键,这样我就可以“按下”这些按钮而无需切换到该应用程序,按下按钮然后再回到我的状态做。
类似 Cmd + Shift + 1 按下按钮1, Cmd + Shift + 2 按下按钮2等
有没有办法在Cocoa中实现这个目标(使用Objective-C)? 谢谢,代码很受赞赏,因为我是Cocoa的新手。
答案 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
抓取它