2014-10-05 12 views
5

Ich möchte "STRG + W" an den Chrome für Android senden, um aktive Registerkarte zu schließen. Ich habe viele Dinge ausprobiert, aber es gibt keinen Erfolg, um es vom Terminal aus zu erreichen. (Wenn ich eine USB-Tastatur mit OTG verbinde, kann ich die Registerkarte mit STRG + W schließen)Simulieren Kombination von Tasten drücken von ADB-Terminal

Erstens möchte ich keine Anwendung für diese schreiben, ich möchte nur einen Shell-Befehl, um es von Tasker zu verwenden.

Ich habe irgendwo gelesen, dass diese (CTRL + W Druck) zu erreichen, muss ich diese Taste drückt wie simulieren:

unten CTRL
unten W
Up W
Up CTRL

Und um dies vom Terminal zu erreichen, muss ich "sendevent" verwenden.

Ich kann alle Hardware-Tastendruck mit "Sendevent" simulieren, kann aber die normalen Tasten damit nicht simulieren.

Zum Beispiel, um nach oben und unten auf die POWER-Taste:

sendevent /dev/input/event1 1 116 1 
sendevent /dev/input/event1 0 0 0 
sendevent /dev/input/event1 1 116 0 
sendevent /dev/input/event1 0 0 0 

Ich benutze diese Befehle, aber ich kann nicht verwenden diese normale Tasten senden Befehle. (zum Beispiel a, b, c usw.)

Das Event1 ist der gpio-Schlüssel, also benutze ich ihn. Und alle anderen Eingabeereignisse sind Sensoren und einer ist der Ladetreiber. (Max77693-muic)

Der Ausgang des "GetEvent -p", sagt, dass:

add device 1: /dev/input/event9 
    name:  "compass_sensor" 
    events: 
    REL (0002): 0000 0001 0002 0003 0004 0005 0006 0007 
       0008 0009 
    input props: 
    <none> 
add device 2: /dev/input/event6 
    name:  "barometer_sensor" 
    events: 
    REL (0002): 0000 0001 0002 
    input props: 
    <none> 
add device 3: /dev/input/event5 
    name:  "light_sensor" 
    events: 
    REL (0002): 0000 0001 0002 0009 
    input props: 
    <none> 
add device 4: /dev/input/event4 
    name:  "proximity_sensor" 
    events: 
    ABS (0003): 0019 : value 1, min 0, max 1, fuzz 0, flat 0, resolution 0 
    input props: 
    <none> 
add device 5: /dev/input/event3 
    name:  "gyro_sensor" 
    events: 
    REL (0002): 0003 0004 0005 
    input props: 
    <none> 
could not get driver version for /dev/input/mice, Not a typewriter 
add device 6: /dev/input/event7 
    name:  "Midas_WM1811 Midas Jack" 
    events: 
    KEY (0001): 0072 0073 00e2 
    SW (0005): 0002 0004 
    input props: 
    <none> 
add device 7: /dev/input/event1 
    name:  "gpio-keys" 
    events: 
    KEY (0001): 0072 0073 0074 00ac 
    input props: 
    <none> 
add device 8: /dev/input/event0 
    name:  "max77693-muic" 
    events: 
    KEY (0001): 0072 0073 00a3 00a4 00a5 
    input props: 
    <none> 
add device 9: /dev/input/event8 
    name:  "sec_touchkey" 
    events: 
    KEY (0001): 008b 009e 
    LED (0011): 0008 
    input props: 
    <none> 
add device 10: /dev/input/event2 
    name:  "sec_touchscreen" 
    events: 
    ABS (0003): 002f : value 0, min 0, max 9, fuzz 0, flat 0, resolution 0 
       0030 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0 
       0031 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0 
       0032 : value 0, min 0, max 30, fuzz 0, flat 0, resolution 0 
       0035 : value 0, min 0, max 719, fuzz 0, flat 0, resolution 0 
       0036 : value 0, min 0, max 1279, fuzz 0, flat 0, resolution 0 
       0039 : value 0, min 0, max 65535, fuzz 0, flat 0, resolution 0 
       003c : value 0, min -90, max 90, fuzz 0, flat 0, resolution 0 
       003d : value 0, min 0, max 1, fuzz 0, flat 0, resolution 0 
    input props: 
    INPUT_PROP_DIRECT 

