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