Keyboard firmwares for Atmel AVR and Cortex-M
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

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