我正在为 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.
}
}
我发现Key Codes应用程序可以方便地查找关键代码,但您也可以在您的-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;
}
}
通过使用此代码,您可以捕获所有按键事件。
我是 KeyCode 。样本 kVK_End
while (true)
{
for (int i=0; i<128; i++)
{
if (CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState,i))
{
NSLog(@"Key Press");
}
}
}