在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如下定义

[html] view plain copy
  1. /*
  2. *Eventtypes
  3. */
  4. #defineEV_SYN0x00
  5. #defineEV_KEY0x01
  6. #defineEV_REL0x02
  7. #defineEV_ABS0x03
  8. #defineEV_MSC0x04
  9. #defineEV_SW0x05
  10. #defineEV_LED0x11
  11. #defineEV_SND0x12
  12. #defineEV_REP0x14
  13. #defineEV_FF0x15
  14. #defineEV_PWR0x16
  15. #defineEV_FF_STATUS0x17
  16. #defineEV_MAX0x1f
  17. #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
  1. /*
  2. *Synchronizationevents.
  3. */
  4. #defineSYN_REPORT0
  5. #defineSYN_CONFIG1
  6. #defineSYN_MT_REPORT2


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


EV_REL对应的code

[html] view plain copy
  1. /*
  2. *Relativeaxes
  3. */
  4. #defineREL_X0x00
  5. #defineREL_Y0x01
  6. #defineREL_Z0x02
  7. #defineREL_RX0x03
  8. #defineREL_RY0x04
  9. #defineREL_RZ0x05
  10. #defineREL_HWHEEL0x06
  11. #defineREL_DIAL0x07
  12. #defineREL_WHEEL0x08
  13. #defineREL_MISC0x09
  14. #defineREL_MAX0x0f
  15. #defineREL_CNT(REL_MAX+1)


EV_ABS对应的code

[html] view plain copy
  1. /*
  2. *Absoluteaxes
  3. */
  4. #defineABS_X0x00
  5. #defineABS_Y0x01
  6. #defineABS_Z0x02
  7. #defineABS_RX0x03
  8. #defineABS_RY0x04
  9. #defineABS_RZ0x05
  10. #defineABS_THROTTLE0x06
  11. #defineABS_RUDDER0x07
  12. #defineABS_WHEEL0x08
  13. #defineABS_GAS0x09
  14. #defineABS_BRAKE0x0a
  15. #defineABS_HAT0X0x10
  16. #defineABS_HAT0Y0x11
  17. #defineABS_HAT1X0x12
  18. #defineABS_HAT1Y0x13
  19. #defineABS_HAT2X0x14
  20. #defineABS_HAT2Y0x15
  21. #defineABS_HAT3X0x16
  22. #defineABS_HAT3Y0x17
  23. #defineABS_PRESSURE0x18
  24. #defineABS_DISTANCE0x19
  25. #defineABS_TILT_X0x1a
  26. #defineABS_TILT_Y0x1b
  27. #defineABS_TOOL_WIDTH0x1c
  28. #defineABS_VOLUME0x20
  29. #defineABS_MISC0x28
  30. #defineABS_MT_TOUCH_MAJOR0x30/*Majoraxisoftouchingellipse*/
  31. #defineABS_MT_TOUCH_MINOR0x31/*Minoraxis(omitifcircular)*/
  32. #defineABS_MT_WIDTH_MAJOR0x32/*Majoraxisofapproachingellipse*/
  33. #defineABS_MT_WIDTH_MINOR0x33/*Minoraxis(omitifcircular)*/
  34. #defineABS_MT_ORIENTATION0x34/*Ellipseorientation*/
  35. #defineABS_MT_POSITION_X0x35/*CenterXellipseposition*/
  36. #defineABS_MT_POSITION_Y0x36/*CenterYellipseposition*/
  37. #defineABS_MT_TOOL_TYPE0x37/*Typeoftouchingdevice*/
  38. #defineABS_MT_BLOB_ID0x38/*Groupasetofpacketsasablob*/
  39. #defineABS_MT_TRACKING_ID0x39/*UniqueIDofinitiatedcontact*/
  40. #defineABS_MT_PRESSURE0x3a/*Pressureoncontactarea*/
  41. #defineABS_MAX0x3f
  42. #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 菜单

更多相关文章

  1. Android(安卓)自定义View探索——图片
  2. Android自定义控件(一)
  3. 自定义View详解
  4. UE4查看材质在android设备上的性能开销
  5. Android(安卓)自定义流式布局
  6. Android(安卓)ListView自定义和选中效果
  7. android监听虚拟键盘隐藏和显示事件
  8. Android(安卓)SurviceView的触控和轨迹球事件
  9. Android(安卓)GestureDetector ScaleGestureDetector

随机推荐

  1. Android studio的ndk开发
  2. android ftp客户端
  3. android 计算所在周所在月的前后日期
  4. 解决Android(安卓)SDK Manager,ADT无法在
  5. Android应用程序键盘(Keyboard)消息处理机
  6. Android 资源操作
  7. Android 屏蔽物理键盘
  8. Android保活/拉活(一)教程检索
  9. Android APK开机自动运行
  10. 查看android目录结构