Trouver le propriétaire d'une capture de pointeur X.org

17

J'ai une application qui semble avoir saisi la souris (je peux la déplacer mais je ne peux cliquer nulle part), existe-t-il un moyen de trouver quelle application possède la capture de souris X.org?

Le raccourci donné ici pour libérer la souris ne semblait pas fonctionner, donc je suis intéressé par quelque chose qui pourrait me donner plus d'informations.

Tobu
la source
Êtes-vous sûr que c'est là le problème? Ce serait un peu bizarre pour une application que vous n'utilisez pas pour le faire (si c'était le cas, j'arrêterais d'utiliser cette application), donc il y a des chances - si c'est vraiment la cause - c'est tout ce que vous utilisiez.
goldilocks
Je l'ai trouvé par essais et erreurs, tuant quelques choses jusqu'à ce que quelque chose (une application de vin) libère la capture.
Tobu

Réponses:

16

Vous pouvez le faire en appuyant sur la XF86LogGrabInfotouche, introduite dans ce commit .

Par défaut, ce symbole de clé n'est lié à aucune clé physique ou combinaison de touches. Mais vous pouvez toujours l'activer en utilisant xdotool:

xdotool key "XF86LogGrabInfo"

Après avoir exécuté cette commande, une liste des captures actives sera enregistrée dans le journal X. Sur Ubuntu au moins, c'est le cas /var/log/Xorg.0.log. Ce sera quelque part vers la fin du fichier journal, mais il peut y avoir plusieurs messages de journal non pertinents en dessous. S'il n'y a pas de prises, il écrit:

[1199271.146] (II) Printing all currently active device grabs:
[1199271.146] (II) End list of active device grabs

S'il y a des captures (ici, j'ai ouvert un menu dans Firefox), il enregistre quelque chose comme:

[1199428.782] (II) Printing all currently active device grabs:
[1199428.782] Active grab 0x4c00000 (core) on device 'Virtual core pointer' (2):
[1199428.782]       client pid 15620 /usr/lib/firefox/firefox 
[1199428.782]       at 1199423728 (from active grab) (device thawed, state 1)
[1199428.782]         core event mask 0x7c
[1199428.782]       owner-events true, kb 1 ptr 1, confine 0, cursor 0x0
[1199428.782] (II) End list of active device grabs
Escargot mécanique
la source
2

Je viens d'avoir un problème similaire et je l'ai réduit à un bug qui fait en quelque sorte penser à X11 que le bouton du milieu est enfoncé et non relâché. Déconnecter physiquement la souris n'aide pas jusqu'à ce qu'il y ait un événement de souris.

Le problème peut être reproduit à l'aide de xdotool mousedown 2- il est impossible de basculer le focus entre les fenêtres,

xdotool key XF86LogGrabInfo montre la fenêtre de processus focalisée actuelle, mais quand on la tue, une autre fenêtre reçoit le focus et le même scénario continue.

Solution: problème xdotool mouseup 2.

Mise à jour: le bouton central enfoncé et non relâché est tout simplement le moins visible, car la plupart des applications n'y répondent pas, et certaines souris n'ont pas ce bouton pour essayer de cliquer pour voir si le problème disparaît.

ArticIceJuice
la source
0

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-logoption. Voir --helppour plus de détails.

Vladimir Panteleev
la source