【发布时间】:2011-04-15 04:33:50
【问题描述】:
我有一个带有 3 个按钮的简单窗口,我正在尝试添加一个系统范围的热键,这样我就可以“按下”这些按钮,而无需切换到该应用程序,按下一个按钮,然后回到原来的状态正在做。
类似 Cmd + Shift + 1 按下按钮 1,Cmd + Shift kbd> + 2 按下按钮 2,等等。
有没有办法在 Cocoa 中实现这一点(使用 Objective-C)? 谢谢,感谢代码,因为我是 Cocoa 的新手。
【问题讨论】:
我有一个带有 3 个按钮的简单窗口,我正在尝试添加一个系统范围的热键,这样我就可以“按下”这些按钮,而无需切换到该应用程序,按下一个按钮,然后回到原来的状态正在做。
类似 Cmd + Shift + 1 按下按钮 1,Cmd + Shift kbd> + 2 按下按钮 2,等等。
有没有办法在 Cocoa 中实现这一点(使用 Objective-C)? 谢谢,感谢代码,因为我是 Cocoa 的新手。
【问题讨论】:
我也不喜欢 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);
}
【讨论】:
how to use 很清楚,但我是一个完整的新手。你有一个小的 sn-p,我可以用它作为热键 cmd-shift-1 的指南吗?
PTHotKey 在现代 SDK 上已经过时且失效(产生大量警告)。请改用SGHotKeysLib。
SGHotKeysLib 和 PTHotKey 都是可重用的源代码。您只需将这些类添加到您自己的项目中,然后从您自己的类中使用它们。
【讨论】:
有一个名为 PTHotKey 的库使这变得相当容易。你可以谷歌 PTHotKey 或者直接从http://code.google.com/p/shortcutrecorder/source/browse/trunk/Demo/HotKey/?r=2获取它
【讨论】: