如何捕獲android系統(tǒng)鼠標(biāo)軌跡值和鍵盤值_第1頁
如何捕獲android系統(tǒng)鼠標(biāo)軌跡值和鍵盤值_第2頁
如何捕獲android系統(tǒng)鼠標(biāo)軌跡值和鍵盤值_第3頁
如何捕獲android系統(tǒng)鼠標(biāo)軌跡值和鍵盤值_第4頁
如何捕獲android系統(tǒng)鼠標(biāo)軌跡值和鍵盤值_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Curre nt Vers ionUpdati ng HistoryVersio nUpdated Co ntentDateEditor0.1創(chuàng)建文檔2010-7-16shuxh目錄一、 找出設(shè)備中,我用的是什么eve nt? 2二、對(duì)input_event數(shù)據(jù)結(jié)構(gòu)的解釋 31、code: 42、type: 43、value: 5三、抓取 event值的原理: 51、打開 event設(shè)備52、read 設(shè)備53、判斷是什么事件 64、 保存您想要的鍵盤值,(相對(duì)/絕對(duì))x, y的值。65、 鍵盤映射6四、如何在An droid系統(tǒng)上使用程序,并抓到我們需要的值? 6五、 附錄 key轉(zhuǎn)換表7、

2、找出設(shè)備中,我用的是什么 event ?關(guān)于該設(shè)備打開的是哪個(gè)event,我們可以通過命令,cat /proc/bus/input/devices來查看,執(zhí)行這個(gè)命令后,你會(huì)看到您的設(shè)備上有多少eventX。rootlenovo-desktop:# cat /proc/bus/input/devicesI: Bus=0019 V e n d o r=0000 Product=0001 Version=0000N: Name=Power ButtonP: Phys=PNP0C0C/button/input0S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP

3、0C0C:00/input/input0U: Uniq=H: Handlers=kbd event0B: EV=3B: KEY=100000 0 0 0I: Bus=0019 V e n d o r=0000 Product=0001 Version=0000N: Name=Power ButtonP: Phys=LNXPWRBN/button/input0S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1U: Uniq=H: Handlers=kbd event1B: EV=3B: KEY=100000 0 0 0I: Bus=001

4、7 V e n d o r=0001 Product=0001 Version=0100N: Name=Macintosh mouse button emulationP: Phys=S: Sysfs=/devices/virtual/input/input2U: Uniq=H: Handlers=mouse0 event2B: EV=7B: KEY=70000 0 0 0 0 0 0 0 0B: REL=3I: Bus=0011 Vendor=0001 Product=0001 Version=ab41N: Name=AT Translated Set 2 keyboardP: Phys=i

5、sa0060/serio0/input0S: Sysfs=/devices/platform/i8042/serio0/input/input3U: Uniq=H: Handlers=kbd event3B: EV=120013B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffeB: MSC=10B: LED=7I: Bus=0003 V endor=17ef Product=600e V ersion=0111N: Name=Lenovo Optical MouseP: Phys=usb-0000:00:1

6、d.1-1/input0S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input4U: Uniq=H: Handlers=mouse1 event4B: EV=17B: KEY=70000 0 0 0 0 0 0 0 0B: REL=103B: MSC=10我的ubunte系統(tǒng)上敲完這個(gè)命令后,能夠看到eventOevent7,共8個(gè)設(shè)備。如上面紅色標(biāo)記,可以很快找出該設(shè)備對(duì)應(yīng)的輸入設(shè)備,以及對(duì)應(yīng)的eventX,跨入眼前視野的Lenovo Optical Mouse ”這肯定是我鼠標(biāo)啊, 用的牌子就是這個(gè) Le

7、novo,背面上 寫著呢。二、對(duì) input_event 數(shù)據(jù)結(jié)構(gòu)的解釋標(biāo)準(zhǔn)按鍵的編碼的定義在 linux/input.h 中struct input_event struct timeval time; / 按鍵時(shí)間_u16 type; / 類型,在下面有定義_u16 code; /要模擬成什么按鍵_s32 value;/是按下還是釋放 ;1、 code:事件的代碼 .如果事件的類型代碼是 EV_KEY, 該代碼 code 為設(shè)備鍵盤代碼 . 代碼植 0127 為鍵盤上的按鍵代碼 , 0x1100x116 為鼠標(biāo)上按鍵代碼 ,其中 0x110(BTN_ LEFT) 為鼠標(biāo)左鍵 , 0x111

8、(BTN_RIGHT) 為鼠標(biāo)右鍵 , 0x112(BTN_ MIDDLE) 為鼠標(biāo)中鍵 .如果事件的類型代碼是 EV_REL,code 值表示軌跡的類型 . 如指示鼠標(biāo)的 X 軸方向 REL_X(代碼為0x00),指示鼠標(biāo)的 Y軸方向REL_Y(代碼 為0x01),指示鼠標(biāo)中輪子方向 REL_WHEEL( 代碼為 0x08).其它代碼含義請(qǐng)參看 include/linux/input.h 文件 .2、type:EV_KEY, 鍵盤EV_REL, 相對(duì)坐標(biāo)(軌跡球)EV_ABS, 絕對(duì)坐標(biāo)(鼠標(biāo))。/*Event types 參考值*/ #define EV_SYN 0x00#define E

