如何捕获android系统鼠标轨迹值和键盘值_第1页
如何捕获android系统鼠标轨迹值和键盘值_第2页
如何捕获android系统鼠标轨迹值和键盘值_第3页
如何捕获android系统鼠标轨迹值和键盘值_第4页
如何捕获android系统鼠标轨迹值和键盘值_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CurrentVersionUpdatingHistoryVersionUpdatedContentDateEditor0.1创建文档2010-7-16shuxh目录一、找出设备中,我用的是什么event?2二、对input_event数据结构的解释31、code:42、type:43、value:5三、抓取event值的原理:51、打开event设备52、read设备53、判断是什么事件64、保存您想要的键盘值,(相对/绝对)x,y的值。65、键盘映射6四、如何在Android系统上使用程序,并抓到我们需要的值?6五、附录key转换表7、我由设备中,我用的是什么event?关于该设备打开的是

2、哪个event,我们可以通过命令,cat/proc/bus/input/devices来查看,执行这个命令后,你会看到您的设备上有多少eventX。rootlenovo-desktop:#cat/proc/bus/input/devicesI:Bus=0019Vendor=0000Product=0001Version=0000N:Name="PowerButton"P:Phys=PNP0C0C/button/input0S:Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0U:Uniq=H: Han

3、dlers=kbdevent0B:EV=3B:KEY=100000000I: Bus=0019Vendor=0000Product=0001Version=0000N:Name="PowerButton"P:Phys=LNXPWRBN/button/input0S:Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1U:Uniq=H: Handlers=kbdevent1B:EV=3B:KEY=100000000I: Bus=0017Vendor=0001Product=0001Version=0100N:Name=&quo

4、t;Macintoshmousebuttonemulation"P:Phys=S:Sysfs=/devices/virtual/input/input2U:Uniq=H:Handlers=mouse0event2B:EV=7B:KEY=7000000000000B:REL=3I:Bus=0011Vendor=0001Product=0001Version=ab41N:Name="ATTranslatedSet2keyboard"P:Phys=isa0060/serio0/input0S:Sysfs=/devices/platform/i8042/serio0/in

5、put/input3U:Uniq=H: Handlers=kbdevent3B:EV=120013B:KEY=420000003803078f800d001feffffdfffeffffffffffffffffffffeB:MSC=10B:LED=7I: Bus=0003Vendor=17efProduct=600eVersion=0111N:Name="LenovoOpticalMouse"P:Phys=usb-0000:00:1d.1-1/input0S:Sysfs=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/in

6、put/input4U:Uniq=H:Handlers=mouse1event4B:EV=17B:KEY=7000000000000B:REL=103B:MSC=10我的ubunte系统上敲完这个命令后,能够看到event。一event7,共8个设备。如上面红色标记,可以很快找出该设备对应的输入设备,以及对应的eventX,跨入眼前视野的"LenovoOpticalMouse"这肯定是我鼠标啊,用的牌子就是这个Lenovo,背面上写着呢。二、对input_event数据结构的解释标准按键的编码的定义在linux/input.h中structinput_eventstruct

7、timevaltime;/按键时间# u16type;类型,在下面有定义# u16code;/要模拟成什么按键# s32value;/是按下还是释放);1、code:事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.代码植0127为键盘上的按键代码,0x110-0x116为鼠标上按键代码,其中0x110(BTN_LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_MIDDLE)为鼠标中键.如果事件的类型代码是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码为0

