Interruptions de la souris

Fermé
bueno_contigo - 14 oct. 2010 à 21:13
 Franklin - 23 juin 2012 à 10:28
Bonjour,

L'enseignant nous a demandé de chercher une commande (ou d'écrire un script) qui permet d'afficher à temps réels les interruptions produire par la souris.

Je m'explique, la solution doit afficher un numéro qui s'incrémente avec chaque mouvement du pointeur de la souris.

Sous Windows, il est possible d'utiliser Process Explorer, mais sous Linux aucune idée !!!

Merci pour toute tentative de collaboration
A voir également:

3 réponses

Bonjour,

Il te suffit de lire le fichier device associé à ta souris (probablement /dev/mouse).
Pour tester, tu peux faire un "cat /dev/mouse", et bouger ta souris.

Cordialement, M.
2
mais il n'y a pas de mouse dans dev ?
il y a des fichiers tty, tty0,tty1 et encore plus
alors comment savoir le fichier qui correspond au fichier mouse??
0
Ca doit apparaître dans le dmesg, ou dans tes logs systèmes lorsque tu débranches/rebranches ta souris.
C'est souvent /dev/input/mouse0 ou /dev/input/mice, ou quelquechose comme ca...
0
bueno_contigo
15 oct. 2010 à 19:23
Oui, lorsque j'ai fait un cat /dev/input/mice, j'ai eu des points d'interrogation qui s'affichent avec le mouvement de la souris; je peux dire que Swed a résolu la moitié du problème !!!

Merci
0
merci swed sa marche ton truc c'est ce que j'ai besoin
0
Bonjour ,, voila pour linux
il fo comprendres les packets envoye par le driver sur linux il fais 8 bytes les bytes 1 et 2 sont les positions x et y

#include <stdio.h>
#include <unistd.h>
#include <sys/fcntl.h>
#include <errno.h>
#include <sys/time.h>
#include <math.h>


#define nd 1
int absolute (int x);

int main(){


unsigned char c = 0xFF; // -1

printf( "d :: %d \n", c );


char buf[100];
int fd,i,j,n,retval;

struct mouse_state{
int buttons;
char dx;
char dy;
} state;


fd_set rfds;
struct timeval st;
int dx=0,dy=0;

fd=open("/dev/psaux",O_RDONLY);
if(fd<0){ printf("mouse open error\n"); return 1;}

state.dx=0;
state.dy=0;

for(i=0;i<1000;){
for(j=0;j<3;j++)
{

n=read(fd,buf+j,nd);
printf("%02X ",(int)buf[j] & 0xff);

}//EoFor j

if(j<2)
{
if(j>0)
printf("PS2 mouse read sequence error\n");
continue;
}

printf("\n");
// i++;
if(buf[0] & 0x08){
state.buttons=buf[0]&0x7;

if(buf[0] & 0x40) printf("X overflow ");
if(buf[0] & 0x80) printf("Y overflow ");

if(buf[0] & 0x10)
state.dx=buf[1];
else
state.dx=buf[1];

if(buf[0] & 0x20)
state.dy=buf[2];

else state.dy=buf[2];

// printf(" buttons=%02X \tdx=%d \tdy=%d\n",state.buttons,state.dx,state.dy);
}//EoState
else {
printf("Error data received from ps2 mouse.\n");
break;
}

if(state.dx<0)
dx-=absolute(state.dx);
else dx += state.dx;
if(state.dy<0) dy-=absolute(state.dy);
else dy += state.dy;



printf("dx=%d \tdy=%d\n",dx,dy);

}//EoFor i
close(fd);
return 0;
}

int absolute (int x) {

return (x > 0 ? x : -x);
}
0
Utilisateur anonyme
15 oct. 2010 à 15:20
Sur google en 5 secondes, j'ai trouvé ça:
http://ensizero.ensimag.fr/forum/viewtopic.php?f=10&t=145

ça peut peut-être être la bonne voie ^^
-2
bueno_contigo
15 oct. 2010 à 19:21
Est-ce que tu peux préciser les lignes de code à ajouter au programme pour que je puisse le compiler et l'exécuter sous shell ?

Merci
0