
Actualmente estoy trabajando en un script de "autotipo" paraaprobar. Para hacer eso, necesito escribir el nombre de usuario, presionar 'Tab' y luego escribir la contraseña.
Para realizar pruebas estoy usando el siguiente 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"
Luego selecciono kate
como ventana, pero el resultado es Hello World8Hello World
en lugar de Hello World Hello World
. ¿Qué estoy haciendo mal?
EDITAR:
Como solución alternativa, puede utilizar xte 'key Tab'
el xautomation
paquete. Pero la pregunta original sigue en pie.
Respuesta1
xdotool
está buscando un"X Keysym"cadena, pero su documentación con respecto a cómo determina esto es concisa:
Generalmente, cualquier cadena X Keysym válida funcionará. Varias claves están separadas por '+'. Existen alias para "alt", "ctrl", "shift", "super" y "meta" que se asignan a Foo_L, como
Alt_L
yControl_L
, etc.
Utilicé códigos clave como 0xff09
(el código clave paraPestaña) al desarrollar una página en xtermllaves especiales. Con ese enfoque, pude enviar todas las teclas que estaban definidas en la configuración de mi teclado.
Mi línea de comando difería. Sólo la parte relevante de un script de prueba muestra esto:
KEY=0xff09 # XK_tab
sendkey() {
echo "** $1"
xdotool key --window $ID $1 2>/dev/null
}
sendkey "$KEY"
Tu comando problemático sería
xdotool windowactivate $ID key --clearmodifiers $1 2>/dev/null
xdotool
El manual sugiere que puede ser necesario agregar una --sync
opción e implica que la cadena de comandos funcionará (de modo que windowactivate
y key
encadenar), pero esa combinación tampoco funciona para mí. Pero la --window
opción de key
sí funciona:
xdotool key --window $ID --clearmodifiers $1 2>/dev/null
Respuesta2
Sé que esto es un poco antiguo, pero tal vez ayude a alguien. También puedes usar KP_Tab o KP_Enter, por ejemplo.