捕获复制和粘贴密钥

时间:2013-03-11 06:20:58

标签: objective-c cocoa

我正在使用Cocoa中的OpenGL游戏,需要在用户尝试复制或粘贴时捕获(通过命令+ c或命令+ v)。

到目前为止,我有一个NSView<NSTextInputClient>作为我NSWindow的第一个回复者。它成功地允许在我的游戏中输入非ASCII字符(例如,中文维基百科),但我迷失了尝试捕获Copy&amp; Paste。

我想我可以使用flagsChanged结合keyDown获得一个有效的解决方案,但这感觉就像一个黑客,我相信那里有人知道更好的解决方案。 :)

编辑:为清楚起见,我主要考虑是否存在预定义的复制事件或键码​​。理由是,如果我手动将Copy定义为“Command + C”,那么如果用户重新映射他/她的密钥或使用某些辅助功能工具,则可能会中断。

1 个答案:

答案 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];
}