Настраиваем жесты touchpad в LXDE
prolinux
Опубликован: | 2023-07-21T08:02:42.604941Z |
Отредактирован: | 2023-07-21T08:02:42.604941Z |
Статус: | публичный |
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
Дописываю в конец этого файла две дополнительные строчки.
Сохраняю изменения в файл и покидаю текстовый редактор. Теперь можно перезагрузить компьютер и убедиться, что ничего не изменилось, и жесты настроены.
Возможные проблемы
Казалось бы, жесты touchpad настроены, всё великолепно и можно спокойно работать. Но есть один подводный камень. Идентификаторы устройств и числовые коды их жестов могут меняться, если при загрузке операционной системы доступный компьютеру список устройств будет изменён. Например, если я подключу в разъём USB компьютерную мышь и включу компьютер, сделанные только что настройки перестанут работать, так как операционная система определит дополнительное устройство, идентификатор сенсорной панели изменится. В этом случае настройку придётся повторить, а пользователю сделать выбор: либо мышь, либо touchpad.