android内集成了sendevent和getevent命令,sendevent命令源码如下,我们通过sendevent命令直接模拟出一个android按键.


int sendevent_main(int argc, char *argv[]){ int i; int fd; int ret; int version; struct input_event event; if(argc != 5) { fprintf(stderr, "use: %s device type code value\n", argv[0]); return 1; } //打开输入事件的节点 fd = open(argv[1], O_RDWR); if(fd < 0) { fprintf(stderr, "could not open %s, %s\n", argv[optind], strerror(errno)); return 1; } if (ioctl(fd, EVIOCGVERSION, &version)) { fprintf(stderr, "could not get driver version for %s, %s\n", argv[optind], strerror(errno)); return 1; } memset(&event, 0, sizeof(event));  //填充结构体,参数分别是 事件类型 键码 值
event.type = atoi(argv[2]); event.code = atoi(argv[3]); event.value = atoi(argv[4]);
  //将事件写入fd中,即可模拟按键 ret = write(fd, &event, sizeof(event)); if(ret < sizeof(event)) { fprintf(stderr, "write event failed, %s\n", strerror(errno)); return -1; } }

 通过上面观察,我们注意到一个结构体struct input_event,关于这个结构体的介绍请参考内核源码中的include/linux/input.h文件,我们只需要填充这个结构体,然后将这个结构体写入到对应的输入设备节点中即可,下面模拟一下home按键,为了捕获一下Home按键的键码我们用getevent命令进行监听,然后按下一次home键,记录键码,然后用sendevent模拟一次,步骤如下:

 #getevent //执行该命令然后按下home得到如下内容:

/dev/input/event0: 0001 0066 00000001

/dev/input/event0: 0000 0000 00000000

/dev/input/event0: 0001 0066 00000000

/dev/input/event0: 0000 0000 00000000

上述每一行的意思依次是:home按键的输入设备节点    事件类型(1表示按键事件0表示同步事件)   键码(0x66是Home键码)  状态(1表示按下0表示抬起)

下面我们模拟一次按键:

#sendevent 1 102 1

#sendevent 0 0 0

#sendevent 1 102 0

#sendevent 0 0 0

 是不是看见效果了,关于更多键码你也可以参考android源码下的external/qemu/android/keycode.h和external/qemu/linux_keycodes.h文件。

转载于:https://www.cnblogs.com/wlzxlc/archive/2013/06/03/3114871.html

更多相关文章

  1. android touch事件解析
  2. 【【【常用的ubuntu第三方工具及android命令(自存档)】】】二
  3. android 命令(adb shell)进入指定模拟器或设备
  4. android中MotionEvent.ACTION_CANCEL事件如何被触发?
  5. 工作环境搭建(8) - CentOS7命令行安装Android SDK
  6. [android]android性能测试命令行篇
  7. Android 中与 Touch 事件分发和消费机制
  8. Android ViewGroup事件分发机制
  9. android:实现双击事件(DoubleClick)

随机推荐

  1. Android开发软件
  2. Android面试题整理(中)
  3. Android相对布局属性全集
  4. android:screenOrientation属性
  5. 文字跑马灯
  6. android 学习开始
  7. android button 正常状态,按下状态
  8. BitmapFactory.Options学习笔记
  9. android字体的工作原理
  10. android一些操作