Welche Befehlszeilentools gibt es, um X-Server-Grabs aufzulisten und zu verwalten? (Das ist Greifen wie bei Tasten- und Zeigergriffen, dh Beschränken der Verwendung einer bestimmten Taste oder Maustaste auf eine bestimmte Anwendung oder Einschränken des Mauszeigers, um in einem bestimmten Bildschirmbereich zu bleiben.) Ich suche nach einem hypothetischen xgrab
Dienstprogramm, das dies tun würde zeige Dinge wie
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
was bedeutet , dass es einen Anruf war XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
und so weiter mit XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(wenn möglich). Das Anzeigeformat spielt keine Rolle. Ich möchte auf irgendeine Weise sehen, wer was packt, und möglicherweise auf irgendeine Weise, wie diese Zupacken widerrufen werden können (wenn es möglich ist, bin ich mir nicht sicher, ob die X11-API dies zulässt).
quelle
xdotool key XF86LogGrabInfo
nur zwei Einträge im X-Protokoll ausgelöst : "Alle derzeit aktiven Geräte-Grabs drucken:", unmittelbar gefolgt von "Liste der aktiven Geräte-Grabs beenden". Mein Fenstermanager greift jedoch nach einem Schlüsselbund. Haben Sie diese Arbeit für ergriffene Schlüssel gesehen?sleep 2; xdotool key "XF86LogGrabInfo"
und drücke sofort eine Taste (z. B. die "Win" -Taste) sehr schnell, dann siehst du eine Ausgabe in Xorg.log. Oderxdotool
drücken Sie gleichzeitig die Tasten +XF86LogGrabInfo
, wie hierXF86LogGrabInfo
druckt nur Informationen über eine Taste, die gerade gedrückt wird? Das schränkt seinen Nutzen ein. Ich möchte alle Zupacken auflisten - alle passiven Zupacken, wenn ich die Terminologie richtig verstehe.xfsettingsd
meineWin
+L
Verknüpfung gestohlen wurde .Ich habe keine Ahnung, ob für die passiven Zupacken 1 einer einzelnen Taste oder eines einzelnen Knopfes noch Zupacken vorhanden sind, aber es gibt verschiedene Möglichkeiten, die aktiven Zupacken eines gesamten Tastatur- oder Mausgeräts aufzulisten.
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
, wie in Informationen vom X-Server abrufen beschrieben . Es gibt hier auch einen für Server-Grabs, den die Xorg 1.11-Hotkeys derzeit nicht abdecken.1 Unter http://tronche.com/gui/x/xlib/input/pointer-grabbing.html finden Sie Informationen zur Definition von aktiven und passiven Zügen.
quelle
Dies ist eine Ergänzung zu Mechanicals Antwort:
Die Einträge im Xorg-Protokoll können ziemlich unkenntlich sein. Ich habe ein Programm geschrieben, das sie analysiert und in einer für den Menschen nachvollziehbaren Form darstellt:
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
Führen Sie zunächst den Befehl aus
xdotool key XF86LogGrabInfo
, wie in der Antwort von Mechanical Snail beschrieben. Führen Sie dann das oben verlinkte Programm aus. Wenn sich/var/log/Xorg.0.log
Ihre Xorg-Protokolldatei nicht in befindet , können Sie den Speicherort mithilfe der--xorg-log
Option angeben . Siehe--help
für weitere Einzelheiten.quelle
gdc
(GNU D-Compiler) undlibx11-dev
dann ausführengdc -o xorg-show-grabs xorg-show-grabs.d -lX11
.