O script Bash não executa comandos até após o atraso

0

Eu criei um script para digitar uma sequência aleatória de números vinculando-o a uma tecla de atalho:

#!/bin/bash

ran="$(shuf -i 100000-999999 -n 1)"

sleep .2

xdotool type --delay 12 "untitled_$ran "

Por alguma razão, o comando xdotool não fará nada durante o primeiro décimo de segundo. Se não houver sleep , nada será digitado. Se o comando sleep for menor, menos de seis caracteres serão digitados. É como se o comando fosse executado, mas é ignorado nos primeiros momentos após o script ser executado.

Por que isso acontece, e como posso resolver isso?

    
por ArdentCertes 06.08.2017 / 17:28

1 resposta

2

Você disse em um comentário que está usando algum tipo de tecla de atalho para acionar esse script. Não posso ter certeza do que está acontecendo, mas suspeito que o foco do teclado está sendo movido e que xdotool , quando executado sem atraso, está sendo executado enquanto o foco é diferente do terminal pretendido. Eu recomendo o seguinte método para testar esta hipótese:

  • Iniciar xev de um terminal.
  • Focalize a janela xev (mova o mouse para ela, ou algo semelhante) enquanto mantém o terminal visível.
  • Prima a sua tecla de atalho.
  • Fique atento aos eventos FocusOut e FocusIn registrados por xev . Se algum desses eventos acontecer, eles poderão explicar por que xev está faltando pressionamentos de teclas.
  • KeyPress e KeyRelease eventos devem mostrar xdotool fazendo seu trabalho.

Se a hipótese estiver correta, então, para saber como resolvê-la, você teria que ativar a tecla de atalho de alguma forma que não cause uma mudança de foco. Eu não sei ...

    
por 07.08.2017 / 22:19