Interruptions de la souris
bueno_contigo
-
Franklin -
Franklin -
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
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:
- Interruptions de la souris
- Quelle touche pour débloquer la souris ? - Guide
- Souris ordinateur - Guide
- Souris hid ✓ - Forum souris / Touchpad
- Souris HID manquant - Forum souris / Touchpad
- Souris inversée - Guide
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.
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.
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);
}
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);
}
il y a des fichiers tty, tty0,tty1 et encore plus
alors comment savoir le fichier qui correspond au fichier mouse??
C'est souvent /dev/input/mouse0 ou /dev/input/mice, ou quelquechose comme ca...
Merci