Андрей Смирнов
Время чтения: ~12 мин.
Просмотров: 38

Не работает тачпад в Ubuntu 16.04

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

Драйвер тачпада Synaptics TouchPad driver

Драйвер тачпада Synaptics TouchPad driver позволяет изменять различные настройки тачпада (реакцию на одинарное или двойное нажатие, чувствительность, реакцию на движение пальцев — горизонтальную и вертикальную прокрутку и другие).

Чтобы установить драйвер, выполните в консоли команду:

sudo apt-get install xserver-xorg-input-synaptics

Если драйвер у вас уже установлен, тогда появится примерно следующее сообщение:

Чтение списков пакетов... Готово  Построение дерева зависимостей        Чтение информации о состоянии... Готово  Уже установлена самая новая версия xserver-xorg-input-synaptics. ...

Установка программы настройки тачпада GSynaptics

Установим программу GSynaptics. Для этого наберите в консоли:

sudo apt-get install gsynaptics

Теперь, если вы попробуете запустить Gsynaptics, то скорее всего получите следующее предупреждение «GSynaptics couldn’t initialize. You have to set ‘SHMConfig’ ‘true’ in xorg.conf or XF86Config to use Gsynaptics».gsynaptics-error1.jpg

Это связано с тем, что необходимо вначале прописать тачпад в файле xorg.conf и установить опцию SHMConfig в значение true.

Настройка xorg.conf

Файл xorg.conf это конфигурационный файл X-сервера в Linux, он храниться в каталоге /etc/X11. Откройте файл xorg.conf, выполнив команду:

sudo gedit xorg.conf

Содержание файла xorg.conf на разных компьютерах (и системах) может быть несколько различно. Файл xorg.conf состоит из разделов (секций), которые могут идти в любом порядке. Формат секций имеет следующий вид:

Section "Имя секции"    Элементы    Опции    ... EndSection

Нам нужно прописать наш тачпад в файле xorg.conf. Для этого добавьте в файл xorg.conf следующие строки:

Section "InputDevice"    Identifier   "Synaptics Touchpad"    Driver       "synaptics"    Option       "SendCoreEvents"   "true"    Option       "Device"   "/dev/psaux"    Option       "Protocol"   "auto-dev"    Option       "SHMConfig"   "true" EndSection

Мы определили раздел устройства тачпад с именем Synaptics Touchpad, которое использует драйвер synaptics.

После этого нужно добавить в раздел ServerLayout строку:

InputDevice    "Synaptics Touchpad" "SendCoreEvents"

Раздел ServerLayout может и отсутствовать в файле xorg.conf. Но добавлять его нужно аккуратно, так как в нем обобщаются разделы (секции) Screen и InputDevice. Поэтому, если вы создаете раздел ServerLayout, то должны прописать в нем ваши разделы Screen и InputDevice, иначе система не захочет загружать какой-либо драйвер. Вот пример раздела ServerLayout:

Section "ServerLayout"     Identifier        "Layout0"     Screen           0  "Screen0" 0 0     InputDevice    "Synaptics Touchpad" "SendCoreEvents" EndSection

После редактирования файла xorg.conf выйдите и снова войдите в систему, чтобы изменения вступили в силу.

Запуск программы GSynaptics и настройка тачпада

Выполните Система-> Администрирование-> Сенсорная панель. Запустится программа GSynaptics. Программа состоит из четырех вкладок с настройками:

  1. Общие. Здесь вы можете полностью отключить тачпад, а также настроить чувствительность тачпада.
  2. Нажатие. Включение и отключение реакции на нажатие, а также установка времени нажатия.
  3. Прокрутка. Настройка вертикальной и горизонтальной прокрутки при движении пальцем по тачпаду, установка скорости прокрутки.
  4. Acceleration. Установка скорости (чувствительности) движения курсора мыши, при использовании тачпада.

Изменение любых настроек происходит мгновенно.

Synaptics производит отличные тачпады: они отзывчивы, обладают мультитачем и, что самое главное, их можно долго и нудно легко и просто настраивать под свои ловкие пальчики. Вот только одна незадачка: вся эта прелесть прекрасно работает в Windows 7, в то время как в Linux как всегда лишь унылые огрызки, и наполовину не использующие все свои возможности. Бесстрашный Хабраюзер, готов ли ты бороться со вселенской несправедливостью? Тогда добро пожаловать под хабракат, тебя ждет море удовольствия, linux-way и миллионы счастливых кликов на выходе 🙂 По сути надо: скачать скрипт, подправить под себя и добавить в автозагрузку. Правда скучно? Читаем дальше 🙂

Проблема

