Quais ferramentas de linha de comando existem para listar e gerenciar as capturas do servidor X? (Isso é o mesmo que ocorre nas capturas de teclas e ponteiros, ou seja, restringir o uso de uma tecla ou botão do mouse em particular a um aplicativo específico ou restringir o ponteiro do mouse a permanecer em uma área específica da tela.) Estou procurando um xgrab
utilitário hipotético que mostrar coisas como
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
o que significa que houve uma chamada para XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
e assim por diante com XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(se possível). O formato de exibição não importa, o que eu quero é uma maneira de ver quem está pegando o que e, possivelmente, alguma maneira de revogar essas garras (se possível, não tenho certeza se a API do X11 permite isso).
fonte
xdotool key XF86LogGrabInfo
dispara apenas duas entradas no log do X: “Imprimindo todas as capturas de dispositivos atualmente ativas:” imediatamente seguidas por “Finalizar lista de capturas de dispositivos ativas”. No entanto, meu gerenciador de janelas pega um monte de chaves. Você já viu esse trabalho para pegar as chaves?sleep 2; xdotool key "XF86LogGrabInfo"
e imediatamente comece a pressionar uma tecla (por exemplo, a tecla "Win") muito rápido, e então verá alguma saída em Xorg.log. Ou o usoxdotool
de chaves de imprensa +XF86LogGrabInfo
, ao mesmo tempo, como aquiXF86LogGrabInfo
apenas imprime informações sobre uma tecla que está pressionada no momento? Isso limita sua utilidade. Quero listar todas as capturas - todas as capturas passivas, se entender a terminologia corretamente.xfsettingsd
estava roubando meuWin
+L
atalho.Não conheço nada de improviso para as garras passivas 1 de uma única tecla ou botão que possam estar presentes, mas existem algumas maneiras de listar as garras ativas de um dispositivo de teclado ou mouse inteiro.
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
, como descrito em Agarrando informações do X Server . Há também um aqui para servidores, que as teclas de atalho do Xorg 1.11 atualmente não cobrem.1 Consulte http://tronche.com/gui/x/xlib/input/pointer-grabbing.html para obter a definição de agarra ativa versus passiva.
fonte
Esta é uma adição à resposta do Mechanical snail -
As entradas no log do Xorg podem ser bastante indecifráveis. Eu escrevi um programa que os analisa e os apresenta de uma forma tratável por humanos:
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
Para usar, execute primeiro
xdotool key XF86LogGrabInfo
, conforme descrito na resposta do Mechanical snail. Em seguida, execute o programa vinculado acima. Se o arquivo de log do Xorg não estiver localizado em/var/log/Xorg.0.log
, você poderá especificar sua localização usando a--xorg-log
opção Veja--help
para detalhes.fonte
gdc
(compilador GNU D) elibx11-dev
depois executargdc -o xorg-show-grabs xorg-show-grabs.d -lX11
.