Contrôle du curseur de souris

CeetixCeetix Membre
15:23 modifié dans API AppKit #1
Voilà , j'ai créé une mini app toute moche sur iphone qui envoi une chaine de caractère à  une petite app serveur sur mon mac (via wifi).
J'aimerai bien faire un trackpad et diriger ma souris via mon iPhone.
Je pensais envoyer : @MouseX:130,0&MouseY:400 par exemple.
En décodant le tout j'aurai donc mes coordonnées mais comment après modifier les coordonnées de mon curseur ?
De quel côté je dois regarder?


Merci !

Réponses

  • CeetixCeetix Membre
    15:23 modifié #2
    J'ai regardé la doc et j'ai trouvé CGDisplayMoveCursorToPoint() .
    Est-ce la bonne voie ? :)
  • CeetixCeetix Membre
    15:23 modifié #3
    Bon eh bien pour ceux que ça intéresse voici mon code pour faire bouger la souris ;)

    <br />&nbsp;  NSString *posToParse = @&quot;mousex134.000000mousey0.000000&quot;;<br />// Je donne des coordonnées au pif vu que je les retire via la position de mon doigt par l&#39;iphone.<br />// Il faudra donc juste changer ça.<br /><br />&nbsp;  NSRange rangeY = [posToParse rangeOfString:@&quot;mousey&quot;];<br />&nbsp;  <br />&nbsp;  NSString *posXToParse = [posToParse substringToIndex:rangeY.location];<br />&nbsp;  NSString *posYToParse = [posToParse substringFromIndex:rangeY.location];<br />&nbsp;  <br />&nbsp;  NSString *posX = [posXToParse substringFromIndex:6];<br />&nbsp;  NSString *posY = [posYToParse substringFromIndex:6];<br />&nbsp;  <br />&nbsp;  CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, CGPointMake([posX floatValue], [posY floatValue]));<br />
    



    Par contre vu ma UIView est de 300x200 je peux juste bouger sur les 300x200 de mon écran ... Quelqu'un aurait une idée? :)
  • SilentGobSilentGob Membre
    15:23 modifié #4
    Si au lieu d'envoyer la position tapée tu envoies le delta entre la position précédente et la nouvelle position (par exemple entre le début d'un touché et la fin).

    Comme ça je pose mon doigt en bas je monte en maintenant appuyé et je relâche en haut, ce que j'envoi c'est (Ydébut - Yfin) et (Xdébut - Xfin). En faisant plusieurs geste tu vas pouvoir défiler sur l'écran.

    Si vraiment tu veux faire en sorte que ton écran d'iphone représente ton écran d'ordi alors il vaut mieux faire un calcul de ratio en divisant ta largeur écran par la largeur écran iPhone. Mais j'ai peur que vu la précision du touché et les différences de résolution tu perdes vraiment en précision.
  • CeetixCeetix Membre
    15:23 modifié #5
    Merci pour l'astuce j'y avais pas pensé !
    J'avais tester la deuxième solution mais c'est clair que ça saccade et en plus si l'user n'a pas la même résolution c'est mort ...
  • PifpafpoufPifpafpouf Membre
    15:23 modifié #6
    Bonjour,
    je suis également interressé par ce sujet et je me retrouve coincé.
    Je me demande comment prendre le contrôle de la souris système sous leopard 10.6 ou ultérieur.
    En fait  , j'ai mon client serveur qui fonctionne mais je ne sais pas du tout (après avoir fait beaucoup de recherches)
    comment passer a cette étape.

    Pouvez vous m'indiquer la philosophie de la démarche a suivre  s'il vous plait?
  • PifpafpoufPifpafpouf Membre
    15:23 modifié #7
    Bon , j'ai fini par trouver .
    Mais j'ai un autre soucis...

    j'ai un client serveur en TCP/IP codée en objective C qui est sensée me permettre de réaliser un trackpad .
    J'ai utilisé une minuterie qui tout les X dixième de secondes m'envoi les infos nécessaires au déplacement de la souris.
    Mon problème est que des que je descend en dessous de 0.3 seconde g un message qui me dis qu'en gros ça ne suit plus...
    comme si c'était trop rapide.
    Je voudrai savoir si je m'y suis mal pris et que ce type de connexion n'est pas suffisamment rapide ou peut etre m'y suis mal pris en ouvrant et refermant la connexion entre chaque envois...voila
  • laudemalaudema Membre
    15:23 modifié #8
    dans 1288445793:


    Mais j'ai un autre soucis...

    Dans ces cas là  normalement on ouvre un nouveau sujet .. (Normalement aussi, sur un forum d'entraide, quand on a trouvé une solution il est de bon goût de la partager)

    dans 1288445793:

    Je voudrai savoir si je m'y suis mal pris et que ce type de connexion n'est pas suffisamment rapide ou peut etre m'y suis mal pris en ouvrant et refermant la connexion entre chaque envois...voila

    Aucune idée ;) Mais quand il s'agit de l'envoi de données rapides en IP on utilise plutôt UDP que TCP, regarde par exemple quand Apple utilise l'un ou l'autre http://support.apple.com/kb/ts1629?viewlocale=fr_FR
    Quand on cherche UDP dans la documentation Xcode ça renvoie à  une appli démo UDPEcho qui implémente  client/serveur via les CFSocket. Si j'étais toi j'essayerais par là 
Connectez-vous ou Inscrivez-vous pour répondre.