Welche Kommandozeilen-Tools gibt es, um X-Server-Grabs aufzulisten und zu verwalten? (Das ist grab wie in key and pointer grabs, d. h. die Verwendung einer bestimmten Taste oder Maustaste auf eine bestimmte Anwendung zu beschränken oder den Mauszeiger so einzuschränken, dass er in einem bestimmten Bildschirmbereich bleibt.) Ich suche nach einem hypothetischen xgrab
Dienstprogramm, das Dinge wie
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
was bedeutet, dass XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
aufgerufen wurde und so weiter mit XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(wenn möglich). Das Anzeigeformat spielt keine Rolle, was ich möchte, ist eine Möglichkeit zu sehen, wer was greift, und möglicherweise eine Möglichkeit, diese Zugriffe zu widerrufen (wenn es möglich ist, bin ich mir nicht sicher, ob die X11-API das zulässt).
Akzeptierte Antwort:
Neuere Versionen von X (X.org-Server ≥1.11) unterstützen mehrere Debugging-Keysyms, die in diesem Commit eingeführt wurden. Wenn sie ausgelöst werden, führen diese Aktionen im Zusammenhang mit Grabs aus.
Standardmäßig (zumindest in neueren Versionen) sind diese deaktiviert (nicht in der Standard-Tastaturbelegung).
Wenn Sie jedoch xdotool
haben installiert, es ist möglich, sie aufzurufen, indem Sie auf der Befehlszeile Folgendes ausführen:
xdotool key NameOfKey
wo NameOfKey
ist das Keysym, das Sie aktivieren möchten. Um beispielsweise eine Liste aktiver Grabs in das X-Server-Protokoll zu drucken, verwenden Sie xdotool key XF86LogGrabInfo
.
Relevante Keysyms sind:
- XF86LogGrabInfo :gibt eine Liste aktiver Zugriffe in das X-Server-Log aus
- XF86Ungrab :unterbricht alle aktiven Zugriffe, ohne die Anwendung zu beenden, die die Zugriffe enthält
- XF86ClearGrab :Beendet alle Prozesse, die aktive Zugriffe enthalten
Beachten Sie, dass XF86LogGrabInfo listet nur aktive Griffe auf, keine passiven Griffe wie z. B. ein Griff auf eine Taste, die derzeit nicht gedrückt ist. Wenn Sie Informationen über einen passiven Zugriff erhalten möchten, müssen Sie den Zugriff aktivieren:Führen Sie xdotool key XF86LogGrabInfo
aus während die gewünschte Tastenakkord- oder Maustastenkombination gedrückt wird. Mach so etwas wie:
- Führe
sleep 1; xdotool key XF86LogGrabInfo
- Drücken Sie innerhalb von 1 Sekunde die Tastenkombination Akkord oder Maustaste.
- Lassen Sie die Taste/Taste nach 1 Sekunde los.
- Überprüfen Sie die „Active grab …“-Informationen im X-Server-Log (häufig
/var/log/Xorg.0.log
).