您的位置:首页 > 其它

getevent和sendevent大总结

2015-09-25 16:51 246 查看
一直没搞太明白,参考了很多博客,决定自己来总结下。
/article/2308819.html http://m.blog.csdn.net/blog/lowprofile_coding/4841428 http://blog.csdn.net/neiloid/article/details/7893755

重要的事情说三遍!!

使用这两个命令的前提是手机获取了root权限

使用这两个命令的前提是手机获取了root权限

使用这两个命令的前提是手机获取了root权限

一、getevent/sendevent

这两个命令的源码在sendevent.cgetevent.c

使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:

add device 1:/dev/input/event1

name: "mxc_ts"

add device 2: /dev/input/event0

name: "mxckpd"
表明系统有两个event设备,分别对应着input设备touchscreen,keyboard


Android可以使用sendevent来模拟触屏,键盘以及其他类型event事件,
sendevent/dev/input/eventX type code value
/dev/input/eventX对应一个event设备,可以通过getevent获得可用的event设备
type, code,value的定义可参看kernel/include/linux/input.h

上边两行表示按下电源按钮,下边两行表示弹起,四行一起进行才是完整的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

三、sendevent的使用
Android可以使用sendevent来模拟触屏,键盘以及其他类型的event事件,用getEvent获取的值是16进制的,而sendEvent输入的值是10进制的,需要进行转换。
sendevent /dev/input/eventX type code value
/dev/input/eventX 对应一个event设备,可以通过getevent获得可用的event设备
type, code,value的定义可参看kernel/include/linux/input.h

3.1 type如下定义

/* Event types */
1. #define EV_SYN 0x00
2. #define EV_KEY 0x01
3. #define EV_REL 0x02
4.#define EV_ABS 0x03
5. #define EV_MSC 0x04
6. #define EV_SW 0x05
7. #define EV_LED 0x11
8. #define EV_SND 0x12
9. #define EV_REP 0x14
10. #define EV_FF 0x15
11. #define EV_PWR 0x16
12. #define EV_FF_STATUS 0x17
13. #define EV_MAX 0x1f
14. #define EV_CNT (EV_MAX+1)

一般来说,常用的是EV_KEY, EV_REL, EV_ABS,EV_SYN 分别对应keyboard, 相对坐标, 绝对坐标, 同步事件
EV_SYN则表示一组完整事件已经完成,需要处理,EV_SYN的code定义事件分发的类型

EV_SYN对应的code如下
[html] view
plaincopy

1. /*
2. * Synchronization events.
3. */
4. #define SYN_REPORT 0
5. #define SYN_CONFIG 1
6. #define SYN_MT_REPORT 2

EV_KEY的code比较多,这里就不列出来了,可参照input.h

EV_REL对应的code
[html] view
plaincopy

1. /*
2. * Relative axes
3. */
4. #define REL_X 0x00
5. #define REL_Y 0x01
6. #define REL_Z 0x02
7. #define REL_RX 0x03
8. #define REL_RY 0x04
9. #define REL_RZ 0x05
10.#define REL_HWHEEL 0x06
11. #define REL_DIAL 0x07
12.#define REL_WHEEL 0x08
13. #define REL_MISC 0x09
14.#define REL_MAX 0x0f
15. #define REL_CNT (REL_MAX+1)

EV_ABS对应的code
[html] view
plaincopy

1. /*
2. * Absolute axes
3. */
4.
5. #define ABS_X 0x00
6. #define ABS_Y 0x01
7. #define ABS_Z 0x02
8. #define ABS_RX 0x03
9. #define ABS_RY 0x04
10.#define ABS_RZ 0x05
11. #define ABS_THROTTLE 0x06
12.#define ABS_RUDDER 0x07
13. #define ABS_WHEEL 0x08
14.#define ABS_GAS 0x09
15. #define ABS_BRAKE 0x0a
16.#define ABS_HAT0X 0x10
17. #define ABS_HAT0Y 0x11
18.#define ABS_HAT1X 0x12
19. #define ABS_HAT1Y 0x13
20.#define ABS_HAT2X 0x14
21. #define ABS_HAT2Y 0x15
22.#define ABS_HAT3X 0x16
23. #define ABS_HAT3Y 0x17
24.#define ABS_PRESSURE 0x18
25. #define ABS_DISTANCE 0x19
26.#define ABS_TILT_X 0x1a
27. #define ABS_TILT_Y 0x1b
28.#define ABS_TOOL_WIDTH 0x1c
29. #define ABS_VOLUME 0x20
30.#define ABS_MISC 0x28
31.
32.#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
33. #define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
34.#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
35. #define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
36.#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
37. #define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
38.#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
39. #define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
40.#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
41. #define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
42.#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
43.
44.#define ABS_MAX 0x3f
45. #define ABS_CNT (ABS_MAX+1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: