Skip to content

Script for reassignment Logitech mouse keys in Wayland and Sway

License

Notifications You must be signed in to change notification settings

MuratovAS/wayland-keymapper-mouse

Repository files navigation

wayland-keymapper-mouse

Небольшой скрипт для переназначения клавиш мыши на пользовательские действия. Скрипт разработан для личного пользования. Для функционирования требует libinput и ydotool. Предпосылкой к данному решению послужили проблемы с key-mapper-git, сбои при загрузки системы, отвал usb устройств.

Тестирование проводилось на:

  • OS: Manjaro Linux
  • WM: Sway
  • Mouse: Logitech MX Master 3 (2S)

Как это работает

Принцип работы приделано прост.

  • В момент запуска происходит сканирование подключенных устройств по средствам libinput list-devices
  • Затем происходит поиск устройства с именем Logitech MX Master 3
  • Создание потока libinput debug-events --device для каждого устройства, удовлетворяющего требованиям предыдущего пункта.
  • Парсинг лога событий устройства
  • Выполнения действие в соответствие с событием

Из преимуществ подхода можно выделить, отсутствие мьютекса на все устройства, что позволяет использовать такие модули как sway-xkb-switcher.

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

Как использовать

После установки в systemd создается сервис, запускается автоматически при старте системы. Настройка действий осуществляется по средствам конфигурационного файла. Обратите внимание, действия выполняются от root пользователя.

sudo micro /etc/logitech-master/config

Пример конфигурационного файла:

#!/bin/bash
EVENT_SIDE1="ydotool key ctrl+alt+shift+s"
EVENT_SIDE2="ydotool key ctrl+alt+shift+a"
EVENT_SCROLL_UP="ydotool key ctrl+alt+shift+w"
EVENT_SCROLL_DOWN="ydotool key ctrl+alt+shift+q"
EVENT_THUMB="ydotool key ctrl+alt+shift+z"

Установка

Необходимо установитьlibinput и ydotoold.

sudo pacman -S libinput
yay -S ydotool

Затем произвести установку с правами root

chmod 744 ./install.sh
chmod 744 ./uninstall.sh
sudo ./install.sh