Примерно год назад, прикупив прекрасный Acer 3810T и вдоволь насладившись наигравшись с Win 7, я с удовольствием перешел на Ubuntu. К сожалению, «железных» проблем прибавилось, но походу они как-то решались (см. ubuntuforums). Однако больше всего (особенно в сравнении с гладкой работой в Win 7) меня раздражала работа тачпада, а именно:

  1. в некоторых случаях недостаточная, а в других чрезмерная чувствительность
  2. «прыгающий» курсор
  3. отсутствие мультитача
  4. невозможность нормально настроить все это

Что же с этим делать? Посмотрим, что нам предлагают стандартные программы, например, в Ubuntu.

Стандартные пути решения

Существует 2 наиболее простых решения этой проблемы: настройка мышки через Mouse Preferences в Gnome и программа gSynaptics. В первом случае настроек кот наплакал (выключать тачпад при наборе текста и разрешить горизонтальный скроллинг? Круто!). gSynaptcs тоже решает только часть проблем (есть циркулярная прокрутка, попытка настроить перемещение курсора и чувствительность), но у меня кстати работает довольно криво и почему-то запоминает не все конфиги. Так что все это не торт. Впрочем, довольно лирики и драматизма. Перейдем к самому интересному!

Решение проблемы

Конфетка

На самом деле Synaptics предлагает ту самую кнопку «сделать ах%?№№0»специальный пакет, с помощью которого можно реализовать мультитач в большинстве популярных дистрибутивов, но только для ОЕМ производителей и меинтейнеров. Возможно, счастье ждет нас в ближайшем будущем, но мы не любим ждать и идем своим (пока единственным) путем. Оговорюсь сразу: решение и конфиг рассматривается в рамках Ubuntu. Нет, вовсе не потому, что «это самая лучшая ОС в мире«. Просто я ее использую 🙂 Всем, кто протестирует в других дистрибутивах и отпишется, шлюхи и блек джек отдельное спасибо!Суть решения в написании скрипта, который через стандартную утилиту xinput каждый раз при загрузке системы будет менять настройки драйвера Synaptics для иксов так, как нам этого хочется. **Решения, найденные в google, оперируют к xorg.conf и HAL, который успешно вырезан из Ubuntu 10.04

Процесс

1. Проверяем, установлен ли пакет xinput 2. Проверяем, установлен ли пакет xserver-xorg-input-synaptics 3. Создаем свой скрипт с настройками или используем мой **Напоминаю, что скрипты у нас как правило в своем имени имеют расширение .sh, начинаются строчкой #!/bin/sh и любят, когда их делают исполняемыми с помощью команды chmod 4. Меняем под себя настройки драйвера в скрипте 5. Добавляем скрипт в автозагрузку (любым удобным способом) Как работают строчки скрипта?

xinput —help

Отличная консольная утилита, позволяющая менять настройки устройств ввода налету. Чтобы посмотреть список всех устройств:xinput list Далее, чтобы посмотреть список параметров конкретного устройства и их значения нужно обращаться к нему по имени или через номер id (лучше уж по имени, когда оно уже известно): xinput list-props "SynPS/2 Synaptics TouchPad" Чтобы изменить значение конкретного параметра: xinput set-int-prop "SynPS/2 Synaptics TouchPad" "имя параметра" #размер значени(я)й в битах# #значения через пробел# Например:xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Jumpy Cursor Threshold" 32 250 — решает проблему «прыгающего» курсораxinput set-int-prop "SynPS/2 Synaptics TouchPad" "Circular Scrolling" 8 1 — разрешает прокрутку «по кругу»Подробно о каждом параметре на сайте X.org В примитивном скрипте можно посмотреть, какие параметры использовал я. Но, как известно, на вкус и цвет…Скачать скрипт Ну вот, вроде все довольны и счастливы. Теперь можно смело рисовать в Photoshop GIMP 😉 Данный алгоритм настройки должен сработать не только для Ubuntu и, возможно, также и для других тачпадов, надо пробовать 😉 К сожалению, мне неизвестно, как настроить такую функцию мультитач, как scale и rotate. Может, кто-то подскажет? Если вам есть, что добавить/поправить, welcome в комментарии. UPD: Спасибо за предложения и пожелания, учтем-с в будущем! UPD2: Где же ты красавец-кодер на своей машинке-коне, который сделает небольшую утилитку для тех, для кого, скажем Ubuntu — ОС действительно для человеческих существ?

Настройка тачпада в Linux (Synaptics TouchPad)Настройка тачпада в Linux предполагает, что драйвер тачпада позволяет делать гораздо больше, чем с ним обычно делают. Например, можно включить или выключить скроллинг двумя пальцами (как вертикальный, так и горизонтальный), включить клик одним, двумя, тремя пальцами по тачпаду, изменить направление скроллинга (если вы, например, привыкли к скроллингу на планшете). Давайте посмотрим, как же можно тонко настроить тачпад, причем из командной строки.

