Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. /*
  2. Copyright 2011 Jun Wako <[email protected]>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. /*
  15. * Key codes from HID Keyboard/Keypad Page
  16. * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
  17. */
  18. #ifndef USB_KEYCODES_H
  19. #define USB_KEYCODES_H
  20. #define IS_ERROR(code) (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED)
  21. #define IS_KEY(code) (KB_A <= (code) && (code) <= KB_EXSEL)
  22. #define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI)
  23. #define IS_FN(code) (KB_FN0 <= (code) && (code) <= KB_FN7)
  24. #define IS_MOUSEKEY(code) (KB_MS_UP <= (code) && (code) <= KB_MS_WH_RIGHT)
  25. #define IS_MOUSEKEY_MOVE(code) (KB_MS_UP <= (code) && (code) <= KB_MS_RIGHT)
  26. #define IS_MOUSEKEY_BUTTON(code) (KB_MS_BTN1 <= (code) && (code) <= KB_MS_BTN5)
  27. #define IS_MOUSEKEY_WHEEL(code) (KB_MS_WH_UP <= (code) && (code) <= KB_MS_WH_RIGHT)
  28. #define MOD_BIT(code) (1<<((code) & 0x07))
  29. #define FN_BIT(code) (1<<((code) - KB_FN0))
  30. /* Short names */
  31. #define KB_LCTL KB_LCTRL
  32. #define KB_RCTL KB_RCTRL
  33. #define KB_LSFT KB_LSHIFT
  34. #define KB_RSFT KB_RSHIFT
  35. #define KB_ESC KB_ESCAPE
  36. #define KB_BSPC KB_BSPACE
  37. #define KB_ENT KB_ENTER
  38. #define KB_DEL KB_DELETE
  39. #define KB_INS KB_INSERT
  40. #define KB_CAPS KB_CAPSLOCK
  41. #define KB_RGHT KB_RIGHT
  42. #define KB_PGDN KB_PGDOWN
  43. #define KB_PSCR KB_PSCREEN
  44. #define KB_SLCK KB_SCKLOCK
  45. #define KB_BRK KB_BREAK
  46. #define KB_NLCK KB_NUMLOCK
  47. #define KB_SPC KB_SPACE
  48. #define KB_MINS KB_MINUS
  49. #define KB_EQL KB_EQUAL
  50. #define KB_GRV KB_GRAVE
  51. #define KB_RBRC KB_RBRACKET
  52. #define KB_LBRC KB_LBRACKET
  53. #define KB_COMM KB_COMMA
  54. #define KB_BSLS KB_BSLASH
  55. #define KB_SLSH KB_SLASH
  56. #define KB_SCLN KB_SCOLON
  57. #define KB_QUOT KB_QUOTE
  58. #define KB_APP KB_APPLICATION
  59. #define KB_NUHS KB_NONUS_HASH
  60. #define KB_NUBS KB_NONUS_BSLASH
  61. /* for Japanese */
  62. #define KB_RO KB_INT1
  63. #define KB_KANA KB_INT2
  64. #define KB_JYEN KB_INT3
  65. #define KB_HENK KB_INT4
  66. #define KB_MHEN KB_INT5
  67. #define KB_ZEHA KB_GRAVE
  68. /* Keypad */
  69. #define KB_P1 KB_KP_1
  70. #define KB_P2 KB_KP_2
  71. #define KB_P3 KB_KP_3
  72. #define KB_P4 KB_KP_4
  73. #define KB_P5 KB_KP_5
  74. #define KB_P6 KB_KP_6
  75. #define KB_P7 KB_KP_7
  76. #define KB_P8 KB_KP_8
  77. #define KB_P9 KB_KP_9
  78. #define KB_P0 KB_KP_0
  79. #define KB_PDOT KB_KP_DOT
  80. #define KB_PSLS KB_KP_SLASH
  81. #define KB_PAST KB_KP_ASTERISK
  82. #define KB_PMNS KB_KP_MINUS
  83. #define KB_PPLS KB_KP_PLUS
  84. #define KB_PEQL KB_KP_EQUAL
  85. #define KB_PENT KB_KP_ENTER
  86. /* Mousekey */
  87. #define KB_MS_U KB_MS_UP
  88. #define KB_MS_D KB_MS_DOWN
  89. #define KB_MS_L KB_MS_LEFT
  90. #define KB_MS_R KB_MS_RIGHT
  91. #define KB_BTN1 KB_MS_BTN1
  92. #define KB_BTN2 KB_MS_BTN2
  93. #define KB_BTN3 KB_MS_BTN3
  94. #define KB_BTN4 KB_MS_BTN4
  95. #define KB_BTN5 KB_MS_BTN5
  96. #define KB_WH_U KB_MS_WH_UP
  97. #define KB_WH_D KB_MS_WH_DOWN
  98. #define KB_WH_L KB_MS_WH_LEFT
  99. #define KB_WH_R KB_MS_WH_RIGHT
  100. /* Sytem Control & Consumer usage */
  101. #define KB_PWR KB_SYSTEM_POWER
  102. #define KB_SLEP KB_SYSTEM_SLEEP
  103. #define KB_WAKE KB_SYSTEM_WAKE
  104. #define KB_MUTE KB_AUDIO_MUTE
  105. #define KB_VOLU KB_AUDIO_VOL_UP
  106. #define KB_VOLD KB_AUDIO_VOL_DOWN
  107. #define KB_MNXT KB_MEDIA_NEXT_TRACK
  108. #define KB_MPRV KB_MEDIA_PREV_TRACK
  109. #define KB_MSTP KB_MEDIA_STOP
  110. #define KB_MPLY KB_MEDIA_PLAY_PAUSE
  111. #define KB_MSEL KB_MEDIA_SELECT
  112. #define KB_MAIL KB_MAIL
  113. #define KB_CALC KB_CALCULATOR
  114. #define KB_MYCM KB_MY_COMPUTER
  115. #define KB_WSCH KB_WWW_SEARCH
  116. #define KB_WHOM KB_WWW_HOME
  117. #define KB_WBAK KB_WWW_BACK
  118. #define KB_WFWD KB_WWW_FORWARD
  119. #define KB_WSTP KB_WWW_STOP
  120. #define KB_WREF KB_WWW_REFRESH
  121. #define KB_WFAV KB_WWW_FAVORITES
  122. /* Special keycode */
  123. enum special_keycodes {
  124. /* System Control */
  125. KB_SYSTEM_POWER = 0xB0,
  126. KB_SYSTEM_SLEEP,
  127. KB_SYSTEM_WAKE,
  128. /* Consumer Page */
  129. KB_AUDIO_MUTE,
  130. KB_AUDIO_VOL_UP,
  131. KB_AUDIO_VOL_DOWN,
  132. KB_MEDIA_NEXT_TRACK,
  133. KB_MEDIA_PREV_TRACK,
  134. KB_MEDIA_STOP,
  135. KB_MEDIA_PLAY_PAUSE,
  136. KB_MEDIA_SELECT,
  137. KB_MAIL,
  138. KB_CALCULATOR,
  139. KB_MY_COMPUTER,
  140. KB_WWW_SEARCH,
  141. KB_WWW_HOME,
  142. KB_WWW_BACK, /* 0xC0 */
  143. KB_WWW_FORWARD,
  144. KB_WWW_STOP,
  145. KB_WWW_REFRESH,
  146. KB_WWW_FAVORITES,
  147. /* reserve 0xE0-E7 for Modifiers */
  148. /* Layer Switching */
  149. KB_FN0 = 0xE8,
  150. KB_FN1,
  151. KB_FN2,
  152. KB_FN3,
  153. KB_FN4,
  154. KB_FN5,
  155. KB_FN6,
  156. KB_FN7,
  157. /* Mousekey */
  158. KB_MS_UP = 0xF0,
  159. KB_MS_DOWN,
  160. KB_MS_LEFT,
  161. KB_MS_RIGHT,
  162. KB_MS_BTN1,
  163. KB_MS_BTN2,
  164. KB_MS_BTN3,
  165. KB_MS_BTN4,
  166. KB_MS_BTN5,
  167. /* Mousekey wheel */
  168. KB_MS_WH_UP,
  169. KB_MS_WH_DOWN,
  170. KB_MS_WH_LEFT,
  171. KB_MS_WH_RIGHT,
  172. };
  173. enum keycodes {
  174. KB_NO = 0,
  175. KB_ROLL_OVER,
  176. KB_POST_FAIL,
  177. KB_UNDEFINED,
  178. KB_A,
  179. KB_B,
  180. KB_C,
  181. KB_D,
  182. KB_E,
  183. KB_F,
  184. KB_G,
  185. KB_H,
  186. KB_I,
  187. KB_J,
  188. KB_K,
  189. KB_L,
  190. KB_M, /* 0x10 */
  191. KB_N,
  192. KB_O,
  193. KB_P,
  194. KB_Q,
  195. KB_R,
  196. KB_S,
  197. KB_T,
  198. KB_U,
  199. KB_V,
  200. KB_W,
  201. KB_X,
  202. KB_Y,
  203. KB_Z,
  204. KB_1,
  205. KB_2,
  206. KB_3, /* 0x20 */
  207. KB_4,
  208. KB_5,
  209. KB_6,
  210. KB_7,
  211. KB_8,
  212. KB_9,
  213. KB_0,
  214. KB_ENTER,
  215. KB_ESCAPE,
  216. KB_BSPACE,
  217. KB_TAB,
  218. KB_SPACE,
  219. KB_MINUS,
  220. KB_EQUAL,
  221. KB_LBRACKET,
  222. KB_RBRACKET, /* 0x30 */
  223. KB_BSLASH, /* \ (and |) */
  224. KB_NONUS_HASH, /* Non-US # and ~ */
  225. KB_SCOLON, /* ; (and :) */
  226. KB_QUOTE, /* ' and " */
  227. KB_GRAVE, /* Grave accent and tilde */
  228. KB_COMMA, /* , and < */
  229. KB_DOT, /* . and > */
  230. KB_SLASH, /* / and ? */
  231. KB_CAPSLOCK,
  232. KB_F1,
  233. KB_F2,
  234. KB_F3,
  235. KB_F4,
  236. KB_F5,
  237. KB_F6,
  238. KB_F7, /* 0x40 */
  239. KB_F8,
  240. KB_F9,
  241. KB_F10,
  242. KB_F11,
  243. KB_F12,
  244. KB_PSCREEN,
  245. KB_SCKLOCK,
  246. KB_BREAK,
  247. KB_INSERT,
  248. KB_HOME,
  249. KB_PGUP,
  250. KB_DELETE,
  251. KB_END,
  252. KB_PGDOWN,
  253. KB_RIGHT,
  254. KB_LEFT, /* 0x50 */
  255. KB_DOWN,
  256. KB_UP,
  257. KB_NUMLOCK,
  258. KB_KP_SLASH,
  259. KB_KP_ASTERISK,
  260. KB_KP_MINUS,
  261. KB_KP_PLUS,
  262. KB_KP_ENTER,
  263. KB_KP_1,
  264. KB_KP_2,
  265. KB_KP_3,
  266. KB_KP_4,
  267. KB_KP_5,
  268. KB_KP_6,
  269. KB_KP_7,
  270. KB_KP_8, /* 0x60 */
  271. KB_KP_9,
  272. KB_KP_0,
  273. KB_KP_DOT,
  274. KB_NONUS_BSLASH, /* Non-US \ and | */
  275. KB_APPLICATION,
  276. KB_POWER,
  277. KB_KP_EQUAL,
  278. KB_F13,
  279. KB_F14,
  280. KB_F15,
  281. KB_F16,
  282. KB_F17,
  283. KB_F18,
  284. KB_F19,
  285. KB_F20,
  286. KB_F21, /* 0x70 */
  287. KB_F22,
  288. KB_F23,
  289. KB_F24,
  290. KB_EXECUTE,
  291. KB_HELP,
  292. KB_MENU,
  293. KB_SELECT,
  294. KB_STOP,
  295. KB_AGAIN,
  296. KB_UNDO,
  297. KB_CUT,
  298. KB_COPY,
  299. KB_PASTE,
  300. KB_FIND,
  301. KB__MUTE,
  302. KB__VOLUP, /* 0x80 */
  303. KB__VOLDOWN,
  304. KB_LOCKING_CAPS, /* locking Caps Lock */
  305. KB_LOCKING_NUM, /* locking Num Lock */
  306. KB_LOCKING_SCROLL, /* locking Scroll Lock */
  307. KB_KP_COMMA,
  308. KB_KP_EQUAL_AS400, /* equal sign on AS/400 */
  309. KB_INT1,
  310. KB_INT2,
  311. KB_INT3,
  312. KB_INT4,
  313. KB_INT5,
  314. KB_INT6,
  315. KB_INT7,
  316. KB_INT8,
  317. KB_INT9,
  318. KB_LANG1, /* 0x90 */
  319. KB_LANG2,
  320. KB_LANG3,
  321. KB_LANG4,
  322. KB_LANG5,
  323. KB_LANG6,
  324. KB_LANG7,
  325. KB_LANG8,
  326. KB_LANG9,
  327. KB_ALT_ERASE,
  328. KB_SYSREQ,
  329. KB_CANCEL,
  330. KB_CLEAR,
  331. KB_PRIOR,
  332. KB_RETURN,
  333. KB_SEPARATOR,
  334. KB_OUT, /* 0xA0 */
  335. KB_OPER,
  336. KB_CLEAR_AGAIN,
  337. KB_CRSEL,
  338. KB_EXSEL,
  339. /* NOTE: uses 0xB0-DF for special keycodes */
  340. KB_KP_00 = 0xB0,
  341. KB_KP_000,
  342. KB_THOUSANDS_SEPARATOR,
  343. KB_DECIMAL_SEPARATOR,
  344. KB_CURRENCY_UNIT,
  345. KB_CURRENCY_SUB_UNIT,
  346. KB_KP_LPAREN,
  347. KB_KP_RPAREN,
  348. KB_KP_LCBRACKET, /* { */
  349. KB_KP_RCBRACKET, /* } */
  350. KB_KP_TAB,
  351. KB_KP_BSPACE,
  352. KB_KP_A,
  353. KB_KP_B,
  354. KB_KP_C,
  355. KB_KP_D,
  356. KB_KP_E, /* 0xC0 */
  357. KB_KP_F,
  358. KB_KP_XOR,
  359. KB_KP_HAT,
  360. KB_KP_PERC,
  361. KB_KP_LT,
  362. KB_KP_GT,
  363. KB_KP_AND,
  364. KB_KP_LAZYAND,
  365. KB_KP_OR,
  366. KB_KP_LAZYOR,
  367. KB_KP_COLON,
  368. KB_KP_HASH,
  369. KB_KP_SPACE,
  370. KB_KP_ATMARK,
  371. KB_KP_EXCLAMATION,
  372. KB_KP_MEM_STORE, /* 0xD0 */
  373. KB_KP_MEM_RECALL,
  374. KB_KP_MEM_CLEAR,
  375. KB_KP_MEM_ADD,
  376. KB_KP_MEM_SUB,
  377. KB_KP_MEM_MUL,
  378. KB_KP_MEM_DIV,
  379. KB_KP_PLUS_MINUS,
  380. KB_KP_CLEAR,
  381. KB_KP_CLEAR_ENTRY,
  382. KB_KP_BINARY,
  383. KB_KP_OCTAL,
  384. KB_KP_DECIMAL,
  385. KB_KP_HEXADECIMAL,
  386. /* Modifiers */
  387. KB_LCTRL = 0xE0,
  388. KB_LSHIFT,
  389. KB_LALT,
  390. KB_LGUI,
  391. KB_RCTRL,
  392. KB_RSHIFT,
  393. KB_RALT,
  394. KB_RGUI,
  395. /* NOTE: uses 0xE8-FF for special keycodes */
  396. };
  397. #endif /* USB_KEYCODES_H */