2014-10-05 66 views
5

我想发送“CTRL + W”到Chrome的Android版关闭活动标签页。我尝试了很多东西,但没有成功从终端实现它。 (如果我连接USB键盘与OTG,我可以用Ctrl + W关闭标签)模拟亚行终端按键组合

首先,我不想为此写一个应用程序,我只想要一个shell命令在Tasker中使用它。

我读的地方,来实现这一(CTRL + W的按键),我有模拟按键这样的:

按住Ctrl键
按住w
瓦特
最多CTRL

并从终端实现这一点,似乎我必须使用“sendevent”。

我可以使用“sendevent”模拟所有硬件按键,但无法模拟正常按键。

例如,要向下和向上的POWER键:

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等)

event1是gpio-keys,所以我使用它。所有其他输入事件都是传感器,一个是充电驱动器。 (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

哦是的!我不知道为什么,但每当我觉得我卡住前来计算器,一旦我开始莫名其妙地写的问题,我找到了答案......的xD 不管怎么说,我能够通过以下步骤来做到这一点:

  1. 转至/系统的/ usr/keylayout/
  2. 在我的情况没有GPIO密钥,反正打开Generic.kl
  3. 它,你将需要模拟的东西所有的键码...如CTRL_RIGHT键码是97和W键码是17
  4. 这就是你所需要的,现在打开tasker - >新任务 - >添加等待5秒 - >运行外壳: input keyevent 97 input keyevent 17

现在运行该命令并快速打开chrome,瞧!在5秒内你会看到你的标签消失!

希望帮助所有未来塔斯克利弊;)

荣誉......

+1

两年后解决方案,谢谢。我试过了,效果很好。 – Yusuf 2016-06-14 18:52:05

0

getevent -p输出列表中的events部分中的所有接受密钥代码:

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

VOLUME_UP即(0x73),VOLUME_DOWN(0x72),POWER(0x74)和在/dev/input/event1情况下HOME(0xAC)。在Linux内核输入驱动程序到达Android框架之前(其中使用了您尝试修改的布局文件),其他所有内容都会被linux内核输入驱动程序滤除。

+0

感谢您的答复。那么,模拟ADB终端的按键组合是不可能的? – Yusuf 2014-12-26 16:51:41

+0

这是可能的。我所说的是,你需要从比目前为止更低的级别(内核驱动程序)开始进行配置更改。 – 2014-12-26 23:46:05

+0

有人请将它移到android爱好者! – Abhioxic 2016-06-13 12:34:36