Encontre detalhes de eventos de clique e teclado

4

Tenho notado que não há muita alternativa ao Problem Steps Recorder para Linux, e vou tentar criar um em um shell script.

  1. Como posso esperar até / detectar quando o mouse é clicado? Eu gostaria de fazer uma captura de tela neste momento.
  2. Como posso encontrar uma descrição de qualquer botão ou campo de entrada que o mouse tenha clicado? Problema Etapas O Gravador retornaria algo como Usuário clicou em "fechar janela" se eu clicar no 'X' ou Usuário clicar em "fechar" se eu clicar no botão "fechar".
  3. Como posso esperar até / detectar quando uma tecla é pressionada e descobrir qual tecla?
por Nonny Moose 21.06.2016 / 18:34

1 resposta

2

Você pode usar o comando xinput --test-xi2 --root (man xinput ) , onde test-xi2 significa registrar dispositivos de entrada, e --root é logar da assim chamada janela raiz (um conceito específico do x11) . Ele mostraria quando e qual tecla pressionada no sistema, cliques do mouse e até coordenadas de movimento do mouse. Ele resolve seus 1 e 3 pontos, você só precisa analisar esses eventos.

O ponto 2 é mais complicado. Você pode usar o comando xev -root que monitoraria todos os eventos X no sistema, incluindo coisas como (dis) janelas aparecendo, entrando / saindo do foco de uma janela particular, etc. Você tem que analisar sua saída e mostre uma descrição legível do que está acontecendo. Btw, o comando registra as teclas pressionadas também.

Uma advertência: é, obviamente, uma grande falha de segurança, que remonta a momentos em que o Xorg foi criado, e ninguém precisava se importar. Por esta razão, atualmente o X11 está sendo substituído pelo protocolo Wayland (é na essência um X12, mas não compatível com versões anteriores, o protocolo terra é chamado de outro modo), que os WMs estão implementando o ATM. Não é um processo rápido, pois o protocolo exige muito mais do WM, mas o Fedora 25 parece finalmente ter a sessão do Wayland habilitada por padrão. KWin também está alcançando. E o seu roteiro não vai funcionar no Wayland. Isso não significa que você não possa fazer isso - eu acho que você pode. Mas você precisaria trabalhar em estreita colaboração com um determinado WM de um determinado DE, e o script não seria um script autônomo bash, mas sim um addon para um WM.

    
por Hi-Angel 22.06.2016 / 07:34