Sto tentando di utilizzare CGAssociateMouseAndMouseCursorPosition (NO) in un programma. Questo disconnette il mouse dal cursore sullo schermo quando l'applicazione è "in primo piano". Sfortunatamente lo disconnette anche quando Mission Control o lo switcher dell'applicazione o chissà cos'altro.Come si può rilevare il controllo Missione o il commutatore della scheda di comando che sostituisce il proprio programma in OS X?
Finora so:
- L'applicazione è ancora attiva.
- La finestra è ancora la chiave.
- Non viene inviato nulla al centro di notifica predefinito quando si verificano questi problemi.
- L'applicazione interrompe la ricezione di eventi spostati dal mouse, ma un NSEvent addGlobalMonitorForEventsMatchingMask: handler: inoltre non li riceve, il che è a dir poco strano. Dovrebbe ricevere tutti gli eventi non consegnati alla mia domanda. (Avevo intenzione di rilevare gli eventi mancanti per sapere quando associare nuovamente il mouse.
Quindi, c'è un modo per rilevare quando la mia domanda non è più in controllo è, in particolare perché la missione di controllo o l'interruttore ha preso finita? Hanno davvero aspettare il mouse per lavoro e ho bisogno di ripristinare tale associazione per loro.
Per una soluzione grossolana, sia il Controllo missione che lo switcher e presumibilmente qualsiasi altra cosa che utilizza il mouse renderà il cursore nuovamente visibile, quindi il polling CGCursorIsVisible() ti farà sapere che qualcuno si aspetta che il mouse funzioni. Ma sembra un fragile cerotto. – bitmusher
Forse puoi semplicemente disabilitare l'Application Switcher? C'è un'altra domanda riguardo a questa possibilità, e collega un Apple Q & A doc: http://stackoverflow.com/questions/3256651/disable-cmdtab-application-switcher Nulla sul controllo missione lì, però. – febeling
Qualcosa potrebbe andare al centro di notifica di NSWorkspace, ma ne dubito. –