¿Qué herramientas de línea de comando existen para enumerar y administrar las capturas de servidor X? (Eso es agarrar como en las capturas de teclas y punteros, es decir, restringir el uso de una tecla o botón de 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 una xgrab
utilidad hipotética que podría mostrar 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 una forma de ver quién está agarrando qué, y posiblemente alguna forma de revocar estas capturas (si es posible, no estoy seguro de si la API X11 lo permite).
fuente
xdotool key XF86LogGrabInfo
solo se activan dos entradas en el registro X: “Imprimir todas las capturas de dispositivos actualmente activas:” seguido inmediatamente por “Finalizar lista de capturas de dispositivos activas”. Sin embargo, mi administrador de ventanas toma algunas llaves. ¿Has visto este trabajo para las llaves agarradas?sleep 2; xdotool key "XF86LogGrabInfo"
e inmediatamente comience a presionar una tecla (por ejemplo, la tecla "Win") muy rápido, luego verá algo de salida en Xorg.log. O usexdotool
para presionar las teclas +XF86LogGrabInfo
al mismo tiempo, como aquíXF86LogGrabInfo
solo imprime información sobre una tecla que está presionada actualmente? Eso limita su utilidad. Quiero enumerar todas las capturas, todas las capturas pasivas, si entiendo la terminología correctamente.xfsettingsd
estaba robando mi atajoWin
+L
.No sé nada de las manos para las capturas pasivas 1 de una sola tecla o botón que puede estar presente, pero hay un par de maneras de enumerar las capturas activas de un dispositivo de teclado o mouse completo.
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
, como se describe en Información Grabbing desde el Servidor X . También hay uno aquí para obtener el servidor, que las teclas de acceso rápido Xorg 1.11 no cubren actualmente.1 Consulte http://tronche.com/gui/x/xlib/input/pointer-grabbing.html para la definición de agarres activos frente a pasivos.
fuente
Esta es una adición a la respuesta del caracol mecánico:
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-log
opción. Ver--help
para más detalles.fuente
gdc
(compilador GNU D) ylibx11-dev
luego ejecutarlogdc -o xorg-show-grabs xorg-show-grabs.d -lX11
.