如何检测Mac应用程序中按下的组合键?

时间:2012-08-29 20:43:42

标签: objective-c macos keyboard

我知道Mac应用中的键盘事件可以这样触发:

- (void) keyDown(NSEvent*)event {
    switch ([event keyCode]) {
        case someKeyCode:
            NSLog(@"blah blah blah");

        default:
            break;
    }
}

但是如何让我的应用对按下的键的组合作出反应,例如Konami Code

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要构建一个历史记录列表,以跟踪过去按下过去的密钥。当密钥列表包含您的“代码”匹配时,无论是konami代码还是其他代码。您的匹配会触发另一个事件并清除密钥历史记录。

通过控制键的字符串将数据添加到数组

static NSMutableArray *array = [NSMutableArray array];
[array addObject:@"[UP]"]; // etc for each key you would have a special key

然后你可以像这样测试

if ([[array componentsJoinedByString:@""] isEqualToString:@"[UP][UP][DOWN][DOWN]"]){
    array = [NSMutableArray array];
    [self commandfound]
}

希望有所帮助