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.

505 lines
15 KiB

  1. /* Copyright 2019
  2. *
  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. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #pragma once
  17. // clang-format off
  18. /* Punctuation */
  19. #define X_ENT X_ENTER
  20. #define X_ESC X_ESCAPE
  21. #define X_BSPC X_BACKSPACE
  22. #define X_SPC X_SPACE
  23. #define X_MINS X_MINUS
  24. #define X_EQL X_EQUAL
  25. #define X_LBRC X_LEFT_BRACKET
  26. #define X_RBRC X_RIGHT_BRACKET
  27. #define X_BSLS X_BACKSLASH
  28. #define X_NUHS X_NONUS_HASH
  29. #define X_SCLN X_SEMICOLON
  30. #define X_QUOT X_QUOTE
  31. #define X_GRV X_GRAVE
  32. #define X_COMM X_COMMA
  33. #define X_SLSH X_SLASH
  34. #define X_NUBS X_NONUS_BACKSLASH
  35. /* Lock Keys */
  36. #define X_CAPS X_CAPS_LOCK
  37. #define X_SCRL X_SCROLL_LOCK
  38. #define X_NUM X_NUM_LOCK
  39. #define X_LCAP X_LOCKING_CAPS_LOCK
  40. #define X_LNUM X_LOCKING_NUM_LOCK
  41. #define X_LSCR X_LOCKING_SCROLL_LOCK
  42. /* Commands */
  43. #define X_PSCR X_PRINT_SCREEN
  44. #define X_PAUS X_PAUSE
  45. #define X_BRK X_PAUSE
  46. #define X_INS X_INSERT
  47. #define X_PGUP X_PAGE_UP
  48. #define X_DEL X_DELETE
  49. #define X_PGDN X_PAGE_DOWN
  50. #define X_RGHT X_RIGHT
  51. #define X_APP X_APPLICATION
  52. #define X_EXEC X_EXECUTE
  53. #define X_SLCT X_SELECT
  54. #define X_AGIN X_AGAIN
  55. #define X_PSTE X_PASTE
  56. #define X_ERAS X_ALTERNATE_ERASE
  57. #define X_SYRQ X_SYSTEM_REQUEST
  58. #define X_CNCL X_CANCEL
  59. #define X_CLR X_CLEAR
  60. #define X_PRIR X_PRIOR
  61. #define X_RETN X_RETURN
  62. #define X_SEPR X_SEPARATOR
  63. #define X_CLAG X_CLEAR_AGAIN
  64. #define X_CRSL X_CRSEL
  65. #define X_EXSL X_EXSEL
  66. /* Keypad */
  67. #define X_PSLS X_KP_SLASH
  68. #define X_PAST X_KP_ASTERISK
  69. #define X_PMNS X_KP_MINUS
  70. #define X_PPLS X_KP_PLUS
  71. #define X_PENT X_KP_ENTER
  72. #define X_P1 X_KP_1
  73. #define X_P2 X_KP_2
  74. #define X_P3 X_KP_3
  75. #define X_P4 X_KP_4
  76. #define X_P5 X_KP_5
  77. #define X_P6 X_KP_6
  78. #define X_P7 X_KP_7
  79. #define X_P8 X_KP_8
  80. #define X_P9 X_KP_9
  81. #define X_P0 X_KP_0
  82. #define X_PDOT X_KP_DOT
  83. #define X_PEQL X_KP_EQUAL
  84. #define X_PCMM X_KP_COMMA
  85. /* Language Specific */
  86. #define X_INT1 X_INTERNATIONAL_1
  87. #define X_INT2 X_INTERNATIONAL_2
  88. #define X_INT3 X_INTERNATIONAL_3
  89. #define X_INT4 X_INTERNATIONAL_4
  90. #define X_INT5 X_INTERNATIONAL_5
  91. #define X_INT6 X_INTERNATIONAL_6
  92. #define X_INT7 X_INTERNATIONAL_7
  93. #define X_INT8 X_INTERNATIONAL_8
  94. #define X_INT9 X_INTERNATIONAL_9
  95. #define X_LNG1 X_LANGUAGE_1
  96. #define X_LNG2 X_LANGUAGE_2
  97. #define X_LNG3 X_LANGUAGE_3
  98. #define X_LNG4 X_LANGUAGE_4
  99. #define X_LNG5 X_LANGUAGE_5
  100. #define X_LNG6 X_LANGUAGE_6
  101. #define X_LNG7 X_LANGUAGE_7
  102. #define X_LNG8 X_LANGUAGE_8
  103. #define X_LNG9 X_LANGUAGE_9
  104. /* Modifiers */
  105. #define X_LCTL X_LEFT_CTRL
  106. #define X_LSFT X_LEFT_SHIFT
  107. #define X_LALT X_LEFT_ALT
  108. #define X_LOPT X_LEFT_ALT
  109. #define X_LGUI X_LEFT_GUI
  110. #define X_LCMD X_LEFT_GUI
  111. #define X_LWIN X_LEFT_GUI
  112. #define X_RCTL X_RIGHT_CTRL
  113. #define X_RSFT X_RIGHT_SHIFT
  114. #define X_RALT X_RIGHT_ALT
  115. #define X_ALGR X_RIGHT_ALT
  116. #define X_ROPT X_RIGHT_ALT
  117. #define X_RGUI X_RIGHT_GUI
  118. #define X_RCMD X_RIGHT_GUI
  119. #define X_RWIN X_RIGHT_GUI
  120. /* Generic Desktop Page (0x01) */
  121. #define X_PWR X_SYSTEM_POWER
  122. #define X_SLEP X_SYSTEM_SLEEP
  123. #define X_WAKE X_SYSTEM_WAKE
  124. /* Consumer Page (0x0C) */
  125. #define X_MUTE X_AUDIO_MUTE
  126. #define X_VOLU X_AUDIO_VOL_UP
  127. #define X_VOLD X_AUDIO_VOL_DOWN
  128. #define X_MNXT X_MEDIA_NEXT_TRACK
  129. #define X_MPRV X_MEDIA_PREV_TRACK
  130. #define X_MSTP X_MEDIA_STOP
  131. #define X_MPLY X_MEDIA_PLAY_PAUSE
  132. #define X_MSEL X_MEDIA_SELECT
  133. #define X_EJCT X_MEDIA_EJECT
  134. #define X_CALC X_CALCULATOR
  135. #define X_MYCM X_MY_COMPUTER
  136. #define X_WSCH X_WWW_SEARCH
  137. #define X_WHOM X_WWW_HOME
  138. #define X_WBAK X_WWW_BACK
  139. #define X_WFWD X_WWW_FORWARD
  140. #define X_WSTP X_WWW_STOP
  141. #define X_WREF X_WWW_REFRESH
  142. #define X_WFAV X_WWW_FAVORITES
  143. #define X_MFFD X_MEDIA_FAST_FORWARD
  144. #define X_MRWD X_MEDIA_REWIND
  145. #define X_BRIU X_BRIGHTNESS_UP
  146. #define X_BRID X_BRIGHTNESS_DOWN
  147. /* System Specific */
  148. #define X_BRMU X_PAUSE
  149. #define X_BRMD X_SCROLL_LOCK
  150. /* Mouse Keys */
  151. #define X_MS_U X_MS_UP
  152. #define X_MS_D X_MS_DOWN
  153. #define X_MS_L X_MS_LEFT
  154. #define X_MS_R X_MS_RIGHT
  155. #define X_BTN1 X_MS_BTN1
  156. #define X_BTN2 X_MS_BTN2
  157. #define X_BTN3 X_MS_BTN3
  158. #define X_BTN4 X_MS_BTN4
  159. #define X_BTN5 X_MS_BTN5
  160. #define X_BTN6 X_MS_BTN6
  161. #define X_BTN7 X_MS_BTN7
  162. #define X_BTN8 X_MS_BTN8
  163. #define X_WH_U X_MS_WH_UP
  164. #define X_WH_D X_MS_WH_DOWN
  165. #define X_WH_L X_MS_WH_LEFT
  166. #define X_WH_R X_MS_WH_RIGHT
  167. #define X_ACL0 X_MS_ACCEL0
  168. #define X_ACL1 X_MS_ACCEL1
  169. #define X_ACL2 X_MS_ACCEL2
  170. /* Keyboard/Keypad Page (0x07) */
  171. #define X_A 04
  172. #define X_B 05
  173. #define X_C 06
  174. #define X_D 07
  175. #define X_E 08
  176. #define X_F 09
  177. #define X_G 0a
  178. #define X_H 0b
  179. #define X_I 0c
  180. #define X_J 0d
  181. #define X_K 0e
  182. #define X_L 0f
  183. #define X_M 10
  184. #define X_N 11
  185. #define X_O 12
  186. #define X_P 13
  187. #define X_Q 14
  188. #define X_R 15
  189. #define X_S 16
  190. #define X_T 17
  191. #define X_U 18
  192. #define X_V 19
  193. #define X_W 1a
  194. #define X_X 1b
  195. #define X_Y 1c
  196. #define X_Z 1d
  197. #define X_1 1e
  198. #define X_2 1f
  199. #define X_3 20
  200. #define X_4 21
  201. #define X_5 22
  202. #define X_6 23
  203. #define X_7 24
  204. #define X_8 25
  205. #define X_9 26
  206. #define X_0 27
  207. #define X_ENTER 28
  208. #define X_ESCAPE 29
  209. #define X_BACKSPACE 2a
  210. #define X_TAB 2b
  211. #define X_SPACE 2c
  212. #define X_MINUS 2d
  213. #define X_EQUAL 2e
  214. #define X_LEFT_BRACKET 2f
  215. #define X_RIGHT_BRACKET 30
  216. #define X_BACKSLASH 31
  217. #define X_NONUS_HASH 32
  218. #define X_SEMICOLON 33
  219. #define X_QUOTE 34
  220. #define X_GRAVE 35
  221. #define X_COMMA 36
  222. #define X_DOT 37
  223. #define X_SLASH 38
  224. #define X_CAPS_LOCK 39
  225. #define X_F1 3a
  226. #define X_F2 3b
  227. #define X_F3 3c
  228. #define X_F4 3d
  229. #define X_F5 3e
  230. #define X_F6 3f
  231. #define X_F7 40
  232. #define X_F8 41
  233. #define X_F9 42
  234. #define X_F10 43
  235. #define X_F11 44
  236. #define X_F12 45
  237. #define X_PRINT_SCREEN 46
  238. #define X_SCROLL_LOCK 47
  239. #define X_PAUSE 48
  240. #define X_INSERT 49
  241. #define X_HOME 4a
  242. #define X_PAGE_UP 4b
  243. #define X_DELETE 4c
  244. #define X_END 4d
  245. #define X_PAGE_DOWN 4e
  246. #define X_RIGHT 4f
  247. #define X_LEFT 50
  248. #define X_DOWN 51
  249. #define X_UP 52
  250. #define X_NUM_LOCK 53
  251. #define X_KP_SLASH 54
  252. #define X_KP_ASTERISK 55
  253. #define X_KP_MINUS 56
  254. #define X_KP_PLUS 57
  255. #define X_KP_ENTER 58
  256. #define X_KP_1 59
  257. #define X_KP_2 5a
  258. #define X_KP_3 5b
  259. #define X_KP_4 5c
  260. #define X_KP_5 5d
  261. #define X_KP_6 5e
  262. #define X_KP_7 5f
  263. #define X_KP_8 60
  264. #define X_KP_9 61
  265. #define X_KP_0 62
  266. #define X_KP_DOT 63
  267. #define X_NONUS_BACKSLASH 64
  268. #define X_APPLICATION 65
  269. #define X_KB_POWER 66
  270. #define X_KP_EQUAL 67
  271. #define X_F13 68
  272. #define X_F14 69
  273. #define X_F15 6a
  274. #define X_F16 6b
  275. #define X_F17 6c
  276. #define X_F18 6d
  277. #define X_F19 6e
  278. #define X_F20 6f
  279. #define X_F21 70
  280. #define X_F22 71
  281. #define X_F23 72
  282. #define X_F24 73
  283. #define X_EXECUTE 74
  284. #define X_HELP 75
  285. #define X_MENU 76
  286. #define X_SELECT 77
  287. #define X_STOP 78
  288. #define X_AGAIN 79
  289. #define X_UNDO 7a
  290. #define X_CUT 7b
  291. #define X_COPY 7c
  292. #define X_PASTE 7d
  293. #define X_FIND 7e
  294. #define X_KB_MUTE 7f
  295. #define X_KB_VOLUME_UP 80
  296. #define X_KB_VOLUME_DOWN 81
  297. #define X_LOCKING_CAPS_LOCK 82
  298. #define X_LOCKING_NUM_LOCK 83
  299. #define X_LOCKING_SCROLL_LOCK 84
  300. #define X_KP_COMMA 85
  301. #define X_KP_EQUAL_AS400 86
  302. #define X_INTERNATIONAL_1 87
  303. #define X_INTERNATIONAL_2 88
  304. #define X_INTERNATIONAL_3 89
  305. #define X_INTERNATIONAL_4 8a
  306. #define X_INTERNATIONAL_5 8b
  307. #define X_INTERNATIONAL_6 8c
  308. #define X_INTERNATIONAL_7 8d
  309. #define X_INTERNATIONAL_8 8e
  310. #define X_INTERNATIONAL_9 8f
  311. #define X_LANGUAGE_1 90
  312. #define X_LANGUAGE_2 91
  313. #define X_LANGUAGE_3 92
  314. #define X_LANGUAGE_4 93
  315. #define X_LANGUAGE_5 94
  316. #define X_LANGUAGE_6 95
  317. #define X_LANGUAGE_7 96
  318. #define X_LANGUAGE_8 97
  319. #define X_LANGUAGE_9 98
  320. #define X_ALTERNATE_ERASE 99
  321. #define X_SYSTEM_REQUEST 9a
  322. #define X_CANCEL 9b
  323. #define X_CLEAR 9c
  324. #define X_PRIOR 9d
  325. #define X_RETURN 9e
  326. #define X_SEPARATOR 9f
  327. #define X_OUT a0
  328. #define X_OPER a1
  329. #define X_CLEAR_AGAIN a2
  330. #define X_CRSEL a3
  331. #define X_EXSEL a4
  332. /* Modifiers */
  333. #define X_LEFT_CTRL e0
  334. #define X_LEFT_SHIFT e1
  335. #define X_LEFT_ALT e2
  336. #define X_LEFT_GUI e3
  337. #define X_RIGHT_CTRL e4
  338. #define X_RIGHT_SHIFT e5
  339. #define X_RIGHT_ALT e6
  340. #define X_RIGHT_GUI e7
  341. /* Media and Function keys */
  342. /* Generic Desktop Page (0x01) */
  343. #define X_SYSTEM_POWER a5
  344. #define X_SYSTEM_SLEEP a6
  345. #define X_SYSTEM_WAKE a7
  346. /* Consumer Page (0x0C) */
  347. #define X_AUDIO_MUTE a8
  348. #define X_AUDIO_VOL_UP a9
  349. #define X_AUDIO_VOL_DOWN aa
  350. #define X_MEDIA_NEXT_TRACK ab
  351. #define X_MEDIA_PREV_TRACK ac
  352. #define X_MEDIA_STOP ad
  353. #define X_MEDIA_PLAY_PAUSE ae
  354. #define X_MEDIA_SELECT af
  355. #define X_MEDIA_EJECT b0
  356. #define X_MAIL b1
  357. #define X_CALCULATOR b2
  358. #define X_MY_COMPUTER b3
  359. #define X_WWW_SEARCH b4
  360. #define X_WWW_HOME b5
  361. #define X_WWW_BACK b6
  362. #define X_WWW_FORWARD b7
  363. #define X_WWW_STOP b8
  364. #define X_WWW_REFRESH b9
  365. #define X_WWW_FAVORITES ba
  366. #define X_MEDIA_FAST_FORWARD bb
  367. #define X_MEDIA_REWIND bc
  368. #define X_BRIGHTNESS_UP bd
  369. #define X_BRIGHTNESS_DOWN be
  370. /* Mouse Buttons (unallocated range in HID spec) */
  371. #ifdef VIA_ENABLE
  372. #define X_MS_UP f0
  373. #define X_MS_DOWN f1
  374. #define X_MS_LEFT f2
  375. #define X_MS_RIGHT f3
  376. #define X_MS_BTN1 f4
  377. #define X_MS_BTN2 f5
  378. #define X_MS_BTN3 f6
  379. #define X_MS_BTN4 f7
  380. #define X_MS_BTN5 f8
  381. #define X_MS_BTN6 f8
  382. #define X_MS_BTN7 f8
  383. #define X_MS_BTN8 f8
  384. #else
  385. #define X_MS_UP ed
  386. #define X_MS_DOWN ee
  387. #define X_MS_LEFT ef
  388. #define X_MS_RIGHT f0
  389. #define X_MS_BTN1 f1
  390. #define X_MS_BTN2 f2
  391. #define X_MS_BTN3 f3
  392. #define X_MS_BTN4 f4
  393. #define X_MS_BTN5 f5
  394. #define X_MS_BTN6 f6
  395. #define X_MS_BTN7 f7
  396. #define X_MS_BTN8 f8
  397. #endif
  398. #define X_MS_WH_UP f9
  399. #define X_MS_WH_DOWN fa
  400. #define X_MS_WH_LEFT fb
  401. #define X_MS_WH_RIGHT fc
  402. #define X_MS_ACCEL0 fd
  403. #define X_MS_ACCEL1 fe
  404. #define X_MS_ACCEL2 ff
  405. // Send string macros
  406. #define STRINGIZE(z) #z
  407. #define ADD_SLASH_X(y) STRINGIZE(\x##y)
  408. #define SYMBOL_STR(x) ADD_SLASH_X(x)
  409. #define SS_QMK_PREFIX 1
  410. #define SS_TAP_CODE 1
  411. #define SS_DOWN_CODE 2
  412. #define SS_UP_CODE 3
  413. #define SS_DELAY_CODE 4
  414. #define SS_TAP(keycode) "\1\1" SYMBOL_STR(keycode)
  415. #define SS_DOWN(keycode) "\1\2" SYMBOL_STR(keycode)
  416. #define SS_UP(keycode) "\1\3" SYMBOL_STR(keycode)
  417. #define SS_DELAY(msecs) "\1\4" STRINGIZE(msecs) "|"
  418. // `string` arguments must not be parenthesized
  419. #define SS_LCTL(string) SS_DOWN(X_LCTL) string SS_UP(X_LCTL)
  420. #define SS_LSFT(string) SS_DOWN(X_LSFT) string SS_UP(X_LSFT)
  421. #define SS_LALT(string) SS_DOWN(X_LALT) string SS_UP(X_LALT)
  422. #define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
  423. #define SS_LCMD(string) SS_LGUI(string)
  424. #define SS_LWIN(string) SS_LGUI(string)
  425. #define SS_RCTL(string) SS_DOWN(X_RCTL) string SS_UP(X_RCTL)
  426. #define SS_RSFT(string) SS_DOWN(X_RSFT) string SS_UP(X_RSFT)
  427. #define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
  428. #define SS_RGUI(string) SS_DOWN(X_RGUI) string SS_UP(X_RGUI)
  429. #define SS_ALGR(string) SS_RALT(string)
  430. #define SS_RCMD(string) SS_RGUI(string)
  431. #define SS_RWIN(string) SS_RGUI(string)
  432. // DEPRECATED
  433. #define X_BSPACE X_BACKSPACE
  434. #define X_LBRACKET X_LEFT_BRACKET
  435. #define X_RBRACKET X_RIGHT_BRACKET
  436. #define X_BSLASH X_BACKSLASH
  437. #define X_SCOLON X_SEMICOLON
  438. #define X_CAPSLOCK X_CAPS_LOCK
  439. #define X_PSCREEN X_PRINT_SCREEN
  440. #define X_SCROLLLOCK X_SCROLL_LOCK
  441. #define X_PGDOWN X_PAGE_DOWN
  442. #define X_NUMLOCK X_NUM_LOCK
  443. #define X_NONUS_BSLASH X_NONUS_BACKSLASH
  444. #define X_POWER X_KB_POWER
  445. #define X__MUTE X_KB_MUTE
  446. #define X__VOLUP X_KB_VOLUME_UP
  447. #define X__VOLDOWN X_KB_VOLUME_DOWN
  448. #define X_LOCKING_CAPS X_LOCKING_CAPS_LOCK
  449. #define X_LOCKING_NUM X_LOCKING_NUM_LOCK
  450. #define X_LOCKING_SCROLL X_LOCKING_SCROLL_LOCK
  451. #define X_LANG1 X_LANGUAGE_1
  452. #define X_LANG2 X_LANGUAGE_2
  453. #define X_LANG3 X_LANGUAGE_3
  454. #define X_LANG4 X_LANGUAGE_4
  455. #define X_LANG5 X_LANGUAGE_5
  456. #define X_LANG6 X_LANGUAGE_6
  457. #define X_LANG7 X_LANGUAGE_7
  458. #define X_LANG8 X_LANGUAGE_8
  459. #define X_LANG9 X_LANGUAGE_9
  460. #define X_ALT_ERASE X_ALTERNATE_ERASE
  461. #define X_SYSREQ X_SYSTEM_REQUEST
  462. #define X_LCTRL X_LEFT_CTRL
  463. #define X_LSHIFT X_LEFT_SHIFT
  464. #define X_RCTRL X_RIGHT_CTRL
  465. #define X_RSHIFT X_RIGHT_SHIFT
  466. #define X_ZKHK X_GRAVE
  467. #define X_RO X_INTERNATIONAL_1
  468. #define X_KANA X_INTERNATIONAL_2
  469. #define X_JYEN X_INTERNATIONAL_3
  470. #define X_HENK X_INTERNATIONAL_4
  471. #define X_MHEN X_INTERNATIONAL_5
  472. #define X_HAEN X_LANGUAGE_1
  473. #define X_HANJ X_LANGUAGE_2
  474. #define X_CLCK X_CAPS_LOCK
  475. #define X_SLCK X_SCROLL_LOCK
  476. #define X_NLCK X_NUM_LOCK
  477. #define SS_LCTRL(string) SS_LCTL(string)