тачскрин китайский с таким вот контроллером
Bus 004 Device 004: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Собственно, проблема в том, что пару месяцев назад в гноме отлично работала кинетическая прокрутка и в наутилусе, и в evince, а теперь система не генерирует события прокрутки. Начал копать, набыдлокодил вот для проверки
#include <X11/extensions/XInput2.h>
#include <X11/Xlib.h>
#include <stdio.h>
int main(){
XIDeviceInfo *info;
int ndevices;
int i, j;
Display *display = XOpenDisplay(NULL);
info = XIQueryDevice(display, XIAllDevices, &ndevices);
for (i = 0; i < ndevices; i++)
{
XIDeviceInfo *dev = &info[i];
printf("Device name %s, id=%i\n", dev->name, dev->deviceid);
for (j = 0; j < dev->num_classes; j++)
{
XIAnyClassInfo *class = dev->classes[j];
printf("\t");
switch (class->type){
case XIKeyClass: puts("XIKeyClass"); break;
case XIButtonClass: puts("XIButtonClass"); break;
case XIValuatorClass: puts("XIValuatorClass");
printf("\t\t");
XIValuatorClassInfo *v = (XITouchClassInfo*)class;
printf("num_axes=%i\n", v->type);
printf("\t\tres=%i\n", v->resolution);
break;
case XIScrollClass: puts("XIScrollClass"); break;
case XITouchClass: puts("XITouchClass"); break;
}
XITouchClassInfo *t = (XITouchClassInfo*)class;
if (class->type != XITouchClass)
continue;
printf("%s touch device, supporting %d touches.\n",
(t->mode == XIDirectTouch) ? "direct" : "dependent",
t->num_touches);
}
}
return 0;
}
Собственно, это кастрированный аналог lsinput с выводом информации о классе устройства. Вот что получается:
Device name eGalax Inc. Touch, id=12
XIButtonClass
XIValuatorClass
num_axes=2
res=0
XIValuatorClass
num_axes=2
res=0
Device name eGalax Inc. Touch, id=13
XIButtonClass
XIValuatorClass
num_axes=2
res=0
XIValuatorClass
num_axes=2
res=0
Вопрос такой — с чего это тачскрин стал определяться не как XITouchClass, а как XIValuatorClass?