2

Mac用のシンプルなピアノゲームを作っています。そして、ユーザーがキーボードを押すと、ピアノのキー

同時に押すことができます。

しかし、Mac のキーボードで "D,F....." キーが押されたときを確認する方法がわかりません。

Objective-C

4

3 に答える 3

2

多くのことと同様に、これを行うには複数の方法があります。ただし、簡単な方法は-keyDown:、NSViewサブクラスでオーバーライドすることです。おそらく、これはピアノのキーボードを描画するNSViewサブクラスになります。例:

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

キーコードアプリはキーコードを見つけるのに便利ですが、-keyDown:メソッドにログステートメントを入れてから、キーを押して対応するコードを見つけることもできます。それらは<HIToolbox/Events.h>ヘッダーにもあります。

詳細については、 Appleのイベント処理ガイドを参照してください。

于 2012-07-06T03:36:39.080 に答える
1

ピアノビューとしてNSViewサブクラスがありますか?その場合は、-(void)keyDown:(NSEvent *)eventメソッドをオーバーライドして、必要なキーを記録します。例えば:

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

    switch (characters)
    {
        case 'd':
             //do something;
        default:
             break;
     }
}
于 2012-07-06T03:40:15.460 に答える
0

このコードを使用すると、すべてのキー プレス イベントをキャッチできます。

i は KeyCode です。サンプル kVK_End

while (true)

{

    for (int i=0; i<128; i++)
    {
        if (CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState,i))
        {
            NSLog(@"Key Press");
        }
    }
}
于 2013-01-16T06:35:11.847 に答える