找回密码
 立即注册
楼主: 桃花源

32G12K128中基于HID协议的USB键盘范例

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-26 10:11:38
已绑定手机

2

主题

8

回帖

30

积分

新手上路

积分
30
发表于 前天 10:16 | 显示全部楼层
数字键盘上的小数点怎么表示
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:512
  • 最近打卡:2025-06-28 00:19:27
已绑定手机

29

主题

350

回帖

2041

积分

金牌会员

机长

积分
2041
发表于 前天 11:22 | 显示全部楼层
桃*** 发表于 2025-6-26 10:16
数字键盘上的小数点怎么表示
  1. /**
  2. * USB HID Keyboard scan codes as per USB spec 1.11
  3. * plus some additional codes
  4. *
  5. * Created by MightyPork, 2016
  6. * Public domain
  7. *
  8. * Adapted from:
  9. * https://source.android.com/devices/input/keyboard-devices.html
  10. */
  11. #ifndef USB_HID_KEYS
  12. #define USB_HID_KEYS
  13. /**
  14. * Modifier masks - used for the first byte in the HID report.
  15. * NOTE: The second byte in the report is reserved, 0x00
  16. */
  17. #define KEY_MOD_LCTRL  0x01
  18. #define KEY_MOD_LSHIFT 0x02
  19. #define KEY_MOD_LALT   0x04
  20. #define KEY_MOD_LMETA  0x08
  21. #define KEY_MOD_RCTRL  0x10
  22. #define KEY_MOD_RSHIFT 0x20
  23. #define KEY_MOD_RALT   0x40
  24. #define KEY_MOD_RMETA  0x80
  25. /**
  26. * Scan codes - last N slots in the HID report (usually 6).
  27. * 0x00 if no key pressed.
  28. *
  29. * If more than N keys are pressed, the HID reports
  30. * KEY_ERR_OVF in all slots to indicate this condition.
  31. */
  32. #define KEY_NONE 0x00 // No key pressed
  33. #define KEY_ERR_OVF 0x01 //  Keyboard Error Roll Over - used for all slots if too many keys are pressed ("Phantom key")
  34. // 0x02 //  Keyboard POST Fail
  35. // 0x03 //  Keyboard Error Undefined
  36. #define KEY_A 0x04 // Keyboard a and A
  37. #define KEY_B 0x05 // Keyboard b and B
  38. #define KEY_C 0x06 // Keyboard c and C
  39. #define KEY_D 0x07 // Keyboard d and D
  40. #define KEY_E 0x08 // Keyboard e and E
  41. #define KEY_F 0x09 // Keyboard f and F
  42. #define KEY_G 0x0a // Keyboard g and G
  43. #define KEY_H 0x0b // Keyboard h and H
  44. #define KEY_I 0x0c // Keyboard i and I
  45. #define KEY_J 0x0d // Keyboard j and J
  46. #define KEY_K 0x0e // Keyboard k and K
  47. #define KEY_L 0x0f // Keyboard l and L
  48. #define KEY_M 0x10 // Keyboard m and M
  49. #define KEY_N 0x11 // Keyboard n and N
  50. #define KEY_O 0x12 // Keyboard o and O
  51. #define KEY_P 0x13 // Keyboard p and P
  52. #define KEY_Q 0x14 // Keyboard q and Q
  53. #define KEY_R 0x15 // Keyboard r and R
  54. #define KEY_S 0x16 // Keyboard s and S
  55. #define KEY_T 0x17 // Keyboard t and T
  56. #define KEY_U 0x18 // Keyboard u and U
  57. #define KEY_V 0x19 // Keyboard v and V
  58. #define KEY_W 0x1a // Keyboard w and W
  59. #define KEY_X 0x1b // Keyboard x and X
  60. #define KEY_Y 0x1c // Keyboard y and Y
  61. #define KEY_Z 0x1d // Keyboard z and Z
  62. #define KEY_1 0x1e // Keyboard 1 and !
  63. #define KEY_2 0x1f // Keyboard 2 and @
  64. #define KEY_3 0x20 // Keyboard 3 and #
  65. #define KEY_4 0x21 // Keyboard 4 and $
  66. #define KEY_5 0x22 // Keyboard 5 and %
  67. #define KEY_6 0x23 // Keyboard 6 and ^
  68. #define KEY_7 0x24 // Keyboard 7 and &
  69. #define KEY_8 0x25 // Keyboard 8 and *
  70. #define KEY_9 0x26 // Keyboard 9 and (
  71. #define KEY_0 0x27 // Keyboard 0 and )
  72. #define KEY_ENTER 0x28 // Keyboard Return (ENTER)
  73. #define KEY_ESC 0x29 // Keyboard ESCAPE
  74. #define KEY_BACKSPACE 0x2a // Keyboard DELETE (Backspace)
  75. #define KEY_TAB 0x2b // Keyboard Tab
  76. #define KEY_SPACE 0x2c // Keyboard Spacebar
  77. #define KEY_MINUS 0x2d // Keyboard - and _
  78. #define KEY_EQUAL 0x2e // Keyboard = and +
  79. #define KEY_LEFTBRACE 0x2f // Keyboard [ and {
  80. #define KEY_RIGHTBRACE 0x30 // Keyboard ] and }
  81. #define KEY_BACKSLASH 0x31 // Keyboard \ and |
  82. #define KEY_HASHTILDE 0x32 // Keyboard Non-US # and ~
  83. #define KEY_SEMICOLON 0x33 // Keyboard ; and :
  84. #define KEY_APOSTROPHE 0x34 // Keyboard ' and "
  85. #define KEY_GRAVE 0x35 // Keyboard ` and ~
  86. #define KEY_COMMA 0x36 // Keyboard , and <
  87. #define KEY_DOT 0x37 // Keyboard . and >
  88. #define KEY_SLASH 0x38 // Keyboard / and ?
  89. #define KEY_CAPSLOCK 0x39 // Keyboard Caps Lock
  90. #define KEY_F1 0x3a // Keyboard F1
  91. #define KEY_F2 0x3b // Keyboard F2
  92. #define KEY_F3 0x3c // Keyboard F3
  93. #define KEY_F4 0x3d // Keyboard F4
  94. #define KEY_F5 0x3e // Keyboard F5
  95. #define KEY_F6 0x3f // Keyboard F6
  96. #define KEY_F7 0x40 // Keyboard F7
  97. #define KEY_F8 0x41 // Keyboard F8
  98. #define KEY_F9 0x42 // Keyboard F9
  99. #define KEY_F10 0x43 // Keyboard F10
  100. #define KEY_F11 0x44 // Keyboard F11
  101. #define KEY_F12 0x45 // Keyboard F12
  102. #define KEY_SYSRQ 0x46 // Keyboard Print Screen
  103. #define KEY_SCROLLLOCK 0x47 // Keyboard Scroll Lock
  104. #define KEY_PAUSE 0x48 // Keyboard Pause
  105. #define KEY_INSERT 0x49 // Keyboard Insert
  106. #define KEY_HOME 0x4a // Keyboard Home
  107. #define KEY_PAGEUP 0x4b // Keyboard Page Up
  108. #define KEY_DELETE 0x4c // Keyboard Delete Forward
  109. #define KEY_END 0x4d // Keyboard End
  110. #define KEY_PAGEDOWN 0x4e // Keyboard Page Down
  111. #define KEY_RIGHT 0x4f // Keyboard Right Arrow
  112. #define KEY_LEFT 0x50 // Keyboard Left Arrow
  113. #define KEY_DOWN 0x51 // Keyboard Down Arrow
  114. #define KEY_UP 0x52 // Keyboard Up Arrow
  115. #define KEY_NUMLOCK 0x53 // Keyboard Num Lock and Clear
  116. #define KEY_KPSLASH 0x54 // Keypad /
  117. #define KEY_KPASTERISK 0x55 // Keypad *
  118. #define KEY_KPMINUS 0x56 // Keypad -
  119. #define KEY_KPPLUS 0x57 // Keypad +
  120. #define KEY_KPENTER 0x58 // Keypad ENTER
  121. #define KEY_KP1 0x59 // Keypad 1 and End
  122. #define KEY_KP2 0x5a // Keypad 2 and Down Arrow
  123. #define KEY_KP3 0x5b // Keypad 3 and PageDn
  124. #define KEY_KP4 0x5c // Keypad 4 and Left Arrow
  125. #define KEY_KP5 0x5d // Keypad 5
  126. #define KEY_KP6 0x5e // Keypad 6 and Right Arrow
  127. #define KEY_KP7 0x5f // Keypad 7 and Home
  128. #define KEY_KP8 0x60 // Keypad 8 and Up Arrow
  129. #define KEY_KP9 0x61 // Keypad 9 and Page Up
  130. #define KEY_KP0 0x62 // Keypad 0 and Insert
  131. #define KEY_KPDOT 0x63 // Keypad . and Delete
  132. #define KEY_102ND 0x64 // Keyboard Non-US \ and |
  133. #define KEY_COMPOSE 0x65 // Keyboard Application
  134. #define KEY_POWER 0x66 // Keyboard Power
  135. #define KEY_KPEQUAL 0x67 // Keypad =
  136. #define KEY_F13 0x68 // Keyboard F13
  137. #define KEY_F14 0x69 // Keyboard F14
  138. #define KEY_F15 0x6a // Keyboard F15
  139. #define KEY_F16 0x6b // Keyboard F16
  140. #define KEY_F17 0x6c // Keyboard F17
  141. #define KEY_F18 0x6d // Keyboard F18
  142. #define KEY_F19 0x6e // Keyboard F19
  143. #define KEY_F20 0x6f // Keyboard F20
  144. #define KEY_F21 0x70 // Keyboard F21
  145. #define KEY_F22 0x71 // Keyboard F22
  146. #define KEY_F23 0x72 // Keyboard F23
  147. #define KEY_F24 0x73 // Keyboard F24
  148. #define KEY_OPEN 0x74 // Keyboard Execute
  149. #define KEY_HELP 0x75 // Keyboard Help
  150. #define KEY_PROPS 0x76 // Keyboard Menu
  151. #define KEY_FRONT 0x77 // Keyboard Select
  152. #define KEY_STOP 0x78 // Keyboard Stop
  153. #define KEY_AGAIN 0x79 // Keyboard Again
  154. #define KEY_UNDO 0x7a // Keyboard Undo
  155. #define KEY_CUT 0x7b // Keyboard Cut
  156. #define KEY_COPY 0x7c // Keyboard Copy
  157. #define KEY_PASTE 0x7d // Keyboard Paste
  158. #define KEY_FIND 0x7e // Keyboard Find
  159. #define KEY_MUTE 0x7f // Keyboard Mute
  160. #define KEY_VOLUMEUP 0x80 // Keyboard Volume Up
  161. #define KEY_VOLUMEDOWN 0x81 // Keyboard Volume Down
  162. // 0x82  Keyboard Locking Caps Lock
  163. // 0x83  Keyboard Locking Num Lock
  164. // 0x84  Keyboard Locking Scroll Lock
  165. #define KEY_KPCOMMA 0x85 // Keypad Comma
  166. // 0x86  Keypad Equal Sign
  167. #define KEY_RO 0x87 // Keyboard International1
  168. #define KEY_KATAKANAHIRAGANA 0x88 // Keyboard International2
  169. #define KEY_YEN 0x89 // Keyboard International3
  170. #define KEY_HENKAN 0x8a // Keyboard International4
  171. #define KEY_MUHENKAN 0x8b // Keyboard International5
  172. #define KEY_KPJPCOMMA 0x8c // Keyboard International6
  173. // 0x8d  Keyboard International7
  174. // 0x8e  Keyboard International8
  175. // 0x8f  Keyboard International9
  176. #define KEY_HANGEUL 0x90 // Keyboard LANG1
  177. #define KEY_HANJA 0x91 // Keyboard LANG2
  178. #define KEY_KATAKANA 0x92 // Keyboard LANG3
  179. #define KEY_HIRAGANA 0x93 // Keyboard LANG4
  180. #define KEY_ZENKAKUHANKAKU 0x94 // Keyboard LANG5
  181. // 0x95  Keyboard LANG6
  182. // 0x96  Keyboard LANG7
  183. // 0x97  Keyboard LANG8
  184. // 0x98  Keyboard LANG9
  185. // 0x99  Keyboard Alternate Erase
  186. // 0x9a  Keyboard SysReq/Attention
  187. // 0x9b  Keyboard Cancel
  188. // 0x9c  Keyboard Clear
  189. // 0x9d  Keyboard Prior
  190. // 0x9e  Keyboard Return
  191. // 0x9f  Keyboard Separator
  192. // 0xa0  Keyboard Out
  193. // 0xa1  Keyboard Oper
  194. // 0xa2  Keyboard Clear/Again
  195. // 0xa3  Keyboard CrSel/Props
  196. // 0xa4  Keyboard ExSel
  197. // 0xb0  Keypad 00
  198. // 0xb1  Keypad 000
  199. // 0xb2  Thousands Separator
  200. // 0xb3  Decimal Separator
  201. // 0xb4  Currency Unit
  202. // 0xb5  Currency Sub-unit
  203. #define KEY_KPLEFTPAREN 0xb6 // Keypad (
  204. #define KEY_KPRIGHTPAREN 0xb7 // Keypad )
  205. // 0xb8  Keypad {
  206. // 0xb9  Keypad }
  207. // 0xba  Keypad Tab
  208. // 0xbb  Keypad Backspace
  209. // 0xbc  Keypad A
  210. // 0xbd  Keypad B
  211. // 0xbe  Keypad C
  212. // 0xbf  Keypad D
  213. // 0xc0  Keypad E
  214. // 0xc1  Keypad F
  215. // 0xc2  Keypad XOR
  216. // 0xc3  Keypad ^
  217. // 0xc4  Keypad %
  218. // 0xc5  Keypad <
  219. // 0xc6  Keypad >
  220. // 0xc7  Keypad &
  221. // 0xc8  Keypad &&
  222. // 0xc9  Keypad |
  223. // 0xca  Keypad ||
  224. // 0xcb  Keypad :
  225. // 0xcc  Keypad #
  226. // 0xcd  Keypad Space
  227. // 0xce  Keypad @
  228. // 0xcf  Keypad !
  229. // 0xd0  Keypad Memory Store
  230. // 0xd1  Keypad Memory Recall
  231. // 0xd2  Keypad Memory Clear
  232. // 0xd3  Keypad Memory Add
  233. // 0xd4  Keypad Memory Subtract
  234. // 0xd5  Keypad Memory Multiply
  235. // 0xd6  Keypad Memory Divide
  236. // 0xd7  Keypad +/-
  237. // 0xd8  Keypad Clear
  238. // 0xd9  Keypad Clear Entry
  239. // 0xda  Keypad Binary
  240. // 0xdb  Keypad Octal
  241. // 0xdc  Keypad Decimal
  242. // 0xdd  Keypad Hexadecimal
  243. #define KEY_LEFTCTRL 0xe0 // Keyboard Left Control
  244. #define KEY_LEFTSHIFT 0xe1 // Keyboard Left Shift
  245. #define KEY_LEFTALT 0xe2 // Keyboard Left Alt
  246. #define KEY_LEFTMETA 0xe3 // Keyboard Left GUI
  247. #define KEY_RIGHTCTRL 0xe4 // Keyboard Right Control
  248. #define KEY_RIGHTSHIFT 0xe5 // Keyboard Right Shift
  249. #define KEY_RIGHTALT 0xe6 // Keyboard Right Alt
  250. #define KEY_RIGHTMETA 0xe7 // Keyboard Right GUI
  251. #define KEY_MEDIA_PLAYPAUSE 0xe8
  252. #define KEY_MEDIA_STOPCD 0xe9
  253. #define KEY_MEDIA_PREVIOUSSONG 0xea
  254. #define KEY_MEDIA_NEXTSONG 0xeb
  255. #define KEY_MEDIA_EJECTCD 0xec
  256. #define KEY_MEDIA_VOLUMEUP 0xed
  257. #define KEY_MEDIA_VOLUMEDOWN 0xee
  258. #define KEY_MEDIA_MUTE 0xef
  259. #define KEY_MEDIA_WWW 0xf0
  260. #define KEY_MEDIA_BACK 0xf1
  261. #define KEY_MEDIA_FORWARD 0xf2
  262. #define KEY_MEDIA_STOP 0xf3
  263. #define KEY_MEDIA_FIND 0xf4
  264. #define KEY_MEDIA_SCROLLUP 0xf5
  265. #define KEY_MEDIA_SCROLLDOWN 0xf6
  266. #define KEY_MEDIA_EDIT 0xf7
  267. #define KEY_MEDIA_SLEEP 0xf8
  268. #define KEY_MEDIA_COFFEE 0xf9
  269. #define KEY_MEDIA_REFRESH 0xfa
  270. #define KEY_MEDIA_CALC 0xfb
  271. #endif // USB_HID_KEYS
复制代码

这是常用的USB HID键盘扫描码定义,在里面仔细找找就是了。
如果你说的是主键盘区,>和.复用的那个键,那是KEY_DOT
如果你说的是小键盘区,Del和.复用的那个键,那是KEY_KPDOT
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-28 22:36 , Processed in 0.680642 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表