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.

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