2011-11-09 1 views
7

Devo essere in grado di impostare la posizione del mouse al centro della schermata/finestra. Come posso farlo?Impostare la posizione del mouse

+2

Perché non è possibile che l'utente basta spostare il cursore lì se stessi? – dreamlax

+1

Penso che questa sia una di quelle cose in cui non esiste un modo semplice per farlo perché non è una cosa molto user-friendly da fare. – dreamlax

+0

Non penso che impostare la posizione del mouse su un certo punto sarebbe molto utile ... ma di nuovo non sono troppo sicuro di cosa vuoi dal tuo programma ... – Gabe

risposta

9

La documentazione sembra indicare che CGDisplayMoveCursorToPoint o CGWarpMouseCursorPosition farà quello che stai cercando.

EDIT: per abbinare il vostro ultimo commento, mi sento di raccomandare ulteriori CGWarpMouseCursorPosition, su cui il docs Stato:

Ad esempio, questa funzione è spesso usato per spostare la posizione del cursore di nuovo al centro dello schermo da giochi che non vogliono il cursore appuntato dai bordi del display.

+0

Ho appena provato questo. Grazie per il tuo aiuto, ma questa funzione sembra ignorare il mio gestore del mouse nel mio gioco. –

+2

@ChaseWalden, per "override" intendi cosa esattamente? Non vengono più chiamati? –

+0

sì. Risponde forse per 2-3 fotogrammi e poi si blocca. –

-1

È possibile utilizzare [NSEvent mouseLocation] per ottenere la posizione corrente del cursore, ma non sono riuscito a trovare alcun modo per impostare direttamente la posizione al centro dello schermo.

+0

Allora perché rispondi al posto del commento? – Dani

+0

Ho fatto un errore e ho postato una risposta pensando che si trattasse di una domanda riguardante l'ihone, poi ho capito il mio errore e ho subito risolto una nuova risposta – Gabe

4

Stavo lavorando a qualcosa del genere la scorsa settimana.

CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState); 
    CGEventRef mouse = CGEventCreateMouseEvent (NULL, kCGEventMouseMoved, CGPointMake(X, Y), 0); 
    CGEventPost(kCGHIDEventTap, mouse); 
    CFRelease(mouse); 
    CFRelease(source); 

Basta impostare X e Y.

EDIT:

#include <ApplicationServices/ApplicationServices.h> 
+0

Questo (finora) funziona alla grande per me. Lo uso insieme a [NSCursor hide] in un'applicazione per avviare video a tutto schermo mescolato (per macchine configurate come installazioni che non hanno interazione con l'utente). Ciò mi consente di impedire che il mouse sia visibile o in bilico sulla barra dei menu. – viperld002