Появилась необходимость откалибровать сенсорный дисплей EloTouch подключенный по USB к Raspberry Pi с Raspbian на борту. Приступим.
Для начала установим необходимые пакеты из стандартного репозитория.
sudo apt-get install libx11-dev libxext-dev libxi-dev x11proto-input-dev
Скачиваем xinput_calibrator из репозитория, распаковываем и собираем.
wget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gz tar -xzvf xinput_calibrator-0.7.5.tar.gz ./configure make sudo make install
Все готово. Можно запускать xinput_calibrator из Lxterminal (или из bash по ssh с заранее подключенной X сессией командой export DISPLAY=:0.0)
На выходе программы мы получим следующие данные
pi@raspberry ~ $ xinput_calibrator Calibrating EVDEV driver for "EloTouchSystems,Inc Elo TouchSystems 2216 AccuTouch® USB Touchmonitor Interface" id=7 current calibration values (from XInput): min_x=421, max_x=3561 and min_y=598, max_y=3479 Doing dynamic recalibration: Setting new calibration data: 452, 3558, 603, 3445 --> Making the calibration permanent <-- copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' Section "InputClass" Identifier "calibration" MatchProduct "EloTouchSystems,Inc Elo TouchSystems 2216 AccuTouch® USB Touchmonitor Interface" Option "Calibration" "452 3558 603 3445" EndSection
Секцию InputClass нужно поместить в один из конфигурационных файлов и перезагрузить Raspberry Pi
/usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/01-input.conf
Не работает.
У меня резистивный 7″ тачскрин от eGalax. ОС Raspbian. Прочитал множество статей, в том числе эту. Не помогло. Путём долгих и мучительных поисков нашёл своё решение. Весь порядок действий по калибровке изложил в видео:
https://www.youtube.com/watch?v=pChXP9ECa74
Сравнивая с этой статьёй, отмечу что команды до «sudo make install» порядок действий у меня тот же. Дальше начинаются расхождения.
sudo apt-get install xserver-xorg-input-evdev xinput-calibrator -y
// Пакет предоставляет драйвер для устройств ввода, использующих evdev, механизм доставки событий ядра Linux.
// На всякий случай проверьте каталог /etc/X11/xorg.conf.d
// Его либо не должно существовать, либо он должен быть пустым
sudo mv /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
// Переименовываем файл 10-evdev.conf в 45-evdev.conf
// Это нужно, чтобы номер файла настроек evdev был > номера настроек libinput
// Далее редактируем /usr/share/X11/xorg.conf.d/40-libinput.conf
————————————————————-
Section «InputClass»
Identifier «libinput touchscreen catchall»
MatchIsTouchscreen «on»
MatchDevicePath «/dev/input/event*»
Driver «libinput» // заменить на «evdev» !!!
EndSection
// Далее редактируем (если нет файла, создаём) /usr/share/X11/xorg.conf.d/99-calibration.conf
—————————————————————-
Section «InputClass»
Identifier «calibration»
MatchProduct «eGalax Inc. USB TouchController»
Option «Calibration» «0 2000 0 2000»
Option «SwapAxes» «0»
Option «TransformationMatrix» «-1 0 1 0 -1 1 0 0 1»
EndSection
// Опции «Calibration», «SwapAxes», «TransformationMatrix» указаны предварительные значения !!! Подробнее смотри в видео.
// Вводим на рабочем столе Raspberry Pi:
——————————————
xinput_calibrator
// после калибровки получаем 4 числа, которые записываем в файл конфигурации
sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf