Touchpad Synaptics (Русский) - ArchWiki

Jump to content

# Touchpad Synaptics (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Touchpad Synaptics. Дата последней синхронизации: 17 декабря 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Xorg (Русский)

Эта статья описывает установку и настройку Synaptics input driver для тачпадов Synaptics (и ALPS), установленных на многих ноутбуках.

Важно: xf86-input-synaptics больше не обновляется активно. По возможности используйте libinput. Впрочем, есть причины, по котором xf86-input-synaptics всё ещё может быть более предпочтителен; смотрите [1] и [2].
Примечание: Если вы хотите настраивать тачпад через GNOME Settings, нужно использовать libinput. [3]

## Установка

Драйвер Synaptics можно установить с помощью пакета xf86-input-synaptics.

## Настройка

Основной способ конфигурации тачпада - через настройку файла сервера Xorg. После установки xf86-input-synaptics, файл с настройками по умолчанию находится в `/usr/share/X11/xorg.conf.d/70-synaptics.conf`. Пользователь может скопировать этот файл в `/etc/X11/xorg.conf.d/` и отредактировать под своё специфичное устройство. Для получения списка всех доступных опций, необходимо обратиться к synaptics(4) man-руководства. Специфичные для текущей машины опции можно узнать с помощью #Synclient.

### Часто используемые опции

Следующий листинг удовлетворит потребности большинства пользователей. При использовании данной конфигурации включается вертикальная, горизонтальная и круговая прокрутка:

    /etc/X11/xorg.conf.d/70-synaptics.conf

    Section "InputClass"
        Identifier "touchpad"
        Driver "synaptics"
        MatchIsTouchpad "on"
            Option "TapButton1" "1"
            Option "TapButton2" "3"
            Option "TapButton3" "2"
            Option "VertEdgeScroll" "on"
            Option "VertTwoFingerScroll" "on"
            Option "HorizEdgeScroll" "on"
            Option "HorizTwoFingerScroll" "on"
            Option "CircularScrolling" "on"
            Option "CircScrollTrigger" "2"
            Option "EmulateTwoFingerMinZ" "40"
            Option "EmulateTwoFingerMinW" "8"
            Option "CoastingSpeed" "0"
            Option "FingerLow" "30"
            Option "FingerHigh" "50"
            Option "MaxTapTime" "125"
            ...
    EndSection

Синтаксис: Система будет думать, что это именно эта кнопка: (если ей соответствует код) код можно узнать с помощью команды xev.

- TapButton1: (1) определяет клик одним пальцем как левую кнопку мыши
- TapButton2: (3) определяет клик двумя пальцами как правую кнопку мыши
- TapButton3: (2) определяет клик тремя пальцами как среднюю кнопку мыши
- RBCornerButton: (целое число) определяет, какой кнопке мыши соответствует реакция на клик в правом нижнем углу тачпада (ислользуйте Option "RBCornerButton" "3" для имитации клика правой кнопки мыши при касании правого нижнего угла тачпада). См. man synaptics для назначения кнопок на другие углы.
- RTCornerButton: (целое число) аналогично для правого верхнего угла
- VertEdgeScroll: (on/0) включает вертикальную прокрутку при скольжении пальцем вдоль правого края тачпада.
- HorizEdgeScroll: (on/0) включает горизонтальную прокрутку при скольжении пальцем вдоль нижнего края тачпада.
- VertTwoFingerScroll: вертикальная прокрутка двумя пальцами
- HorizTwoFingerScroll: горизонтальная прокрутка двумя пальцами
- EmulateTwoFingerMinZ/W: (целое число) поиграйтесь с этими значениями, чтобы подобрать удобную для вас точность прокрутки двумя пальцами
- FingerLow: (целое число) если давление пальцем падает ниже этого значения, драйвер считает это отпусканием
- FingerHigh: (целое число) если давление пальцем поднимается выше этого значения, драйвер считает это касанием
- MaxTapTime: Определяет, насколько «чётким» должно быть нажатие, чтобы его можно было считать настоящим. Уменьшите значение, чтобы нажатие было более чётким. Правильная настройка этого параметра может уменьшить количество ложных срабатываний, когда руки наведены или слегка касаются тачпада.
- VertScrollDelta и HorizScrollDelta: (целое число) настраивает скорость прокрутки, это немного противоречит интуиции, потому что более высокие значения обеспечивают бо́льшую точность и, следовательно, более медленную прокрутку. Отрицательные значения вызывают естественную прокрутку, как в macOS.

Примечание:

