我正在为Mac制作一个简单的钢琴游戏。当用户按下键盘时,钢琴键
可以同时按下。
然而,我对如何检查Mac键盘上何时按下“D,F .....”键无能为力。
目标-C
答案 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");
}
}
}