2012-09-05 19 views
12

Estoy tratando de averiguar qué formato es la salida del comando getevent en el shell adb.¿Alguien sabe qué significa la salida de getevent?

Por ejemplo, la salida tiene el siguiente aspecto:

adb shell getevent -t | grep event1

La bandera -t proporciona una timestap y el grep es filtrar los mensajes sólo a los eventos de la pantalla táctil.

22779-197145:/dev/input/event1: 0003 003a 00400001

22779-197999:/dev/input/event1: 0003 0039 82c30a97

22779-218477:/dev/input/event1: 0003 003a 00390001

22779-219301:/dev/input/event1: 0003 0039 82c30aa4

22779-230623:/dev/input/event1: 0003 003a 002f0001

22.779-231.416:/dev/input/event1: 0003 0039 82c10aae

22779-242769:/dev/input/event1: 0003 003a 00190001

22779-243623:/dev/input/event1: 0003 0039 82c60ac1

22779-253328:/dev/input/event1: 0003 003a 00000002

22.779 hasta 254.213:/dev/input/event1: 0003 0039 82da0ae4

22779-415590:/dev/input/event1: 0003 003a 00000000

22.779 a 416.444:/dev/input/event1: 0003 0039 800b1549

El problema es que no tengo ni idea de cómo procesar esta información. Mientras que los segundos del último campo se alternan entre dos códigos (que se ha sugerido que corresponden a los valores X e Y), el último campo parece contener números enormes o muy pequeños.

Además, la marca de tiempo también es extraña para mí. Me pregunto si la parte después del tablero son nanosegundos.

¿Alguien sabe dónde puedo encontrar información sobre el formato de estas cosas?

+2

No hay mucha información sobre GetEvent tristemente ... ¿Has leído http://source.android.com/tech/input/getevent.html? – shkschneider

+0

Sí, lo hice, gracias. Terminé teniendo que alterar el código fuente de Android para obtener la información que necesitaba en un formato que entendía. – pypmannetjies

Respuesta

11

/dev/input/eventX es utilizado por evdev subsistema de kernel de Linux, que es la capa de eventos de entrada genérica que maneja los eventos y lo pasa con el tiempo asignado a las aplicaciones. Puede probar esto para obtener una salida legible más humano de lo que sucede en Android con getevent herramienta, así:

$ adb shell getevent -lp /dev/input/event1 

para obtener todos getevent 's opciones, hacer:

$ adb shell getevent --help 

Usted puede leer más sobre getevent herramienta here y sobre evdevon Wiki.

De acuerdo con las fuentes del kernel, evdev usa el formato de tiempo de resolución de nanosegundos (ktime) y las fuentes están en linux/next/include/linux/ktime.h o here, si desea verlo en línea.

+0

gracias voy a echar un vistazo – pypmannetjies

+3

[fuentes getevent] (http://code.metager.de/source/xref/android/4.0.4/system/core/toolbox/getevent.c#645) podría ser útil también. –

+0

[Su enlace] (https://source.android.com/tech/input/getevent) parece estar muerto. ¿Hay nueva documentación en alguna parte? –

0

Parece que los toques de la pantalla táctil no se grabaron en su fragmento o posiblemente x e y.

Por lo general, X coordenadas de pantalla táctil están bajo 0003 0035 y Y está bajo 0003 0036 mientras 0003 0039 es por lo general para el dedo hacia abajo (con el último campo más parecido a 00000000) y para el dedo hacia arriba (con el último campo también se parece más a ffffffff).

No estoy seguro exactamente de qué es 0003 003a pero parece de poca importancia y definitivamente no es el X o el hexadecimal.

Además, la marca de tiempo se mide en segundos. La sección anterior al guión en la marca de tiempo representa el Unix Epox el 1 de enero de 1970 en UTC y la marca de tiempo después del guión se convierte en una fecha basada en los segundos desde la hora y la fecha antes mencionadas.

Espero que eso añada más claridad.

Cuestiones relacionadas