Альтернатива Wayland для xdotool от xorg?

3854
Cestarian

xdotool - хорошее X-приложение, я склонен использовать его для создания макрокоманд (например, alt + f4 или ctrl + w или ctrl + alt + backspace или что-то в этом роде)

Это действительно легко и удобно, но я не знаю ни одной подобной программы, совместимой с Wayland. Есть ли способ отправить сигналы ввода мыши и клавиатуры в Wayland прямо сейчас, как Xdotool для X?

Сейчас он работает в основном с xwayland, но не все команды работают (например, alt + f4, xev может даже прочитать ввод alt + f4, но он не вызывает завершение приложения, как нажатие на клавиатуре), также есть вопрос потенциально не используя xwayland.

14
См. Также https://unix.stackexchange.com/questions/381831/keyboard-emulation-in-wayland и https://askubuntu.com/questions/956640/equivalent-to-xdotool-for-wayland Ben Creasy 6 лет назад 2

2 ответа на вопрос

3
grawity

Нет, такие функции были явно исключены из проекта Wayland по соображениям безопасности. (Чтение ввода других программ является самой большой проблемой, но разрешение фальшивых входных данных отправлять другим программам также может привести к проблемам.)

Тем не менее, я ожидаю, что некоторые Wayland WM в конечном итоге реализуют какую-то функцию макросов; В конце концов, они будут нуждаться в поддержке на экране клавиатуры и голосового управления (для доступности).

Но если бы такая функция существовала, это зависело бы от того, какой композитор Wayland вы используете: Weston? KDE в KWin? GNOME Shell? Просвещение? В Wayland нет разделенного «сервера дисплея - оконного менеджера»; оконный менеджер - это сервер Wayland, который решает, какие функции реализовать (в виде суб-протоколов Wayland, API-интерфейсов D-Bus и т. д.).

Я думаю, должно быть возможно создать такую ​​программу, которая будет работать для всех композиторов Wayland. Libinput перенаправляет пользовательский ввод в wayland, и именно через libinput могут быть запущены alt + f4 и другие команды, использующие функцию wayland. Все, что вам нужно сделать, это заставить libinput читать макрос как ввод с клавиатуры или мыши; это то, что я думаю, но я понятия не имею, как это сделать сам. Cestarian 8 лет назад 0
@Cestarian: Вам нужно создать поддельное устройство ввода с функцией ядра uinput. grawity 8 лет назад 0
это не должно быть так сложно, я вспоминаю, что когда-то делал это в какой-то работе с драйверами, возможно, если бы я просто посмотрел на этот код, я мог бы найти какой-то способ. (Хотя я никогда не знал, что я делал в то время) Cestarian 8 лет назад 0
В списке рассылки есть RFC: [RFC: интерфейс для ввода событий ввода] (https://lists.freedesktop.org/archives/wayland-devel/2017-March/033676.html) и [Добавить API для делать скриншоты и записывать скриншоты] (https://bugs.freedesktop.org/show_bug.cgi?id=98894). Похоже, проблемы могут быть решены с помощью дополнительной работы по усилению безопасности. Ben Creasy 6 лет назад 0
0
Satori Komeiji

В настоящее время нет идеального решения, но есть близкое: ydotool .

Он использует интерфейс uinput в качестве бэкэнда и не зависит от серверов отображения.

Похожие вопросы