1. 程式人生 > >USB滑鼠通訊協議格式

USB滑鼠通訊協議格式

宣告:本文原出處:http://bbs.ednchina.com/BLOG_ARTICLE_2111716.HTM作者文章。

滑鼠傳送給PC的資料每次4個位元組 
BYTE1 BYTE2 BYTE3 BYTE4 
定義分別是: 
BYTE1 -- 
       |--bit7:   1   表示   Y   座標的變化量超出-256   ~   255的範圍,0表示沒有溢位  
       |--bit6:   1   表示   X   座標的變化量超出-256   ~   255的範圍,0表示沒有溢位  
       |--bit5:   Y   座標變化的符號位,1表示負數,即滑鼠向下移動  
       |--bit4:   X   座標變化的符號位,1表示負數,即滑鼠向左移動  


       |--bit3:     恆為1  
       |--bit2:     1表示中鍵按下  
       |--bit1:     1表示右鍵按下  
       |--bit0:     1表示左鍵按下  
BYTE2 -- X座標變化量,與byte的bit4組成9位符號數,負數表示向左移,正數表右移。用補碼錶示變化量  
BYTE3 -- Y座標變化量,與byte的bit5組成9位符號數,負數表示向下移,正數表上移。用補碼錶示變化量 
BYTE4 -- 滾輪變化。 
由於手上沒有USB滑鼠,對BYTE1的4-7位沒有測試,對於BYTE2 BYTE3做個測試,BYTE1的4-7全為0的時候,BYTE2 BYTE3的正負表示滑鼠移動方向 


鍵盤傳送給PC的資料每次8個位元組 
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8 
定義分別是: 
BYTE1 -- 
       |--bit0:   Left Control是否按下,按下為1  
       |--bit1:   Left Shift  是否按下,按下為1  
       |--bit2:   Left Alt    是否按下,按下為1  
       |--bit3:   Left GUI    是否按下,按下為1  
       |--bit4:   Right Control是否按下,按下為1   
       |--bit5:   Right Shift 是否按下,按下為1  

       |--bit6:   Right Alt   是否按下,按下為1  
       |--bit7:   Right GUI   是否按下,按下為1  
BYTE2 -- 暫不清楚,有的地方說是保留位 
BYTE3--BYTE8 -- 這六個為普通按鍵 
鍵盤經過測試。 
例如:鍵盤傳送一幀資料   02 00 0x04 0x05 00 00 00 00 
表示同時按下了Left Shift + ‘a’+‘b’三個鍵 

如原涉及版權請聯絡我,我將刪除該貼。