Условия

Прежде всего нужно обговорить, если вы упустили это в заголовке, что речь идет о настройке тачпадов, пожалуй, самого известного производителя — Synaptics. За поддержку тачпадов Synaptics в Debian GNU/Linux отвечает пакет xserver-xorg-input-synaptics. Соответственно, он должен быть установлен. Обычно он ставится по умолчанию, но проверить лишним не будет. Это можно сделать командой

dpkg -l | grep xorg | grep synaptics

И, если такой пакет у вас не установлен, а тачпад Synaptics есть, то этот пакет надо будет поставить командой

sudo apt-get install xserver-xorg-input-synaptics

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

Программа synclient

Эта программа — основной инструмент тонкой настройки сенсорной панели (тачпада) Synaptics. Synclient использует интерфейс командной строки, формат команды следующий:

synclient [-h] [-l] [-V] [-?] [var1=value1 [var2=value2] ...]

Как видите, длинных (GNU) опций нет, только короткие (Posix), и то совсем немного.

-h, -? Вывод справки
-V Вывод версии программы
-l Вывод всех используемых опций и их значений
var1=value1 Задать опции с названием var1 ее новое значение value1. Программа может в одной строке принимать сразу много разных опций. После названия переменной перед знаком равенства и после знака равенства пробелов быть не должно

Опции и их назначение

Вот список доступных опций с описанием:

