在 Mac 上,我如何知道键盘上的某个键是按下/向下还是未按下/向上?现在我需要它作为空格键,但适用于任何键的答案将是完美的。
我不想检测事件:
-(void)keyDown:(NSEvent*)event;
-(void)keyUp:(NSEvent*)event;
我想要某个时刻的键(空格键)状态。
在 Windows 上,这似乎是可能的(尽管我还没有尝试过),使用以下代码:
GetAsyncKeyState(VK_SPACE);
但我还没有找到适用于 Mac 的解决方案。
我在这里找到了答案。这是我使用的工作片段:
#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