Подивіться на драйвери, а не на додатки
Ви не знайдете програму, яка робить це, тому що з цих трьох типів тачпадів драйвери намагаються абстрагуватися до єдиного представлення додаткам:
- Тачпад, що повідомляє дані про абсолютні позиції, драйвер 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 замість синаптики, ви втрачаєте здатність прокручувати двома пальцями, натискати тощо.
Підсумок: створити запит на функцію
Я бачу місце для запиту на функцію у висхідній програмі виправлення помилок для драйвера synaptics (і, можливо, інших). Було б дуже корисно мати інтерфейс у Xorg, щоб можна було зчитувати абсолютні значення положення тачпада. Основні блокатори, які я бачу, - це те, що це може бути дуже специфічним для обладнання, а тому важко реалізувати.
Я думаю, що розмова з Джо Шоу та Пітером Хаттерером також може мати велике значення для того, щоб побачити, яка саме історія в цьому, як зробити це великим запитом на особливості та чого від нього очікувати.