Настраиваем жесты touchpad в LXDE

prolinux

Опубликован:  2023-07-21T08:02:42.604941Z
Отредактирован:  2023-07-21T08:02:42.604941Z
Статус:  публичный
91
0
0

LXDE за счёт своего минимализма и бережного использования аппаратных ресурсов машины довольно неплохо подходит в качестве рабочего стола для мобильных компьютеров. Но в LXDE, увы, нет программы с GUI для настройки сенсорной панели ноутбука, такое обстоятельство отталкивает начинающих пользователей. В этой демонстрации попробуем обойтись без средств с GUI и настроим некоторые жесты touchpad под управлением операционной системы Debian sid, LXDE и консольной утилиты xinput.

Задача

Итак, на моём лэптопе Acer установлена операционная система Debian sid с рабочим столом LXDE. Сенсорная панель при этом вполне себе работает, но не реагирует на некоторые жесты, или наоборот, реагирует на жесты, которые хотелось бы отключить. В частности, touchpad не умеет имитировать нажатие левой кнопки мыши простым ударом пальца по панели. В то же время, в настройках сенсорной панели по-умолчанию включена горизонтальная прокрутка, и она мне мешает.

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

Средство для настройки сенсорной панели

Сенсорная панель ноутбука - это устройство ввода, заменяющее компьютерную мышь. Как и любое устройство ввода, её можно настроить с помощью системных файлов X-сервера на уровне операционной системы, при этом такие настройки будут действовать для всех пользователей операционной системы, а для настройки потребуются права суперпользователя root.

Настройка X-сервера - дело тонкое и рискованное, неверные действия могут привести к сложностям, и пользователь рискует оказаться в совсем голой консоли, поэтому этот способ настройки touchpad я не буду принимать во внимание в рамках этой демонстрации. К счастью, у операционной системы есть специальная утилита для настройки сенсорной панели на уровне пользователя системы, она не требует прав суперпользователя, и отвечает только за сенсорную панель, при её использовании сломать что-то другое просто невозможно. Эта программа называется xinput, и установить её в Debian и его производных можно с помощью пакетного менеджера apt.

$ sudo apt install xinput

В моей системе эта программа уже установлена из коробки. Давайте посмотрим, как она работает.

Определяем идентификатор устройства

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

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

$ xinput list

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

 Virtual core pointer                      id=2    [master pointer  (3)]    Virtual core XTEST pointer                id=4    [slave  pointer  (2)]    ETPS/2 Elantech Touchpad                  id=11   [slave  pointer  (2)] Virtual core keyboard                     id=3    [master keyboard (2)]
     Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
     Power Button                              id=6    [slave  keyboard (3)]
     Video Bus                                 id=7    [slave  keyboard (3)]
     Power Button                              id=8    [slave  keyboard (3)]
     Sleep Button                              id=9    [slave  keyboard (3)]
     AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
     Acer WMI hotkeys                          id=12   [slave  keyboard (3)]

Третья строчка выхлопа определяет идентификатор сенсорной панели моей машины, это Elantech Touchpad, и это устройство имеет в системе числовой код - id=11. С помощью этого числового кода можно запросить список свойств устройства.

Запрашиваем список свойств

Список свойств сенсорной панели можно увидеть такой командой.

$ xinput list-props 11

Здесь я задал в конце команды числовой код сенсорной панели - 11. И вот какой интересный выхлоп показывает программа после выполнения этой команды.

Device 'ETPS/2 Elantech Touchpad':
    Device Enabled (150):   1
    Coordinate Transformation Matrix (152): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (282): 0
    libinput Tapping Enabled Default (283): 0
    libinput Tapping Drag Enabled (284):    1
    libinput Tapping Drag Enabled Default (285):    1
    libinput Tapping Drag Lock Enabled (286):   0
    libinput Tapping Drag Lock Enabled Default (287):   0
    libinput Tapping Button Mapping Enabled (288):  1, 0
    libinput Tapping Button Mapping Default (289):  1, 0
    libinput Natural Scrolling Enabled (290):   0
    libinput Natural Scrolling Enabled Default (291):   0
    libinput Disable While Typing Enabled (292):    1
    libinput Disable While Typing Enabled Default (293):    1
    libinput Scroll Methods Available (294):    1, 1, 0
    libinput Scroll Method Enabled (295):   1, 0, 0
    libinput Scroll Method Enabled Default (296):   1, 0, 0
    libinput Click Methods Available (297): 1, 1
    libinput Click Method Enabled (298):    1, 0
    libinput Click Method Enabled Default (299):    1, 0
    libinput Middle Emulation Enabled (300):    0
    libinput Middle Emulation Enabled Default (301):    0
    libinput Accel Speed (302): 0.000000
    libinput Accel Speed Default (303): 0.000000
    libinput Accel Profiles Available (304):    1, 1
    libinput Accel Profile Enabled (305):   1, 0
    libinput Accel Profile Enabled Default (306):   1, 0
    libinput Left Handed Enabled (307): 0
    libinput Left Handed Enabled Default (308): 0
    libinput Send Events Modes Available (267): 1, 1
    libinput Send Events Mode Enabled (268):    0, 0
    libinput Send Events Mode Enabled Default (269):    0, 0
    Device Node (270):  "/dev/input/event6"
    Device Product ID (271):    2, 14
    libinput Drag Lock Buttons (309):   <no items>
    libinput Horizontal Scroll Enabled (310):   1
    libinput Scrolling Pixel Distance (311):    15
    libinput Scrolling Pixel Distance Default (312):    15
    libinput High Resolution Wheel Scroll Enabled (313):    1

Так много разного интересного можно настроить в поведении touchpad. Но, поскольку я намерен настроить конкретные жесты, в этом выхлопе меня интересуют две строчки. Свойство, отвечающее за имитацию нажатия левой кнопки мыши, в выхлопе xinput выглядит так:

    libinput Tapping Enabled (282): 0

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

Свойство, отвечающее за имитацию горизонтальной прокрутки, в выхлопе xinput выглядит следующим образом:

    libinput Horizontal Scroll Enabled (310):   1

Единица в конце этой строки говорит мне, что этот жест включен, и его мне необходимо отключить, числовой код свойства - 310.

Переключаем состояние жестов.

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

$ xinput set-prop 11 282 1

Здесь я указал идентификатор устройства - 11, числовой код жеста - 282 и состояние жеста - 1 - включено.

Отключаю горизонтальную прокрутку.

$ xinput set-prop 11 310 0

Всё, с этого момента touchpad заработал именно так, как мне и хотелось.

Сохраняем настройки

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

$ nvim .config/lxsession/LXDE/autostart

Дописываю в конец этого файла две дополнительные строчки.

AwNLJfbvdG.png

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

Возможные проблемы

Казалось бы, жесты touchpad настроены, всё великолепно и можно спокойно работать. Но есть один подводный камень. Идентификаторы устройств и числовые коды их жестов могут меняться, если при загрузке операционной системы доступный компьютеру список устройств будет изменён. Например, если я подключу в разъём USB компьютерную мышь и включу компьютер, сделанные только что настройки перестанут работать, так как операционная система определит дополнительное устройство, идентификатор сенсорной панели изменится. В этом случае настройку придётся повторить, а пользователю сделать выбор: либо мышь, либо touchpad.