9、V_KEY 0x01 / 按鍵#define EV_REL 0x02 / 相對(duì)坐標(biāo) (軌跡球 )#define EV_ABS 0x03 / 絕對(duì)坐標(biāo)(鼠標(biāo))#define EV_MSC 0x04 / 其他#define EV_SW 0x05 #define EV_LED 0x11 /LED#define EV_SND 0x12/ 聲音#define EV_REP 0x14/repeat#define EV_FF 0x15#define EV_PWR 0x16#define EV_FF_STATUS 0x17#define EV_MAX 0x1f#define EV_CNT (EV_MAX+1)

10、3、 value:事件的值 .如果事件的類型代碼是 EV_KEY ,當(dāng)按鍵按下時(shí)值為 1,松開時(shí)值為 0; 如果事件的類型代碼是 EV_ REL,value 的正數(shù)值和負(fù)數(shù)值分別代表兩個(gè)不同方向的值三、抓取event 值的原理:對(duì) eventX 進(jìn)行 read/write 來抓取 event 的各種信息;1、打開 event 設(shè)備, O_RDWR);event0_fd = open(“ /dev/input/event02、 read 設(shè)備rd = read(event0_fd, &event0, sizeof(struct input_event) * 64);3、判斷是什么事件,為鼠標(biāo)位置

11、的 x 坐標(biāo)值;,為鼠標(biāo)位置的 y 坐標(biāo)值;如果 ,(eventi.type = 3 & eventi.code = 0)(eventi.type = 3 & eventi.code = 1)如果 ,(eventi.type = 1 & eventi.value = 1) ,為按下 key;(eventi.type = 1 & eventi.value = 0) ,為松開 key;如果, (eventi.type = 其它事件 (如軌跡球 .聲音控制 .) 具體見源碼。4、保存您想要的鍵盤值, (相對(duì) /絕對(duì)) x, y 的值5、鍵盤映射由于 Android 輸入處理經(jīng)過那兩次映射;1、事件碼

12、 (input.h 定義的鍵盤值 ) 字符串;2、字符串 Android 中 java 的 UI 程序中自定義的鍵盤 key ;由于有鍵盤映射關(guān)系, 而我們想要的值是 Android 中 java 的 Ui 自定義值; 為此我在代 碼中自定義了一個(gè)數(shù)組, 用來進(jìn)行事件碼和 java 的 UI 程序中自定義的鍵盤 key 進(jìn)行轉(zhuǎn) 換。四、如何在 Android 系統(tǒng)上使用程序,并抓到我們需要的 值?1、直接將編譯好的 arm 二進(jìn)制文件,使用 adb push 命令直接 push 到虛擬機(jī)或者真實(shí) 的設(shè)備上面,push完后,保存在/data/目錄下2、 進(jìn)入/data/目錄,直接執(zhí)行。假如工具名

13、字叫:capture , 則用./capture3、使用 crtl+c 終止程序或者 kill -2 (capture 運(yùn)行的進(jìn)程號(hào) )。注:只有采用以上兩種方法終止程序后,才能將我們需要保存的值,保存到 /data/template.monkey 文件中,否則只是個(gè)空文件4、 如果沒有二進(jìn)制的arm 執(zhí)行文件,那么則需要我們自己編譯,怎么編譯,這里就不 講了五、附錄 key 轉(zhuǎn)換表keyEvent keycodeAn droid keycodeKEYC0DE_128KEYC0DE_239KEYC0DE_3410KEYC0DE_4511KEYC0DE_5612KEYC0DE_6713KEYC0

14、DE_7814KEYC0DE_8915KEYC0DE 91016KEYC0DE 0117KEYC0DE Q1645KEYC0DE W1751KEYC0DE E1833KEYC0DE R1946KEYC0DE T2048KEYC0DE Y2153KEYC0DE U2249KEYC0DE I2337KEYC0DE 02443KEYC0DE P2544KEYC0DE A3029KEYC0DE S3147KEYC0DE D3232KEYC0DE F3334KEYC0DE G3435KEYC0DE H3536KEYC0DE J3638KEYC0DE K3739KEYC0DE L3840KEYC0DE D

15、EL1467KEYC0DE SHIFT LEFT4259KEYC0DE Z4454KEYC0DE X4552KEYC0DE C4631KEYC0DE V4750KEYC0DE B4830KEYC0DE N4942KEYC0DE M5041KEYCODE .5256KEYCODE ENTER2866KEYCODE ALT LEFT5657KEYCODE SYM12763KEYCODE_21577KEYCODE_SPACE5762KEYCODE_/5373KEYCODE_,5155KEYCODE ALT RIGHT10058KEYCODE_CAMERA27KEYCODE_VOLUME_DOWN11

16、425KEYCODE VOLUME UP11524KEYCODE STAR11617KEYCODE_CALL2315KEYCODE_ENDCALL1076KEYCODE HOME1023KEYCODE MENU22982KEYCODE BACK1584KEYCODE POWER21726KEYCODE DPAD UP10319KEYCODE DPAD DOWN10820KEYCODE DPAD LEFT10521KEYCODE DPAD RIGHT10622KEYCODE DPAD CENTER23223KEYCODE SOFT LEFT1KEYCODE SOFT RIGHT2KEYCODE

17、POUND18KEYCODE CLEAR28KEYCODE SHIFT RIGHT60KEYCODE TAB61KEYCODE EXPLORER64KEYCODE ENVELOPE65KEYCODE GRA VE68KEYCODE MINUS69KEYCODE EQUALS70KEYCODE LEFT BRACKET71KEYCODE RIGHT BRACKET72KEYCODE SEMICOLON74KEYCODE APOSTROPHE75KEYCODE SLASH76KEYCODE NUM78KEYCODE HEADSETHOOK79KEYCODE PLUS81KEYCODE NOTIFICATION83KEYCODE SEARC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論