Existe alguma maneira de ler as entradas do teclado no AppKit fora do thread principal? Consegui fazer isso usando CGEventTapCreate
, mas infelizmente requer permissões que prefiro não solicitar. Existe uma maneira de ler entradas locais do thread principal?
(O caso de uso é um aplicativo de áudio em tempo real acionado por teclado, onde os gráficos nunca devem bloquear a entrada-> pipeline de áudio)
Eu tentei usar, addLocalMonitorForEventsMatchingMask
mas parece que o manipulador só é chamado no thread principal, mesmo se eu configurar um runloop em um thread separado. Desde já, obrigado!
Acredito que a resposta seja 'não', com base no fato de que a entrada para entrada do teclado - supondo que você não tente se apropriar indevidamente da rota de toque do evento de acessibilidade - é uma ou
-[NSApplication sendEvent:]
sua substituição da mesma e por Apple "sendEvent: as mensagens são enviadas de o loop de eventos principal (o método run)" .Provavelmente será um trabalho mais pesado, mas provavelmente a solução apropriada aqui é mover seus gráficos para fora do thread principal. Ou pelo menos divida esse trabalho em pedaços muito pequenos para que você possa sair do
sendEvent:
.