
Cita: Originalmente Escrito por
threpwood
Tengo una tarea que me detecta cuando estoy enganchado a la wifi del trabajo y como pide autenticacion , me abre un navegador , me carga la url y me pone el usuario y la password para conectarme a la wifi del trabajo . Todo eso me va bién pero no he sido capaz de encontrar una tecla que pase el foco desde la barra de direcciones del navegador hasta la caja donde introducir el nombre. el keycode de Tab me vale para pasar de la caja del nombre a la password y el enter para darle a aceptar pero me falta ese pequeño paso para que sea completamente automático. Alguien sabe?

Como abres el navegador para cargar la URL? Se abre automáticamente cuando conectas a la red del trabajo?
Yo acabo de hacer una prueba con la accion "Red -> Navegar a URL" (o algo así, lo tengo en inglés), una espera de unos segundos para darle tiempo a cargar y con este comando unas cuantas veces mandando TABs se va moviendo a través de los elementos de la pantalla y contando cuantos hace falta para situarse en la barra de búsqueda he podido automatizar escribir algo y darle a enter.
He indagado sobre el comando input este y he encontrado cosas MUY interesantes

Las opciones que permite este comando son:
Código:
input keyevent <número o nombre de la tecla a pulsar>
emula pulsar en el teclado la tecla indicada (ver la lista del primer post)
Código:
input text <texto>
emula escribir el texto indicado (entre comillas si hay espacios) evitando pulsar un texto tecla a tecla
Código:
input tap <x> <y>
emula una pulsación en pantalla en las coordenadas elegidas, no sé el rango que tomará para las coordenadas... habrá que indagar más
Código:
input swipe <x1> <y1> <x2> <y2>
emula la acción de deslizar el dedo desde el punto de coordenadas x1;y1 al punto x2;y2
Por otra parte sobre los retrasos que comenta mlesir, los comandos en si tardan un poco en ejecutarse si los lanzas desde el terminal, esto lo gestiona el sistema operativo y no se puede hacer mucho, luego ya según como esté implementado puede que tasker añada un pequeño retraso más entre que recibe la respuesta del comando y que tasker pasa a la siguiente acción...
Lo que se puede hacer para evitar encadenar muchas acciones de estas una detrás de otra es encadenar los comandos en uno solo separandolos por ";" por ejemplo:
Código:
input keyevent 29;input keyevent 30;input keyevent 31;input keyevent 66
Entre los comandos de la cadena se puede meter el comando "sleep <num_segundos>" si es necesario que simplemente inserta una pausa del numero de segundos que indiquemos (admite decimales como por ejemplo "sleep 0.5" para esperar medio segundo) entre el comando anterior y el siguiente.
De esa forma ese posible retraso añadido de tasker desaparece y el unico retraso será lo que tarde el terminal en ejecutar cada acción.