Android sendevent/getevent 用法

摘要:
源文;https://blog.csdn.net/kickxxx/article/details/7482392getevent/sendevent源码这两个命令的源码在system/core/toolbox/下,sendevent.cgetevent.cgetevent使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:a

源文;https://blog.csdn.net/kickxxx/article/details/7482392

getevent/sendevent源码

这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.c

getevent

使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:

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/eventX type code value

/dev/input/eventX 对应一个event设备,可以通过getevent获得可用的event设备

type, code, value的定义可参看kernel/include/linux/input.h

type如下定义

  1. /*
  2. * Event types
  3. */
  4. #define EV_SYN 0x00
  5. #define EV_KEY 0x01
  6. #define EV_REL 0x02
  7. #define EV_ABS 0x03
  8. #define EV_MSC 0x04
  9. #define EV_SW 0x05
  10. #define EV_LED 0x11
  11. #define EV_SND 0x12
  12. #define EV_REP 0x14
  13. #define EV_FF 0x15
  14. #define EV_PWR 0x16
  15. #define EV_FF_STATUS 0x17
  16. #define EV_MAX 0x1f
  17. #define EV_CNT (EV_MAX+1)

一般来说,常用的是EV_KEY, EV_REL, EV_ABS, EV_SYN

分别对应keyboard, 相对坐标, 绝对坐标, 同步事件

EV_SYN则表示一组完整事件已经完成,需要处理,EV_SYN的code定义事件分发的类型

EV_SYN对应的code如下

  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

  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

  1. /*
  2. * Absolute axes
  3. */
  4. #define ABS_X 0x00
  5. #define ABS_Y 0x01
  6. #define ABS_Z 0x02
  7. #define ABS_RX 0x03
  8. #define ABS_RY 0x04
  9. #define ABS_RZ 0x05
  10. #define ABS_THROTTLE 0x06
  11. #define ABS_RUDDER 0x07
  12. #define ABS_WHEEL 0x08
  13. #define ABS_GAS 0x09
  14. #define ABS_BRAKE 0x0a
  15. #define ABS_HAT0X 0x10
  16. #define ABS_HAT0Y 0x11
  17. #define ABS_HAT1X 0x12
  18. #define ABS_HAT1Y 0x13
  19. #define ABS_HAT2X 0x14
  20. #define ABS_HAT2Y 0x15
  21. #define ABS_HAT3X 0x16
  22. #define ABS_HAT3Y 0x17
  23. #define ABS_PRESSURE 0x18
  24. #define ABS_DISTANCE 0x19
  25. #define ABS_TILT_X 0x1a
  26. #define ABS_TILT_Y 0x1b
  27. #define ABS_TOOL_WIDTH 0x1c
  28. #define ABS_VOLUME 0x20
  29. #define ABS_MISC 0x28
  30. #define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
  31. #define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
  32. #define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
  33. #define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
  34. #define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
  35. #define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
  36. #define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
  37. #define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
  38. #define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
  39. #define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
  40. #define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
  41. #define ABS_MAX 0x3f
  42. #define ABS_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 菜单

用senevent 模拟触屏事件

sendevent /dev/input/event1 0003 0000 0000015e // ABS x 坐标

sendevent /dev/input/event1: 0003 0001 000000df // ABS y 坐标

sendevent /dev/input/event1: 0001 014a 00000001 // BTN touch事件 值为1

sendevent /dev/input/event1: 0003 0018 00000000 // ABS pressure事件

sendevent /dev/input/event1: 0001 014a 00000000 // BTN touch事件 值为0

sendevent /dev/input/event1: 0000 0000 00000000 // sync事件

免责声明:文章转载自《Android sendevent/getevent 用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Element-ui el-date-picker 时间范围只能选择1天网络编程(InetAddress类、UDP、TCP)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

08 在设备树里描述platform_device【转】

转自:https://blog.csdn.net/jklinux/article/details/78575281 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jklinux/article/details/78575281在设备树的dts文件...

通过JS,全选当前页面所有的复选框

  最近在做项目时,遇到一个这样的需求,就是在多级菜单中,选中二级的复选框,默认将它下面的三级复选框全部选中,若选中一级的复选框,默认的将它下面的二级的和三级的复选框全部选中,通过JS,可以得到当前页面所有的复选框,但对于如何判断子级的复选框也能选中,就有些不太明白了,向朋友请教了下,呵呵,终于拨云见天了,感谢,方法如下,给遇到我类似需求的朋友一个参考!...

Js中清空文件上传字段(input type=file )

表单中type=file字段的value属性无法由js来附值,一但选中某个文件后,如果用户不手动去清空那么这个值将保留,提交表单时对应文件也会被提交上去.当然在服务器上会再次验证,不过为了避免上传不必要的的文件,还是有必要提前在客户端验证失败后将文件上传字段清空.  具体做法是将file元素从DOM中移除,然后添加个"同名同姓"的上去,以下是基于JQuer...

修改虚拟机硬盘的大小

VMware安装目录下有一个命令行工具vmware-vdiskmanager.exe 程序,可用来修改虚拟机硬盘的大小。方法如下:     1. 虚拟机无还原快照,有要先删除,关闭虚拟机;启动windows下的命令行     2. 进入VMware的安装目录(如:D:\VMware),输入“vmware-vdiskmanager”后按回车键,可显示关于该命...

磁盘 blk_update_request: I/O error

1、尝试1: 解决 blk_update_request: I/O error, dev fd0, sector 0 错误 参考文档: https://bbs.archlinux.org/viewtopic.php?pid=1166918#p1166918 http://www.cyberciti.biz/faq/linux-end_request-io...

事件处理程序

简介 js和html之间的交互是通过事件实现的,所谓事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。对于事件的处理,浏览器存在差异,主要是IE的兼容性问题,所以大部分都是兼容的,封装成一个事件库,方便调用。 1、事件流 事件流描述的是从页面接收事件的顺序,分为事件冒泡流和事件捕获流 事件冒泡:IE浏览器的事件流,开始由最具体的元素接收,然后逐级向上传...