linux getevent命令,[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/eventX type code value

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

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

type如下定义

[html]  view plain copy

/*

* 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)

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

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

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

EV_SYN对应的code如下

[html]  view plain copy

/*

* Synchronization events.

*/

#define SYN_REPORT      0

#define SYN_CONFIG      1

#define SYN_MT_REPORT       2

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

EV_REL对应的code

[html]  view plain copy

/*

* 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)

EV_ABS对应的code

[html]  view plain copy

/*

* 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

如果想模拟按键,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 菜单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值