0

我正在 Cocoa 中开发 OpenGL 游戏,并且需要在用户尝试复制或粘贴时捕获(通过 command+c 或 command+v)。

到目前为止,我有一个NSView<NSTextInputClient>作为我的NSWindow. 它成功地允许在我的游戏中输入非 ASCII 字符(例如中文维基百科),但我在尝试捕获复制和粘贴时迷失了方向。

我想我可能能够使用flagsChangedcombine获得一个可行的解决方案keyDown,但这感觉就像一个 hack,我敢肯定有人知道更好的解决方案。:)

编辑:为清楚起见,我主要寻找预定义的复制事件或键码​​的存在。基本原理是,如果我手动将 Copy 定义为“Command+C”,那么如果用户重新映射了他/她的键或正在使用某些辅助工具,这可能会中断。

4

1 回答 1

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];
}
于 2013-03-11T06:51:10.713 回答