Danke für die Aufklärung
Hab deine Tips mal umgesetzt und noch alles etwas verschönert. Denke so kann mans vorsichtig mal ne Beta nennen *g*
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(int argc, char *argv[]){
char *device = "/dev/input/mice";
FILE *fmouse;
char b[3];
if(argc>1){
if(strcmp(argv[1],"-?")==0 || argc > 2){
printf("Usage:\nmousereader [device]\t(default is /dev/input/mice)\n");
printf("Format:\nlb;mb;rb;xd;yd\t(left-,middle-,right mousebutton, x delta, y delta)\n");
return 0;
}else{
device = argv[1];
}
}
fmouse = fopen(device,"r");
if(fmouse==NULL){
printf("Could not open device '%s'. Check permissions!\n",device);
return 0;
}
int xd=0,yd=0; //x/y movement delta
int xo=0,yo=0; //x/y overflow (out of range -255 to +255)
int lb=0,mb=0,rb=0; //left/middle/right mousebutton
while(1){
fread(b,sizeof(char),3,fmouse);
lb=(b[0]&1)>0;
rb=(b[0]&2)>0;
mb=(b[0]&4)>0;
xo=(b[0]&64)>0;
yo=(b[0]&128)>0;
xd=b[1];
yd=b[2];
//printf("lb=%d rm=%d mb=%d xo=%d yo=%d xd=%d yd=%d\n",lb,rb,mb,xo,yo,xd,yd);
printf("%d;%d;%d;%d;%d\n",lb,mb,rb,xd,yd);
usleep(10);
}
//fclose(fmouse);
}
Isses schlimm das es ne endlosschleife is und man es manuell killen muss? muss/sollte man da noch explizit auf signale reagieren und das fclose dann doch noch irgendwie ausführen oder so? kenn mich da noch nich so jut aus :-/
Lesezeichen