【问题标题】:Raw mouse and keyboard input for macOS games post-Catalina?Catalina 之后的 macOS 游戏的原始鼠标和键盘输入?
【发布时间】:2021-03-15 20:14:56
【问题描述】:

我感觉我知道这个问题的答案,但要在任何地方确认它却出奇地困难。是否可以在 Catalina 之后获得原始键盘和鼠标输入,而无需在安全和隐私首选项中访问“输入监控”?

我以前从未在 macOS 上编写过游戏引擎,但据我所知,游戏获取原始鼠标增量和原始键盘状态的“通常”方式是使用 IOKit 的 HID API。在recently 之前,这显然也是从 Xbox 和 Playstation 游戏手柄获取输入的唯一方法。

当我尝试使用 IOKit HID API 获取鼠标和键盘输入时,我收到提示,允许在安全和隐私首选项中进行输入监控。在互联网的其他地方,我了解到这是由于 macOS Catalina 的变化:要使用 IOKit HID 输入处理,您现在需要输入监控权限。就我而言,要求用户开启此功能对我的游戏来说是个大问题。

我是否正确理解这种情况?如果我是,如果没有输入监控权限,是否无法获得原始(未处理的)键盘和鼠标输入?我的意思是,我可以使用mouseMoved: 事件等为 FPS 风格的鼠标输入解决方案,但这样的解决方案将不允许亚像素精度,并且会使我的游戏受到 macOS 的光标加速。还有其他游戏/游戏引擎使用的解决方案吗?

【问题讨论】:

  • 我决定继续使用常规的 Cocoa 键盘事件,但这让我无法检测到一些事情(例如 Caps Lock 键的释放)。我仍然有点难以相信 Apple 不会有“首选”方式来获得适用于 3D 电脑游戏的原始鼠标增量。

标签: macos cocoa input game-engine


【解决方案1】:

如果您愿意接受 macOS 11 的要求,Apple 似乎为游戏控制器框架添加了原始键盘和鼠标支持。似乎甚至支持大写锁定。

https://developer.apple.com/documentation/gamecontroller/gckeyboardinput?language=objc

【讨论】:

  • 老兄,谢谢。这似乎是我正在寻找的“正确”答案(至少,根据 Apple 的说法)。不过,它对 macOS 11 的要求很糟糕。我想我将不得不勉强更新,然后尝试一下。
猜你喜欢
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 2022-11-25
  • 2014-05-08
  • 2014-09-18
  • 2015-10-04
相关资源
最近更新 更多