我正在使用Cocoa中的OpenGL游戏,需要在用户尝试复制或粘贴时捕获(通过命令+ c或命令+ v)。
到目前为止,我有一个NSView<NSTextInputClient>
作为我NSWindow
的第一个回复者。它成功地允许在我的游戏中输入非ASCII字符(例如,中文维基百科),但我迷失了尝试捕获Copy&amp; Paste。
我想我可以使用flagsChanged
结合keyDown
获得一个有效的解决方案,但这感觉就像一个黑客,我相信那里有人知道更好的解决方案。 :)
编辑:为清楚起见,我主要考虑是否存在预定义的复制事件或键码。理由是,如果我手动将Copy定义为“Command + C”,那么如果用户重新映射他/她的密钥或使用某些辅助功能工具,则可能会中断。
答案 0 :(得分:0)
您可以使用NSEvent
类方法:+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))block
或者您可以实施- (void)keyDown:(NSEvent *)theEvent
- (void)keyDown:(NSEvent *)theEvent {
if ([theEvent modifierFlags] & NSCommandKeyMask) {
NSString *character = [theEvent charactersIgnoringModifiers];
if ([character isEqualToString:@"c"]) {
NSLog(@"Capture Copy&Paste Key");
}
}
[super keyDown:theEvent];
}