2013-06-23 9 views
7

qualcuno può spiegare il seguente comando completamente:qualcuno può spiegare questo comando completamente adb shell sendevent [dispositivo] [tipo] [codice] [valore]?

adb shell sendevent [device] [type] [code] [value] 

Sto cercando di scrivere uno script per gli eventi di tocco utilizzando il comando evento inviare.

+0

FYI i valori utilizzati sono potenzialmente specifici per dispositivo/build. –

+0

@Chris, solo il nome del dispositivo touchscreen è specifico del dispositivo. Il protocollo di evento touch e le costanti include/linux/input.h non sono cambiate molto. Ma personalmente preferisco il comando "input tap" su "sendevent'for touch emulation. –

+1

Scusa, ma non è vero. I codici numerici sono ** abbastanza ** diversi sui miei vari dispositivi. –

risposta

8

Per prima cosa è necessario trovare il nome del dispositivo touchscreen sul telefono o sul tablet. È possibile utilizzare questo comando in adb shell sessione:

getevent -pl 2>&1 | sed -n '/^add/{h}/ABS_MT_TOUCH/{x;s/[^/]*//p}' 

Diciamo che il nome del dispositivo di input è /dev/input/event0 e si vuole emulare un rapido tocco in corrispondenza delle coordinate x = 300, y = 400:

sendevent /dev/input/event0 3 53 300 
sendevent /dev/input/event0 3 54 400 
sendevent /dev/input/event0 3 48 5 
sendevent /dev/input/event0 3 58 50 
sendevent /dev/input/event0 0 2 0 
sendevent /dev/input/event0 0 0 0 
sendevent /dev/input/event0 0 2 0 
sendevent /dev/input/event0 0 0 0 

Il tocco lungo (diciamo 1 secondo lungo) presso le stesse coordinate sarebbe:

sendevent /dev/input/event0 3 53 300 
sendevent /dev/input/event0 3 54 400 
sendevent /dev/input/event0 3 48 5 
sendevent /dev/input/event0 3 58 50 
sendevent /dev/input/event0 0 2 0 
sendevent /dev/input/event0 0 0 0 
sleep 1 
sendevent /dev/input/event0 0 2 0 
sendevent /dev/input/event0 0 0 0 

Per la spiegazione che cosa quei comandi significano e fanno esattamente si prega di leggere 0.123.102,636 mila.

0

Im usando ZTE blade (1.gen) CyanagenMod 7. La risoluzione dello schermo è 480x800 Dopo alcune prove ed errori ho capito che per premere le coordinate 240x725y in realtà dovevo implementare lo script in questo modo: 988 = 240x , 2768 = 725y

sendevent /dev/input/event0 3 53 988 
sendevent /dev/input/event0 3 54 2768 
sendevent /dev/input/event0 3 48 5 
sendevent /dev/input/event0 3 58 50 
sendevent /dev/input/event0 0 2 0 
sendevent /dev/input/event0 0 0 0 
sendevent /dev/input/event0 0 2 0 
sendevent /dev/input/event0 0 0 0 

ero in precedenza registrando gli eventi con eventi get e valori che essa stava dando erano corrette io proprio non sapevo come interpretarli =).

Problemi correlati