[android] 调试linux input子系统驱动的用户空间命令 getevent/sendevent
在android中getevent/sendevent源码 位置
这两个命令的源码在 system/core/toolbox/下,sendevent.c getevent.c 两个文件。
getevent
使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:
# getevent
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/eventXtype code value
/dev/input/eventX 对应一个event设备,可以通过getevent获得可用的event设备
type, code, value的定义可参看kernel/include/linux/input.h
type如下定义
- /*
- *Eventtypes
- */
- #defineEV_SYN0x00
- #defineEV_KEY0x01
- #defineEV_REL0x02
- #defineEV_ABS0x03
- #defineEV_MSC0x04
- #defineEV_SW0x05
- #defineEV_LED0x11
- #defineEV_SND0x12
- #defineEV_REP0x14
- #defineEV_FF0x15
- #defineEV_PWR0x16
- #defineEV_FF_STATUS0x17
- #defineEV_MAX0x1f
- #defineEV_CNT(EV_MAX+1)
一般来说,常用的是EV_KEY, EV_REL, EV_ABS, EV_SYN
分别对应keyboard, 相对坐标, 绝对坐标, 同步事件
EV_SYN则表示一组完整事件已经完成,需要处理,EV_SYN的code定义事件分发的类型
EV_SYN对应的code如下
[html] view plain copy- /*
- *Synchronizationevents.
- */
- #defineSYN_REPORT0
- #defineSYN_CONFIG1
- #defineSYN_MT_REPORT2
EV_KEY的code比较多,这里就不列出来了,可参照input.h
EV_REL对应的code
[html] view plain copy- /*
- *Relativeaxes
- */
- #defineREL_X0x00
- #defineREL_Y0x01
- #defineREL_Z0x02
- #defineREL_RX0x03
- #defineREL_RY0x04
- #defineREL_RZ0x05
- #defineREL_HWHEEL0x06
- #defineREL_DIAL0x07
- #defineREL_WHEEL0x08
- #defineREL_MISC0x09
- #defineREL_MAX0x0f
- #defineREL_CNT(REL_MAX+1)
EV_ABS对应的code
- /*
- *Absoluteaxes
- */
- #defineABS_X0x00
- #defineABS_Y0x01
- #defineABS_Z0x02
- #defineABS_RX0x03
- #defineABS_RY0x04
- #defineABS_RZ0x05
- #defineABS_THROTTLE0x06
- #defineABS_RUDDER0x07
- #defineABS_WHEEL0x08
- #defineABS_GAS0x09
- #defineABS_BRAKE0x0a
- #defineABS_HAT0X0x10
- #defineABS_HAT0Y0x11
- #defineABS_HAT1X0x12
- #defineABS_HAT1Y0x13
- #defineABS_HAT2X0x14
- #defineABS_HAT2Y0x15
- #defineABS_HAT3X0x16
- #defineABS_HAT3Y0x17
- #defineABS_PRESSURE0x18
- #defineABS_DISTANCE0x19
- #defineABS_TILT_X0x1a
- #defineABS_TILT_Y0x1b
- #defineABS_TOOL_WIDTH0x1c
- #defineABS_VOLUME0x20
- #defineABS_MISC0x28
- #defineABS_MT_TOUCH_MAJOR0x30/*Majoraxisoftouchingellipse*/
- #defineABS_MT_TOUCH_MINOR0x31/*Minoraxis(omitifcircular)*/
- #defineABS_MT_WIDTH_MAJOR0x32/*Majoraxisofapproachingellipse*/
- #defineABS_MT_WIDTH_MINOR0x33/*Minoraxis(omitifcircular)*/
- #defineABS_MT_ORIENTATION0x34/*Ellipseorientation*/
- #defineABS_MT_POSITION_X0x35/*CenterXellipseposition*/
- #defineABS_MT_POSITION_Y0x36/*CenterYellipseposition*/
- #defineABS_MT_TOOL_TYPE0x37/*Typeoftouchingdevice*/
- #defineABS_MT_BLOB_ID0x38/*Groupasetofpacketsasablob*/
- #defineABS_MT_TRACKING_ID0x39/*UniqueIDofinitiatedcontact*/
- #defineABS_MT_PRESSURE0x3a/*Pressureoncontactarea*/
- #defineABS_MAX0x3f
- #defineABS_CNT(ABS_MAX+1)
input keyevent
如果想模拟按键,send event用起来比较繁琐,可以用input keyevent代替
下面是input keyevent几个比较常用的用法:
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 菜单
更多相关文章
- Android(安卓)自定义View探索——图片
- Android自定义控件(一)
- 自定义View详解
- UE4查看材质在android设备上的性能开销
- Android(安卓)自定义流式布局
- Android(安卓)ListView自定义和选中效果
- android监听虚拟键盘隐藏和显示事件
- Android(安卓)SurviceView的触控和轨迹球事件
- Android(安卓)GestureDetector ScaleGestureDetector