Mac用のシンプルなピアノゲームを作っています。そして、ユーザーがキーボードを押すと、ピアノのキー
同時に押すことができます。
しかし、Mac のキーボードで "D,F....." キーが押されたときを確認する方法がわかりません。
Objective-C
Mac用のシンプルなピアノゲームを作っています。そして、ユーザーがキーボードを押すと、ピアノのキー
同時に押すことができます。
しかし、Mac のキーボードで "D,F....." キーが押されたときを確認する方法がわかりません。
Objective-C
多くのことと同様に、これを行うには複数の方法があります。ただし、簡単な方法は-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のイベント処理ガイドを参照してください。
ピアノビューとしてNSViewサブクラスがありますか?その場合は、-(void)keyDown:(NSEvent *)event
メソッドをオーバーライドして、必要なキーを記録します。例えば:
-(void)keyDown:(NSEvent *)event {
NSString *characters;
characters = [event characters];
switch (characters)
{
case 'd':
//do something;
default:
break;
}
}
このコードを使用すると、すべてのキー プレス イベントをキャッチできます。
i は KeyCode です。サンプル kVK_End
while (true)
{
for (int i=0; i<128; i++)
{
if (CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState,i))
{
NSLog(@"Key Press");
}
}
}