Come conservare (e utilizzare) la posizione corrente del mouse?
-
22-09-2019 - |
Domanda
Qual è il modo migliore per conservare la posizione del mouse corrente (a livello di sistema) e poi (in seguito) mettere il topo a quel punto memorizzato?
[NSEvent mouseLocation]
mi viene la posizione, e posso muovere il mouse con un CGEventMouseMoved
, ma ognuno di loro utilizzano un sistema di coordinate diverso (credo y = 0 è il top per NSEvent e fondo per una CGEvent).
Sono preoccupato per la robustezza di catturare l'altezza dello schermo e di utilizzarlo per la conversione tra i due - o è questo l'approccio migliore
?Soluzione
Sì, utilizzando l'altezza della schermata principale è il modo standard di lanciare coordinate dello schermo.
Altri suggerimenti
È possibile utilizzare un CGEventTap per ottenere il eventi del mouse al posto di NSEvent. Allora avete la vostra scelta di capovolte o non ruotati al momento l'evento arriva.
(Credo y = 0 è il top per NSEvent e fondo per una CGEvent).
Hai che nel modo sbagliato. Quarzo utilizza capovolto, che è y = 0 = alto. AppKit utilizza non ruotati, che è y = 0 = inferiore. (Edit:.. Per gli eventi, che è Quartz 2D, l'API di disegno, utilizza coordinate non ruotato, lo stesso fa AppKit)