gpt4 book ai didi

macos - Cocoa 中 GetKeys() 的现代等价物是什么?

转载 作者:行者123 更新时间:2023-12-03 16:57:17 25 4
gpt4 key购买 nike

我希望读取 Cocoa 中键盘的状态(对于我在 SpriteKit 中构建的游戏)。

NSResponder 肯定会给我按键操作,但我没有收到修饰键按下的事件,如果我按住一个键,然后按另一个键,我将停止收到第一个键的 keyDown 事件。

在古代(在我的 MacPlus 上),我使用 GetKeys() 来获取每帧顶部的键盘状态。我感到惊讶和困惑,这个仍然似乎有效:

KeyMap keys; 
GetKeys(keys);
UInt32 keys3 = CFSwapIn32BigToHost(keys[3].bigEndianValue);
if (keys3 & 4)
{
NSLog(@"F1 is down");
}

但是,我确信一定存在本地化、不同键盘或其他问题(使用 30 年前的工具箱调用让我犹豫)。

有与此功能等效的现代版本吗?

最佳答案

有几种方法可以做到这一点,主要围绕 NSEvent API。

  1. 您可以向 NSApplication 实例询问 currentEvent。这将为您提供一个 NSEvent,您可以检查其 characterscharactersIgnoringModifiersmodifierFlags 等。
  2. 如果您只对修饰键感兴趣,则只需请求 +[NSEvent modifierFlags] 即可返回当前按下的修饰键的位掩码。
  3. 您可以安装事件监视器(全局或本地),以便在按键和/或修饰键发生更改时发出通知。

最后一种方法可能是最好的方法,因为它不需要轮询。

关于macos - Cocoa 中 GetKeys() 的现代等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24214899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com