Quels outils de ligne de commande existent pour répertorier et gérer les captures de serveur X ? (C'est une saisie 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 hypothétique xgrab
utilitaire qui montrerait des choses comme
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
ce qui signifie qu'il y a 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 éventuellement un moyen de révoquer ces saisies (si c'est possible, je ne sais pas si l'API X11 le permet).
Réponse acceptée :
Les versions récentes de X (serveur X.org ≥1.11) prennent en charge plusieurs keysyms de débogage, introduits dans ce commit. Lorsqu'ils sont déclenchés, ils effectuent des actions liées aux saisies.
Par défaut (du moins dans les versions récentes), ceux-ci sont désactivés (absents du keymap par défaut).
Cependant, si vous avez xdotool
installé, il est possible de les appeler, en exécutant en ligne de commande :
xdotool key NameOfKey
où NameOfKey
est le keysym que vous voulez activer. Par exemple, pour imprimer une liste des captures actives dans le journal du serveur X, utilisez xdotool key XF86LogGrabInfo
.
Les keyyms pertinents sont :
- XF86LogGrabInfo :imprime une liste des saisies actives dans le journal du serveur X
- XF86Ungrab :interrompt tous les grabs actifs, sans tuer l'application qui détient les grabs
- XF86ClearGrab :tue tous les processus qui détiennent des captures actives
Notez que XF86LogGrabInfo répertorie uniquement les saisies actives, pas les saisies passives telles qu'une saisie sur une touche qui n'est pas actuellement enfoncée. Si vous souhaitez obtenir des informations sur un grab passif, vous devez activer le grab :exécutez xdotool key XF86LogGrabInfo
pendant que la combinaison d'accord clé ou de bouton de la souris qui vous intéresse est enfoncée. Faites quelque chose comme :
- Exécutez
sleep 1; xdotool key XF86LogGrabInfo
- En 1 seconde, appuyez sur l'accord de touche ou la combinaison de boutons de la souris.
- Après 1 seconde, relâchez la touche/le bouton.
- Vérifiez les informations "Active grab …" dans le journal du serveur X (souvent
/var/log/Xorg.0.log
).