Как отключить/включить клавиатуру/мышь (устройства ввода) на Ubuntu 24.04 LTS Wayland?

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

Мне нужна команда CLI, чтобы отключить устройства ввода (клавиатуру и мышь), а также команда, чтобы снова их включить.

Чтобы отключить устройства ввода на Xorg, используйте: xinput float <id#>, а чтобы включить их, используйте xinput reattach <id#>, но я использую Wayland, как это сделать там?

Могут быть другие методы в зависимости от используемого вами рабочего стола, но для любого из них вы должны суметь использовать evtest -grab на устройстве ввода. Эта программа перехватывает все события, поступающие от устройства (для отладки), и опция захвата останавливает дальнейшую передачу событий. Программа должна оставаться работающей, и когда она завершена, события снова будут передаваться в Wayland.

Вы можете найти имя мыши и клавиатуры, посмотрев вывод команд

libinput list-devices
ls -l /dev/input/*/*{kbd,mouse}

Например, у меня есть

/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse -> ../event6
/dev/input/by-id/usb-05f3_0007-event-kbd -> ../event2

поэтому мне нужно сделать

evtest -grab /dev/input/event2 >/dev/null &
evtest -grab /dev/input/event6 >/dev/null &

а затем завершить эти процессы, чтобы вернуть контроль.

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

Вопрос о том, как отключить и включить устройства ввода, такие как клавиатура и мышь, в среде Ubuntu 24.04 LTS под управлением Wayland, часто возникает у пользователей, сталкивающихся с переходом от Xorg. В Xorg эта задача решается с помощью команд xinput float <id#> и xinput reattach <id#>. Однако в Wayland, ввиду его архитектурных особенностей, таких как отсутствие прямого доступа к устройствам ввода, этот подход неприменим.

Теория: Wayland не использует xinput для управления устройствами ввода. Вместо этого, главным инструментом работы с устройствами ввода является libinput, который предоставляет информацию и управляющие функции для этих устройств, но не для их отключения напрямую.

Пример

На платформе Wayland вы можете использовать утилиту evtest для временной блокировки событий от устройств ввода. При использовании команды evtest -grab, программа начинает перехватывать все события от заданного устройства, предотвращая их дальнейшую передачу в систему, что фактически блокирует устройство ввода.

Применение

Вот шаги для реализации:

  1. Узнайте устройство ввода, которое необходимо отключить, с помощью команд:

    libinput list-devices

    или

    ls -l /dev/input/*/*{kbd,mouse}
  2. Например, вы можете увидеть следующее:

    /dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse -> ../event6
    /dev/input/by-id/usb-05f3_0007-event-kbd -> ../event2
  3. Заблокируйте устройство, введя команды:

    evtest -grab /dev/input/event2 >/dev/null &
    evtest -grab /dev/input/event6 >/dev/null &

Каждая из этих команд запускает evtest в фоновом режиме (&), и устройство блокируется до тех пор, пока процесс evtest не будет завершен.

  1. Чтобы разблокировать устройство, завершите процессы evtest:
    • Найдите ID процесса, используя команду ps aux | grep evtest, и завершите его с помощью kill <PID>.

Этот метод применим в рабочих окружениях, где необходимо временно отключать устройства ввода, например, для отладки или тестирования. Однако следует помнить, что Wayland спроектирован с целью обеспечения безопасности и стабильности системы, поэтому работа с аппаратными устройствами может быть менее гибкой по сравнению с Xorg.

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

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