getevent和sendevent大总结

来源:互联网 发布:鸣鸟不飞 知乎 编辑:程序博客网 时间:2024/04/29 21:28

一直没搞太明白,参考了很多博客,决定自己来总结下。
http://blog.csdn.net/kickxxx/article/details/7482392
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设备touchscreenkeyboard



 

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_SYNcode定义事件分发的类型

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)  





0 0