Wayland Alternative für xorg's xdotool?

3967
Cestarian

xdotool ist eine nette X-Anwendung. Ich verwende es normalerweise zum Erstellen von Makrobefehlen (wie Alt + F4 oder Strg + W oder Strg + Alt + Rückschritt oder ähnliches).

Es ist sehr einfach zu bedienen und praktisch, aber ich kenne kein so kompatibles Wayland-Programm. Gibt es eine Möglichkeit, Eingangssignale für Maus und Tastatur an wayland zu senden, ähnlich wie bei xdotool für X?

Es funktioniert momentan weitgehend mit xwayland, aber nicht alle Befehle funktionieren (wie Alt + F4, xev kann sogar den Alt + F4-Eingang lesen, er löst jedoch nicht die Anwendungsbeendigung aus, als drückte er die Tastatur) xwayland möglicherweise nicht verwenden.

14
Siehe auch https://unix.stackexchange.com/questions/381831/keyboard-emulation-in-wayland und https://askubuntu.com/questions/956640/equivalent-to-xdotool-for-wayland Ben Creasy vor 6 Jahren 2

2 Antworten auf die Frage

3
grawity

Nein, solche Features wurden aus Sicherheitsgründen ausdrücklich vom Wayland-Design ausgeschlossen. (Das Lesen anderer Programme ist das größte Problem, aber das Senden von gefälschten Eingaben an andere Programme kann auch zu Problemen führen.)

Ich erwarte jedoch, dass einige Wayland-WMs irgendwann eine Art Makros implementieren. Denn sie werden müssen On-Screen - Tastatur und Sprachsteuerung (für die Zugänglichkeit) unterstützen.

Wenn ein solches Feature vorhanden wäre, würde es davon abhängen, welchen Wayland-Compositor Sie verwenden: Weston? KDE's KWin? GNOME-Shell? Erleuchtung? In Wayland gibt es keine Aufteilung des "Display-Server-Fenstermanagers". Der Fenstermanager ist der Wayland-Server und entscheidet, welche Funktionen zu implementieren sind (entweder als Wayland-Subprotokolle oder als D-Bus-APIs oder dergleichen).

Es sollte möglich sein, ein solches Programm zu erstellen, das für alle wayland Compositors geeignet ist. Libinput leitet Benutzereingaben an wayland weiter, und durch libinput können alt + f4 und andere Befehle, die eine wayland-Funktion verwenden, ausgelöst werden. Alles was Sie tun müssen, ist libinput dazu zu bringen, ein Makro als Tastatur- oder Mauseingabe zu lesen. ist das, was ich denke, aber ich habe keine Ahnung, wie ich es selbst machen soll. Cestarian vor 8 Jahren 0
@Cestarian: Sie müssen ein gefälschtes Eingabegerät mit der Uinput-Funktion des Kernels erstellen. grawity vor 8 Jahren 0
Es sollte nicht so schwierig sein, ich erinnere mich, dass ich es einmal in einer Fahrerarbeit gemacht habe. Wenn ich mir nur diesen Code anschaue, könnte ich einen Weg finden. (Obwohl ich nie wusste, was ich zu der Zeit tat) Cestarian vor 8 Jahren 0
Es gab einen RFC in einer Mailingliste: [RFC: Schnittstelle zur Injektion von Eingabeereignissen] (https://lists.freedesktop.org/archives/wayland-devel/2017-March/033676.html) und [Add a API for Screenshots aufnehmen und Screencasts aufnehmen] (https://bugs.freedesktop.org/show_bug.cgi?id=98894). Es scheint, als könnten die Herausforderungen durch zusätzliche Sicherheitsmaßnahmen gelöst werden. Ben Creasy vor 6 Jahren 0
0
Satori Komeiji

Momentan gibt es keine perfekte Lösung, aber eine enge: ydotool .

Es verwendet die Uinput- Schnittstelle als Backend und ist nicht von Anzeigeservern abhängig.