Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

============================================================

  • Loading branch information
slouken committed Sep 28, 2011
1 parent 4a98254 commit 29bb8ec546cfa313c6a94d3669d408029effb566
Showing with 45 additions and 47 deletions.
  1. +45 −47 src/video/x11/SDL_x11touch.c
@@ -38,7 +38,7 @@ X11_InitTouch(_THIS)
#ifdef SDL_INPUT_LINUXEV
FILE *fd;
fd = fopen("/proc/bus/input/devices","r");

char c;
int i = 0;
char line[256];
@@ -47,46 +47,44 @@ X11_InitTouch(_THIS)
while(!feof(fd)) {
if(fgets(line,256,fd) <=0) continue;
if(line[0] == '\n') {
if(vendor == 1386 || vendor==1){

sprintf(tstr,"/dev/input/event%i",event);

SDL_Touch touch;
touch.pressure_max = 0;
touch.pressure_min = 0;
touch.id = event;


touch.driverdata = SDL_malloc(sizeof(EventTouchData));
EventTouchData* data = (EventTouchData*)(touch.driverdata);

data->x = -1;
data->y = -1;
data->pressure = -1;
data->finger = 0;
data->up = SDL_FALSE;
data->down = SDL_FALSE;


data->eventStream = open(tstr,
O_RDONLY | O_NONBLOCK);
ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr);

int abs[5];
ioctl(data->eventStream,EVIOCGABS(0),abs);
touch.x_min = abs[1];
touch.x_max = abs[2];
touch.native_xres = touch.x_max - touch.x_min;
ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs);
touch.y_min = abs[1];
touch.y_max = abs[2];
touch.native_yres = touch.y_max - touch.y_min;
ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs);
touch.pressure_min = abs[1];
touch.pressure_max = abs[2];
touch.native_pressureres = touch.pressure_max - touch.pressure_min;

SDL_AddTouch(&touch, tstr);
if(vendor == 1386 || vendor==1) {

sprintf(tstr,"/dev/input/event%i",event);

SDL_Touch touch;
touch.pressure_max = 0;
touch.pressure_min = 0;
touch.id = event;

touch.driverdata = SDL_malloc(sizeof(EventTouchData));
EventTouchData* data = (EventTouchData*)(touch.driverdata);

data->x = -1;
data->y = -1;
data->pressure = -1;
data->finger = 0;
data->up = SDL_FALSE;
data->down = SDL_FALSE;

data->eventStream = open(tstr,
O_RDONLY | O_NONBLOCK);
ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr);

int abs[5];
ioctl(data->eventStream,EVIOCGABS(0),abs);
touch.x_min = abs[1];
touch.x_max = abs[2];
touch.native_xres = touch.x_max - touch.x_min;
ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs);
touch.y_min = abs[1];
touch.y_max = abs[2];
touch.native_yres = touch.y_max - touch.y_min;
ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs);
touch.pressure_min = abs[1];
touch.pressure_max = abs[2];
touch.native_pressureres = touch.pressure_max - touch.pressure_min;

SDL_AddTouch(&touch, tstr);
}
vendor = -1;
product = -1;
@@ -95,20 +93,20 @@ X11_InitTouch(_THIS)
else if(line[0] == 'I') {
i = 1;
while(line[i]) {
sscanf(&line[i],"Vendor=%x",&vendor);
sscanf(&line[i],"Product=%x",&product);
i++;
sscanf(&line[i],"Vendor=%x",&vendor);
sscanf(&line[i],"Product=%x",&product);
i++;
}
}
else if(line[0] == 'H') {
i = 1;
while(line[i]) {
sscanf(&line[i],"event%d",&event);
i++;
sscanf(&line[i],"event%d",&event);
i++;
}
}
}

close(fd);
#endif
}

0 comments on commit 29bb8ec

Please sign in to comment.