LINUX.ORG.RU

Проблема с настройкой touchscreen через udev


0

1

Всем доброго времени суток!
Возникла небольшая проблемка с настройкой touchscreen устройства. В наличии имеется скрипт для калибровки экрана:
touchscreen.sh

#!/bin/sh
xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axes Swap" 8 1
xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axis Calibration" 32 71 1881 138 1860

echo "123" >> /home/ozzy/Desktop/test

Если его просто запустить, то все работает отлично. Но необходимо автоматически выполнять этот скрипт при каждом подключении девайса. Для чего было созданно правило:
/etc/udev/rules.d/99-touchscreen.rules

SUBSYSTEM=="input" ACTION=="add", ATTR{name}=="eGalax Inc. USB TouchController", RUN+="/home/ozzy/Desktop/touchscreen.sh"

По появлению на рабочем столе фалика «test», при подключении устройства, можно судить, что скрипт отрабатывает, но команды xinput не работают.

Система: Ubuntu 10.10. Как быть?


В начало скрипта запишите:
exec >/home/ozzy/Desktop/log 2>&1
set -x

И внимательно изучите содержимое файла «log».

Наверняка xinput не может подключиться к X-серверу. Ему следует помочь, дописав export DISPLAY=:0 в начало скрипта, а в автозапуск x-сессии добавив «xhost +».

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

Действительно, проблема с X-сервером. Вот что пишет лог:

+ export Display=:0
+ xinput set-int-prop eGalax Inc. USB TouchController Evdev Axes Swap 8 1
Unable to connect to X server
+ xinput set-int-prop eGalax Inc. USB TouchController Evdev Axis Calibration 32 71 1881 138 1860
Unable to connect to X server
+ echo 123

Так, с «export Display=:0» все понятно, но возник глупый вопрос: как добавить в автозапуск x-сессии «xhost +»? :)

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

> export Display=:0
Неправильно, DISPLAY, а не Display.

как добавить в автозапуск x-сессии «xhost +»?

Найти в настройках DE функцию «автозапуск» и добавить туда новую команду.

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

Надо закинуть симлинк на скрипт в ~/.config/autostart

А вообще, это не совсем правильный метод. С драйвером тачскрина должен поставляться калибровщик, который один раз пишет оффсеты в некий файл (по дефолту вроде /var/lib/eeti.param), который потом читается драйвером при старте иксов.

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

Добавил xhost + в автозапуск. Появился файл: /home/ozzy/.config/autostart/xhost.desktop

Display заменил на DISPLAY. Пепезагрузил систему. Теперь в лог файл пишется:

+ export DISPLAY=:0
+ xinput set-int-prop eGalax Inc. USB TouchController Evdev Axes Swap 8 1
unable to find device eGalax Inc. USB TouchController
+ xinput set-int-prop eGalax Inc. USB TouchController Evdev Axis Calibration 32 71 1881 138 1860
unable to find device eGalax Inc. USB TouchController
+ echo 123

Драйверов и соответвенно утилит дополнительных нет, да и нужны ли они, если все можно настроить и так? Главное сейчас настроить чтобы все работало автоматически и жизнь, как говориться, удалась :)

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

Странно, но все устройства, кроме тачскрина видит...

+ export DISPLAY=:0
+ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Sysgration USB Laser Mouse              	id=11	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ Villem                                  	id=9	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]
    ↳ HP WMI hotkeys                          	id=14	[slave  keyboard (3)]
+ xinput set-int-prop eGalax Inc. USB TouchController Evdev Axes Swap 8 1
unable to find device eGalax Inc. USB TouchController
+ xinput set-int-prop eGalax Inc. USB TouchController Evdev Axis Calibration 32 71 1881 138 1860
unable to find device eGalax Inc. USB TouchController

А вот так выглядит список, если из консоли, руками, запустить:

$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Sysgration USB Laser Mouse              	id=11	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer  (2)]
⎜   ↳ eGalax Inc. USB TouchController         	id=10	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ Villem                                  	id=9	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]
    ↳ HP WMI hotkeys                          	id=14	[slave  keyboard (3)]

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

Не помогло. Даже если 30 сек поставить...

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