您的位置:首页 > 运维架构 > Shell

Android查询:模拟键盘鼠标事件(adb shell 实现)

2013-06-24 10:32 691 查看
1. 发送键盘事件:

命令格式1:adb shell input keyevent “value”

其中value以及对应的key code如下表所列:

KeyEvent Value KEYCODE Comment

0 KEYCODE_UNKNOWN

1 KEYCODE_MENU 在SDK2.1的模拟器中命令失效,sendevent命令可行

2 KEYCODE_SOFT_RIGHT

3 KEYCODE_HOME

4 KEYCODE_BACK

5 KEYCODE_CALL

6 KEYCODE_ENDCALL

7 KEYCODE_0

8 KEYCODE_1

9 KEYCODE_2

10 KEYCODE_3

11 KEYCODE_4

12 KEYCODE_5

13 KEYCODE_6

14 KEYCODE_7

15 KEYCODE_8

16 KEYCODE_9

17 KEYCODE_STAR

18 KEYCODE_POUND

19 KEYCODE_DPAD_UP

20 KEYCODE_DPAD_DOWN

21 KEYCODE_DPAD_LEFT

22 KEYCODE_DPAD_RIGHT

23 KEYCODE_DPAD_CENTER

24 KEYCODE_VOLUME_UP

25 KEYCODE_VOLUME_DOWN

26 KEYCODE_POWER

27 KEYCODE_CAMERA

28 KEYCODE_CLEAR

29 KEYCODE_A

30 KEYCODE_B

31 KEYCODE_C

32 KEYCODE_D

33 KEYCODE_E

34 KEYCODE_F

35 KEYCODE_G

36 KEYCODE_H

37 KEYCODE_I

38 KEYCODE_J

39 KEYCODE_K

40 KEYCODE_L

41 KEYCODE_M

42 KEYCODE_N

43 KEYCODE_O

44 KEYCODE_P

45 KEYCODE_Q

46 KEYCODE_R

47 KEYCODE_S

48 KEYCODE_T

49 KEYCODE_U

50 KEYCODE_V

51 KEYCODE_W

52 KEYCODE_X

53 KEYCODE_Y

54 KEYCODE_Z

55 KEYCODE_COMMA

56 KEYCODE_PERIOD

57 KEYCODE_ALT_LEFT

58 KEYCODE_ALT_RIGHT

59 KEYCODE_SHIFT_LEFT

60 KEYCODE_SHIFT_RIGHT

61 KEYCODE_TAB

62 KEYCODE_SPACE

63 KEYCODE_SYM

64 KEYCODE_EXPLORER

65 KEYCODE_ENVELOPE

66 KEYCODE_ENTER

67 KEYCODE_DEL

68 KEYCODE_GRAVE

69 KEYCODE_MINUS

70 KEYCODE_EQUALS

71 KEYCODE_LEFT_BRACKET

72 KEYCODE_RIGHT_BRACKET

73 KEYCODE_BACKSLASH

74 KEYCODE_SEMICOLON

75 KEYCODE_APOSTROPHE

76 KEYCODE_SLASH

77 KEYCODE_AT

78 KEYCODE_NUM

79 KEYCODE_HEADSETHOOK

80 KEYCODE_FOCUS

81 KEYCODE_PLUS

82 KEYCODE_MENU

83 KEYCODE_NOTIFICATION

84 KEYCODE_SEARCH

85 TAG_LAST_KEYCODE

命令格式2:adb shell sendevent [device] [type] [code] [value]

如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu键

adb shell sendevent /dev/input/event0 1 229 0 代表按下松开menu键

说明:上述的命令需组合使用

完整命令:

adb shell sendevent /dev/input/event4 1 139 1;adb shell sendevent /dev/input/event4 1 330 1;adb shell sendevent /dev/input/event4 0 0 0;adb shell sendevent /dev/input/event4 1 139 0;adb shell sendevent /dev/input/event4 1 330 0;adb shell sendevent /dev/input/event4
0 0 0

其中数字是根据adb shell getevent 手动点击menu键获得到的

另外所知道的命令如下:

Key Name CODE

MENU 229

HOME 102

BACK (back button) 158

CALL (call button) 231

END (end call button) 107

2. 发送鼠标事件(Touch):

命令格式:adb shell sendevent [device] [type] [code] [value]

sendevent /dev/input/eventX type code value

/dev/input/eventX 对应一个event设备,可以通过getevent获得可用的event设备

type, code, value的定义可参看kernel/include/linux/input.h

情况1:在某坐标点上touch

如在屏幕的x坐标为40,y坐标为210的点上touch一下,命令如下

adb shell sendevent /dev/input/event0 3 0 40

adb shell sendevent /dev/input/event0 3 1 210

adb shell sendevent /dev/input/event0 1 330 1 //touch

adb shell sendevent /dev/input/event0 0 0 0 //it must have

adb shell sendevent /dev/input/event0 1 330 0 //untouch

adb shell sendevent /dev/input/event0 0 0 0 //it must have

注:以上六组命令必须配合使用,缺一不可

情况2:模拟滑动轨迹(可下载并采用aPaint软件进行试验)

如下例是在aPaint软件上画出一条开始于(100,200),止于(108,200)的水平直线

adb shell sendevent /dev/input/event0 3 0 100 //start from point (100,200)

adb shell sendevent /dev/input/event0 3 1 200

adb shell sendevent /dev/input/event0 1 330 1 //touch

adb shell sendevent /dev/input/event0 0 0 0

adb shell sendevent /dev/input/event0 3 0 101 //step to point (101,200)

adb shell sendevent /dev/input/event0 0 0 0

…………………… //must list each step, here just skip

adb shell sendevent /dev/input/event0 3 0 108 //end point(108,200)

adb shell sendevent /dev/input/event0 0 0 0

adb shell sendevent /dev/input/event0 1 330 0 //untouch

adb shell sendevent /dev/input/event0 0 0 0

实例如下:

sendevent /dev/input/event4 3 0 258;sendevent /dev/input/event4 3 1 285;sendevent /dev/input/event4 1 330 1;sendevent /dev/input/event4 0 0 0; sendevent /dev/input/event4 1 330 0;sendevent /dev/input/event4 0 0 0

展讯平台点击坐标点(380,870)事件:

adb shell "sendevent dev/input/event4 1 330 1;sendevent dev/input/event4 3 48 20;sendevent dev/input/event4 3 53 380;sendevent dev/input/event4 3 54 870;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0;sendevent dev/input/event4 3 48
20;sendevent dev/input/event4 3 53 380;sendevent dev/input/event4 3 54 870;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0;sendevent dev/input/event4 1 330 0;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0"

adb shell "sendevent dev/input/event4 1 330 1;sendevent dev/input/event4 3 48 20;sendevent dev/input/event4 3 53 380;sendevent dev/input/event4 3 54 870;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0;sendevent dev/input/event4 1 330
0;sendevent dev/input/event4 0 0 0"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