最近業(yè)余時間了解了下HID鍵鼠設備協(xié)議相關(guān)的東西.主要想通過安卓手機連接HID設備完成點擊和滑動動作.
起因是一些app屏蔽了無障礙和ADB方式的點擊滑動, 但沒有屏蔽藍牙鼠標的按鍵動作. 所以想做一個HID的驅(qū)動搭配Autojs腳本來實現(xiàn)一些非常規(guī)操作...
就是這么個東西...然后連接到手機上為其供電...
但我是個小白, 對于HID這種底層的協(xié)議,沒有絲毫的基礎(chǔ).通過不斷的查資料,終于今天邁出了第一步...特此記錄一下
ps: 百度真的是個垃圾搜索引擎,搜資料能用google還是用google吧,用百度簡直就是浪費生命
我用的這個HID設備是別人特制的一個小模塊,大概30塊錢左右,有鼠標和鍵盤功能,這里我就不掛鏈接了. 所以發(fā)送數(shù)據(jù)與普通的HID設備不同,需要在末尾多加一個字節(jié)的數(shù)據(jù).
00000001 ----> 代表調(diào)用鍵盤按鍵
00000010 ----> 代表調(diào)用鼠標按鍵
然后普通的HID鼠標發(fā)送的數(shù)據(jù)是 4 個字節(jié) (1個字節(jié)即為: 1 Byte = 8 bit)所以 00 00 00 00到11 11 11 11之間的數(shù)占用1個字節(jié)(便于區(qū)分我加了空格)代表的10進制是 0 到 255
按照常規(guī)的計數(shù)規(guī)則, 左邊的數(shù)字單位要比右邊的數(shù)字單位大.
所以呢在用二進制的時候. 由于數(shù)字比較長, 劃分的時候,我們習慣了從左往右的順序分組, 這里會造成混淆, 所以需要明白 右邊是頭 左邊是尾 最右邊的是第一個字節(jié)
BYTE3 BYTE2 BYTE1 BYTE0
00000000 00000000 00000000 00000000
其數(shù)據(jù)劃分和鍵位說明. 我畫了一張圖, 字寫的很爛. 湊合著看看吧~
因為我買的這個設備是自制的.所以還有一個BYTE4 第五個字節(jié)數(shù)據(jù)是表明前四個字節(jié)要發(fā)給鍵盤還是鼠標的.
安卓設備屏幕處在坐標系的第四象限, X軸不變, Y軸向下為正. 所以Y軸的坐標正數(shù)是向下移動, 負數(shù)是向上移動.
這里需要說一下怎么表示2進制的負數(shù):
驗證一下是否正確, 找個windows計算器
所以我要是想讓鼠標向右移動10像素需要發(fā)送的五個字節(jié)數(shù)據(jù)為:
02 00 00 0A 00 --> 鼠標向右移動10像素
02 00 00 F6 00 --> 鼠標向左移動10像素
02 00 00 0A 01 --> 按住鼠標向右移動10像素
02 00 00 00 00 --> 抬起所有按鍵
理論上Y軸的移動是修改第三個字節(jié)的數(shù)據(jù). 但是我發(fā)現(xiàn)我這個小模塊,我修改了第三字節(jié)的數(shù)據(jù)后. 不會生效...不知道為什么,剩下的再研究一下吧.
發(fā)布評論請先 登錄
相關(guān)推薦
評論