Commit afe32505 authored by Sam Lantinga's avatar Sam Lantinga

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

parent 90ff13a6
...@@ -38,7 +38,7 @@ X11_InitTouch(_THIS) ...@@ -38,7 +38,7 @@ X11_InitTouch(_THIS)
#ifdef SDL_INPUT_LINUXEV #ifdef SDL_INPUT_LINUXEV
FILE *fd; FILE *fd;
fd = fopen("/proc/bus/input/devices","r"); fd = fopen("/proc/bus/input/devices","r");
char c; char c;
int i = 0; int i = 0;
char line[256]; char line[256];
...@@ -47,46 +47,44 @@ X11_InitTouch(_THIS) ...@@ -47,46 +47,44 @@ X11_InitTouch(_THIS)
while(!feof(fd)) { while(!feof(fd)) {
if(fgets(line,256,fd) <=0) continue; if(fgets(line,256,fd) <=0) continue;
if(line[0] == '\n') { if(line[0] == '\n') {
if(vendor == 1386 || vendor==1){ if(vendor == 1386 || vendor==1) {
sprintf(tstr,"/dev/input/event%i",event); sprintf(tstr,"/dev/input/event%i",event);
SDL_Touch touch; SDL_Touch touch;
touch.pressure_max = 0; touch.pressure_max = 0;
touch.pressure_min = 0; touch.pressure_min = 0;
touch.id = event; touch.id = event;
touch.driverdata = SDL_malloc(sizeof(EventTouchData));
touch.driverdata = SDL_malloc(sizeof(EventTouchData)); EventTouchData* data = (EventTouchData*)(touch.driverdata);
EventTouchData* data = (EventTouchData*)(touch.driverdata);
data->x = -1;
data->x = -1; data->y = -1;
data->y = -1; data->pressure = -1;
data->pressure = -1; data->finger = 0;
data->finger = 0; data->up = SDL_FALSE;
data->up = SDL_FALSE; data->down = SDL_FALSE;
data->down = SDL_FALSE;
data->eventStream = open(tstr,
O_RDONLY | O_NONBLOCK);
data->eventStream = open(tstr, ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr);
O_RDONLY | O_NONBLOCK);
ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr); int abs[5];
ioctl(data->eventStream,EVIOCGABS(0),abs);
int abs[5]; touch.x_min = abs[1];
ioctl(data->eventStream,EVIOCGABS(0),abs); touch.x_max = abs[2];
touch.x_min = abs[1]; touch.native_xres = touch.x_max - touch.x_min;
touch.x_max = abs[2]; ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs);
touch.native_xres = touch.x_max - touch.x_min; touch.y_min = abs[1];
ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs); touch.y_max = abs[2];
touch.y_min = abs[1]; touch.native_yres = touch.y_max - touch.y_min;
touch.y_max = abs[2]; ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs);
touch.native_yres = touch.y_max - touch.y_min; touch.pressure_min = abs[1];
ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs); touch.pressure_max = abs[2];
touch.pressure_min = abs[1]; touch.native_pressureres = touch.pressure_max - touch.pressure_min;
touch.pressure_max = abs[2];
touch.native_pressureres = touch.pressure_max - touch.pressure_min; SDL_AddTouch(&touch, tstr);
SDL_AddTouch(&touch, tstr);
} }
vendor = -1; vendor = -1;
product = -1; product = -1;
...@@ -95,20 +93,20 @@ X11_InitTouch(_THIS) ...@@ -95,20 +93,20 @@ X11_InitTouch(_THIS)
else if(line[0] == 'I') { else if(line[0] == 'I') {
i = 1; i = 1;
while(line[i]) { while(line[i]) {
sscanf(&line[i],"Vendor=%x",&vendor); sscanf(&line[i],"Vendor=%x",&vendor);
sscanf(&line[i],"Product=%x",&product); sscanf(&line[i],"Product=%x",&product);
i++; i++;
} }
} }
else if(line[0] == 'H') { else if(line[0] == 'H') {
i = 1; i = 1;
while(line[i]) { while(line[i]) {
sscanf(&line[i],"event%d",&event); sscanf(&line[i],"event%d",&event);
i++; i++;
} }
} }
} }
close(fd); close(fd);
#endif #endif
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment