xdotool imprime 8 em vez de Tab

xdotool imprime 8 em vez de Tab

Atualmente estou trabalhando em um script de "autotipagem" parapassar. Para fazer isso, preciso digitar o nome de usuário, pressionar 'Tab' e digitar a senha.

Para testes estou usando o seguinte código:

WID=$(xdotool selectwindow)
xdotool windowactivate $WID type --delay 100 "Hello World"
xdotool windowactivate $WID key --clearmodifiers Tab
xdotool windowactivate $WID type --delay 100 "Hello World" 

Então seleciono katecomo janela, mas a saída é Hello World8Hello Worldem vez de Hello World Hello World. O que estou fazendo de errado?

EDITAR: Como solução alternativa, você pode usar xte 'key Tab'o xautomationpacote. Mas a questão original ainda permanece.

Responder1

xdotoolestá procurando por um"X Keysym"string, mas sua documentação em relação a como determina isso é concisa:

Geralmente, qualquer string X Keysym válida funcionará. Várias chaves são separadas por '+'. Existem aliases para "alt", "ctrl", "shift", "super" e "meta" que são mapeados para Foo_L, comoAlt_Le Control_L, etc.

Usei códigos-chave como 0xff09(o código-chave paraAba) ao desenvolver uma página no xterm'schaves especiais. Com essa abordagem, consegui enviar todas as teclas que estavam definidas na configuração do meu teclado.

Minha linha de comando era diferente. Apenas a parte relevante de um script de teste mostra isso:

KEY=0xff09      # XK_tab

sendkey() {                                                                     
        echo "** $1"                                                            
        xdotool key --window $ID $1 2>/dev/null                                 
}

sendkey "$KEY"

Seu comando problemático seria

xdotool windowactivate $ID key --clearmodifiers $1 2>/dev/null

xdotoolO manual do sugere que pode ser necessário adicionar uma --syncopção e implica que o encadeamento de comandos funcionará (para que windowactivatee keyencadeiem juntos), mas essa combinação também não funciona para mim. Mas a --windowopção keyfunciona:

xdotool key --window $ID --clearmodifiers $1 2>/dev/null

Responder2

Eu sei que isso é um pouco antigo, mas talvez ajude alguém.. você também pode usar KP_Tab ou KP_Enter, por exemplo

informação relacionada