Quels outils de ligne de commande existent pour répertorier et gérer les captures de serveur X? (C'est saisir comme dans les saisies de touches et de pointeurs, c'est-à-dire restreindre l'utilisation d'une touche ou d'un bouton de souris particulier à une application particulière, ou restreindre le pointeur de la souris pour qu'il reste dans une zone d'écran particulière.) Je recherche un xgrab
utilitaire hypothétique qui montrer des choses comme
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
ce qui signifie qu'il ya eu un appel à XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
et ainsi de suite avec XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(si possible). Le format d'affichage n'a pas d'importance, ce que je veux, c'est un moyen de voir qui saisit quoi, et peut-être un moyen de révoquer ces captures (si c'est possible, je ne sais pas si l'API X11 le permet).
la source
xdotool key XF86LogGrabInfo
ne déclenche que deux entrées dans le journal X: «Impression de tous les récupérations de périphériques actuellement actifs:» immédiatement suivi de «Fin de la liste des récupérations de périphériques actifs». Pourtant, mon gestionnaire de fenêtres récupère un tas de clés. Avez-vous vu ce travail pour les clés saisies?sleep 2; xdotool key "XF86LogGrabInfo"
et commencez immédiatement à appuyer sur une touche (par exemple la touche "Win") très rapidement, alors vous verrez une sortie dans Xorg.log. Ou utilisezxdotool
pour appuyer sur les touches +XF86LogGrabInfo
en même temps, comme iciXF86LogGrabInfo
imprime uniquement des informations sur une touche qui est actuellement enfoncée? Cela limite son utilité. Je veux énumérer toutes les captures - toutes les captures passives, si je comprends bien la terminologie.xfsettingsd
volait monWin
+L
raccourci.Je ne connais rien de disponible pour les saisies passives 1 d'une seule touche ou d'un seul bouton qui peuvent être présents, mais il existe plusieurs façons de répertorier les saisies actives d'un clavier ou d'une souris.
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
, comme décrit dans la section Grabbing Information from the X Server . Il y en a également un ici pour les captures de serveur, que les raccourcis clavier Xorg 1.11 ne couvrent pas actuellement.1 Voir http://tronche.com/gui/x/xlib/input/pointer-grabbing.html pour la définition des saisies actives et passives.
la source
Ceci est un ajout à la réponse de Mechanical Snail -
Les entrées dans le journal Xorg peuvent être assez indéchiffrables. J'ai écrit un programme qui les analyse et les présente sous une forme humaine:
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
Pour l'utiliser, lancez d'abord
xdotool key XF86LogGrabInfo
, comme décrit dans la réponse de Mechanical Snail. Ensuite, exécutez le programme lié ci-dessus. Si votre fichier journal Xorg ne se trouve pas à/var/log/Xorg.0.log
, vous pouvez spécifier son emplacement à l'aide de l'--xorg-log
option. Voir--help
pour plus de détails.la source
gdc
(compilateur GNU D)libx11-dev
puis exécutergdc -o xorg-show-grabs xorg-show-grabs.d -lX11
.