Ciao a tutti, ho un problema con il settaggio della posizione del mouse. Nello specifico sto creando un'applicazione client/server attraverso Bonjour per comandare il mouse del Mac attraverso l'iPhone.
Ora, con le connessioni sono ok, il tutto funziona alla perfezione, riesco ad effettuare la connessione e a scambiare dati tra i 2 ma sto sbagliando qualcosa nella funzione per muovere il mouse attraverso il touchpad dell'iPhone.
Ho pensato di rilevare la distanza tra i punti del touchpad dell'iPhone e passarla al server installato sul Mac, in modo da sommarla alla posizione del mouse sullo schermo... Sto sbagliando sicuramente l'algoritmo, in quanto sfarfalla proprio
. Vi posto qualche porzione di codice, grazie per l'aiuto!
iPhone (locationBegan è la posizione dell'event touchesBegan, _connect si riferisce alla classe che comunica col socket)
codice:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint location = [[touches anyObject] locationInView:nil];
CGFloat locationX = (location.x - locationBegan.x);
CGFloat locationY = (location.y - locationBegan.y);
CGPoint distance = CGPointMake(locationX, locationY);
[_connect mouseReceived:&distance];
}
OS X
codice:
- (void)socket:(GCDAsyncSocket *)aSocket didReadData:(NSData *)data withTag:(long)tag
{
[aSocket readDataWithTimeout:-1.0 tag:0];
CGPoint dataReaded = *(CGPoint*)[data bytes];
CGPoint mouseLoc = [NSEvent mouseLocation];
CGPoint newPosition = CGPointMake((mouseLoc.x+dataReaded.x), (mouseLoc.y+dataReaded.y));
CGWarpMouseCursorPosition(newPosition);
CGAssociateMouseAndMouseCursorPosition(true);
}