- Если вы внезапно обнаружили, что ваши руки касаются тачпада при печати текста и это вызывает нежелательное нажатие средней клавиши, то измените значение опции `TapButton2` на 0, чтобы отключить ее. Смотрите также #Отключение тачпада во время печати.
- В последних версиях включена по умолчанию автопрокрутка ("Coasting"), при котором прокрутка продолжается до следующего нажатия, даже если вы уже больше не касаетесь тачпада после начала прокрутки. То есть, если вам нужно прокрутить совсем чуть-чуть, вам придётся чуть-чуть прокрутить и почти сразу нажать на тачпад для остановки, иначе прокрутка будет вечной. Если вас не устраивает такое поведение, пропишите для настройки `CoastingSpeed` значение `0`.
- Если ваш тачпад слишком чувствительный, пропишите значения побольше для `FingerLow` и `FingerHigh`. Помните, что `FingerLow` должен быть меньше чем `FingerHigh`.

### Конфигурирование "на лету"

Кроме традиционного, есть еще несколько способов конфигурирования. Драйвер Synaptics поддерживает изменение настроек "на лету". Это предполагает, что пользователи могут выбирать нужные им опции в приложении, которые вступят в силу немедленно, без перезапуска X. Это удобно для тестирование настроек перед прописыванием в файл конфигурации или в скрипт. Имейте в виду, что изменённые "на лету" настройки сбрасываются при перезапуске сервера Xorg.

#### Консольные инструменты

- Synclient — утилита командной строки для настройки и обращения к драйверам Synaptics.

  https://xorg.freedesktop.org/ || xf86-input-synaptics

- xinput — инструмент общее назначения для настройки устройств ввода X.

  https://xorg.freedesktop.org/ || xorg-xinput

#### Графические инструменты

- GPointing Device Settings — Предоставляет графическую конфигурацию "на лету" для нескольких указывающих устройств, подключенных к системе, в том числе Synaptics. Это приложение заменяет GSynaptics в качестве предпочтительного инструмента для настройки графической тачпада с помощью драйвера Synaptics.

  https://wiki.gnome.org/Attic/GPointingDeviceSettings || gpointing-device-settingsAUR

- kcm_touchpad — Новый инструмент настройки для KDE Plasma 5. Он предоставляет модуль под устройствами ввода в системных настройках. Он рассматривается как замена synaptiks и старого модуля kcm-touchpad.

  https://invent.kde.org/plasma/plasma-desktop/-/tree/master/kcms/touchpad || plasma-desktop

### Xfce4/Cinnamon

Для изменения настроек в XFCE 4:

1. Откройте Диспетчер настроек.
2. Нажмите Мышь и тачпад.
3. Выберите ваш тачпад в списке устройств и измените настройки на вкладке Тачпад.

Для изменения настроек в Cinnamon:

1. Откройте Параметры системы.
2. Нажмите Мышь и сенсорная панель.
3. Измените настройки на вкладке Сенсорная панель.

### MATE

Можно настроить способ, которым MATE обрабатывает тачпад:

1. Запустите `dconf-editor`.
2. Измените ключи в папке `org.mate.desktop.peripherals.touchpad`.

Во избежание затирания настроек демоном Mate settings сделайте следующее:

1. Запустите `dconf-editor`.
2. Измените `org.mate.SettingsDaemon.plugins.mouse`.
3. Отключите настройку active.

## Детальная конфигурация

### Использование xinput для определения возможностей тачпада

В зависимости от модели вашего тачпада, он может иметь или не иметь некоторые возможности. Можно определить поддерживаемые возможности с помощью xinput(1).

- левая, средняя и правая аппаратные кнопки
- обнаружение двух пальцев
- обнаружение трёх пальцев
- настраиваемое разрешение

Сперва найдите название вашего тачпада в списке устройств:

    $ xinput list

Затем, зная его имя, вы можете найти доступные возможности:

    $ xinput list-props "SynPS/2 Synaptics TouchPad" | grep Capabilities

    Synaptics Capabilities (309):  1, 0, 1, 0, 0, 1, 1

Эти числа означают (слева направо):

- `1`: есть физическая левая кнопка
- `0`: нет физической средней кнопки
- `1`: есть физическая правая кнопка
- `0`: нет поддержки определения двух пальцев
- `0`: нет поддержки определения трёх пальцев
- `1`: можно настроить вертикальное разрешение
- `1`: можно настроить горизонтальное разрешение

Используйте `xinput list-props "SynPS/2 Synaptics TouchPad"` для просмотра всех свойств. Полное описание всех свойств Synaptics можно почитать в synaptics(4).

