Récupérer les impulsions de la souris

Fermé
iffefroi - 26 mai 2005 à 10:04
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005 - 1 juin 2005 à 10:01
Bonjour,

Je voudrais, par un moyen ou un autre, si possible en .NET (VB, c# etc.) avoir accès aux déplacements de la souris. Je parle bien des impulsions que lance régulièrement la souris à l'OS et pas du déplacement du pointeur sur l'écran qui lui est irrégulier.

Merci
Iffefroi

14 réponses

Utilisateur anonyme
26 mai 2005 à 10:15
salut

fais une recherche sur les hooks, qui permet de capter tous les messages de la souris.

comme "hook souris" dans google
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
26 mai 2005 à 10:22
Merci Edoc
Ca me donne une nouvelle orientation dans mes recherches.
Je tiens le forum au courant
Iffefroi
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
26 mai 2005 à 12:31
Merci pour ta proposition Edoc mais finalement j'ai regardé :

Un hook permet de voir les données que windows envoie aux applications.

Le problème c'est que c'est windows qui gère le pointeur de la souris, donc il envoie aux applications les coordonnées du pointeur et pas les déplacements de la souris.

Il y a 2 hook possible :
WH_MOUSE
WH_MOUSE_LL (low level)
Et même le bas niveau ne peux renvoyer que les coordonnées du pointeur, en ce qui concerne le mouvement.

Donc si tu as une bonne idée, ou si quelqu'un en a une ?

Merci

Iffefroi
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
27 mai 2005 à 09:33
RE-bonjour
Je voudrais toujours avoir accès aux impulsions de ma souris.

Mais comme ce ne semble pas possible sous windows, je voudrais bien le faire en C sous Linux. Si quelqu'un peux m'aider un petit peu ? M'orienter dans mes recherches ?

Je rappelle que je veux avoir accès aux déplacements de la souris et non pas au déplacement du curseur. Si possible la souris en USB.

Merci encore
Iffefroi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
30 mai 2005 à 09:37
Bonjour,

Il semblerait qu'il soit possible de récupérer les déplacements de la souris avec /dev/psaux.
Si quelqu'un sait comment celà fonctionne ?

Merci
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
30 mai 2005 à 10:07
Je sais pas programmer sous linux, mais sous DOS si,
que veux tu faire, peut etre que je pourrais t'aider
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
30 mai 2005 à 11:26
Ce que je voudrais faire :
Récupérer les données directes de la souris, les vitesses de déplacements.
Afin de récupérer la vitesse de la souris selon x e y.

Je précise bien que c'est la vitesse de la souris que je souhaite et non pas la vitesse du pointeur : la différence réside surtout dans le fait que le taux de rafraichissement est lié à la souris et non pas à l'OS. Une autre différence importante est que lorque le pointeur est au bord de l'écran. La souris peux encore se déplacer alors que le pointeur de la souris est bloqué contre le bord.

Merci
Iffefroi
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
30 mai 2005 à 12:05
ça j'ai bien compris, mais quel type d'application tu compte faire,
car pour avoir ces informations, tu dois programmer directement le controleur de la souris (c'est le meme que celui du clavier) ports 60h,61h et 64h, la souris PS/2 est le peripherique auxiliaire et elle utilise l'interruption IRQ 12.
mais si tu compte programmer sous linux ou windows c'est un DRIVER que tu dois developper, alors que sous DOS, un programme (en C,Pascal ou Assembleur) peut faire l'affaire.
sur ce, @+
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
30 mai 2005 à 12:07
avec une souris sur port SERIE c'est plus facile que le PS/2
mais, avec une souris USB, il va te falloir programmer aussi le controleur USB (je sais pas comment faire ça) et je crois que c'est la methode la plus difficile.

j'attend que tu m'eclaire plus sur l'application que tu compte developper, ainsi je pourrais mieux te conseiller.
sur ce, @*
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
30 mai 2005 à 13:26
Pour l'instant, le programme est juste un programme de test. Pour voir si une souris peux être utiliser en tant qu'appareil odomètrique.

Dans un premier temps, je voudrais un petit programme dans n'importe quel language (C, perl, bash, etc) qui permettrait de lire la vitesse de la souris et de l'afficher de manière lisible.

Il serait éventuellement possible d'indiquer un facteur k, qui permettrait de convertir la vitesse en cm/s.


L'application première en elle-même n'est pas utile mais c'est ce qu'on appelle une application de test, pour voir en fonction du support qu'on utilise sous la souris, si la souris peux servir d'appareil odomètrique dans ce cas.

Merci
Iffefroi
0
Utilisateur anonyme
30 mai 2005 à 17:19
hello

si si cherche bien avec les hook, on a les mesages données quand la souris bougfe, et on peut avec chacun récupérer les coordonnées lors du message ;-D
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
31 mai 2005 à 09:30
hello Edoc,

Il me semblait avoir bien regarder, mais je n'avais rien trouvé :
comme je te l'ai dit j'ai trouvé les 2 commandes que j'ai affiché avant. Elle ne permette pas de renvoyer les déplacements de la souris mais uniquement les déplacements du curseur.

D'ailleurs celà semble logique.

Iffefroi
0
Utilisateur anonyme
31 mai 2005 à 13:30
resalut

- en c il existe bien une fonction getCursorPos qui te donne la position de la souris : il suffit de récupérer les valeurs régulièrment et tu pourras calculer la vitesse : (temps2-temp1) / duree.

tu ne pourras pas avoir directement la vitesse.

---

ca ne peux pas fonctionner juste avec les coordonnées et pas le déplacement ?
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
31 mai 2005 à 13:58
Comme je l'ai déjà dit la position du curseur ne m'interresse pas pour plusieurs raisons :
- ils existent GetCursorPos dans presque tous les langages donc j'y suis déjà arrivé à obtenir la position du cureseur.
- le déplacement du curseur s'arrête lorsque tu atteins le bord de l'écran alors que la souris continue à se déplacer.
- la vitesse de reafraichissement est totalement dépendante de l'OS et cette partie n'est pas toujours constante et l'on ne peux rien en déduire.

Je tiens à préciser que sous linux cat /dev/psaux permet de récupérer les données de la souris. Mais malheureusement je n'ai pas encore réussi à déchiffrer correctement les données.

Pour l'instant j'ai juste réussi à en déduire que tous les 6 octets, l'octet a 3 bits correspondant aux 3 boutons de la souris. Le déplacement doit sans doute être donné par les 45 autres bits mais je 'ai pas encore compris comment.
Il semblerait cependant que celà dépend de la souris.
Mais je manque de documentation sur le net. (sisi :) )

Merci
Iffefroi
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
31 mai 2005 à 17:02
resalut,
voila un document qui décrit le fonctionnement:

http://users.tkk.fi/~then/mytexts/mouse.html
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
1 juin 2005 à 09:08
Merci pour ta réponse sam3000, je vous tiens au courant

Iffefroi
0
iffefroi Messages postés 13 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 7 juillet 2005
1 juin 2005 à 10:01
Le document que tu m'a donné et très interressant, mais un petit peu vieux. En effet il ne parle pas de souris USB qui n'existait pas à l'époque ni bien sur de plus de 2 boutons. Mais ce n'est pas grave, il m'a permis d'avancer :
J'ai trouvé la significtion de 2 autres bits parmis mes 6 octets je vais peut être vous détaillé pour que vous puissiez me suivre :

Je rappelle que les résultats obtenus l'ont été avec :
cat /dev/psaux | od -h -w6
==> -h en hexa
==> -w6 par série de 8 octets

Voici les résultats obtenus pour un clic gauche sans déplacement
00 09 08 00 00 00
Le 09 semble être la ligne 1 correspondant a plusieurs norme de souris et correspond à la ligne 1 des souris PS/2.
ligne 1 des PS/2 :
YV XV YS XS 1 M R L
XV, YX indique un overflow sur la souris (je n'ai pas réussi à le reproduire)
XS, YS indique le signe du déplacement :
gauche XS=1 droite XS =0
bas YS = 1 haut YS = 1
Ce sont ses deux bits que j'ai pu vérifier.

M R et L (même si M n'est pas indiqué sur le document je l'ai trouvé sur d'autres descriptifs) sont respectivement les boutons mileu, droit et gauche.

Par contre le souci : c'est que pour une souris PS/2 il y a 3 octets. Ici j'en ai 6 et j'utilise une souris USB (de marque Logitech)

Si quelqu'un sait comment fonctionne une souris USB ?
Merci
Iffefroi
0