Используйте ноутбук трекпад в качестве графического планшета

15

Мне интересно использовать трекпад моего ноутбука в качестве планшета для рисования, то есть использовать абсолютные, а не относительные координаты, как в Inklet для OSX.

Тот же вопрос был задан на сайте ubuntuforums.org в мае 2010 года, но на этот вопрос так и не был дан ответ. Мне интересно, если это было сделано в Linux. Я также пытаюсь выяснить, какие поисковые термины использовать. Я искал «абсолютный режим сенсорной панели для ноутбука» и обнаружил проблему с драйверами трекпада, которые переводили трекпад в абсолютный режим. но я действительно ищу программу, которая использует абсолютные позиции, а не настройки драйвера.

Бартон Читтенден
источник
1
Вы хотите это для Ubuntu, работающего на MacBook? Или вы спрашиваете или способ сделать это с любой трекпад в Ubuntu?
Элия ​​Каган
Я ищу то, что может работать с любым ноутбуком.
Бартон Читтенден
Есть трекпады другими , чем те , в последних MacBooks способны на это? Это похоже на то, что сильно зависит от универсальности самого устройства ввода.
Элия ​​Каган
1
Вы не найдете ни одной программы, способной сделать это. В Mac OS X это также не так, но им удалось скрыть это должным образом (например, переключить режим ввода в зависимости от запущенного приложения). Соответствующий вопрос: как читать абсолютные позиции нажатия с сенсорной панели Cirque в Linux
gertvdijk

Ответы:

8

Посмотрите на драйверы, а не приложения

Вы не найдете программу, которая делает это, потому что из этих трех типов сенсорных панелей драйверы пытаются абстрагироваться в одно представление для приложений:

  • Сенсорные панели, сообщающие данные об абсолютных позициях, переводятся драйвером 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, чтобы иметь возможность считывать абсолютные значения положения сенсорной панели. Основные блокираторы, которые я вижу, состоят в том, что это может быть очень специфично для оборудования и, следовательно, трудно осуществимо.

Я думаю, что беседа с Джо Шоу и Питером Хаттерером также была бы очень полезна, чтобы увидеть, что именно представляет собой история в этой книге, как сделать ее интересной функцией и чего от нее ожидать.

gertvdijk
источник
Это хороший ответ, но здесь мышь просто замерзла ... (12.10)
desgua
@desgua Да, это очень чего-то ожидать. У него нет абсолютных входных значений ...
gertvdijk
1
На всякий случай, если кому-то все еще это интересно, я отправил сообщение
Donarsson
1
ОБНОВЛЕНИЕ: Мой запрос на функцию был отклонен, и сопровождающий заявил, что он «сожалеет о слиянии». Я посмотрю в код и, вероятно, раскошелиться. Если я это сделаю, я опубликую один последний комментарий здесь, чтобы любой, кто заинтересован в нем, мог его увидеть. Извините за спам.
Донарссон
0

Я думаю, это сильно зависит от аппаратного обеспечения. Ваш трекпад должен поддерживать передачу абсолютного положения касания. Обычный трекпад ноутбука работает больше как мышь, предоставляя только информацию о направлении, скорости и ускорении. Поэтому, где бы вы ни касались, он будет двигаться только от текущего направления курсора.

Gladen
источник
1
Это не очень верно. X может читать позиции, поскольку он может определить, на каком краю вы находитесь для прокрутки, например. Я полагаю, что это скорее параметр конфигурации X Input, который мы упускаем.
gertvdijk
Да, это тоже правда ... Я не совсем уверен, как это работает, но я думаю, что реализация в трекпаде все еще слишком
проста,