### Synclient

Synclient позволяет изменить любые доступные пользователю настройки, описанные в synaptics(4). Посмотреть полный список текущих пользовательских настроек можно так:

    $ synclient -l

Например:

- Включение распознавания ладони:

      $ synclient PalmDetect=1

- Настройка кликов (здесь клик правой кнопкой при нажатием двумя пальцами):

      $ synclient TapButton2=3

- Отключение тачпада:

      $ synclient TouchpadOff=1

После успешного тестирования опций с помощью synclient вы можете сделать эти изменения постоянными, записав их в `/etc/X11/xorg.conf.d/70-synaptics.conf`.

### evtest

evtest показывает давление и положение пальцев на тачпаде в реальном времени, что позволяет дополнительно уточнить стандартные настройки Synaptics. Наблюдение с помощью evtest можно запустить так:

    $ evtest /dev/input/eventX

Где X означает ID тачпада. Найти его можно выводе `cat /proc/bus/input/devices`.

evtest требует монопольный доступ к устройству, что означает, что его нельзя запускать вместе с X-сервером. Вы можете либо убить X-сервер, либо запустить evtest с другого виртуального терминала (например, нажав `Ctrl+Alt+F2`).

### xev

xorg-xev может показывать касания, клики, давление, положение и другие измерения в режиме реального времени, что позволяет ещё больше уточнить настройки Synaptics. xev может запускаться в X. С помощью параметра `-event` можно ограничить типы выводимых событий.

### Круговая прокрутка

Круговая прокрутка — это удобство, предлагаемое вам synaptics, которое вы могли знать по iPod. Вместо (или, в придачу к) прокрутке по горизонтали или по вертикали, вы можете осуществлять прокрутку по кругу. Многие пользователи находят этот способ более быстрым и точным. Для включения круговой прокрутки добавьте следующие опции в секцию устройства ввода `/etc/X11/xorg.conf.d/70-synaptics.conf`:

    /etc/X11/xorg.conf.d/70-synaptics.conf

    Section "InputClass"
        ...
        Option      "CircularScrolling"          "on"
        Option      "CircScrollTrigger"          "0"
        ...
    EndSection

Вы наверное догадались, что опция CircularScrolling включает или выключает круговую прокрутку. Опция CircScrollTrigger может принимать одно из следующих значений, определяющий с какой границы тачпада должна начинаться круговая прокрутка:

    0    любая
    1    верхняя
    2    правый верхний угол
    3    правая
    4    правый нижний угол
    5    нижняя
    6    левый нижний угол
    7    левая
    8    левый верхний угол

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

Для быстрой прокрутки рисуйте маленькие круги в центре вашего тачпада. Для медленной и более точной прокрутки рисуйте большие.

### Естественная прокрутка

Можно сделать естественную прокрутку (natural scrolling). Для этого просто укажите отрицательные значения в оциях `VertScrollDelta` и `HorizScrollDelta`:

    /etc/X11/xorg.conf.d/70-synaptics.conf

    Section "InputClass"
        ...
        Option      "VertScrollDelta"          "-111"
        Option      "HorizScrollDelta"         "-111"
        ...
    EndSection

