是否有办法在主线程之外读取 AppKit 中的键盘输入?我已经成功地使用
CGEventTapCreate
做到了这一点,但不幸的是它需要我不想请求的权限。有没有办法从主线程读取本地输入?
(用例是键盘驱动的实时音频应用程序,其中图形不应阻塞输入->音频管道)
我尝试过使用
addLocalMonitorForEventsMatchingMask
但似乎处理程序仅在主线程上调用,即使我在单独的线程中设置了运行循环。预先感谢!
我相信答案是“否”,因为键盘输入的入口 - 假设您不尝试盗用辅助功能事件点击路线 - 要么是
-[NSApplication sendEvent:]
要么是您对相同内容的覆盖,并且按照 Apple “sendEvent :消息从主事件循环(run 方法)发送”.
这可能是一个更重的提升,但可能合适的解决方案是将图形移出主线程。或者至少将这项工作分解成非常小的块,以便您可以从
sendEvent:
出发。