AppKit 在单独的线程中读取键盘输入

问题描述 投票:0回答:1

是否有办法在主线程之外读取 AppKit 中的键盘输入?我已经成功地使用

CGEventTapCreate
做到了这一点,但不幸的是它需要我不想请求的权限。有没有办法从主线程读取本地输入?

(用例是键盘驱动的实时音频应用程序,其中图形不应阻塞输入->音频管道)

我尝试过使用

addLocalMonitorForEventsMatchingMask
但似乎处理程序仅在主线程上调用,即使我在单独的线程中设置了运行循环。预先感谢!

macos appkit nsevent
1个回答
0
投票

我相信答案是“否”,因为键盘输入的入口 - 假设您不尝试盗用辅助功能事件点击路线 - 要么是

-[NSApplication sendEvent:]
要么是您对相同内容的覆盖,并且按照 Apple “sendEvent :消息从主事件循环(run 方法)发送”.

这可能是一个更重的提升,但可能合适的解决方案是将图形移出主线程。或者至少将这项工作分解成非常小的块,以便您可以从

sendEvent:
出发。

© www.soinside.com 2019 - 2024. All rights reserved.