Auch meine GPIO-Tasten-Layout-Datei "/system/usr/keylayout/gpio-keys.kl" wie dies:

key 115 VOLUME_UP   WAKE 
key 114 VOLUME_DOWN  WAKE 
key 116 POWER    WAKE 
key 172 HOME    WAKE 

ich kann alle normalen keyevents senden mit:

"input keyevent KEYCODE_X" 

und mehr als eine senden:

"input keyevent KEYCODE_X KEYCODE_Y" 

Sie sollten es funktioniert so denken kann:

"input keyevent KEYCODE_CTRL_LEFT KEYCODE W" 

aber KeyEvent nach oben und unten sofort und ich kann es nicht STRG + W Kombination senden verwenden.

Ich weiß, die Antwort sollte mit "Sendevent" sein. Aber ich kann nicht finden.

Ich habe auch versucht, einige gefälschte Schlüssel in die Schlüssel Layout-Datei wie folgt ergänzt:

key 115 VOLUME_UP   WAKE 
key 114 VOLUME_DOWN  WAKE 
key 116 POWER    WAKE 
key 172 HOME    WAKE 
key 19 Q 

i das Telefon neu gestartet wird, dann versucht: in

sendevent /dev/input/event1 1 19 1 
sendevent /dev/input/event1 0 0 0 
sendevent /dev/input/event1 1 19 0 
sendevent /dev/input/event1 0 0 0 

Aber es schreibt nie "Q" die beliebige Textbox.

Bitte helfen Sie, danke für Ihre Hilfe.

Antwort

2

Oh JA !! Ich weiß nicht, warum, aber wenn ich festgefahren fühle ich komme zu Stackoverflow und sobald ich anfange zu schreiben, die Frage irgendwie finde ich die Antwort ... xD Anyways, ich war in der Lage, es zu tun durch folgende Vorgehensweise:

  1. zum/system/usr/Tastenbelegung/
  2. In meinem Fall gab es keine GPIO-Tasten, öffnen sowieso Generic.kl
  3. Es verfügt über alle keycodes man braucht nichts zu simulieren ... wie für CTRL_RIGHT Keycode ist 97 und für W Keycode ist 17
  4. Das ist alles, was Sie brauchen, jetzt öffnen Task -> Neue Aufgabe -> Add wait 5 sec -> Ausführen-Shell: input keyevent 97 input keyevent 17

Sie nun den Befehl ausführen und schnell zu öffnen Chrom, voila! In 5 Sekunden siehst du, wie dein Tab verschwindet!

Hoffnung, die alle zukünftigen tasker Profis hilft;)

Kudos ...

+1

Lösung kam nach zwei Jahren, danke dir. Ich habe es versucht und es funktioniert super. – Yusuf

0

Der events Abschnitt in getevent -p Ausgabelisten akzeptiert Tastencodes:

add device 7: /dev/input/event1 
    name:  "gpio-keys" 
    events: 
    KEY (0001): 0072 0073 0074 00ac 

d.h. VOLUME_UP (0x73), VOLUME_DOWN (0x72), POWER (0x74) und HOME (0xAC) bei /dev/input/event1. Alles andere wird vom Linux-Kernel-Input-Treiber herausgefiltert, lange bevor es das Android-Framework erreicht (wo die Layout-Dateien, die Sie ändern wollten, verwendet werden)

+0

Vielen Dank für Ihre Antwort. Also, es ist unmöglich, eine Kombination von Tastendrücken vom ADB-Terminal zu simulieren? – Yusuf

+0

Es ist möglich. Alles, was ich sage, dass Sie Konfigurationsänderungen vornehmen müssen, die auf einer viel niedrigeren Ebene (Kernel-Treiber) beginnen, als Sie bisher versucht haben. –

+0

Irgendwer bitte verschieben Sie es zu Android-Enthusiasten! – Abhioxic