Mac OS X - 获取空格键的状态

Posted

技术标签:

【中文标题】Mac OS X - 获取空格键的状态【英文标题】:Mac OS X - Get state of spacebar 【发布时间】:2013-04-15 12:59:30 【问题描述】:

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

我不想检测这些事件:

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

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

在 Windows 上,这似乎是可能的(虽然我还没有尝试过),代码如下:

GetAsyncKeyState(VK_SPACE);

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

【问题讨论】:

【参考方案1】:

我找到了答案here。这是我使用的工作 sn-p:

#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 shorts 的映射:

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

【讨论】:

以上是关于Mac OS X - 获取空格键的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 PostgreSQL 服务器 Mac OS X 的状态

使用常见的网络命令查看当前网络状态——Mac OS X篇

等同于 Mac OS X 中 Windows 的命名互斥锁? [复制]

Mac OS X 启用超级用户 sudo -s 获得系统权限 Mac终端命令

Mac OS X 中的虚拟网络接口

转OS X Mavericks: 防止 Mac 进入睡眠 -- 不错