最近業(yè)余時(shí)間了解了下HID鍵鼠設(shè)備協(xié)議相關(guān)的東西.主要想通過(guò)安卓手機(jī)連接HID設(shè)備完成點(diǎn)擊和滑動(dòng)動(dòng)作.
起因是一些app屏蔽了無(wú)障礙和ADB方式的點(diǎn)擊滑動(dòng), 但沒(méi)有屏蔽藍(lán)牙鼠標(biāo)的按鍵動(dòng)作. 所以想做一個(gè)HID的驅(qū)動(dòng)搭配Autojs腳本來(lái)實(shí)現(xiàn)一些非常規(guī)操作...
就是這么個(gè)東西...然后連接到手機(jī)上為其供電...
但我是個(gè)小白, 對(duì)于HID這種底層的協(xié)議,沒(méi)有絲毫的基礎(chǔ).通過(guò)不斷的查資料,終于今天邁出了第一步...特此記錄一下
ps: 百度真的是個(gè)垃圾搜索引擎,搜資料能用google還是用google吧,用百度簡(jiǎn)直就是浪費(fèi)生命
我用的這個(gè)HID設(shè)備是別人特制的一個(gè)小模塊,大概30塊錢(qián)左右,有鼠標(biāo)和鍵盤(pán)功能,這里我就不掛鏈接了. 所以發(fā)送數(shù)據(jù)與普通的HID設(shè)備不同,需要在末尾多加一個(gè)字節(jié)的數(shù)據(jù).
00000001 ----> 代表調(diào)用鍵盤(pán)按鍵
00000010 ----> 代表調(diào)用鼠標(biāo)按鍵
然后普通的HID鼠標(biāo)發(fā)送的數(shù)據(jù)是 4 個(gè)字節(jié) (1個(gè)字節(jié)即為: 1 Byte = 8 bit)所以 00 00 00 00到11 11 11 11之間的數(shù)占用1個(gè)字節(jié)(便于區(qū)分我加了空格)代表的10進(jìn)制是 0 到 255
按照常規(guī)的計(jì)數(shù)規(guī)則, 左邊的數(shù)字單位要比右邊的數(shù)字單位大.
所以呢在用二進(jìn)制的時(shí)候. 由于數(shù)字比較長(zhǎng), 劃分的時(shí)候,我們習(xí)慣了從左往右的順序分組, 這里會(huì)造成混淆, 所以需要明白 右邊是頭 左邊是尾 最右邊的是第一個(gè)字節(jié)
BYTE3 BYTE2 BYTE1 BYTE0
00000000 00000000 00000000 00000000
其數(shù)據(jù)劃分和鍵位說(shuō)明. 我畫(huà)了一張圖, 字寫(xiě)的很爛. 湊合著看看吧~
因?yàn)槲屹I(mǎi)的這個(gè)設(shè)備是自制的.所以還有一個(gè)BYTE4 第五個(gè)字節(jié)數(shù)據(jù)是表明前四個(gè)字節(jié)要發(fā)給鍵盤(pán)還是鼠標(biāo)的.
安卓設(shè)備屏幕處在坐標(biāo)系的第四象限, X軸不變, Y軸向下為正. 所以Y軸的坐標(biāo)正數(shù)是向下移動(dòng), 負(fù)數(shù)是向上移動(dòng).
這里需要說(shuō)一下怎么表示2進(jìn)制的負(fù)數(shù):
驗(yàn)證一下是否正確, 找個(gè)windows計(jì)算器
所以我要是想讓鼠標(biāo)向右移動(dòng)10像素需要發(fā)送的五個(gè)字節(jié)數(shù)據(jù)為:
02 00 00 0A 00 --> 鼠標(biāo)向右移動(dòng)10像素
02 00 00 F6 00 --> 鼠標(biāo)向左移動(dòng)10像素
02 00 00 0A 01 --> 按住鼠標(biāo)向右移動(dòng)10像素
02 00 00 00 00 --> 抬起所有按鍵
理論上Y軸的移動(dòng)是修改第三個(gè)字節(jié)的數(shù)據(jù). 但是我發(fā)現(xiàn)我這個(gè)小模塊,我修改了第三字節(jié)的數(shù)據(jù)后. 不會(huì)生效...不知道為什么,剩下的再研究一下吧.
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
esp-idf傳遞鼠標(biāo)數(shù)據(jù)延遲很大的原因?
共享變量 數(shù)據(jù)傳遞
通過(guò)隊(duì)列實(shí)現(xiàn)vi之間數(shù)據(jù)傳遞
如何利用ucos編程進(jìn)行數(shù)據(jù)傳遞?
藍(lán)牙實(shí)現(xiàn)數(shù)據(jù)傳遞需要做些什么?
espidf傳遞鼠標(biāo)數(shù)據(jù)延遲很大是為什么呢?
單片機(jī)教程九:單片機(jī)數(shù)據(jù)傳遞類(lèi)指令
![單片機(jī)教程九:單片機(jī)<b class='flag-5'>數(shù)據(jù)傳遞</b>類(lèi)指令](https://file1.elecfans.com//web2/M00/A4/E8/wKgZomUMNimAIEp9AAA_dA6NQgo963.gif)
51單片機(jī)匯編語(yǔ)言教程:?jiǎn)纹瑱C(jī)數(shù)據(jù)傳遞類(lèi)指令
CY68013A進(jìn)行數(shù)據(jù)傳遞FPGA進(jìn)行格式轉(zhuǎn)換的數(shù)據(jù)采集與仿真系統(tǒng)
![CY68013A進(jìn)行<b class='flag-5'>數(shù)據(jù)傳遞</b>FPGA進(jìn)行<b class='flag-5'>格式</b>轉(zhuǎn)換的<b class='flag-5'>數(shù)據(jù)</b>采集與仿真系統(tǒng)](https://file.elecfans.com/web1/M00/62/15/pIYBAFuHUg2AGT0eAAAr5_OtGQY012.jpg)
第9課:單片機(jī)數(shù)據(jù)傳遞類(lèi)指令 2020/11/17
![第9課:單片機(jī)<b class='flag-5'>數(shù)據(jù)傳遞</b>類(lèi)指令 2020/11/17](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論