### Программное переключение

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

    /usr/local/bin/touchpad_toggle.sh

    #!/bin/bash

    declare -i ID
    ID=`xinput list | grep -Eio '(touchpad|glidepoint)\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
    declare -i STATE
    STATE=`xinput list-props $ID | grep 'Device Enabled' | awk '{print $4}'`
    if [ $STATE -eq 1 ]
    then
        xinput disable $ID
        # echo "Touchpad disabled."
        # notify-send -a 'Touchpad' 'Disabled' -i input-touchpad
    else
        xinput enable $ID
        # echo "Touchpad enabled."
        # notify-send -a 'Touchpad' 'Enabled' -i input-touchpad
    fi

Совет: При использовании нескольких мониторов с bumblebee тачпад можно настроить на втором X-сервере, добавив `DISPLAY=:8` в начале команды.

Также для отключения можно использовать synclient, но он отключает только касания, оставляя физические кнопки работающими:

    /usr/local/bin/touchpad.sh

    #!/bin/bash

    synclient TouchpadOff=$(synclient -l | grep -c 'TouchpadOff.*=.*0')

### Отключение тачпада во время печати

#### Используя автоматическое определение ладони драйвером

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

    $ synclient PalmDetect=1

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

    $ synclient PalmMinWidth=8

Ещё можно настроить минимальное давление, необходимое для того, чтобы касание считалось ладонью, например:

    $ synclient PalmMinZ=100

Совет: Для поиска наилучших значений вы можете использовать evtest, посмотрев с помощью него ширину и значения Z во время использования тачпада.

После подбора наилучших значений запишите их в файл конфигурации:

    Option "PalmDetect" "1"
    Option "PalmMinWidth" "8"
    Option "PalmMinZ" "100"

Важно: С некоторыми тачпадами есть проблема, из-за которой ширина ладони всегда отображается как 0, что ломает определение ладони. Пока проблему не починили, вы можете использовать патч пакета synaptics для использования только Z для определения ладони.
Совет: Если вы испытываете проблемы с определением ладони на вашем оборудовании, попробуйте libinput.

#### Используя syndaemon

syndaemon(1) отслеживает активность клавиатуры и отключает тачпад во время печати. У него есть несколько опций, чтобы контролировать, когда происходит отключение. Посмотреть их можно командой

    $ syndaemon -h

Например, чтобы отключить касание и прокрутку на полсекунды после каждого нажатия клавиши (без учёта клавиш-модификаторов вроде `Ctrl`), используйте

    $ syndaemon -i 0.5 -t -K -R

После определения нужных вам параметров используйте менеджер входа или xinitrc, чтобы он запускался автоматически при запуске X. Параметр `-d` заставит его запускаться в фоновом режиме как демон.

### Отключение тачпада при подключенной мыши

При помощи udev можно автоматически отключать тачпад при подключении внешней мыши. Для этого используйте одно из приведённых ниже правил.

#### Базовый рабочий стол

Это базовое правило для сеансов, не использующих среду рабочего стола:

    /etc/udev/rules.d/01-touchpad.rules

    SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/пользователь/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"
    SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/пользователь/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"

Если тачпад всегда отключается при запуске, даже если мышь не подключена, попробуйте добавить следующие критерии между параметрами `KERNEL` и `ACTION`:

    ATTRS{name}!="*TouchPad", ATTRS{name}!="*Stick",

#### GDM

GDM обычно хранит файлы Xauthority в `/var/run/gdm` в подкаталоге со случайным именем. Вы должны найти свой фактический путь к файлу Xauthority, что можно сделать с помощью `ps ax`. По какой-то причине у пользователя может появиться несколько authority файлов, поэтому потребуется такое правило:

    /etc/udev/rules.d/01-touchpad.rules

    SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", PROGRAM="/usr/bin/find /var/run/gdm -name пользователь -print0 -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=1"
    SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="remove", PROGRAM="/usr/bin/find /var/run/gdm -name пользователь -print0 -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=0"

Кроме того, вы должны убедиться, что ваш скрипт udev работает правильно. Вы можете проверить условия, запустив `udevadm monitor -p` с правами root.

##### С запущенным syndaemon

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

    /etc/udev/rules.d/01-touchpad.rules

    SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", PROGRAM="/usr/bin/find /var/run/gdm -name пользователь -print -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1 ; sleep 1; /bin/killall syndaemon; '"

##### touchpad-state

Пакет touchpad-state-gitAUR сделан с использованием правил udev, описанных в разделе #С запущенным syndaemon. Он включает в себя правило udev и скрипт:

    touchpad-state [--off] [--on]

#### GNOME

Пользователи GNOME могут установить расширение Touchpad Indicator, изменить Switch Method на Synclient и включить настройку Automatically switch Touchpad On/Off.

#### KDE

Можно использовать plasma-desktop для управления тачпадом.

#### Система с несколькими сеансами X

The factual accuracy of this article or section is disputed.

Reason: Hard-coded `DISPLAY` variable does not work with multiple X sessions. (Discuss in Talk:Touchpad Synaptics (Русский))

В окружении с несколькими пользователями нужен немного другой подход для определения среды X текущих пользователей. Поможет этот скрипт:

    /usr/bin/mouse-pnp-event-handler.sh

    #!/bin/sh
    ## $1 = "add" / "remove"
    ## $2 = %k from udev

    ## Set TRACKPAD_NAME according to your configuration.
    ## Check your trackpad name with:
    ## find /sys/class/input/ -name mouse* -exec udevadm info -a {} \; | grep 'ATTRS{name}'
    TRACKPAD_NAME="SynPS/2 Synaptics TouchPad"

    USERLIST=$(w -h | cut -d' ' -f1 | sort | uniq)
    MOUSELIST=$(find /sys/class/input/ -name mouse*)

    for CUR_USER in ${USERLIST}; do
            CUR_USER_XAUTH="$(sudo -Hiu ${CUR_USER} env | grep -e "^HOME=" | cut -d'=' -f2)/.Xauthority"

            ## Can't find a way to get another users DISPLAY variable from an isolated root environment. Have to set it manually.
            #CUR_USER_DISPL="$(sudo -Hiu ${CUR_USER} env | grep -e "^DISPLAY=" | cut -d'=' -f2)"
            CUR_USER_DISPL=":0"

            export XAUTHORITY="${CUR_USER_XAUTH}"
            export DISPLAY="${CUR_USER_DISPL}"

            if [ -f "${CUR_USER_XAUTH}" ]; then
                    case "$1" in
                            "add")
                                    /usr/bin/synclient TouchpadOff=1
                                    /usr/bin/logger "USB mouse plugged. Disabling touchpad for $CUR_USER. ($XAUTHORITY - $DISPLAY)"
                            ;;
                            "remove")
                                    ## Only execute synclient if there are no external USB mice connected to the system.
                                    EXT_MOUSE_FOUND="0"
                                    for CUR_MOUSE in ${MOUSELIST}; do
                                            if [ "$(cat ${CUR_MOUSE}/device/name)" != "${TRACKPAD_NAME}" ]; then
                                                    EXT_MOUSE_FOUND="1"
                                            fi
                                    done
                                    if [ "${EXT_MOUSE_FOUND}" == "0" ]; then
                                            /usr/bin/synclient TouchpadOff=0
                                            /usr/bin/logger "No additional external mice found. Enabling touchpad for $CUR_USER."
                                    else
                                            logger "Additional external mice found. Won't enable touchpad yet for $CUR_USER."
                                    fi
                            ;;
                    esac
            fi
    done

Измените переменную `TRACKPAD_NAME` в соответствии с конфигурацией вашей системы. Запустите `find /sys/class/input/ -name mouse* -exec udevadm info -a {} \; | grep 'ATTRS{name}'` для получения списка имён мышей.

Затем можно запускать этот скрипт при подключении или отключении USB-мышей с помощью такого правила udev:

    /etc/udev/rules.d/01-touchpad.rules

    SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", RUN+="/usr/bin/mouse-pnp-event-handler.sh add %k"
    SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", RUN+="/usr/bin/mouse-pnp-event-handler.sh remove %k"

### Тачпады без кнопок (кликпады)

Всё больше ноутбуков имеют особый вид тачпада, в котором есть одна кнопка, являющаяся частью площади отслеживания, а не отдельными кнопками. Например, в 2015 Dell XPS 13, HP series 4500 ProBooks, ThinkPad X220 и X1 ThinkPad есть такой тачпад. По умолчанию вся область кнопки определяется как левая кнопка, поэтому функции нажатия правой и средней кнопкой мыши и нажатие+перетаскивание не работают. Можно определить нажатия двумя и тремя пальцами как нажатия правой и средней кнопки и/или определить части поверхности панели управления как правая и средняя кнопки. Обратите внимание, что хотя драйвер регистрирует несколько касаний, он не отслеживает отдельные пальцы (начиная с версии 1.7.1), что приводит к запутанному поведению при использовании физических кнопок тачпада для перетаскивания и других жестов: вы должны щелкать с помощью двумя или тремя пальцами, но затем двигайте только одним из них, удерживая кнопку другим. Вы можете заглянуть в драйвер xf86-input-mtrackAUR для лучшей поддержки мультитач.

Некоторые среды рабочего стола (по крайней мере, KDE и GNOME) определяют разумные и полезные конфигурации по умолчанию для кликпадов, предоставляя правую кнопку в правом нижнем углу панели, распознавая нажатия двумя и тремя пальцами в любом месте панели как правые и средние нажатия и обеспечивая параметры конфигурации для определения касаний двумя и тремя пальцами как правого и среднего щелчка. Если ваш рабочий стол этого не делает или если вам нужен больший контроль, вы можете изменить раздел тачпада в `/etc/X11/xorg.conf.d/70-synaptics.conf` (или, что лучше, в отдельном файле с бо́льшим номером префикса). Например:

    /etc/X11/xorg.conf.d/70-synaptics.conf

    Section "InputClass"
        Identifier "touchpad"
        Driver "synaptics"
        MatchIsTouchpad "on"
            # Enable clickpad/multitouch support
            Option "ClickPad" "true"
            # Middle-button emulation is not supported
            Option "EmulateMidButtonTime" "0"
            # Define right soft button at the bottom
            Option "SoftButtonAreas"  "50% 0 82% 0 0 0 0 0"
    EndSection

Формат опции `SoftButtonAreas` такой (как описано в synaptics(4)):

    RightButtonAreaLeft RightButtonAreaRight RightButtonAreaTop RightButtonAreaBottom MiddleButtonAreaLeft MiddleButtonAreaRight MiddleButtonAreaTop MiddleButtonAreaBottom

Эта опция обычно встречается в документации или пакетах synaptics, и в данном примере она определяет правую половину нижних 18% тачпада как правую кнопку. Средняя кнопка не определена. Если вы хотите определить среднюю кнопку, запомните одну ключевую информацию из руководства; край, установленный на 0, простирается до бесконечности в этом направлении.

В следующем примере правая кнопка будет занимать крайние правые 40% области кнопок, а средняя кнопка - 20% в центре. Крайние левые 40% остаются левой кнопкой (как и остальная часть тачпада):

    ...
    Option     "SoftButtonAreas"  "60% 0 82% 0 40% 59% 82% 0"
    ...

Можно использовать synclient для проверки областей кнопок:

    $ synclient -l | grep -i ButtonArea

            RightButtonAreaLeft     = 3914
            RightButtonAreaRight    = 0
            RightButtonAreaTop      = 3918
            RightButtonAreaBottom   = 0
            MiddleButtonAreaLeft    = 3100
            MiddleButtonAreaRight   = 3873
            MiddleButtonAreaTop     = 3918
            MiddleButtonAreaBottom  = 0

Если кнопки не работают и области кнопок не меняются, убедитесь, что у вас нет файла конфигурации synaptics, распространяемого каким-нибудь пакетом, который переопределяет ваши настройки (например, некоторые пакеты AUR распространяют конфигурации с очень большими числами в префиксе).

Эти настройки нельзя изменить на лету через synclient, но можно через xinput:

    xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Soft Button Areas" 4000 0 4063 0 3000 4000 4063 0

Однако xinput не использует проценты, поэтому смотрите диапазоны x и y вашего тачпада в файле `/var/log/Xorg.0.log`.

#### Исправление нижнего края

В некоторых случаях, например, в Toshiba Satellite P50, всё работает «из коробки», за исключением того, что часто ваш щелчок воспринимается как движение мыши, а курсор отпрыгивает непосредственно перед регистрацией щелчка. Это легко решить, запустив

    $ synclient -l | grep BottomEdge

возьмите значение BottomEdge и вычтите желаемую высоту вашей кнопки, затем временно примените:

    $ synclient AreaBottomEdge=4000

после подбора хорошего значения запишите его в файл конфигурации:

    /etc/X11/xorg.conf.d/70-synaptics.conf

    ...
    Option "AreaBottomEdge"         "4000"
    ...

Примечание: Эта область не будет действовать как тачпад, если касание начинается в этой области, но её всё равно можно использовать, если касание началось за её пределами.

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

### Тачпад не работает после выхода из ждущего/спящего режима

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

- перехода на консоль и обратно,
- повторного входа/выхода в ждущий/спящий режим, или
- поиска нужного модуля ядра, его выгрузки и повторной загрузки.
- занесения модуля ядра `psmouse` в чёрный список может быть постоянной опцией (если тачпад обрабатывается другим модулем, например `i2c_designware_platform`)
- добавления параметра ядра `psmouse.synaptics_intertouch=0`, который может решить проблему навсегда (проверено на T440s)

Примечание: Вы можете использовать `Ctrl+Alt+F1`-`F8` для переключения на консоль без использования мыши.

    modprobe -r psmouse #psmouse happens to be the kernel module for my touchpad (Alps DualPoint)
    modprobe psmouse

Теперь переключитесь обратно на tty, на котором работает X. Если вы выбрали правильный модуль, тачпад должен снова заработать.

Если у вас ноутбук и тачпад не работает после закрытия крышки ноутбука, можно просто изменить политику управления питанием: при закрытии крышки настроить выключение экрана место ждущего/спящего режима. Это полезно для некоторых ноутбуков.

### Настройки из xorg.conf.d/70-synaptics.conf не применяются в MATE

По умолчанию MATE прописывает свои настройки для тачпада. Чтобы отключить это, смотрите #MATE.

### Тачпад не работает, Xorg.0.log пишет "Query no Synaptics: 6003C8"

Из-за способа настройки Synaptics в настоящее время загружаются 2 экземпляра модуля Synaptics. Мы можем распознать эту ситуацию, открыв файл журнала xorg (`/var/log/Xorg.0.log`) и обнаружив в нём это:

    /var/log/Xorg.0.log

    [ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"
    [ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"

Предотвратить двойную загрузку можно добавлением `MatchDevicePath "/dev/input/event*"` в файл `/etc/X11/xorg.conf.d/70-synaptics.conf`:

    /etc/X11/xorg.conf.d/70-synaptics.conf

    Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
            Option "TapButton1" "1"
            Option "TapButton2" "2"
            Option "TapButton3" "3"
    EndSection

Перезапустите X и проверьте журнал Xorg ещё раз, ошибка должна пропасть и тачпад должен заработать.

Связанное сообщение об ошибке: FS#20830

Связанные темы на форуме:

- https://bbs.archlinux.org/viewtopic.php?id=104769
- https://bbs.archlinux.org/viewtopic.php?pid=825690

### Тачпад определяется как "PS/2 Generic Mouse" или "Logitech PS/2 mouse"

Это может быть вызвано разными причинами.

#### Ноутбуки с сенсорным экраном и тачпадом

Есть проблема с ноутбуками, которые имеют как сенсорный экран, так и тачпад, например, Dell XPS 12 или Dell XPS 13. Чтобы исправить это, вы можете запретить загрузку драйверв `i2c_hid`, Однако это даёт побочный эффект — отключение сенсорного экрана.

Это известная проблема. Смотрите также эту тему на форуме.

Начиная с версии ядра 3.15, запрет загрузки модуля может привести к полной неработоспособности тачпада. Удаление запрета должно позволить этому начать работу с ограниченной функциональностью, смотрите FS#40921.

### Не работают специальные возможности Synaptics (множественное нажатие, прокрутка и т. д.)

Иногда тачпады Synaptics работают только частично. Такие функции, как прокрутка двумя пальцами или нажатие средней кнопки двумя пальцами, не работают, даже если они включены должным образом. Вероятно, это связано с упомянутой выше проблемой #Тачпад не работает, Xorg.0.log пишет "Query no Synaptics: 6003C8". Исправляется аналогично, предотвращением двойной загрузки модуля.

Если это не поможет, попробуйте закомментировать опцию `MatchIsTouchpad` (которая теперь включена по умолчанию в конфигурацию Synaptics).

Если щелчок двумя или тремя пальцами интерпретируется как щелчок правой кнопкой мыши, из-за чего не можете получить средний щелчок, в любом случае независимо от конфигурации, вероятно, виновата эта ошибка: https://bugs.freedesktop.org/show_bug.cgi?id=55365

#### Нет мультитача на некоторых тачпадах Elantech

Смотрите https://unix.stackexchange.com/questions/28736/what-does-the-i8042-nomux-1-kernel-option-do-during-booting-of-ubuntu

### Курсор прыгает

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

Также возможно, что вы испытываете IRQ losses, что связано с контроллером i8042 (это устройство управляет клавиатурой и тачпадом многих ноутбуков), поэтому здесь у вас есть две возможности:

1. Сделать `rmmod && insmod` для модуля `psmouse`.
2. Добавить `i8042.nomux=1` в параметры ядра и перезагрузить систему.

### Мой тачпад отсутствует в /dev/input/*

В этом случае вы можете посмотреть информацию по всем вашим устройствам ввода следующей командой:

    cat /proc/bus/input/devices

Найдите устройство с именем "SynPS/2 Synaptics TouchPad". Вам нужно смотреть на параметр Handler, который подскажет вам какое устройство нужно указать в xorg.conf.

Пример вывода:

    I: Bus=0011 Vendor=0002 Product=0007 Version=0000
    N: Name="SynPS/2 Synaptics TouchPad"
    P: Phys=isa0060/serio4/input0
    S: Sysfs=/class/input/input1
    H: Handlers=mouse0 event1
    B: EV=b
    B: KEY=6420 0 7000f 0

Т.к. выши Handler'ы mouse0 и event1, вам нужно использовать /dev/input/mouse0.

### Firefox и специальные события тачпада

Вы можете включить/отключить некоторые специальные события, которые Firefox обрабатывает при касании или прокрутке определённых частей тачпада, отредактировав настройки этих действий. Введите `about:config` в адресную строку Firefox. Чтобы изменить параметры, дважды щёлкните нужную строку.

#### Firefox 17.0 и новее

Горизонтальная прокрутка теперь по умолчанию будет прокручивать страницы, а не историю. Чтобы включить переход вперёд/назад в стиле Mac с проведением двумя пальцами, измените параметр:

    mousewheel.default.action.override_x = 2

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

    mousewheel.default.delta_multiplier_x

Оптимальное значение будет зависеть от вашего тачпада и от того, как вы его используете. Попробуйте начать со значения `10`. Отрицательное значение изменит направление на противоположное.

### Opera: проблемы с горизонтальной прокруткой

Аналогично Firefox. Для исправления перейдите в Tools > Preferences > Advanced > Shortcuts. Выберите установку "Opera Standard" и нажмите "Edit". В разделе "Application":

The factual accuracy of this article or section is disputed.

Reason: Description here is not so clear and I do not use Opera. Please make it clear.) (Discuss in Talk:Touchpad Synaptics (Русский))

- assign key "Button 6" to command "Scroll left"
- assign key "Button 7" to command "Scroll right"

### Прокрутка и множественные действия с Synaptics на ноутбуках LG

Эти проблемы, похоже, возникают на нескольких моделях ноутбуков LG. Симптомы включают: при нажатии Mouse Button 1 Synaptics интерпретирует это как ScrollUP и как button 1 click; То же самое и с button 2.

Это можно решить добавлением в `xorg.conf`:

    /etc/X11/xorg.conf.d/xorg.conf

    Option "UpDownScrolling" "0"

Примечание: Это заставит Synaptics интерпретировать одно нажатие кнопки как три. Есть патч [4] который убирает эти нажатия.

По-видимому, скомпилировать это с последней версией Synaptics не удается. Решением этой проблемы является использование Git-версии Synaptics [5].

Чтобы собрать пакет после загрузки и распаковки tar-архива, выполните:

    $ cd synaptics-git
    $ makepkg

### Другие проблемы с внешней мышью

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

    /etc/X11/xorg.conf.d/xorg.conf

    Option     "Device" "/dev/input/mice"

Если строка `"Device"` отличается, измените её на указанную выше и попробуйте перезапустить X. Если это не решит вашу проблему, сделайте свой тачпад `CorePointer` в разделе "Server Layout":

    /etc/X11/xorg.conf.d/xorg.conf

    InputDevice    "Touchpad" "CorePointer"

И сделайте внешнее устройство `"SendCoreEvents"`:

    /etc/X11/xorg.conf.d/xorg.conf

    InputDevice    "USB Mouse" "SendCoreEvents"

Наконец, добавьте это в раздел вашего внешнего устройства:

    /etc/X11/xorg.conf.d/xorg.conf

    Option      "SendCoreEvents"    "true"

Если ничего из этого не работает, проверьте соответствующие баг-трекеры на предмет возможных ошибок или просмотрите форумы, чтобы узнать, нашёл ли кто-нибудь решение получше.

### Перестаёт работать мультитач после перезагрузки в Windows

Многие драйверы содержат прошивку, которая загружается во флэш-память при загрузке компьютера. Эта прошивка не обязательно очищается при завершении работы и не всегда совместима с драйверами Linux. Единственный способ очистить флэш-память — это полностью выключить компьютер, а не использовать перезагрузку. Обычно считается лучшей практикой никогда не использовать перезагрузку при переключении между операционными системами.

### Тачпад не определяется после выключения в Arch

Некоторые тачпады (в частности Elantech) перестают определяться после стандартного завершения работы в Arch Linux. Есть несколько возможных решений этой проблемы:

- Загрузиться с раздела или установочного диска Windows и выключить компьютер через него.
- Подождать примерно минуту после выключения.
- Как обсуждалось в https://bugzilla.kernel.org/show_bug.cgi?id=81331#c186 в ядро был добавлен патч, который исправляет работу тачпадов Elantech. По умолчанию поддерживаются модели Gigabyte P34, P35v2 и X3. Для других (особенно ребрендингов Gigabyte, вроде XMG) можно прописать параметр ядра `i8042.kbdreset=1`.

### Trackpoint и кликпады

В новых моделях Thinkpad больше нет физических кнопок для тензометрических джойстиков (Trackpoint) и вместо них под кнопки выделена верхняя часть кликпада. Помимо эргономики, это неплохо работает с текущим Xorg. К сожалению, эмуляция колеса мыши с помощью средней кнопки пока не поддерживается. Установите xf86-input-evdev-trackpointAUR для исправленной и правильно настроенной версии, если вы собираетесь использовать Trackpoint.

## Смотрите также

- Synaptics touchpad driver
- Synaptics manual on x.org

Category:

- Input devices (Русский)

Hidden category:

- Pages or sections flagged with Template:Accuracy