2014-10-05 2 views
5

Я хочу отправить «CTRL + W» в Chrome для Android, чтобы закрыть активную вкладку. Я пробовал много вещей, но добиться успеха у терминала не получилось. (Если я подключаю USB-клавиатуру с OTG, я могу закрыть вкладку с помощью CTRL + W)Имитация комбинации нажатий клавиш с терминала ADB

Во-первых, я не хочу писать приложение для этого, я хочу, чтобы команда оболочки использовала его из Tasker.

Я где-то читал, что для достижения этого (CTRL + W нажатие клавиши), я должен имитировать нажатия клавиш, как это:

вниз CTRL
вниз W
Up W
Up CTRL

И для достижения этого из терминала мне кажется, что я должен использовать «sendevent».

Я могу имитировать все аппаратные клавиши с «sendevent», но не могу имитировать нормальные ключи.

Например, вниз и до ключа МОЩНОСТИ:

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 

я использовать эти команды, но я не могу использовать эти команды для отправки нормальных ключей. (например, a, b, c и т. д.)

Событие1 - это клавиши gpio, поэтому я использую его. И все другие входные события - это датчики, а один - драйвер зарядки. (Max77693-muic)

Выход из "GetEvent -p" говорит, что:

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 

Кроме того, мой GPIO-ключи файл макета "/system/usr/keylayout/gpio-keys.kl", как это:

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

Я могу послать все нормальные keyevents с:

"input keyevent KEYCODE_X" 

и отправить более один:

"input keyevent KEYCODE_X KEYCODE_Y" 

Вы должны думать, что может как это работает:

"input keyevent KEYCODE_CTRL_LEFT KEYCODE W" 

но KeyEvent вниз и вверх немедленно, и я не могу использовать его для отправки комбинации CTRL + W.

Я знаю, ответ должен быть с «sendevent». Но я не могу найти.

Я также попытался добавить некоторые поддельные ключи в ключевой файл макета, как это:

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

я перезагрузил телефон, а затем попробовал:

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 

Но он никогда не пишет «Q» в любое текстовое поле.

Пожалуйста, помогите, спасибо за помощь.

ответ

2

О, да! Я не знаю почему, но всякий раз, когда я чувствую, застрял я пришел к StackOverflow, и как только я начинаю писать этот вопрос как-то я найти ответ ... XD В любом случае, я был в состоянии сделать это, следуя процедуре:

  1. Перейти к/системы/USR/keylayout/
  2. в моем случае было не GPIO-ключей, в любом случае не открывать Generic.kl
  3. Он имеет все необходимые коды клавиш будет имитировать что-нибудь ... например, для CTRL_RIGHT keycode - 97, а для W - код ключа 17
  4. Это все, что вам нужно, теперь открытое задание -> Новая задача -> Добавить wait 5 сек -> Run оболочки: input keyevent 97 input keyevent 17

Теперь запустите команду и быстро открыть хром, вуаля! через 5 секунд вы увидите, как исчезнет ваша вкладка!

Надежда, что помогает все будущие плюсы Tasker;)

Престижность ...

+1

Решение появилось после двух лет, спасибо вам. Я пробовал, и он отлично работает. – Yusuf

0

events раздел в getevent -p выходных списках все принятые ключевые коды:

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

т.е. VOLUME_UP (0x73), VOLUME_DOWN (0x72), POWER (0x74) и HOME (0xac) в случае /dev/input/event1. Все остальное фильтруется драйвером ввода linux ядра задолго до того, как он достигнет рамки Android (где используются файлы макета, которые вы пытались изменить)

+0

спасибо за Ваш ответ. Таким образом, невозможно моделировать комбинацию нажатий клавиш с терминала ADB? – Yusuf

+0

Возможно. Все, что я говорю, вам нужно внести изменения в конфигурацию, начиная с гораздо более низкого уровня (драйвер ядра), чем вы пробовали до сих пор. –

+0

Кто-то, пожалуйста, переместите его в андроид андроида! – Abhioxic

Смежные вопросы