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. My Android成长之路(四)——【xml解析之XmlPull】
  3. 【【【常用的ubuntu第三方工具及android命令(自存档)】】】二
  4. android 命令(adb shell)进入指定模拟器或设备
  5. android中MotionEvent.ACTION_CANCEL事件如何被触发?
  6. 工作环境搭建(8) - CentOS7命令行安装Android(安卓)SDK
  7. [android]android性能测试命令行篇
  8. Android中的dispatchTouchEvent()、onInterceptTouchEvent()和on
  9. Native Activity讲解

随机推荐

  1. 新的Android恶意软件出现!可能窃取你的银
  2. android RxJava(RxAndroid)的简单使用
  3. Spring Tool Suits 配置android 开发环境
  4. 【Android 界面效果42】如何自定义字体
  5. Android(安卓)Gingerbread基于32 bit Ubu
  6. 往Android Studio中import工程出错时的解
  7. Android上的ART虚拟机
  8. 阅读《Android(安卓)从入门到精通》(?)——V
  9. Android adb shell刷机命令实战
  10. Android Volley框架使用详解