8、x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).其它代码含义请参看include/linux/input.h文件.2、type:EV_KEY,键盘EV_REL,相对坐标(轨迹球)EV_ABS,绝对坐标(鼠标)oOO/*# Eventtypes参考值# /# defineEV_SYN0x00# defineEV_KEY0x01/按键# defineEV_REL0x02/相对坐标(轨迹球)# defineEV_ABS0x03/绝对坐标(鼠标)#defineEV_MSC0x04/其他#defineEV_SW0x05#defineEVLED0x11/LED#defineEV_SND0

9、x12/声音#defineEV_REP0x14/repeat#defineEV_FF0x15#defineEV_PWR0x16#defineEV_FF_STATUS0x17#defineEV_MAX0x1f#defineEV_CNT(EV_MAX+1)3、value:事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_REL,value的正数值和负数值分别代表两个不同方向的值三、抓取event值的原理:对eventX进彳fread/write来抓取event的各种信息;1、打开event设备event0_fd=open("/dev/

10、input/event0",O_RDWR);2、read设备rd=read(event0_fd,&event0,sizeof(structinput_event)*64);3、判断是什么事件如果,(eventi.type=3&&eventi.code=0),为鼠标位置的x坐标值;(eventi.type=3&&eventi.code=1),为鼠标位置的y坐标值;如果,(eventi.type=1&&eventi.value=1),为按下key;(eventi.type=1&&eventi.value=0),为松开

11、key;如果,(eventi.type=其它事件(如轨迹球声音控制.)具体见源码。4、保存您想要的键盘值,(相对/绝对)x,y的值5、键盘映射由于Android输入处理经过那两次映射;1、事件码(input.h定义的键盘值)>字符串;2、字符串>Android中java的UI程序中自定义的键盘key;由于有键盘映射关系,而我们想要的值是Android中java的Ui自定义值;为此我在代码中自定义了一个数组,用来进行事件码和java的UI程序中自定义的键盘key进行转换。四、如何在Android系统上使用程序,并抓到我们需要的值?1、直接将编译好的arm二进制文件,使用adbpush

12、命令直接push到虚拟机或者真实的设备上面,push完后,保存在/data/目录下2、进入/data/目录,直接执行。假如工具名字叫:capture,则用./capture3、使用crtl+c终止程序或者kill-2(capture运行的进程号)。注:只有采用以上两种方法终止程序后,才能将我们需要保存的值,保存到/data/template.monkey文件中,否则只是个空文件4、如果没有二进制的arm执行文件,那么则需要我们自己编译,怎么编译,这里就不讲了五、附录key转换表keyEventkeycodeAndroidkeycodeKEYCODE_128KEYCODE_239KEYCODE_

13、3410KEYCODE_4511KEYCODE_5612KEYCODE_6713KEYCODE_7814KEYCODE_8915KEYCODE_91016KEYCODE_0117KEYCODE_Q1645KEYCODE_W1751KEYCODE_E1833KEYCODE_R1946KEYCODE_T2048KEYCODE_Y2153KEYCODE_U2249KEYCODE_I2337KEYCODE_O2443KEYCODE_P2544KEYCODE_A3029KEYCODE_S3147KEYCODE_D3232KEYCODE_F3334KEYCODE_G3435KEYCODE_H3536KEY

14、CODE_J3638KEYCODE_K3739KEYCODE_L3840KEYCODE_DEL1467KEYCODE_SHIFT_LEFT4259KEYCODEZ4454KEYCODE_X4552KEYCODEC4631KEYCODEV4750KEYCODEB4830KEYCODEN4942KEYCODEM5041KEYCODE.5256KEYCODE_ENTER2866KEYCODEALTLEFT5657KEYCODESYM12763KEYCODE_21577KEYCODE_SPACE5762KEYCODE_/5373KEYCODE_,5155KEYCODE_ALT_RIGHT10058KE

15、YCODE_CAMERA27KEYCODE_VOLUME_DOWN11425KEYCODE_VOLUME_UP11524KEYCODE_STAR11617KEYCODE_CALL2315KEYCODE_ENDCALL1076KEYCODE_HOME1023KEYCODE_MENU22982KEYCODE_BACK1584KEYCODE_POWER21726KEYCODE_DPAD_UP10319KEYCODE_DPAD_DOWN10820KEYCODE_DPAD_LEFT10521KEYCODE_DPAD_RIGHT10622KEYCODE_DPAD_CENTER23223KEYCODE_SO

16、FT_LEFT1KEYCODE_SOFT_RIGHT2KEYCODE_POUND18KEYCODE_CLEAR28KEYCODE_SHIFT_RIGHT60KEYCODE_TAB61KEYCODE_EXPLORER64KEYCODE_ENVELOPE65KEYCODE_GRAVE68KEYCODE_MINUS69KEYCODE_EQUALS70KEYCODELEFTBRACKET71KEYCODERIGHTBRACKET72KEYCODESEMICOLON74KEYCODEAPOSTROPHE75KEYCODE_SLASH76KEYCODE_NUM78KEYCODEHEADSETHOOK79KEYCODEPLUS81KEYCODENOTIFICATION83KEYCODESEARCH84KEYCODEM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论