1

在 Mac 上,我如何知道键盘上的某个键是按下/向下还是未按下/向上?现在我需要它作为空格键,但适用于任何键的答案将是完美的。

我不想检测事件:

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

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

在 Windows 上,这似乎是可能的(尽管我还没有尝试过),使用以下代码:

GetAsyncKeyState(VK_SPACE);

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

4

1 回答 1

1

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

#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表示您想知道它是否被按下的键。unsigned short可以在 Mac 上的以下文件中找到键到 s 的映射:

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
于 2013-04-29T16:02:22.590 回答