Con questo breve codice, che ho scritto in linguaggio C, è possibile interecettare i dati numerici provenienti dal file-device del mouse, quando vengono sollevati eventi con il mouse medesimo (spostamenti, clic, azione sulla rotellina).
Poiché il file device "
/dev/input/mouse0" del mouse è protetto, è necessario eliminare tale protezione con:
~ $ sudo chmod 666 /dev/input/mouse0Per un esempio analogo in
Gambas puro vedere questa pagina della WIKI:
http://www.gambas-it.org/wiki/index.php?title=Intercettare_i_dati_del_mouse_dal_suo_file-deviceIl seguente codice va compilato in Terminale come segue:
~ $ gcc -o /percorso/del/codice /percorso/del/codice.c
#include<stdio.h>
#include <stdlib.h>
#include <poll.h>
#include <fcntl.h>
int main() {
struct pollfd fds[1];
int msecs = 10;
char *buf;
buf = malloc(sizeof(char)* 8);
while (1) {
/* Apre il file-device del mouse */
fds[0].fd = open("/dev/input/mouse0", O_RDONLY);
fds[0].events = POLLIN;
poll(fds, 1, msecs);
read(fds[0].fd, buf, 8);
printf("%d = ", *((int*) buf));
if ( ((*((int*) buf)) < 30000) && ((*((int*) buf)) > 16) ) {
printf("Spostamento a destra !");
}
if ( ((*((int*) buf)) < 65320) && ((*((int*) buf)) > 31000) ) {
printf("Spostamento a sinistra !");
}
if ( ((*((int*) buf)) < 5000000) && ((*((int*) buf)) > 65400) ) {
printf("Spostamento in alto !");
}
if ( *((int*) buf) > 10000000 ) {
printf("Spostamento in basso !");
}
if ( *((int*) buf) == 8 ) {
printf("Ruotata la rotellina !");
}
if ( *((int*) buf) == 9 ) {
printf("Clic sul tasto sinistro !");
}
if ( *((int*) buf) == 10 ) {
printf("Clic sul tasto destro !");
}
if ( *((int*) buf) == 11 ) {
printf("Clic contemporaneo sul tasto sinistro e sul tasto destro !");
}
if ( *((int*) buf) == 12 ) {
printf("Clic sulla rotellina !");
}
if ( *((int*) buf) == 13 ) {
printf("Clic contemporaneo sul tasto sinistro e sulla rotellina !");
}
if ( *((int*) buf) == 14 ) {
printf("Clic contemporaneo sulla rotellina e sul tasto destro !");
}
printf("\n");
close(fds[0].fd);
}
return 0;
}