Getevent/sendevent source code
The source code of these two commands is in system/CORE/toolbox/, and sendevent. c getevent. c
Getevent
Use getevent to obtain the events reported by the/dev/input/eventx device. This command also outputs the basic information of all event devices, as shown below:
Add device 1:/dev/input/event1
Name: "mxc_ts"
Add device 2:/dev/input/event0
Name: "mxckpd"
Indicates that the system has two event devices, which correspond to the touchscreen and keyboard devices respectively.
Android can use sendevent to simulate touch screen, keyboard, and other types of Event Events,
Sendevent/dev/input/eventx type code value
/Dev/input/eventx corresponds to an event device. You can use getevent to obtain available event devices.
For definitions of type, code, and value, see kernel/include/Linux/input. h.
Type is defined as follows
/* * Event types */#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#define EV_FF_STATUS 0x17#define EV_MAX 0x1f#define EV_CNT (EV_MAX+1)
Generally, ev_key, ev_rel, ev_abs, and ev_syn are commonly used.
Corresponding to keyboard, relative coordinate, absolute coordinate, and synchronization event respectively
Ev_syn indicates that a group of complete events have been completed and need to be processed. The ev_syn Code defines the event distribution type.
The code for ev_syn is as follows:
/* * Synchronization events. */#define SYN_REPORT 0#define SYN_CONFIG 1#define SYN_MT_REPORT 2
Ev_key has a lot of code, so it is not listed here. Refer to input. h.
Code corresponding to ev_rel
/* * Relative axes */#define REL_X 0x00#define REL_Y 0x01#define REL_Z 0x02#define REL_RX 0x03#define REL_RY 0x04#define REL_RZ 0x05#define REL_HWHEEL 0x06#define REL_DIAL 0x07#define REL_WHEEL 0x08#define REL_MISC 0x09#define REL_MAX 0x0f#define REL_CNT (REL_MAX+1)
Code corresponding to ev_abs
/* * Absolute axes */#define ABS_X 0x00#define ABS_Y 0x01#define ABS_Z 0x02#define ABS_RX 0x03#define ABS_RY 0x04#define ABS_RZ 0x05#define ABS_THROTTLE 0x06#define ABS_RUDDER 0x07#define ABS_WHEEL 0x08#define ABS_GAS 0x09#define ABS_BRAKE 0x0a#define ABS_HAT0X 0x10#define ABS_HAT0Y 0x11#define ABS_HAT1X 0x12#define ABS_HAT1Y 0x13#define ABS_HAT2X 0x14#define ABS_HAT2Y 0x15#define ABS_HAT3X 0x16#define ABS_HAT3Y 0x17#define ABS_PRESSURE 0x18#define ABS_DISTANCE 0x19#define ABS_TILT_X 0x1a#define ABS_TILT_Y 0x1b#define ABS_TOOL_WIDTH 0x1c#define ABS_VOLUME 0x20#define ABS_MISC 0x28#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */#define ABS_MAX 0x3f#define ABS_CNT (ABS_MAX+1)
Input keyevent
If you want to simulate buttons, sending events is cumbersome and can be replaced by input keyevent.
The following are some common input keyevent usage:
Input keyevent 3 // home
Input keyevent 4 // back
Input keyevent 19 // up
Input keyevent 20 // down
Input keyevent 21 // left
Input keyevent 22 // right
Input keyevent 23 // select/OK
Input keyevent 24 // volume +
Input keyevent 25 // volume-
Input keyevent 82 // menu
Use senevent to simulate touch screen events
Sendevent/dev/input/event1 0003 0000 0000015e // abs x coordinate
Sendevent/dev/input/event1: 0003 0001 running 00df // ABS y coordinate
Sendevent/dev/input/event1: 0001 014a 00000001 // the BTN touch event value is 1
Sendevent/dev/input/event1: 0003 0018 00000000 // ABS pressure event
Sendevent/dev/input/event1: 0001 014a 00000000 // the BTN touch event value is 0.
Sendevent/dev/input/event1: 0000 0000 00000000 // Sync event