Update Norwegian keymap and add sendstring LUT (#8300)
[jackhill/qmk/firmware.git] / quantum / send_string_keycodes.h
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
95
96 /* Modifiers */
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
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
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
357 #define X_MEDIA_FAST_FORWARD bb
358 #define X_MEDIA_REWIND bc
359 #define X_BRIGHTNESS_UP bd
360 #define X_BRIGHTNESS_DOWN be
361
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
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
385 #define SS_QMK_PREFIX 1
386
387 #define SS_TAP_CODE 1
388 #define SS_DOWN_CODE 2
389 #define SS_UP_CODE 3
390 #define SS_DELAY_CODE 4
391
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) "|"
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)