récupérer l'état de la souris depuis le driver Linux [résolu] - C - Programmation
Marsh Posté le 24-08-2004 à 09:18:00
Bon ben en fait j'ai trouvé.
Le driver n'envoie pas tout le temps 6 octets.
En effet, lorsqu'il n'y a pas de déplacement, seulement un évènement bouton il n'envoie qu'un seul octect en position buffer[0].
Si il y a un déplacement, il en envoie 3 buffer[0],buffer[1] et buffer[2].
Donc voilà, pour ceux que ca intéresse, celà fonctionne avec le code suivant :
Code :
|
Marsh Posté le 23-08-2004 à 08:34:05
Bonjour,
pour compléter le titre, je dirais que j'ai tout d'abord fait mon affaire via le serveur de souris gpm ce qui a pour le moment bien fonctionné. Cependant, j'ai porté mon application sur une autre carte mère pc104 qui partage son port ps/2 entre clavier et souris, et la ca marche bcp moins bien: il faut absolument que je bouge la souris lorsque gpm se lance, faute de quoi cette dernière n'est pas reconnue...ce n'est évidement pas souhaité.
Je me suis donc attaqué à la récupération de ces informations au niveau du driver Linux "/usr/src/linux/drivers/input/mousedev.c" dont je vous fais une copie ici :
En me basant la dessus j'arrive à récupérer les boutons sans trop de problème via le code suivant:
Il me manque juste à récupérer les mouvements suivant dx et dy.
D'après ce que j'ai compris au niveau du driver, ce dernier envoie une trame comprtant un tableau de 6 signed char, et en mode poll( mode normal je pense)on a buffer[1] qui contient un évènement souris 0x08, le bouton gauche cliqué 0x01, le bouton droit cliqué 0x02, ou encore un movement de souris 0x10.
buffer[2] permet de récupérer la valeur du déplacement sur dx et buffer[3] celle du déplacement sur dy.
PB, le code source suivant ne fonctionne pas :
si qqun a eu le courage de lire jusqu'au bout et peut m'aider, il est le bien venu.
Message édité par psebcopathe le 24-08-2004 à 09:50:38