STM32USB滑鼠+鍵盤串列埠控制
USB滑鼠鍵盤資料格式以及按鍵鍵值
網上相關的資料很多 ,有點分散,我沒事就邊學習邊整理了下,供大家參考``:
原文來自https://blog.csdn.net/u013771867/article/details/51465193
滑鼠傳送給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’三個鍵
原文來自https://blog.csdn.net/u013771867/article/details/51465193
第一列10進位制鍵值,第二列16進位制鍵值,第四列是按鍵 00 Reserved (no event indicated)9 N/A √ √ √ 4/101/104 01 Keyboard ErrorRollOver9 N/A √ √ √ 4/101/104 02 Keyboard POSTFail9 N/A √ √ √ 4/101/104 03 Keyboard ErrorUndefined9 N/A √ √ √ 4/101/104 04 Keyboard a and A4 31 √ √ √ 4/101/104 05 Keyboard b and B 50 √ √ √ 4/101/104 06 Keyboard c and C4 48 √ √ √ 4/101/104 07 Keyboard d and D 33 √ √ √ 4/101/104 08 Keyboard e and E 19 √ √ √ 4/101/104 09 Keyboard f and F 34 √ √ √ 4/101/104 0A Keyboard g and G 35 √ √ √ 4/101/104 0B Keyboard h and H 36 √ √ √ 4/101/104 0C Keyboard i and I 24 √ √ √ 4/101/104 0D Keyboard j and J 37 √ √ √ 4/101/104 0E Keyboard k and K 38 √ √ √ 4/101/104 0F Keyboard l and L 39 √ √ √ 4/101/104 10 Keyboard m and M4 52 √ √ √ 4/101/104 11 Keyboard n and N 51 √ √ √ 4/101/104 12 Keyboard o and O4 25 √ √ √ 4/101/104 13 Keyboard p and P4 26 √ √ √ 4/101/104 14 Keyboard q and Q4 17 √ √ √ 4/101/104 15 Keyboard r and R 20 √ √ √ 4/101/104 16 Keyboard s and S4 32 √ √ √ 4/101/104 17 Keyboard t and T 21 √ √ √ 4/101/104 18 Keyboard u and U 23 √ √ √ 4/101/104 19 Keyboard v and V 49 √ √ √ 4/101/104 1A Keyboard w and W4 18 √ √ √ 4/101/104 1B Keyboard x and X4 47 √ √ √ 4/101/104 1C Keyboard y and Y4 22 √ √ √ 4/101/104 1D Keyboard z and Z4 46 √ √ √ 4/101/104 1E Keyboard 1 and !4 2 √ √ √ 4/101/104 1F Keyboard 2 and @4 3 √ √ √ 4/101/104 20 Keyboard 3 and #4 4 √ √ √ 4/101/104 21 Keyboard 4 and $4 5 √ √ √ 4/101/104 22 Keyboard 5 and %4 6 √ √ √ 4/101/104 23 Keyboard 6 and ^4 7 √ √ √ 4/101/104 24 Keyboard 7 and &4 8 √ √ √ 4/101/104 25 Keyboard 8 and *4 9 √ √ √ 4/101/104 26 Keyboard 9 and (4 10 √ √ √ 4/101/104 27 Keyboard 0 and )4 11 √ √ √ 4/101/104 28 Keyboard Return (ENTER)5 43 √ √ √ 4/101/104 29 Keyboard ESCAPE 110 √ √ √ 4/101/104 2A Keyboard DELETE (Backspace)13 15 √ √ √ 4/101/104 2B Keyboard Tab 16 √ √ √ 4/101/104 2C Keyboard Spacebar 61 √ √ √ 4/101/104 2D Keyboard - and (underscore)4 12 √ √ √ 4/101/104 2E Keyboard = and +4 13 √ √ √ 4/101/104 2F Keyboard [ and {4 27 √ √ √ 4/101/104 30 Keyboard ] and }4 28 √ √ √ 4/101/104 31 Keyboard \ and | 29 √ √ √ 4/101/104 32 Keyboard Non-US # and ~2 42 √ √ √ 4/101/104 33 Keyboard ; and :4 40 √ √ √ 4/101/104 34 Keyboard ‘ and “4 41 √ √ √ 4/101/104 35 Keyboard Grave Accent and Tilde4 1 √ √ √ 4/101/104 36 Keyboard, and <4 53 √ √ √ 4/101/104 37 Keyboard . and >4 54 √ √ √ 4/101/104 38 Keyboard / and ?4 55 √ √ √ 4/101/104 39 Keyboard Caps Lock11 30 √ √ √ 4/101/104 3A Keyboard F1 112 √ √ √ 4/101/104 3B Keyboard F2 113 √ √ √ 4/101/104 3C Keyboard F3 114 √ √ √ 4/101/104 3D Keyboard F4 115 √ √ √ 4/101/104 3E Keyboard F5 116 √ √ √ 4/101/104 3F Keyboard F6 117 √ √ √ 4/101/104 40 Keyboard F7 118 √ √ √ 4/101/104 41 Keyboard F8 119 √ √ √ 4/101/104 42 Keyboard F9 120 √ √ √ 4/101/104 43 Keyboard F10 121 √ √ √ 4/101/104 44 Keyboard F11 122 √ √ √ 101/104 45 Keyboard F12 123 √ √ √ 101/104 46 Keyboard PrintScreen1 124 √ √ √ 101/104 47 Keyboard Scroll Lock11 125 √ √ √ 4/101/104 48 Keyboard Pause1 126 √ √ √ 101/104 49 Keyboard Insert1 75 √ √ √ 101/104 4A Keyboard Home1 80 √ √ √ 101/104 4B Keyboard PageUp1 85 √ √ √ 101/104 4C Keyboard Delete Forward1;14 76 √ √ √ 101/104 4D Keyboard End1 81 √ √ √ 101/104 4E Keyboard PageDown1 86 √ √ √ 101/104 4F Keyboard RightArrow1 89 √ √ √ 101/104 50 Keyboard LeftArrow1 79 √ √ √ 101/104 51 Keyboard DownArrow1 84 √ √ √ 101/104 52 Keyboard UpArrow1 83 √ √ √ 101/104 53 Keypad Num Lock and Clear11 90 √ √ √ 101/104 54 Keypad /1 95 √ √ √ 101/104 55 Keypad * 100 √ √ √ 4/101/104 56 Keypad - 105 √ √ √ 4/101/104 57 Keypad + 106 √ √ √ 4/101/104 58 Keypad ENTER5 108 √ √ √ 101/104 59 Keypad 1 and End 93 √ √ √ 4/101/104 5A Keypad 2 and Down Arrow 98 √ √ √ 4/101/104 5B Keypad 3 and PageDn 103 √ √ √ 4/101/104 5C Keypad 4 and Left Arrow 92 √ √ √ 4/101/104 5D Keypad 5 97 √ √ √ 4/101/104 5E Keypad 6 and Right Arrow 102 √ √ √ 4/101/104 5F Keypad 7 and Home 91 √ √ √ 4/101/104 60 Keypad 8 and Up Arrow 96 √ √ √ 4/101/104 61 Keypad 9 and PageUp 101 √ √ √ 4/101/104 62 Keypad 0 and Insert 99 √ √ √ 4/101/104 63 Keypad . and Delete 104 √ √ √ 4/101/104 64 Keyboard Non-US \ and |3;6 45 √ √ √ 4/101/104 65 Keyboard Application10 129 √ √ 104 66 Keyboard Power9 √ √ 67 Keypad = √ 68 Keyboard F13 √ 69 Keyboard F14 √ 6A Keyboard F15 √ 6B Keyboard F16 6C Keyboard F17 6D Keyboard F18 6E Keyboard F19 6F Keyboard F20 70 Keyboard F21 71 Keyboard F22 72 Keyboard F23 73 Keyboard F24 74 Keyboard Execute √ 75 Keyboard Help √ 76 Keyboard Menu √ 77 Keyboard Select √ 78 Keyboard Stop √ 79 Keyboard Again √ 7A Keyboard Undo √ 7B Keyboard Cut √ 7C Keyboard Copy √ 7D Keyboard Paste √ 7E Keyboard Find √ 7F Keyboard Mute √ 80 Keyboard Volume Up √ 81 Keyboard Volume Down √ 82 Keyboard Locking Caps Lock12 √ 83 Keyboard Locking Num Lock12 √ 84 Keyboard Locking Scroll Lock12 √ 85 Keypad Comma27 107 86 Keypad Equal Sign29 87 Keyboard International115,28 56 88 Keyboard International216 89 Keyboard International317 8A Keyboard International418 8B Keyboard International519 8C Keyboard International620 8D Keyboard International721 8E Keyboard International822 8F Keyboard International922 90 Keyboard LANG125 91 Keyboard LANG226 92 Keyboard LANG330 93 Keyboard LANG431 94 Keyboard LANG532 95 Keyboard LANG68 96 Keyboard LANG78 97 Keyboard LANG88 98 Keyboard LANG98 99 Keyboard Alternate Erase7 9A Keyboard SysReq/Attention1 9B Keyboard Cancel 9C Keyboard Clear 9D Keyboard Prior 9E Keyboard Return 9F Keyboard Separator A0 Keyboard Out A1 Keyboard Oper A2 Keyboard Clear/Again A3 Keyboard CrSel/Props A4 Keyboard ExSel 165-175 A5-CF Reserved B0 Keypad 00 B1 Keypad 000 B2 Thousands Separator 33 B3 Decimal Separator 33 B4 Currency Unit 34 B5 Currency Sub-unit 34 B6 Keypad ( B7 Keypad ) B8 Keypad { B9 Keypad } BA Keypad Tab BB Keypad Backspace BC Keypad A BD Keypad B BE Keypad C BF Keypad D C0 Keypad E C1 Keypad F C2 Keypad XOR C3 Keypad ^ C4 Keypad % C5 Keypad < C6 Keypad > C7 Keypad & C8 Keypad && C9 Keypad | CA Keypad || CB Keypad : CC Keypad # CD Keypad Space CE Keypad @ CF Keypad ! D0 Keypad Memory Store D1 Keypad Memory Recall D2 Keypad Memory Clear D3 Keypad Memory Add D4 Keypad Memory Subtract D5 Keypad Memory Multiply D6 Keypad Memory Divide D7 Keypad +/- D8 Keypad Clear D9 Keypad Clear Entry DA Keypad Binary DB Keypad Octal DC Keypad Decimal DD Keypad Hexadecimal 222-223 DE-DF Reserved E0 Keyboard LeftControl 58 √ √ √ 4/101/104 E1 Keyboard LeftShift 44 √ √ √ 4/101/104 E2 Keyboard LeftAlt 60 √ √ √ 4/101/104 E3 Keyboard Left GUI10;23 127 √ √ √ 104 E4 Keyboard RightControl 64 √ √ √ 101/104 E5 Keyboard RightShift 57 √ √ √ 4/101/104 E6 Keyboard RightAlt 62 √ √ √ 101/104 E7 Keyboard Right GUI10;24 128 √ √ √ 104 232-65535 E8-FFFF Reserved
STM32 USB 滑鼠+鍵盤 串列埠控制資源:
串列埠傳送指令:
*MOS0101000000# 滑鼠左鍵按下
*MOS0102000000# 滑鼠右鍵按下
*MOS0103000000# 滑鼠中鍵按下
*MOS0100000000# 滑鼠擡起
*MOS01000a0000# 滑鼠向+X移動0x0a個畫素
*MOS01008a0000# 滑鼠向-X移動0x0a補數個畫素
*MOS0100000a00# 滑鼠向+Y移動0x0a個畫素
*MOS0100008a00# 滑鼠向-Y移動0x0a補數個畫素
*MOS010000000a# 滑鼠向上滾動0x0a個畫素
*MOS010000008a# 滑鼠向下滾動0x0a補數個畫素
*KEY0000040000000000# 輸入a
*KEY0200040000000000# 輸入A
具體鍵值請參考上方圖片
STM32 USB 滑鼠+鍵盤 串列埠控制資源: https://download.csdn.net/download/u012345203/10755574