Функционал программы autocalibrator
Программа запускается после старта X-сервера. При запуске программа проверяет текущие настройки устройств вывода, и если к ним применены какие-нибудь коэффициенты трансформации (поворот, отражение, масштабирование, сдвиг), рассчитывает матрицы трансформации для устройств ввода, и применяет их. В дальнейшем программа остается в памяти и следит за изменениями экрана. В каждом случае применения трансформации к экрану, она применяет коэффициенты к устройствам ввода. Соответствие устройств ввода и вывода берется из файла /opt/current_config.sh. Файл можно переназначить при помощи ключа -c. Так же из этого файла берутся и применяются Данные калибровки. Если в файле изменились данные, можно заставить программу перечитать настройки, послав сигнал SIGUSR1.
Перечень параметров в файле конфигурации:
MON[#]=OUTNAME — наименование устройства вывода для экрана с заданным номером, например: MON1=DVI-I-1
MON[#]_TOUCH=DEVID — идентификатор устройства ввода, соответствующего монитору с заданным номером. Может цифровым идентификатором устройства, а также именем устройства, как оно отображается в списке xinput. Например: MON1_TOUCH=15 или MON1_TOUCH=»ELAN Touchscreen».
MON[#]_TOUCHAXYS — перечень значений осей калибровки тач-скрина, разделенный двоеточием. Например: MON1_TOUCHAXYS=»0,23767,0,32767,0,false,false,false». Последние 3 параметра — поменять оси X и Y местами (иногда случается на мелких тачах), инвертировать ось X, инвертировать ось Y. Если 1 — поменять местами.
Соответственно, если коэффициенты к устройствам ввода применяются сразу после применения трансформации геометрии экрана, то калибровать эти устройства можно сразу после этого. Калибратор будет получать координаты мыши так, будто он работает на единственном экране в своем оригинальном неперевернутом режиме. В связи с эти также пришлось опять убрать из патча xinput_calibrator добавление координат к щелчку мыши, т. к. в этом случае координаты уже пересчитаны.
С ключом -d уходит в режим демона. Без ключа можно отлаживаться. На экран должны выводиться сообщение при применении параметров экрана.
Матрица трансформации координат
Zoom
Ограничение перемещения курсора в пределах левой половины сенсорного дисплея.

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 0.5 0 0 0 1 0 0 0 1
Ограничение перемещения курсора в пределах верхней половины сенсорного дисплея.

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 1 0 0 0 0.5 0 0 0 1
Назначение перемещения курсора в левую половину сенсорного дисплея.

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 2 0 0 0 1 0 0 0 1
Назначение перемещения курсора в верхнюю половину сенсорного дисплея.

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 1 0 0 0 2 0 0 0 1
Translation
Сдвиг курсора вправо на половину ширины сенсорного экрана.

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 1 0 0.5 0 1 0 0 0 1
Сдвиг курсора влево на половину ширины сенсорного экрана.

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 1 0 -0.5 0 1 0 0 0 1
Сдвиг курсора вниз на половину высоты сенсорного экрана..

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 1 0 0 0 1 0.5 0 0 1
Сдвиньте курсор вверх на половину высоты сенсорного экрана..

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 1 0 0 0 1 -0.5 0 0 1
Zoom x Translation
Например, если мы хотим, чтобы центральная четверть сенсорного экрана использовалась для перемещения курсора по всему экрану..

эквивалентно

эквивалентно

$ xinput set-prop ‘<device name>’ ‘Coordinate Transformation Matrix’ 2 0 -0.5 0 2 -0.5 0 0 1
Режим масштабирования
Сенсорный дисплей может поддерживать четыре различных режима: «Нет», «Полный», «По центру» и «Полное соотношение сторон».
pw =предпочтительная ширинаph =предпочтительная высота(Предпочтительное разрешение сенсорного экрана.)sw =ширина экранаsh =высота экрана(Виртуальный экранX Window System.)dw =ширина дисплеяdh =высота дисплеяdx =Ось X дисплеяdy =Ось Y дисплея(Фактическое разрешение и расположение сенсорного экрана.)
Режим ‘None’
Поведение не определено. Оно может работать как в режиме «Полный» или «Центрированный».
Режим ‘Полный’

эквивалентно

Режим ‘По центру’

эквивалентно

эквивалентно

Режим ‘Полное соотношение сторон’
(левая и правая стороны пустые)

эквивалентно

эквивалентно

Вращение
$ xrandr -o left

$ xrandr -o right

$ xrandr -o inverted

Отражение
$ xrandr -x

$ xrandr -y




