Eu tenho um aplicativo que parece ter agarrado o mouse (eu posso movê-lo, mas não consigo clicar em qualquer lugar). Existe uma maneira de descobrir qual aplicativo é o dono do mouse do X.org?
O atalho fornecido aqui para liberar o mouse não pareceu funcionar, por isso estou interessado em algo que poderia me dar mais informações.
Respostas:
Você pode fazer isso pressionando a XF86LogGrabInfotecla, introduzida neste commit .
Por padrão, esse keyym não está vinculado a nenhuma chave física ou combinação de teclas. Mas você ainda pode ativá-lo usando
xdotool
:Após executar esse comando, uma lista de capturas ativas será registrada no log do X. No Ubuntu, pelo menos, é isso
/var/log/Xorg.0.log
. Ele estará em algum lugar próximo ao final do arquivo de log, mas pode haver várias mensagens de log irrelevantes abaixo dele. Se não houver agarrões, ele escreve:Se houver (aqui, eu abri um menu no Firefox), ele registra algo como:
fonte
Acabei de ter um problema semelhante e reduzi-o a um bug que de alguma forma faz o X11 pensar que o botão do meio é pressionado e não liberado. Desconectar fisicamente o mouse não ajuda, até que ocorra um evento de mouseup.
O problema pode ser reproduzido usando
xdotool mousedown 2
- é impossível alternar o foco entre janelas,xdotool key XF86LogGrabInfo
mostra a janela atual do processo focado, mas quando uma mata, outra janela recebe o foco e o mesmo cenário continua.Solução alternativa: problema
xdotool mouseup 2
.Atualização: o botão do meio sendo pressionado e não liberado é simplesmente o menos perceptível, porque a maioria dos aplicativos não responde, e alguns mouses não possuem esse botão para tentar clicar para ver se o problema desaparece.
fonte
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