maid450
11/05/13, 11:04:21
Root necesario.
Este tutorial pretende mostrar como emular una pulsación en un punto determinado de la pantalla con tasker utilizando comandos de consola a muy bajo nivel que debería funcionar en cualquier versión de android.
Para versiones de android 4.1+ y para emular pulsaciones de teclas del teclado e introducción de texto hay una forma más facil descrita aquí (http://www.htcmania.com/showthread.php?t=605594) en el primer y cuarto comentario.
Aviso: este es un tutorial de como hacerlo para vuestro terminal, depende mucho de la versión de android que tengais, vuestro modelo de terminal y vuestra ROM, con lo que si en vez de seguir los pasos que describa copiais y pegais mis resultados lo más probable es que no os funcione.
Requisitos:
descargarse el fichero geteventsendevent.sh (enlace al hilo original (http://forum.xda-developers.com/showthread.php?p=40266658))
instalar el Smanager (https://play.google.com/store/apps/details?id=os.tools.scriptmanager)
Pasos
una vez tengais el script geteventsendevent.sh en vuestro telefono, podeis ejecutar smanager, navegais por vuestro sistema de archivos y buscais y clicais sobre el script.
Os saldrá una pantalla como esta:
http://www.htcmania.com/attachment.php?attachmentid=293895&stc=1&d=1368263392
Teneis que marcar el icono que pone su para que se ponga el dibujo en verde (señalado en la imágen) y le dais a ejecutar, esto hace que el script se ejecute como root.
Al ejecutarlo os saldrá una lista de opciones numeradas del 1 al 6.
Lo primero será averiguar que numero de dispositivo es vuestra pantalla tactil. Para ello ponemos 3 y damos a enter (si no os aparece el teclado: "pulsación larga -> toggle keyboard")
Os saldrá una lista parecida a esta (diferente según vuestro terminal)
http://www.htcmania.com/attachment.php?attachmentid=293896&stc=1&d=1368263392
En mi caso el dispositivo es "/dev/input/event1" (se ve porque en la descripción a la derecha pone "touchscreen")
Le dais al enter de nuevo para volver al menú y elegís esta vez la opción 4 para filtrar solo por este dispositivo.
Cuando pongais 4 y enter os pedirá el nombre de dispositivo por el que filtrar, poned el que os corresponda ("/dev/input/event1" en mi caso, sin las comillas)
Nuevamente enter para volver al menú principal y ponéis la opción 1 para empezar a "grabar".
Os preguntará cuantos eventos monitorizar, para un simple tap poned unos 50 o más (sobra, pero mejor así).
Os saldrá una cuenta atrás, cuando acabe haced un "toque" de pantalla como haríais normalmente (ni mantener el dedo en la pantalla mucho rato ni hacer un movimiento "ninja") sobre la pantalla en el punto que queráis emular la pulsación (más o menos, luego podréis adaptarlo) esperáis 3 o 4 segundos y hacéis otra pulsación, y así hasta que el script termine (empieza a escribir y dice: "Done!")
Acto seguido copiais todo lo que os haya devuelto (pulsación larga -> copiar todo) y lo pegais en algún editor de textos (recomiendo el jota, pero el que queráis) y os quedais con la parte entre asteriscos, copio mi resultado:
sendevent /dev/input/event1 3 58 43
sendevent /dev/input/event1 3 48 43
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 237
sendevent /dev/input/event1 3 54 343
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 2
sendevent /dev/input/event1 3 58 44
sendevent /dev/input/event1 3 48 44
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 279
sendevent /dev/input/event1 3 54 359
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 4
sendevent /dev/input/event1 3 58 43
sendevent /dev/input/event1 3 48 43
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 264
sendevent /dev/input/event1 3 54 354
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 2
sendevent /dev/input/event1 3 58 45
sendevent /dev/input/event1 3 48 45
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 3 58 31
sendevent /dev/input/event1 3 48 31
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 3
sendevent /dev/input/event1 3 58 39
sendevent /dev/input/event1 3 48 39
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 281
sendevent /dev/input/event1 3 54 331
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0De este churro hay que quedarse con el trozo que "mejor pinta" tenga (entendemos por trozos los bloques que hay entre los "sleep x"), este es el paso más dificil, pero voy a poneros cual es el que yo he cogido y los detalles que lo hacen un buen trozo:
sendevent /dev/input/event1 3 58 45
sendevent /dev/input/event1 3 48 45
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 3 58 31
sendevent /dev/input/event1 3 48 31
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0Los numeros de la izquierda no sé bien que son, pero los del centro fijaros que son una secuencia que se repite (58, 48, 50, 53, 54, 2, 0 y luego nuevamente 58, 48, 50, 53, 54, 2, 0 y finalmente otro 2, 0) esto es porque un tap son 2 movimientos: pulsar y levantar el dedo, y cada una de esas secuencias define cada movimiento.
En los números de la derecha, justo antes de cada "0 2 0" las 2 lineas anteriores definen las coordenadas de la pulsación (289;339 en mi caso)
Pues ya lo tenemos, si en las opciones de desarrollo de android activamos que nos muestre los toques o la ubicación del puntero y ejecutamos en tasker (con la opción "Script -> Ejecutar consola") este tocho tal cual marcando la opción de root deberíamos ver que nos marca el solo un toque donde hubiesemos pulsado antes.
Yo recomendaría definir una tarea en tasker que ejecute este comando reemplazando las coordenadas por %par1 y %par2 (recordad que aparecen 2 veces cada una) para poder llamarla como una subtarea pasandole como parametros las coordenadas cada vez que querais emular un tap.
Nota final: El script geteventsendevent.sh permite grabar algo así como macros, con lo que tecnicamente podeis generar la serie de comandos para simular un swipe (repito que para emular un swipe en veriones de android 4.1+ hay una forma más facil explicada aquí (http://www.htcmania.com/showthread.php?t=605594)) o incluso gestos de 2 o más dedos, pero eso ya es mucho más complicado, además que si un simple toque necesita 16 eventos (al menos en mi movil) imáginad un deslizamiento de 4 dedos X-D.
Asi que esto no lo cubro en el tutorial, pero sois libres de trastear ;-)
Este tutorial pretende mostrar como emular una pulsación en un punto determinado de la pantalla con tasker utilizando comandos de consola a muy bajo nivel que debería funcionar en cualquier versión de android.
Para versiones de android 4.1+ y para emular pulsaciones de teclas del teclado e introducción de texto hay una forma más facil descrita aquí (http://www.htcmania.com/showthread.php?t=605594) en el primer y cuarto comentario.
Aviso: este es un tutorial de como hacerlo para vuestro terminal, depende mucho de la versión de android que tengais, vuestro modelo de terminal y vuestra ROM, con lo que si en vez de seguir los pasos que describa copiais y pegais mis resultados lo más probable es que no os funcione.
Requisitos:
descargarse el fichero geteventsendevent.sh (enlace al hilo original (http://forum.xda-developers.com/showthread.php?p=40266658))
instalar el Smanager (https://play.google.com/store/apps/details?id=os.tools.scriptmanager)
Pasos
una vez tengais el script geteventsendevent.sh en vuestro telefono, podeis ejecutar smanager, navegais por vuestro sistema de archivos y buscais y clicais sobre el script.
Os saldrá una pantalla como esta:
http://www.htcmania.com/attachment.php?attachmentid=293895&stc=1&d=1368263392
Teneis que marcar el icono que pone su para que se ponga el dibujo en verde (señalado en la imágen) y le dais a ejecutar, esto hace que el script se ejecute como root.
Al ejecutarlo os saldrá una lista de opciones numeradas del 1 al 6.
Lo primero será averiguar que numero de dispositivo es vuestra pantalla tactil. Para ello ponemos 3 y damos a enter (si no os aparece el teclado: "pulsación larga -> toggle keyboard")
Os saldrá una lista parecida a esta (diferente según vuestro terminal)
http://www.htcmania.com/attachment.php?attachmentid=293896&stc=1&d=1368263392
En mi caso el dispositivo es "/dev/input/event1" (se ve porque en la descripción a la derecha pone "touchscreen")
Le dais al enter de nuevo para volver al menú y elegís esta vez la opción 4 para filtrar solo por este dispositivo.
Cuando pongais 4 y enter os pedirá el nombre de dispositivo por el que filtrar, poned el que os corresponda ("/dev/input/event1" en mi caso, sin las comillas)
Nuevamente enter para volver al menú principal y ponéis la opción 1 para empezar a "grabar".
Os preguntará cuantos eventos monitorizar, para un simple tap poned unos 50 o más (sobra, pero mejor así).
Os saldrá una cuenta atrás, cuando acabe haced un "toque" de pantalla como haríais normalmente (ni mantener el dedo en la pantalla mucho rato ni hacer un movimiento "ninja") sobre la pantalla en el punto que queráis emular la pulsación (más o menos, luego podréis adaptarlo) esperáis 3 o 4 segundos y hacéis otra pulsación, y así hasta que el script termine (empieza a escribir y dice: "Done!")
Acto seguido copiais todo lo que os haya devuelto (pulsación larga -> copiar todo) y lo pegais en algún editor de textos (recomiendo el jota, pero el que queráis) y os quedais con la parte entre asteriscos, copio mi resultado:
sendevent /dev/input/event1 3 58 43
sendevent /dev/input/event1 3 48 43
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 237
sendevent /dev/input/event1 3 54 343
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 2
sendevent /dev/input/event1 3 58 44
sendevent /dev/input/event1 3 48 44
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 279
sendevent /dev/input/event1 3 54 359
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 4
sendevent /dev/input/event1 3 58 43
sendevent /dev/input/event1 3 48 43
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 264
sendevent /dev/input/event1 3 54 354
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 2
sendevent /dev/input/event1 3 58 45
sendevent /dev/input/event1 3 48 45
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 3 58 31
sendevent /dev/input/event1 3 48 31
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sleep 3
sendevent /dev/input/event1 3 58 39
sendevent /dev/input/event1 3 48 39
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 281
sendevent /dev/input/event1 3 54 331
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0De este churro hay que quedarse con el trozo que "mejor pinta" tenga (entendemos por trozos los bloques que hay entre los "sleep x"), este es el paso más dificil, pero voy a poneros cual es el que yo he cogido y los detalles que lo hacen un buen trozo:
sendevent /dev/input/event1 3 58 45
sendevent /dev/input/event1 3 48 45
sendevent /dev/input/event1 3 50 4
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 3 58 31
sendevent /dev/input/event1 3 48 31
sendevent /dev/input/event1 3 50 3
sendevent /dev/input/event1 3 53 289
sendevent /dev/input/event1 3 54 339
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0Los numeros de la izquierda no sé bien que son, pero los del centro fijaros que son una secuencia que se repite (58, 48, 50, 53, 54, 2, 0 y luego nuevamente 58, 48, 50, 53, 54, 2, 0 y finalmente otro 2, 0) esto es porque un tap son 2 movimientos: pulsar y levantar el dedo, y cada una de esas secuencias define cada movimiento.
En los números de la derecha, justo antes de cada "0 2 0" las 2 lineas anteriores definen las coordenadas de la pulsación (289;339 en mi caso)
Pues ya lo tenemos, si en las opciones de desarrollo de android activamos que nos muestre los toques o la ubicación del puntero y ejecutamos en tasker (con la opción "Script -> Ejecutar consola") este tocho tal cual marcando la opción de root deberíamos ver que nos marca el solo un toque donde hubiesemos pulsado antes.
Yo recomendaría definir una tarea en tasker que ejecute este comando reemplazando las coordenadas por %par1 y %par2 (recordad que aparecen 2 veces cada una) para poder llamarla como una subtarea pasandole como parametros las coordenadas cada vez que querais emular un tap.
Nota final: El script geteventsendevent.sh permite grabar algo así como macros, con lo que tecnicamente podeis generar la serie de comandos para simular un swipe (repito que para emular un swipe en veriones de android 4.1+ hay una forma más facil explicada aquí (http://www.htcmania.com/showthread.php?t=605594)) o incluso gestos de 2 o más dedos, pero eso ya es mucho más complicado, además que si un simple toque necesita 16 eventos (al menos en mi movil) imáginad un deslizamiento de 4 dedos X-D.
Asi que esto no lo cubro en el tutorial, pero sois libres de trastear ;-)