LINUX.ORG.RU

неправильно определяется тачскрин

 egalax, ,


1

1

тачскрин китайский с таким вот контроллером

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?

★★★★★

Может это следствие какого-нибудь XInput2 с мультитачем, о котором так много говорили???

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Просто я не понимаю — тачскрин же должен (в идеале) определяться как touch-устройство, в моем случае — с одной точкой касания (в структуре XITouchClassInfo есть поле с количеством точек).

Мне не совсем понятно, откуда иксы берут инфу о том, к какому классу отнести тот или иной девайс.

demidrol ★★★★★
() автор топика
Ответ на: комментарий от demidrol

Это случаем не на acer w500 планшете тач? Не подскажешь, драйвер родной ставил с сайта egalax или который в ядре?

cxz
()
Ответ на: комментарий от cxz

неа, этот тот, что с dealextreme для епцшки. Нормально работает и проприетарный драйвер, и обычный usb hid. Причем даже завелась эмуляция нажатия третьей кнопки мыши настройками evdev.

demidrol ★★★★★
() автор топика
Ответ на: комментарий от demidrol

Что за драйвер, evdev?

Что за прокрутка? Это функция evdev? Или это фича gtk?

Где твои настройки evdev? Может быть в настройках просто не включен скроллинг?

Надо яснее проблему обозначать, а не городить огород из «чегой-то не то определяется».

Radius ★★★★
()
Ответ на: комментарий от Radius

Драйвер, конечно, evdev.

Что за прокрутка?

называется kinetic scrolling, появилась в gtk начиная с какой-то там версии

Где твои настройки evdev

нет никаких настроек, только то, что автоматом определяют иксы

чегой-то не то определяется

я четко обозначил проблему — почему иксы не определяют тачскрин именно как сенсорное устройство, и задал начальные условия.

demidrol ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.