mirror of
https://github.com/yawut/SDL.git
synced 2026-08-20 07:44:03 -05:00
============================================================
This commit is contained in:
@@ -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){
|
||||
if(vendor == 1386 || vendor==1) {
|
||||
|
||||
sprintf(tstr,"/dev/input/event%i",event);
|
||||
sprintf(tstr,"/dev/input/event%i",event);
|
||||
|
||||
SDL_Touch touch;
|
||||
touch.pressure_max = 0;
|
||||
touch.pressure_min = 0;
|
||||
touch.id = 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);
|
||||
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->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);
|
||||
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;
|
||||
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);
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user