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