LINUX.ORG.RU

Помогите разобраться с тачскрином eGalax


0

0

Подобный вопрос уже поднимался, но с несколько другим акцентом. Отсылать меня читать чужие посты не нужно уже просмотрел достаточное количество... Нужен совет специалиста.

Если коротко, есть девайс devkit8000 с ним в комплекте 7" lcd с тачскрином. Написана программа на qt, которая работает через tslib. Появилась необходимость подключить другой тачскрин eGalax USB. Драйвер нового тачскрина живой (/dev/input/event3).

root@DevKit8000:/proc/bus/input# cat /proc/bus/input/devices          
I: Bus=0019 Vendor=0001 Product=0001 Version=0003
N: Name="omap_twl4030keypad"
P: Phys=omap_twl4030keypad/input0
S: Sysfs=/class/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: EV=100003
B: KEY=78000000 10004ffc

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="gpio-keys"
P: Phys=gpio-keys/input0
S: Sysfs=/class/input/input1
U: Uniq=
H: Handlers=event1 
B: EV=3
B: KEY=100000 0 0 0 0 0 0 0 0

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="ADS784x Touchscreen"
P: Phys=spi2.0/input0
S: Sysfs=/class/input/input2
U: Uniq=
H: Handlers=mouse0 event2 
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003

I: Bus=0003 Vendor=0eef Product=0001 Version=0112
N: Name="eGalax Inc. Touch"
P: Phys=usb-ehci-omap.0-1.1/input0
S: Sysfs=/class/input/input3
U: Uniq=
H: Handlers=mouse1 event3 
B: EV=1b
B: KEY=401 0 30000 0 0 0 0 0 0 0 0
B: ABS=f
B: MSC=10
Если открыть из системы все замечательно:
root@DevKit8000:/proc/bus/input# cat /dev/input/event3 | hexdump
0000000 32b2 497f b417 000d 0004 0004 0042 000d
0000010 32b2 497f b435 000d 0001 014a 0001 0000
0000020 32b2 497f b435 000d 0003 0002 0505 0000
0000030 32b2 497f b454 000d 0003 0003 044c 0000
...
Однако все попытки приколхозить его к tslib заканчиваются ничем. Саму либу пересобирал уже неоднократно (на всякий случай), естественно безрезультатно.

ts.conf:

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

profile:

#export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_TSDEVICE=/dev/input/event3
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

umask 022

#export QWS_MOUSE_PROTO="Tslib:/dev/input/touchscreen0"
export QWS_MOUSE_PROTO="Tslib:/dev/input/event3"

Закомментированные строки соответствуют рабочему варианту для touchscreen0.

А да чуть не забыл tslib пишет следующее 'selected device is not a touchscreen I understand'. При контроле версии драйвера либа кроме всего прочего проверят

if (! ((ioctl(ts->fd, EVIOCGVERSION, &version) >= 0) &&
		(version == EV_VERSION) &&
		(ioctl(ts->fd, EVIOCGBIT(0, sizeof(bit) * 8), &bit) >= 0) &&
		(bit & (1 << EV_ABS)) &&
		(ioctl(ts->fd, EVIOCGBIT(EV_ABS, sizeof(absbit) * 8), &absbit) >= 0) &&
		(absbit & (1 << ABS_X)) &&
		(absbit & (1 << ABS_Y)) && (absbit & (1 << ABS_PRESSURE)))) {
		fprintf(stderr, "selected device is not a touchscreen I understand\n");
		return -1;
	}

так вот для моего драйвера ABS_PRESSURE не поддерживается.

Вариантов почему не работает вроде бы должно быть немного, напрашиваются: смена драйвера, патч tslib`ы, смена TSLIB_TSEVENTTYPE на совместимый с интерфейсом драйвера, ну и просто банальные ошибки в настройке.

Вроде все должно быть нормально но нет. (

Если кто сможет что присоветовать буду признателен.

WBR, Alexey


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