macOS 游戏的原始鼠标和键盘输入 post-Catalina?

Raw mouse and keyboard input for macOS games post-Catalina?

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

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

当我尝试使用 IOKit HID API 获取鼠标和键盘输入时,我收到一条提示,允许在安全和隐私首选项中进行输入监控。在 Internet 的其他地方,我了解到这是由于 macOS Catalina 的更改所致:要使用 IOKit HID 输入处理,您现在需要输入监控权限。就我而言,要求用户打开此功能对我的游戏来说是一个交易破坏者。

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

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

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