2013-04-22 44 views
1

如何知道键盘上的某个键在Mac上是按下/松开还是未按下?现在我需要它作为空格键,但是对任何键都有效的答案是完美的。Mac OS X - 获取空格键状态

我不想检测的事件:

-(void)keyDown:(NSEvent*)event; 
-(void)keyUp:(NSEvent*)event; 

我想在某一个时刻一个键(空格键)的状态。

在Windows中,这似乎可以用下面的代码(虽然我还没有尝试过了):

GetAsyncKeyState(VK_SPACE); 

但我还没有找到适用于Mac的解决方案呢。

回答

0

我找到了答案here。这是我使用的工作片段:

#include <Carbon/Carbon.h> 

Boolean isPressed(unsigned short inKeyCode) 
{ 
    unsigned char keyMap[16]; 
    GetKeys((BigEndianUInt32*) &keyMap); 
    return (0 != ((keyMap[ inKeyCode >> 3] >> (inKeyCode & 7)) & 1)); 
} 

inKeyCode代表你想知道它是否被按下与否的关键。您可以在Mac上的以下文件中找到密钥到unsigned short的映射:

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h