1、连接上USB进入ADB shell :adb shell
2、通过getevent获得输入事件:getevent
数据格式如下:
/dev/input/event0: "事件类型" "参数位定义" "值"
事件类型:输入事件的类型:
#define EV_SYN 0x00
#define EV_KEY 0x01
#define EV_REL 0x02
#define EV_ABS 0x03
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
参数位定义:由事件类型决定,比如事件类型是 EV_ABS,参数位定义宏 ABS_MT_POSITION_X表示的是EV_ABS的x坐标。
值:表示参数位定义 的值。如上面事件类型是 EV_ABS,参数位定义宏 ABS_MT_POSITION_X,则此“值”就表示绝对坐标的x坐标值。
下面是几个列子:
/dev/input/event0: 0003 0035 00000115 意思:事件类型是 EV_ABS,参数位定义宏 是ABS_MT_POSITION_X,绝对坐标值x等于0x115; 对应Linux函 数input_report_abs(data->input_dev, ABS_MT_POSITION_X,0x115);
/dev/input/event0: 0003 0036 000001fc 意思:事件类型是 EV_ABS,参数位定义宏 是ABS_MT_POSITION_Y,绝对坐标值x等于0x1fc
/dev/input/event0: 0003 0039 ffffffff 意思:事件类型是 EV_ABS,参数位定义宏 是ABS_MT_TRACKING_ID,值等于0xffffffff;这里表示没有设置ABS_MT_TRACKING_ID
/dev/input/event0: 0003 0030 0000007f 意思:事件类型是EV_ABS,参数位定义宏 是ABS_MT_TOUCH_MAJOR,值等于0x7f;对应Linux函数input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR,0x7f);
/dev/input/event0: 0000 0000 00000000 意思:事件类型是 EV_SYN ,对应Linux函数input_sync(data->input_dev);
/dev/input/event0: 0001 014a 00000001 意思:事件类型是 EV_KEY,参数位定义宏 是BTN_TOUCH,值等于0x01; 对应Linux函数 input_report_key(data->input_dev, BTN_TOUCH,1);
PS:参数位定义具体参看input.h 和笔记中的 《Linux与Android 多点触摸协议 》