LeftEdge Координаты левой стороны тачпада
RightEdge Координаты правой стороны тачпада
TopEdge Координаты верхней стороны тачпада
BottomEdge Координаты нижней стороны тачпада
FingerLow Минимальная степень нажатия. Если давление становится ниже, чем указанное, считается, что произошло отпускание
FingerHigh Максимальная степень нажатия. Если давление стало выше указанного, значит произошло нажатие
MaxTapTime Таймаут, до истечения которого касание считается одиночным нажатием. После истечения интервала считается, что происходит удержание
MaxTapMove Максимальное движение пальца, допустимое при клике по тачпаду. Его значение отбрасывается и не считается перемещением.
MaxDoubleTapTime Аналогично MaxTapTime, но для двойного клика
SingleTapTimeout Когда вы делаете одно касание, в течение данного таймаута ожидается, что последует следующее касание. Если в течение указанного временного интервала повторное касание не произошло, считается, что произошло одно касание
ClickTime Продолжительность клика. То есть, длительность касания, интервал времени, в течение которого засчитывается клик, если вы в пределах этого интервала коснулись, а затем подняли палец
EmulateMidButtonTime Интервал времени, в течение которого обрабатывается нажатие на среднюю кнопку мыши, которое может быть настроено на нажатие одним, двумя или тремя пальцами
EmulateTwoFingerMinZ Минимальный уровень давление, который будет определен как касание двумя пальцами
EmulateTwoFingerMinW Минимальное расстояние между точками нажатия, которое будет определено как касание двумя пальцами
VertScrollDelta Расстояние, на которое надо передвинуть палец для вертикального скроллинга
HorizScrollDelta Расстояние, на которое надо передвинуть палец для горизонтального скроллинга
VertEdgeScroll Включить вертикальный скроллинг при проведении пальцем вдоль правого края тачпада (1 — включить, 0 — выключить)
HorizEdgeScroll Включить горизонтальный скроллинг при проведении пальцем вдоль верхнего края тачпада (1 — включить, 0 — выключить)
CornerCoasting Опция, которая используется при скроллинге проведением пальца вдоль правой стороны тачпада. Она определяет, использовать ли продолжение скроллинга после того, как палец дошел до правого нижнего угла.
VertTwoFingerScroll Включить вертикальный скроллинг двумя пальцами (1 — включить, 0 — выключить)
HorizTwoFingerScroll Включить горизонтальный скроллинг двумя пальцами (1 — включить, 0 -выключить)
MinSpeed Минимальная скорость движения курсора
MaxSpeed Максимальная скорость движения курсора. Если максимальная скорость равна минимальной, то ускорения движения курсора не будет
AccelFactor Коэффициент ускорения курсора. Чем он больше, тем быстрее скорость увеличивается с минимальной до максимальной
TouchpadOff Выключить тачпад (0 — тачпад включен, 1 — тачпад выключен, любые значения больше 1 — включено только перемещение курсора)
LockedDrags При перетаскивании касаниями (tap-and-drag), если эта опция выставлена в 1, отпускание кнопки мыши происходит только после дополнительного клика. Это позволяет отрывать палец от поверхности тачпада до окончания перетаскивания
LockedDragTimeout Опция, определяющая, по истечении какого временного интервала после отрывания пальца от тачпада автоматически закончить перетаскивание касаниями.
RTCornerButton Какую кнопку мыши эмулировать при нажатии на правый верхний угол тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
RBCornerButton Какую кнопку мыши эмулировать при нажатии на правый нижний угол тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
LTCornerButton Какую кнопку мыши эмулировать при нажатии на левый верхний угол тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
LBCornerButton Какую кнопку мыши эмулировать при нажатии на левый нижний угол тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
TapButton1 Какую кнопку мыши эмулировать при касании одним пальцем не у края тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
TapButton2 Какую кнопку мыши эмулировать при касании двумя пальцами не у края тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
TapButton3 Какую кнопку мыши эмулировать при касании тремя пальцамине у края тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
ClickFinger1 Какую кнопку мыши эмулировать при касании одним пальцем в левой стороне тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
ClickFinger2 Какую кнопку мыши эмулировать при касании двумя пальцами в левой стороне тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
ClickFinger3 Какую кнопку мыши эмулировать при касании тремя пальцами в левой стороне тачпада (0 — отключено, 1 — левая кнопка, 2 — средняя кнопка, 3 — правая кнопка)
CircularScrolling Интересная возможность — круговая прокрутка. Это работает следующим образом: вы делаете круговые движения по тачпаду, и таким образом заменяете прокрутку колесиком мыши. По часовой стрелке — прокрутка вниз, против часовой стрелки — прокрутка вверх. 0 — выключено, 1 — включено
CircScrollDelta Угол смещения пальца относительно центра тачпада при прохождении которого генерируется такое же системное событие, как при прокрутке колесика на одно деление
CircScrollTrigger
CircularPad Если эта опция выставлена в 1, то область тачпада определяется не как прямоугольник, а как эллипс, вписанный в стороны тачпада
PalmDetect Определять нажатие ладонью. Эта опция полезна, когда вы печатаете на клавиатуре и случайно нажимаете частью ладони на тачпад. Если она включена, то при нажатии на большую площадь движение курсора будет выключено. 0 — выключено, 1 — включено
PalmMinWidth Минимальная ширина касания, при которой касание будет определено как касание ладонью.
PalmMinZ Минимальное давление, при котором будет определено касание ладонью
CoastingSpeed Скорость, с которой должны генерироваться события скроллинга, чтобы поддерживалось продолжение скроллинга при достижении пальцем стороны тачпада
CoastingFriction Количество событий скроллинга делёное на секунду в квадрате, на которые будет снижаться скорость скроллинга при достижении стороны тачпада
PressureMotionMinZ Минимальное давление пальца на тачпад, при котором будет происходить определение движения по тачпаду
PressureMotionMaxZ Максимальное давление на тачпад, при котором будет определяться движение пальцем по тачпаду
PressureMotionMinFactor Минимальный множитель усиления коэффициента давления при определении движения пальцем
PressureMotionMaxFactor Максимальный множитель усиления коэффициента давления при определении движения пальцем
GrabEventDevice Эта опция имеет смысл только при использовании событий устройств в ядре linux 2.6. При использовании других протоколов эта опция игнорируется. Если опция выставлена в 1, драйвер будет эксклюзивно захватывать устройство для обработки событий с него.
TapAndDragGesture Включить перетаскивание при помощи двойного касания (первое короткое, второе постоянное) аналогично перетаскиванию левой кнопкой мыши (0 — выключено, 1 — включено)
AreaLeftEdge Координата с левой стороны, любые движения и клики слева от которой
AreaRightEdge Включить (1) или выключить (0) область вдоль правой стороны тачпада
AreaTopEdge Включить (1) или выключить (0) область вдоль верхней стороны тачпада
AreaBottomEdge Включить (1) или выключить (0) область вдоль нижней стороны тачпада
HorizHysteresis Минимальное аппаратное расстояние по горизонтали, необходимое для генерации события движения. Может указываться в процентах
VertHysteresis Минимальное аппаратное расстояние по вертикали, необходимое для генерации события движения. Может указываться в процентах
ClickPad Является ли устройство клик-падом, то есть панелью без аппаратных кнопок

Сохранение настроек

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

Вот как это сделать в LXDE. Создаем скрипт /home/user/bin/touchpad следующего содержания:

#!/bin/bash  synclient TapButton1=1 TapButton2=3 TapButton3=2 PalmDetect=1

После этого создаем файл /home/user/.config/autostart/touchpad.desktop

[Desktop Entry]  Name=Touchpad  GenericName=Touchpad settings  Exec=/home/user/bin/touchpad  Terminal=false  Type=Application  StartupNotify=false

И при входе в систему настройки тачпада должны подгрузиться автоматически.

Используемые источники:

  • https://pingvinus.ru/note/synaptics-touchpad-driver
  • https://habr.com/post/101085/
  • https://mnorin.com/nastrojka-tachpada-v-linux.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации