Посмотрите на драйверы, а не приложения
Вы не найдете программу, которая делает это, потому что из этих трех типов сенсорных панелей драйверы пытаются абстрагироваться в одно представление для приложений:
- Сенсорные панели, сообщающие данные об абсолютных позициях, переводятся драйвером Xorg в относительное перемещение приложений. Обычное приложение не может напрямую взаимодействовать с сенсорной панелью (по замыслу), поэтому вам действительно нужно искать решение в драйвере.
- Сенсорные панели, поддерживающие как относительный, так и абсолютный режимы, нуждаются в переключении режимов, что очень зависит от аппаратного обеспечения и не зависит от приложения.
- Некоторые более простые сенсорные панели не имеют возможности сообщать об абсолютных позициях.
К сожалению, даже если у вас есть тачпад, способный отображать все абсолютные значения, большинство драйверов тачпада не позволяют использовать их в приложениях Linux. Абсолютные данные действительно есть, поскольку водитель может определить, касаетесь ли вы их, например, по краям для прокрутки. Проверьте это для себя, используя evtest
в виртуальном терминале (чтобы приостановить X). Моя сенсорная панель Synaptics сообщает об абсолютных позициях следующим образом:
Event type 3 (EV_ABS)
Event code 0 (ABS_X)
Value 3332
Min 1472
Max 5648
Fuzz 8
Resolution 39
Event code 1 (ABS_Y)
Value 2017
Min 1408
Max 4806
Fuzz 8
Resolution 79
Возможность фактического перевода устройства Synaptics в абсолютный режим в Xorg была недавно удалена этим коммитом в xf86-input-synaptics
драйвере:
Remove absolute mode
Moving a touchpad in absolute mode is unusual - touchpads are disconnected
from the output device, so direct interaction is hard. There appears to be
little usage of it (I haven't seen bug reports from people claiming to use
it). Joe Shaw, author of the code and only known user doesn't have a use for
it anymore, so purge it from the repo.
Базовый драйвер для всей системы: evdev
Единственный способ, которым я вижу, что это возможно в данный момент в Linux, это использование evdev
драйвера в Xorg. Это обсуждалось еще в 2010 году в списке рассылки Xorg (выдержка ниже):
Я должен получить абсолютное положение пальца на сенсорной панели, а не просто относительное движение.
драйвер synaptics этого не делает, а драйвер evdev делает. Поэтому вам нужно настроить X-сервер так, чтобы вместо него использовался драйвер evdev для сенсорной панели. Следующий фрагмент конфигурации сделает это за вас, если вы используете сервер 1.8 или более поздней версии.
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Сохраните это как /etc/X11/xorg.conf.d/99-evdev-touchpad.conf
и перезапустите сервер. Обратите внимание, что это только меняет поведение самой сенсорной панели, но не данные в событиях, но опять же, эти данные всегда являются абсолютными. Кроме того, используя evdev вместо синаптики, вы теряете возможность прокрутки двумя пальцами, постукивания и т. Д.
Итог: создайте запрос функции
Я вижу место для запроса функции в восходящем багтрекере для драйвера синапсов (и, возможно, других). Было бы очень полезно иметь интерфейс в Xorg, чтобы иметь возможность считывать абсолютные значения положения сенсорной панели. Основные блокираторы, которые я вижу, состоят в том, что это может быть очень специфично для оборудования и, следовательно, трудно осуществимо.
Я думаю, что беседа с Джо Шоу и Питером Хаттерером также была бы очень полезна, чтобы увидеть, что именно представляет собой история в этой книге, как сделать ее интересной функцией и чего от нее ожидать.