Mac:检查键盘事件

时间:2012-07-06 03:15:53

标签: objective-c macos cocoa keyboard

我正在为Mac制作一个简单的钢琴游戏。当用户按下键盘时,钢琴键

可以同时按下。

然而,我对如何检查Mac键盘上何时按下“D,F .....”键无能为力。

目标-C

3 个答案:

答案 0 :(得分:2)

与许多事情一样,有多种方法可以做到这一点。但是,一种简单的方法是覆盖NSView子类中的-keyDown:。据推测,这将是绘制钢琴键盘的NSView子类。例如:

- (void)keyDown:(NSEvent *)event
{
    switch ([event keyCode])
    {
        case 0x02:
            // D key pressed
            break;
        case 0x03:
            // F key pressed
            break;
        // etc.
    }
}

我发现Key Codes应用程序很方便用于查找密钥代码,但您也可以在-keyDown:方法中添加日志语句,然后按键查找相应的代码。它们也位于<HIToolbox/Events.h>标题中。

有关详细信息,请参阅Apple's Event Handling Guide

答案 1 :(得分:1)

你有一个NSView子类作为钢琴视图吗?如果您这样做,那么只需覆盖-(void)keyDown:(NSEvent *)event方法,并记下您想要的任何键。例如:

-(void)keyDown:(NSEvent *)event {
    NSString *characters;
    characters = [event characters];

    switch (characters)
    {
        case 'd':
             //do something;
        default:
             break;
     }
}

答案 2 :(得分:0)

通过使用此代码,您可以捕获所有按键事件。

我是KeyCode。样品kVK_End

while (true)

{

    for (int i=0; i<128; i++)
    {
        if (CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState,i))
        {
            NSLog(@"Key Press");
        }
    }
}