¿Qué herramientas de línea de comandos existen para enumerar y administrar capturas de servidores X? (Eso es agarrar como en las capturas de teclas y punteros, es decir, restringir el uso de una tecla o botón del mouse en particular a una aplicación en particular, o restringir el puntero del mouse para que permanezca en un área de pantalla en particular). Estoy buscando un hipotético xgrab
utilidad que mostraría cosas como
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
lo que significa que ha habido una llamada a XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
y así sucesivamente con XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(si es posible). El formato de visualización no importa, lo que quiero es alguna forma de ver quién está tomando qué, y posiblemente alguna forma de revocar estas capturas (si es posible, no estoy seguro de si la API X11 lo permite).
Respuesta aceptada:
Las versiones recientes de X (servidor X.org ≥1.11) admiten varios keysyms de depuración, presentados en este compromiso. Cuando se activan, realizan acciones relacionadas con capturas.
De forma predeterminada (al menos en las versiones recientes), estos están deshabilitados (ausentes del mapa de teclas predeterminado).
Sin embargo, si tiene xdotool
instalado, es posible llamarlos, ejecutando en la línea de comando:
xdotool key NameOfKey
donde NameOfKey
es el keysym que desea activar. Por ejemplo, para imprimir una lista de capturas activas en el registro del servidor X, use xdotool key XF86LogGrabInfo
.
Keysyms relevantes son:
- XF86LogGrabInfo :imprime una lista de capturas activas en el registro del servidor X
- XF86Desagarrar :interrumpe todas las capturas activas, sin eliminar la aplicación que contiene las capturas
- XF86ClearGrab :elimina todos los procesos que tienen capturas activas
Tenga en cuenta que XF86LogGrabInfo solo enumera capturas activas, no capturas pasivas, como agarrar una tecla que no está presionada actualmente. Si desea obtener información sobre una captura pasiva, debe activar la captura:ejecute xdotool key XF86LogGrabInfo
mientras se presiona la combinación de teclas o botones del mouse que le interesan. Haz algo como:
- Ejecutar
sleep 1; xdotool key XF86LogGrabInfo
- Dentro de 1 segundo, presione la combinación de teclas o botones del mouse.
- Después de 1 segundo, suelte la tecla/botón.
- Verifique la información de "Active grab..." en el registro del servidor X (a menudo
/var/log/Xorg.0.log
).