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.

586 lines
13 KiB

  1. /*
  2. Copyright 2011,2012 Jun Wako <wakojun@gmail.com>
  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. * Keycodes based on HID Keyboard/Keypad Usage Page (0x07) plus media keys from Generic Desktop Page (0x01) and Consumer Page (0x0C)
  16. *
  17. * See https://web.archive.org/web/20060218214400/http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
  18. * or http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (older)
  19. */
  20. #pragma once
  21. /* FIXME: Add doxygen comments here */
  22. #define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED)
  23. #define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF)
  24. #define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL)
  25. #define IS_MOD(code) (KC_LEFT_CTRL <= (code) && (code) <= KC_RIGHT_GUI)
  26. #define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF))
  27. #define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE)
  28. #define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_BRID)
  29. #define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31)
  30. #define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2)
  31. #define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT)
  32. #define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN8)
  33. #define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT)
  34. #define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2)
  35. #define MOD_BIT(code) (1 << MOD_INDEX(code))
  36. #define MOD_INDEX(code) ((code)&0x07)
  37. #define MOD_MASK_CTRL (MOD_BIT(KC_LEFT_CTRL) | MOD_BIT(KC_RIGHT_CTRL))
  38. #define MOD_MASK_SHIFT (MOD_BIT(KC_LEFT_SHIFT) | MOD_BIT(KC_RIGHT_SHIFT))
  39. #define MOD_MASK_ALT (MOD_BIT(KC_LEFT_ALT) | MOD_BIT(KC_RIGHT_ALT))
  40. #define MOD_MASK_GUI (MOD_BIT(KC_LEFT_GUI) | MOD_BIT(KC_RIGHT_GUI))
  41. #define MOD_MASK_CS (MOD_MASK_CTRL | MOD_MASK_SHIFT)
  42. #define MOD_MASK_CA (MOD_MASK_CTRL | MOD_MASK_ALT)
  43. #define MOD_MASK_CG (MOD_MASK_CTRL | MOD_MASK_GUI)
  44. #define MOD_MASK_SA (MOD_MASK_SHIFT | MOD_MASK_ALT)
  45. #define MOD_MASK_SG (MOD_MASK_SHIFT | MOD_MASK_GUI)
  46. #define MOD_MASK_AG (MOD_MASK_ALT | MOD_MASK_GUI)
  47. #define MOD_MASK_CSA (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_ALT)
  48. #define MOD_MASK_CSG (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_GUI)
  49. #define MOD_MASK_CAG (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI)
  50. #define MOD_MASK_SAG (MOD_MASK_SHIFT | MOD_MASK_ALT | MOD_MASK_GUI)
  51. #define MOD_MASK_CSAG (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_ALT | MOD_MASK_GUI)
  52. #define FN_BIT(code) (1 << FN_INDEX(code))
  53. #define FN_INDEX(code) ((code)-KC_FN0)
  54. #define FN_MIN KC_FN0
  55. #define FN_MAX KC_FN31
  56. // clang-format off
  57. /*
  58. * Short names for ease of definition of keymap
  59. */
  60. /* Transparent */
  61. #define KC_TRANSPARENT 0x01
  62. #define KC_TRNS KC_TRANSPARENT
  63. /* Punctuation */
  64. #define KC_ENT KC_ENTER
  65. #define KC_ESC KC_ESCAPE
  66. #define KC_BSPC KC_BACKSPACE
  67. #define KC_SPC KC_SPACE
  68. #define KC_MINS KC_MINUS
  69. #define KC_EQL KC_EQUAL
  70. #define KC_LBRC KC_LEFT_BRACKET
  71. #define KC_RBRC KC_RIGHT_BRACKET
  72. #define KC_BSLS KC_BACKSLASH
  73. #define KC_NUHS KC_NONUS_HASH
  74. #define KC_SCLN KC_SEMICOLON
  75. #define KC_QUOT KC_QUOTE
  76. #define KC_GRV KC_GRAVE
  77. #define KC_COMM KC_COMMA
  78. #define KC_SLSH KC_SLASH
  79. #define KC_NUBS KC_NONUS_BACKSLASH
  80. /* Lock Keys */
  81. #define KC_CAPS KC_CAPS_LOCK
  82. #define KC_SCRL KC_SCROLL_LOCK
  83. #define KC_NUM KC_NUM_LOCK
  84. #define KC_LCAP KC_LOCKING_CAPS_LOCK
  85. #define KC_LNUM KC_LOCKING_NUM_LOCK
  86. #define KC_LSCR KC_LOCKING_SCROLL_LOCK
  87. /* Commands */
  88. #define KC_PSCR KC_PRINT_SCREEN
  89. #define KC_PAUS KC_PAUSE
  90. #define KC_BRK KC_PAUSE
  91. #define KC_INS KC_INSERT
  92. #define KC_PGUP KC_PAGE_UP
  93. #define KC_DEL KC_DELETE
  94. #define KC_PGDN KC_PAGE_DOWN
  95. #define KC_RGHT KC_RIGHT
  96. #define KC_APP KC_APPLICATION
  97. #define KC_EXEC KC_EXECUTE
  98. #define KC_SLCT KC_SELECT
  99. #define KC_AGIN KC_AGAIN
  100. #define KC_PSTE KC_PASTE
  101. #define KC_ERAS KC_ALTERNATE_ERASE
  102. #define KC_SYRQ KC_SYSTEM_REQUEST
  103. #define KC_CNCL KC_CANCEL
  104. #define KC_CLR KC_CLEAR
  105. #define KC_PRIR KC_PRIOR
  106. #define KC_RETN KC_RETURN
  107. #define KC_SEPR KC_SEPARATOR
  108. #define KC_CLAG KC_CLEAR_AGAIN
  109. #define KC_CRSL KC_CRSEL
  110. #define KC_EXSL KC_EXSEL
  111. /* Keypad */
  112. #define KC_PSLS KC_KP_SLASH
  113. #define KC_PAST KC_KP_ASTERISK
  114. #define KC_PMNS KC_KP_MINUS
  115. #define KC_PPLS KC_KP_PLUS
  116. #define KC_PENT KC_KP_ENTER
  117. #define KC_P1 KC_KP_1
  118. #define KC_P2 KC_KP_2
  119. #define KC_P3 KC_KP_3
  120. #define KC_P4 KC_KP_4
  121. #define KC_P5 KC_KP_5
  122. #define KC_P6 KC_KP_6
  123. #define KC_P7 KC_KP_7
  124. #define KC_P8 KC_KP_8
  125. #define KC_P9 KC_KP_9
  126. #define KC_P0 KC_KP_0
  127. #define KC_PDOT KC_KP_DOT
  128. #define KC_PEQL KC_KP_EQUAL
  129. #define KC_PCMM KC_KP_COMMA
  130. /* Language Specific */
  131. #define KC_INT1 KC_INTERNATIONAL_1
  132. #define KC_INT2 KC_INTERNATIONAL_2
  133. #define KC_INT3 KC_INTERNATIONAL_3
  134. #define KC_INT4 KC_INTERNATIONAL_4
  135. #define KC_INT5 KC_INTERNATIONAL_5
  136. #define KC_INT6 KC_INTERNATIONAL_6
  137. #define KC_INT7 KC_INTERNATIONAL_7
  138. #define KC_INT8 KC_INTERNATIONAL_8
  139. #define KC_INT9 KC_INTERNATIONAL_9
  140. #define KC_LNG1 KC_LANGUAGE_1
  141. #define KC_LNG2 KC_LANGUAGE_2
  142. #define KC_LNG3 KC_LANGUAGE_3
  143. #define KC_LNG4 KC_LANGUAGE_4
  144. #define KC_LNG5 KC_LANGUAGE_5
  145. #define KC_LNG6 KC_LANGUAGE_6
  146. #define KC_LNG7 KC_LANGUAGE_7
  147. #define KC_LNG8 KC_LANGUAGE_8
  148. #define KC_LNG9 KC_LANGUAGE_9
  149. /* Modifiers */
  150. #define KC_LCTL KC_LEFT_CTRL
  151. #define KC_LSFT KC_LEFT_SHIFT
  152. #define KC_LALT KC_LEFT_ALT
  153. #define KC_LOPT KC_LEFT_ALT
  154. #define KC_LGUI KC_LEFT_GUI
  155. #define KC_LCMD KC_LEFT_GUI
  156. #define KC_LWIN KC_LEFT_GUI
  157. #define KC_RCTL KC_RIGHT_CTRL
  158. #define KC_RSFT KC_RIGHT_SHIFT
  159. #define KC_RALT KC_RIGHT_ALT
  160. #define KC_ALGR KC_RIGHT_ALT
  161. #define KC_ROPT KC_RIGHT_ALT
  162. #define KC_RGUI KC_RIGHT_GUI
  163. #define KC_RCMD KC_RIGHT_GUI
  164. #define KC_RWIN KC_RIGHT_GUI
  165. /* Generic Desktop Page (0x01) */
  166. #define KC_PWR KC_SYSTEM_POWER
  167. #define KC_SLEP KC_SYSTEM_SLEEP
  168. #define KC_WAKE KC_SYSTEM_WAKE
  169. /* Consumer Page (0x0C) */
  170. #define KC_MUTE KC_AUDIO_MUTE
  171. #define KC_VOLU KC_AUDIO_VOL_UP
  172. #define KC_VOLD KC_AUDIO_VOL_DOWN
  173. #define KC_MNXT KC_MEDIA_NEXT_TRACK
  174. #define KC_MPRV KC_MEDIA_PREV_TRACK
  175. #define KC_MSTP KC_MEDIA_STOP
  176. #define KC_MPLY KC_MEDIA_PLAY_PAUSE
  177. #define KC_MSEL KC_MEDIA_SELECT
  178. #define KC_EJCT KC_MEDIA_EJECT
  179. #define KC_CALC KC_CALCULATOR
  180. #define KC_MYCM KC_MY_COMPUTER
  181. #define KC_WSCH KC_WWW_SEARCH
  182. #define KC_WHOM KC_WWW_HOME
  183. #define KC_WBAK KC_WWW_BACK
  184. #define KC_WFWD KC_WWW_FORWARD
  185. #define KC_WSTP KC_WWW_STOP
  186. #define KC_WREF KC_WWW_REFRESH
  187. #define KC_WFAV KC_WWW_FAVORITES
  188. #define KC_MFFD KC_MEDIA_FAST_FORWARD
  189. #define KC_MRWD KC_MEDIA_REWIND
  190. #define KC_BRIU KC_BRIGHTNESS_UP
  191. #define KC_BRID KC_BRIGHTNESS_DOWN
  192. /* System Specific */
  193. #define KC_BRMU KC_PAUSE
  194. #define KC_BRMD KC_SCROLL_LOCK
  195. /* Mouse Keys */
  196. #define KC_MS_U KC_MS_UP
  197. #define KC_MS_D KC_MS_DOWN
  198. #define KC_MS_L KC_MS_LEFT
  199. #define KC_MS_R KC_MS_RIGHT
  200. #define KC_BTN1 KC_MS_BTN1
  201. #define KC_BTN2 KC_MS_BTN2
  202. #define KC_BTN3 KC_MS_BTN3
  203. #define KC_BTN4 KC_MS_BTN4
  204. #define KC_BTN5 KC_MS_BTN5
  205. #define KC_BTN6 KC_MS_BTN6
  206. #define KC_BTN7 KC_MS_BTN7
  207. #define KC_BTN8 KC_MS_BTN8
  208. #define KC_WH_U KC_MS_WH_UP
  209. #define KC_WH_D KC_MS_WH_DOWN
  210. #define KC_WH_L KC_MS_WH_LEFT
  211. #define KC_WH_R KC_MS_WH_RIGHT
  212. #define KC_ACL0 KC_MS_ACCEL0
  213. #define KC_ACL1 KC_MS_ACCEL1
  214. #define KC_ACL2 KC_MS_ACCEL2
  215. // clang-format on
  216. /* Keyboard/Keypad Page (0x07) */
  217. enum hid_keyboard_keypad_usage {
  218. KC_NO = 0x00,
  219. KC_ROLL_OVER,
  220. KC_POST_FAIL,
  221. KC_UNDEFINED,
  222. KC_A,
  223. KC_B,
  224. KC_C,
  225. KC_D,
  226. KC_E,
  227. KC_F,
  228. KC_G,
  229. KC_H,
  230. KC_I,
  231. KC_J,
  232. KC_K,
  233. KC_L,
  234. KC_M, // 0x10
  235. KC_N,
  236. KC_O,
  237. KC_P,
  238. KC_Q,
  239. KC_R,
  240. KC_S,
  241. KC_T,
  242. KC_U,
  243. KC_V,
  244. KC_W,
  245. KC_X,
  246. KC_Y,
  247. KC_Z,
  248. KC_1,
  249. KC_2,
  250. KC_3, // 0x20
  251. KC_4,
  252. KC_5,
  253. KC_6,
  254. KC_7,
  255. KC_8,
  256. KC_9,
  257. KC_0,
  258. KC_ENTER,
  259. KC_ESCAPE,
  260. KC_BACKSPACE,
  261. KC_TAB,
  262. KC_SPACE,
  263. KC_MINUS,
  264. KC_EQUAL,
  265. KC_LEFT_BRACKET,
  266. KC_RIGHT_BRACKET, // 0x30
  267. KC_BACKSLASH,
  268. KC_NONUS_HASH,
  269. KC_SEMICOLON,
  270. KC_QUOTE,
  271. KC_GRAVE,
  272. KC_COMMA,
  273. KC_DOT,
  274. KC_SLASH,
  275. KC_CAPS_LOCK,
  276. KC_F1,
  277. KC_F2,
  278. KC_F3,
  279. KC_F4,
  280. KC_F5,
  281. KC_F6,
  282. KC_F7, // 0x40
  283. KC_F8,
  284. KC_F9,
  285. KC_F10,
  286. KC_F11,
  287. KC_F12,
  288. KC_PRINT_SCREEN,
  289. KC_SCROLL_LOCK,
  290. KC_PAUSE,
  291. KC_INSERT,
  292. KC_HOME,
  293. KC_PAGE_UP,
  294. KC_DELETE,
  295. KC_END,
  296. KC_PAGE_DOWN,
  297. KC_RIGHT,
  298. KC_LEFT, // 0x50
  299. KC_DOWN,
  300. KC_UP,
  301. KC_NUM_LOCK,
  302. KC_KP_SLASH,
  303. KC_KP_ASTERISK,
  304. KC_KP_MINUS,
  305. KC_KP_PLUS,
  306. KC_KP_ENTER,
  307. KC_KP_1,
  308. KC_KP_2,
  309. KC_KP_3,
  310. KC_KP_4,
  311. KC_KP_5,
  312. KC_KP_6,
  313. KC_KP_7,
  314. KC_KP_8, // 0x60
  315. KC_KP_9,
  316. KC_KP_0,
  317. KC_KP_DOT,
  318. KC_NONUS_BACKSLASH,
  319. KC_APPLICATION,
  320. KC_KB_POWER,
  321. KC_KP_EQUAL,
  322. KC_F13,
  323. KC_F14,
  324. KC_F15,
  325. KC_F16,
  326. KC_F17,
  327. KC_F18,
  328. KC_F19,
  329. KC_F20,
  330. KC_F21, // 0x70
  331. KC_F22,
  332. KC_F23,
  333. KC_F24,
  334. KC_EXECUTE,
  335. KC_HELP,
  336. KC_MENU,
  337. KC_SELECT,
  338. KC_STOP,
  339. KC_AGAIN,
  340. KC_UNDO,
  341. KC_CUT,
  342. KC_COPY,
  343. KC_PASTE,
  344. KC_FIND,
  345. KC_KB_MUTE,
  346. KC_KB_VOLUME_UP, // 0x80
  347. KC_KB_VOLUME_DOWN,
  348. KC_LOCKING_CAPS_LOCK,
  349. KC_LOCKING_NUM_LOCK,
  350. KC_LOCKING_SCROLL_LOCK,
  351. KC_KP_COMMA,
  352. KC_KP_EQUAL_AS400,
  353. KC_INTERNATIONAL_1,
  354. KC_INTERNATIONAL_2,
  355. KC_INTERNATIONAL_3,
  356. KC_INTERNATIONAL_4,
  357. KC_INTERNATIONAL_5,
  358. KC_INTERNATIONAL_6,
  359. KC_INTERNATIONAL_7,
  360. KC_INTERNATIONAL_8,
  361. KC_INTERNATIONAL_9,
  362. KC_LANGUAGE_1, // 0x90
  363. KC_LANGUAGE_2,
  364. KC_LANGUAGE_3,
  365. KC_LANGUAGE_4,
  366. KC_LANGUAGE_5,
  367. KC_LANGUAGE_6,
  368. KC_LANGUAGE_7,
  369. KC_LANGUAGE_8,
  370. KC_LANGUAGE_9,
  371. KC_ALTERNATE_ERASE,
  372. KC_SYSTEM_REQUEST,
  373. KC_CANCEL,
  374. KC_CLEAR,
  375. KC_PRIOR,
  376. KC_RETURN,
  377. KC_SEPARATOR,
  378. KC_OUT, // 0xA0
  379. KC_OPER,
  380. KC_CLEAR_AGAIN,
  381. KC_CRSEL,
  382. KC_EXSEL,
  383. #if 0
  384. // ***************************************************************
  385. // These keycodes are present in the HID spec, but are *
  386. // nonfunctional on modern OSes. QMK uses this range (0xA5-0xDF) *
  387. // for the media and function keys instead - see below. *
  388. // ***************************************************************
  389. KC_KP_00 = 0xB0,
  390. KC_KP_000,
  391. KC_THOUSANDS_SEPARATOR,
  392. KC_DECIMAL_SEPARATOR,
  393. KC_CURRENCY_UNIT,
  394. KC_CURRENCY_SUB_UNIT,
  395. KC_KP_LEFT_PARENTHESIS,
  396. KC_KP_RIGHT_PARENTHESIS,
  397. KC_KP_LEFT_BRACE,
  398. KC_KP_RIGHT_BRACE,
  399. KC_KP_TAB,
  400. KC_KP_BACKSPACE,
  401. KC_KP_A,
  402. KC_KP_B,
  403. KC_KP_C,
  404. KC_KP_D,
  405. KC_KP_E, //0xC0
  406. KC_KP_F,
  407. KC_KP_XOR,
  408. KC_KP_HAT,
  409. KC_KP_PERCENT,
  410. KC_KP_LESS_THAN,
  411. KC_KP_GREATER_THAN,
  412. KC_KP_AND,
  413. KC_KP_LAZY_AND,
  414. KC_KP_OR,
  415. KC_KP_LAZY_OR,
  416. KC_KP_COLON,
  417. KC_KP_HASH,
  418. KC_KP_SPACE,
  419. KC_KP_AT,
  420. KC_KP_EXCLAMATION,
  421. KC_KP_MEM_STORE, //0xD0
  422. KC_KP_MEM_RECALL,
  423. KC_KP_MEM_CLEAR,
  424. KC_KP_MEM_ADD,
  425. KC_KP_MEM_SUB,
  426. KC_KP_MEM_MUL,
  427. KC_KP_MEM_DIV,
  428. KC_KP_PLUS_MINUS,
  429. KC_KP_CLEAR,
  430. KC_KP_CLEAR_ENTRY,
  431. KC_KP_BINARY,
  432. KC_KP_OCTAL,
  433. KC_KP_DECIMAL,
  434. KC_KP_HEXADECIMAL,
  435. #endif
  436. /* Modifiers */
  437. KC_LEFT_CTRL = 0xE0,
  438. KC_LEFT_SHIFT,
  439. KC_LEFT_ALT,
  440. KC_LEFT_GUI,
  441. KC_RIGHT_CTRL,
  442. KC_RIGHT_SHIFT,
  443. KC_RIGHT_ALT,
  444. KC_RIGHT_GUI
  445. // **********************************************
  446. // * 0xF0-0xFF are unallocated in the HID spec. *
  447. // * QMK uses these for Mouse Keys - see below. *
  448. // **********************************************
  449. };
  450. /* Media and Function keys */
  451. enum internal_special_keycodes {
  452. /* Generic Desktop Page (0x01) */
  453. KC_SYSTEM_POWER = 0xA5,
  454. KC_SYSTEM_SLEEP,
  455. KC_SYSTEM_WAKE,
  456. /* Consumer Page (0x0C) */
  457. KC_AUDIO_MUTE,
  458. KC_AUDIO_VOL_UP,
  459. KC_AUDIO_VOL_DOWN,
  460. KC_MEDIA_NEXT_TRACK,
  461. KC_MEDIA_PREV_TRACK,
  462. KC_MEDIA_STOP,
  463. KC_MEDIA_PLAY_PAUSE,
  464. KC_MEDIA_SELECT,
  465. KC_MEDIA_EJECT, // 0xB0
  466. KC_MAIL,
  467. KC_CALCULATOR,
  468. KC_MY_COMPUTER,
  469. KC_WWW_SEARCH,
  470. KC_WWW_HOME,
  471. KC_WWW_BACK,
  472. KC_WWW_FORWARD,
  473. KC_WWW_STOP,
  474. KC_WWW_REFRESH,
  475. KC_WWW_FAVORITES,
  476. KC_MEDIA_FAST_FORWARD,
  477. KC_MEDIA_REWIND,
  478. KC_BRIGHTNESS_UP,
  479. KC_BRIGHTNESS_DOWN,
  480. /* Fn keys */
  481. KC_FN0 = 0xC0,
  482. KC_FN1,
  483. KC_FN2,
  484. KC_FN3,
  485. KC_FN4,
  486. KC_FN5,
  487. KC_FN6,
  488. KC_FN7,
  489. KC_FN8,
  490. KC_FN9,
  491. KC_FN10,
  492. KC_FN11,
  493. KC_FN12,
  494. KC_FN13,
  495. KC_FN14,
  496. KC_FN15,
  497. KC_FN16, // 0xD0
  498. KC_FN17,
  499. KC_FN18,
  500. KC_FN19,
  501. KC_FN20,
  502. KC_FN21,
  503. KC_FN22,
  504. KC_FN23,
  505. KC_FN24,
  506. KC_FN25,
  507. KC_FN26,
  508. KC_FN27,
  509. KC_FN28,
  510. KC_FN29,
  511. KC_FN30,
  512. KC_FN31
  513. };
  514. enum mouse_keys {
  515. /* Mouse Buttons */
  516. #ifdef VIA_ENABLE
  517. KC_MS_UP = 0xF0,
  518. #else
  519. KC_MS_UP = 0xED,
  520. #endif
  521. KC_MS_DOWN,
  522. KC_MS_LEFT,
  523. KC_MS_RIGHT, // 0xF0
  524. KC_MS_BTN1,
  525. KC_MS_BTN2,
  526. KC_MS_BTN3,
  527. KC_MS_BTN4,
  528. KC_MS_BTN5,
  529. #ifdef VIA_ENABLE
  530. KC_MS_BTN6 = KC_MS_BTN5,
  531. KC_MS_BTN7 = KC_MS_BTN5,
  532. KC_MS_BTN8 = KC_MS_BTN5,
  533. #else
  534. KC_MS_BTN6,
  535. KC_MS_BTN7,
  536. KC_MS_BTN8,
  537. #endif
  538. /* Mouse Wheel */
  539. KC_MS_WH_UP,
  540. KC_MS_WH_DOWN,
  541. KC_MS_WH_LEFT,
  542. KC_MS_WH_RIGHT,
  543. /* Acceleration */
  544. KC_MS_ACCEL0,
  545. KC_MS_ACCEL1,
  546. KC_MS_ACCEL2 // 0xFF
  547. };
  548. #include "keycode_legacy.h"