Encontrar el propietario de captura de puntero X.org

17

Tengo una aplicación que parece haber agarrado el mouse (puedo moverla pero no puedo hacer clic en ningún lado), ¿hay alguna forma de encontrar qué aplicación posee el mouse X.org?

El acceso directo que se proporciona aquí para liberar el mouse no parece funcionar, por lo que estoy interesado en algo que pueda brindarme más información.

Tobu
fuente
¿Estás seguro de que ese es el problema? Sería algo extraño para una aplicación que no está utilizando para hacer esto (si lo hiciera, dejaría de usar esa aplicación), por lo que es probable que, si esta es realmente la causa, sea lo que esté usando.
Ricitos de oro
Lo he encontrado por prueba y error, matando algunas cosas hasta que algo (una aplicación de vino) lanzó la captura.
Tobu

Respuestas:

16

Puede hacer esto presionando la XF86LogGrabInfotecla, introducida en esta confirmación .

Por defecto, este keyym no está vinculado a ninguna tecla física o combinación de teclas. Pero aún puede activarlo usando xdotool:

xdotool key "XF86LogGrabInfo"

Después de ejecutar ese comando, se registrará una lista de capturas activas en el registro X. En Ubuntu al menos, esto es /var/log/Xorg.0.log. Estará en algún lugar cerca del final del archivo de registro, pero puede haber varios mensajes de registro irrelevantes debajo de él. Si no hay agarres, escribe:

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

Si hay capturas (aquí, abrí un menú en Firefox), registra algo como:

[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
Caracol mecánico
fuente
2

Acabo de tener un problema similar y lo reduje a un error que de alguna manera hace que X11 piense que el botón central está presionado y no liberado. Desconectar físicamente el mouse no ayuda, hasta que haya un evento de mouseup.

El problema se puede reproducir utilizando xdotool mousedown 2: es imposible cambiar el foco entre ventanas,

xdotool key XF86LogGrabInfo muestra la ventana del proceso enfocado actual, pero cuando uno lo mata, otra ventana recibe el foco y el mismo escenario continúa.

Solución alternativa: problema xdotool mouseup 2.

Actualización: el botón central que se presiona y no se suelta es simplemente el menos notable, porque la mayoría de las aplicaciones no responden, y algunos ratones no tienen este botón para intentar y hacer clic para ver si el problema desaparece.

ArticIceJuice
fuente
0

Las entradas en el registro de Xorg pueden ser bastante indescifrables. Escribí un programa que los analiza y los presenta en una forma manejable por humanos:

https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e

Para usar, primero ejecute xdotool key XF86LogGrabInfo, como se describe en la respuesta del caracol mecánico. Luego, ejecute el programa vinculado anteriormente. Si su archivo de registro Xorg no se encuentra en /var/log/Xorg.0.log, puede especificar su ubicación utilizando la --xorg-logopción. Ver --helppara más detalles.

Vladimir Panteleev
fuente