Не удается переназначить btn_middle на libinput с использованием hwdb.

Вопрос или проблема

Я использую Logitech Trackman Marble Trackball на Ubuntu 22.04, Gnome Shell 42, Wayland.

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

  • Я создал файл в /etc/udev/hwdb.d/71-logitech-trackman.hwdb следующим образом:
evdev:name:Logitech USB Trackball:*
 KEYBOARD_KEY_90004=btn_middle

Затем я выполняю:

sudo systemd-hwdb update
sudo udevadm trigger

И физически подключаю устройство заново.

  • Выполнение sudo udevadm info /dev/input/event8 | grep btn_middle показывает, что сопоставление вступило в силу.
  • Выполнение sudo evtest /dev/input/event8 выводит правильное сопоставление следующим образом:
Event: time 1689266776.764313, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90004
Event: time 1689266776.764313, type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1
  • Однако выполнение sudo libinput debug-events --device /dev/input/event8 не выводит никаких данных, когда я нажимаю переназначенную кнопку (хотя оно правильно выводит строки для всех других событий).

Странно, но libinput выводит данные, если я выбираю любое другое целевое событие, такое как btn_left, btn_right или даже другие кнопки, которых у устройства нет, такие как btn_back, и эти нажатия корректно отображаются в GUI. Похоже, что только средняя кнопка не может быть эмулирована.

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

Что может препятствовать работе сопоставления средней кнопки мыши?

У меня была похожая проблема, и я ее решил, попробуйте изменить ваш .hwdb файл:

evdev:input:*
 KEYBOARD_KEY_90004=btn_middle

Я хотел сопоставить боковую кнопку с левой. Вот что я сделал.

Создал файл /etc/udev/hwdb.d/99-mouse.hwdb:

evdev:input:b*v062Ap4101*
 KEYBOARD_KEY_90004=btn_left

Где v062Ap4101 — это ID USB устройства из команды lsusb. Обратите внимание, что все шестнадцатеричные числа должны быть в верхнем регистре.

Настройки по умолчанию:

 KEYBOARD_KEY_90001=btn_left
 KEYBOARD_KEY_90002=btn_right
 KEYBOARD_KEY_90003=btn_middle
 KEYBOARD_KEY_90004=btn_side
 KEYBOARD_KEY_90005=btn_extra

Затем:

  • $ sudo systemd-hwdb update – для обновления базы данных
  • $ sudo udevadm trigger /sys/class/input/event9 – для перезагрузки базы данных
  • $ sudo udevadm test /sys/class/input/event9 – для проверки, что все работает

Для тестирования и отладки я использовал $ sudo libinput debug-events. Здесь вы можете получить номер устройства событий и многое другое.
Надеюсь, это поможет.

Ответ или решение

Если вы столкнулись с проблемами при попытке переназначить боковую кнопку на среднюю кнопку мыши с использованием libinput на Ubuntu 22.04 в окружении Gnome Shell 42 и Wayland, это может быть связано с рядом технических причин, требующих тщательного анализа и исправления. Рассмотрим пошаговое руководство и возможные решения данной проблемы.

Описание проблемы

Вы используете трекбол Logitech Trackman Marble и хотите симулировать нажатие средней кнопки мыши с помощью одной из боковых кнопок. Хотя вам удалось переназначить другие кнопки, именно средняя кнопка не работает должным образом, несмотря на то, что конфигурации, примененные через hwdb, кажутся корректными при тестировании с evtest.

Пошаговое руководство по решению проблемы

  1. Проверка спецификации устройства: Убедитесь, что имя устройства и идентификатор USB корректно определены с помощью команды lsusb. Например, используйте v062Ap4101, как показано в примере, где идентификаторы должны быть в верхнем регистре.

  2. Корректировка файла конфигурации hwdb: Измените структуру вашего файла /etc/udev/hwdb.d/71-logitech-trackman.hwdb. Используйте более широкую маску для имени устройства, например:

    evdev:input:b*v046DpC408*
    KEYBOARD_KEY_90004=btn_middle

    Здесь v046DpC408 — это пример идентификатора устройства, который вы должны заменить на ваш актуальный.

  3. Обновление и применение конфигурации:

    • Обновление базы данных udev:
      sudo systemd-hwdb update
    • Триггирование udev для применения изменений (замените /sys/class/input/eventX на актуальное значение вашего устройства):
      sudo udevadm trigger /sys/class/input/eventX
  4. Диагностика с использованием libinput и других утилит:

    • Проверьте активность устройства и корректность назначенных событий:
      sudo udevadm test /sys/class/input/eventX
    • Используйте libinput для мониторинга:
      sudo libinput debug-events --device /dev/input/eventX

    Если libinput не распознаёт среднюю кнопку, но распознаёт другие кнопки, это может указывать на ограничение на уровне драйверов или конфигурации Wayland.

  5. Обходные пути и дополнительная диагностика:

    • Переход на X11: Если проблема сохраняется, попробуйте временно перейти на X11 и проверьте, исправляется ли данное поведение. Это поможет определить, связано ли оно с Wayland.
    • Использование внешних инструментов: Существует возможность использовать другие инструменты, такие как xinput или создание собственных скриптов для имитации событий.

Заключение

Несмотря на современность Wayland, такие проблемы с назначениями кнопок могут возникать, и их решение требует тщательной диагностики. Эффективное использование ресурсов, таких как udev и libinput, часто позволяет выявить и исправить причину проблем. Обязательно проверяйте актуальные обновления системы и драйверов, так как исправления могут быть внедрены в новых релизах.

Оцените материал
Добавить комментарий

Капча загружается...