android 按键消息,在android中模拟键盘消息(shell命令的方法)

已找到解决方案[code]

use: sendevent

command format: sendevent

device type code value

[command] [device] [type] [code] [value]

sendevent

/dev/input/event0 1 229 1

/dev/input/event0 is the device to send it to

[type] 1 is unknow for me ( maybe code for physical button on device )

[code] 229 is the MENU button of the emulator

[value] 1 is keydown or press down ( for keyup or up use 0 )

i wrote a batch file for sending the event to the device like below:

adb -s emulator-5554 shell sendevent

/dev/input/event0 1 229 1

adb -s emulator-5554 shell sendevent

/dev/input/event0 1 229 0

have to use the follow command to simulate a pressing of button ( aka

pressing down then let go

Key Name CODE

MENU 229

HOME 102

BACK (back button) 158

CALL (call button) 231

END (end call button) 107

now keyboard shown on the emulator

Key Name CODE

1 2

2 3

3 4

4 5

5 6

6 7

7 8

8 9

9 10

0 11

q 16

w 17

e 18

r 19

t 20

y 21

u 22

i 23

o 24

p 25

a 30

s 31

d 32

f 33

g 34

h 35

j 36

k 37

l 38

DEL (delete key) 14

SHIFT (shift key) 42

z 44

x 45

c 46

v 47

b 48

n 49

m 50

. (period) 52

return (enter key) 28

Lt Alt (Left ALT key) 56

SYM 127

@ 215

Spc (Space key) 57

/ 53

本文来自CSDN博客,转载请标明出处:http://blog。csdn。net/yrj/archive/2009/12/28/5089473。aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 系统的键盘事件 是由InputManagerService 来监控的, 而InputManagerService 是由 SystemServer 来启动的 创建了一个类的对象 WindowInputEvent Receiver InputEventRe ceiver的构造 函数 WindowInputEventReceiver extends InputEventReceiver nativeInit InputEventReceiver.cpp nativeInit android_view_InputE ventReceiver.cpp NativeInputE ventReceiver 的构造函数 LooperCallback: :handleEvent NativeInputEve ntReceiver::ha ndleEvent Looper::p ollInner Looper::p ollOnce NativeInputEventRecei ver : public LooperCallback 有方法 NativeInputEventReceiver:: handleEvent 没有键盘事件发生, InputManager 的InputReader 正在睡眠等待键盘事件 的发生,而InputManager 的 InputDispatcher 正在等待InputReader 从睡眠醒过来并且唤醒它,而应用程 序也正在消息循环等待InputDispatcher 从睡眠醒过来并且唤醒它。 分析InputManager 分发键盘消息给应用程序的过程 InputReader .pollOnce EventHub.g etEvent InputReader::pr ocessEventsLock ed InputReader::pr ocessEventsForD eviceLocked InputDevic e::process 没有键盘事件发生, InputReaderThread 线程就会睡眠在EventHub.getEvent 函数 上,当键盘事件发生后,就会把这个事件封 装成一个RawEvent 对象,然后返回到 pollOnce函数,执行此函数 有键盘事件 InputReader.cpp InputMapper::process( 这里 是KeyboardInputMapper) InputReader::createDeviceLock ed根据类型创建的,负责处理轨迹 球事件的TrackballInputMapper 对 象以及负责处理触摸屏事件的 TouchInputMapper 对象等 KeyboardInputMap per::processKey 这个函数首先对对按 键作一些处理,例如 需要根据当时屏幕的 方向来调整键盘码 InputDispatcher::notify Key( 继承自 InputListenerInterface) KeyboardInputMappge r函数通知 InputDispatcher ,有 键盘事件发生了 1. 调用 validateKeyEvent 函数来验 证action参数是否正确 2. 参数action检查通过后,还通过 policyFlags 参数来检查一下同时是 否有ALT和SHIFT键被按下 3. 调用 enqueueInboundEventLocked 函数 把这个按键事件封装成一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值