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

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

我不想检测这些事件:

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

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

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

GetAsyncKeyState(VK_SPACE);

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

【问题讨论】:

    标签: macos keyboard


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2011-12-19
      相关资源
      最近更新 更多