
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 kate
como janela, mas a saída é Hello World8Hello World
em vez de Hello World Hello World
. O que estou fazendo de errado?
EDITAR:
Como solução alternativa, você pode usar xte 'key Tab'
o xautomation
pacote. Mas a questão original ainda permanece.
Responder1
xdotool
está 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, como
Alt_L
eControl_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
xdotool
O manual do sugere que pode ser necessário adicionar uma --sync
opção e implica que o encadeamento de comandos funcionará (para que windowactivate
e key
encadeiem juntos), mas essa combinação também não funciona para mim. Mas a --window
opção key
funciona:
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