summary refs log tree commit diff
path: root/quantum/send_string/send_string_keycodes.h
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2022-07-02 22:10:08 +1000
committerGitHub <noreply@github.com>2022-07-02 22:10:08 +1000
commit3ecb0a80af9e4ce4194a34032642933641730706 (patch)
tree3d4b0e24336762dc9b45a746334ebc09a5c59db1 /quantum/send_string/send_string_keycodes.h
parent7e41eb02773207dd4a014575fe750f8d511bfb5b (diff)
Feature-ify Send String (#17275)
Diffstat (limited to 'quantum/send_string/send_string_keycodes.h')
-rw-r--r--quantum/send_string/send_string_keycodes.h434
1 files changed, 434 insertions, 0 deletions
diff --git a/quantum/send_string/send_string_keycodes.h b/quantum/send_string/send_string_keycodes.h
new file mode 100644
index 0000000000..7017e03d5a
--- /dev/null
+++ b/quantum/send_string/send_string_keycodes.h
@@ -0,0 +1,434 @@
+/* Copyright 2019
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// clang-format off
+
+/* Punctuation */
+#define X_ENT  X_ENTER
+#define X_ESC  X_ESCAPE
+#define X_BSPC X_BSPACE
+#define X_SPC  X_SPACE
+#define X_MINS X_MINUS
+#define X_EQL  X_EQUAL
+#define X_LBRC X_LBRACKET
+#define X_RBRC X_RBRACKET
+#define X_BSLS X_BSLASH
+#define X_NUHS X_NONUS_HASH
+#define X_SCLN X_SCOLON
+#define X_QUOT X_QUOTE
+#define X_GRV  X_GRAVE
+#define X_COMM X_COMMA
+#define X_SLSH X_SLASH
+#define X_NUBS X_NONUS_BSLASH
+
+/* Lock Keys */
+#define X_CLCK X_CAPSLOCK
+#define X_CAPS X_CAPSLOCK
+#define X_SLCK X_SCROLLLOCK
+#define X_NLCK X_NUMLOCK
+#define X_LCAP X_LOCKING_CAPS
+#define X_LNUM X_LOCKING_NUM
+#define X_LSCR X_LOCKING_SCROLL
+
+/* Commands */
+#define X_PSCR X_PSCREEN
+#define X_PAUS X_PAUSE
+#define X_BRK  X_PAUSE
+#define X_INS  X_INSERT
+#define X_DEL  X_DELETE
+#define X_PGDN X_PGDOWN
+#define X_RGHT X_RIGHT
+#define X_APP  X_APPLICATION
+#define X_EXEC X_EXECUTE
+#define X_SLCT X_SELECT
+#define X_AGIN X_AGAIN
+#define X_PSTE X_PASTE
+#define X_ERAS X_ALT_ERASE
+#define X_CLR  X_CLEAR
+
+/* Keypad */
+#define X_PSLS X_KP_SLASH
+#define X_PAST X_KP_ASTERISK
+#define X_PMNS X_KP_MINUS
+#define X_PPLS X_KP_PLUS
+#define X_PENT X_KP_ENTER
+#define X_P1   X_KP_1
+#define X_P2   X_KP_2
+#define X_P3   X_KP_3
+#define X_P4   X_KP_4
+#define X_P5   X_KP_5
+#define X_P6   X_KP_6
+#define X_P7   X_KP_7
+#define X_P8   X_KP_8
+#define X_P9   X_KP_9
+#define X_P0   X_KP_0
+#define X_PDOT X_KP_DOT
+#define X_PEQL X_KP_EQUAL
+#define X_PCMM X_KP_COMMA
+
+/* Japanese specific */
+#define X_ZKHK X_GRAVE
+#define X_RO   X_INT1
+#define X_KANA X_INT2
+#define X_JYEN X_INT3
+#define X_HENK X_INT4
+#define X_MHEN X_INT5
+
+/* Korean specific */
+#define X_HAEN X_LANG1
+#define X_HANJ X_LANG2
+
+/* Modifiers */
+#define X_LCTL X_LCTRL
+#define X_LSFT X_LSHIFT
+#define X_LOPT X_LALT
+#define X_LCMD X_LGUI
+#define X_LWIN X_LGUI
+#define X_RCTL X_RCTRL
+#define X_RSFT X_RSHIFT
+#define X_ALGR X_RALT
+#define X_ROPT X_RALT
+#define X_RCMD X_RGUI
+#define X_RWIN X_RGUI
+
+/* Generic Desktop Page (0x01) */
+#define X_PWR  X_SYSTEM_POWER
+#define X_SLEP X_SYSTEM_SLEEP
+#define X_WAKE X_SYSTEM_WAKE
+
+/* Consumer Page (0x0C) */
+#define X_MUTE X_AUDIO_MUTE
+#define X_VOLU X_AUDIO_VOL_UP
+#define X_VOLD X_AUDIO_VOL_DOWN
+#define X_MNXT X_MEDIA_NEXT_TRACK
+#define X_MPRV X_MEDIA_PREV_TRACK
+#define X_MSTP X_MEDIA_STOP
+#define X_MPLY X_MEDIA_PLAY_PAUSE
+#define X_MSEL X_MEDIA_SELECT
+#define X_EJCT X_MEDIA_EJECT
+#define X_CALC X_CALCULATOR
+#define X_MYCM X_MY_COMPUTER
+#define X_WSCH X_WWW_SEARCH
+#define X_WHOM X_WWW_HOME
+#define X_WBAK X_WWW_BACK
+#define X_WFWD X_WWW_FORWARD
+#define X_WSTP X_WWW_STOP
+#define X_WREF X_WWW_REFRESH
+#define X_WFAV X_WWW_FAVORITES
+#define X_MFFD X_MEDIA_FAST_FORWARD
+#define X_MRWD X_MEDIA_REWIND
+#define X_BRIU X_BRIGHTNESS_UP
+#define X_BRID X_BRIGHTNESS_DOWN
+
+/* System Specific */
+#define X_BRMU X_PAUSE
+#define X_BRMD X_SCROLLLOCK
+
+/* Mouse Keys */
+#define X_MS_U X_MS_UP
+#define X_MS_D X_MS_DOWN
+#define X_MS_L X_MS_LEFT
+#define X_MS_R X_MS_RIGHT
+#define X_BTN1 X_MS_BTN1
+#define X_BTN2 X_MS_BTN2
+#define X_BTN3 X_MS_BTN3
+#define X_BTN4 X_MS_BTN4
+#define X_BTN5 X_MS_BTN5
+#define X_WH_U X_MS_WH_UP
+#define X_WH_D X_MS_WH_DOWN
+#define X_WH_L X_MS_WH_LEFT
+#define X_WH_R X_MS_WH_RIGHT
+#define X_ACL0 X_MS_ACCEL0
+#define X_ACL1 X_MS_ACCEL1
+#define X_ACL2 X_MS_ACCEL2
+
+/* Keyboard/Keypad Page (0x07) */
+#define X_A                  04
+#define X_B                  05
+#define X_C                  06
+#define X_D                  07
+#define X_E                  08
+#define X_F                  09
+#define X_G                  0a
+#define X_H                  0b
+#define X_I                  0c
+#define X_J                  0d
+#define X_K                  0e
+#define X_L                  0f
+#define X_M                  10
+#define X_N                  11
+#define X_O                  12
+#define X_P                  13
+#define X_Q                  14
+#define X_R                  15
+#define X_S                  16
+#define X_T                  17
+#define X_U                  18
+#define X_V                  19
+#define X_W                  1a
+#define X_X                  1b
+#define X_Y                  1c
+#define X_Z                  1d
+#define X_1                  1e
+#define X_2                  1f
+#define X_3                  20
+#define X_4                  21
+#define X_5                  22
+#define X_6                  23
+#define X_7                  24
+#define X_8                  25
+#define X_9                  26
+#define X_0                  27
+#define X_ENTER              28
+#define X_ESCAPE             29
+#define X_BSPACE             2a
+#define X_TAB                2b
+#define X_SPACE              2c
+#define X_MINUS              2d
+#define X_EQUAL              2e
+#define X_LBRACKET           2f
+#define X_RBRACKET           30
+#define X_BSLASH             31
+#define X_NONUS_HASH         32
+#define X_SCOLON             33
+#define X_QUOTE              34
+#define X_GRAVE              35
+#define X_COMMA              36
+#define X_DOT                37
+#define X_SLASH              38
+#define X_CAPSLOCK           39
+#define X_F1                 3a
+#define X_F2                 3b
+#define X_F3                 3c
+#define X_F4                 3d
+#define X_F5                 3e
+#define X_F6                 3f
+#define X_F7                 40
+#define X_F8                 41
+#define X_F9                 42
+#define X_F10                43
+#define X_F11                44
+#define X_F12                45
+#define X_PSCREEN            46
+#define X_SCROLLLOCK         47
+#define X_PAUSE              48
+#define X_INSERT             49
+#define X_HOME               4a
+#define X_PGUP               4b
+#define X_DELETE             4c
+#define X_END                4d
+#define X_PGDOWN             4e
+#define X_RIGHT              4f
+#define X_LEFT               50
+#define X_DOWN               51
+#define X_UP                 52
+#define X_NUMLOCK            53
+#define X_KP_SLASH           54
+#define X_KP_ASTERISK        55
+#define X_KP_MINUS           56
+#define X_KP_PLUS            57
+#define X_KP_ENTER           58
+#define X_KP_1               59
+#define X_KP_2               5a
+#define X_KP_3               5b
+#define X_KP_4               5c
+#define X_KP_5               5d
+#define X_KP_6               5e
+#define X_KP_7               5f
+#define X_KP_8               60
+#define X_KP_9               61
+#define X_KP_0               62
+#define X_KP_DOT             63
+#define X_NONUS_BSLASH       64
+#define X_APPLICATION        65
+#define X_POWER              66
+#define X_KP_EQUAL           67
+#define X_F13                68
+#define X_F14                69
+#define X_F15                6a
+#define X_F16                6b
+#define X_F17                6c
+#define X_F18                6d
+#define X_F19                6e
+#define X_F20                6f
+#define X_F21                70
+#define X_F22                71
+#define X_F23                72
+#define X_F24                73
+#define X_EXECUTE            74
+#define X_HELP               75
+#define X_MENU               76
+#define X_SELECT             77
+#define X_STOP               78
+#define X_AGAIN              79
+#define X_UNDO               7a
+#define X_CUT                7b
+#define X_COPY               7c
+#define X_PASTE              7d
+#define X_FIND               7e
+#define X__MUTE              7f
+#define X__VOLUP             80
+#define X__VOLDOWN           81
+#define X_LOCKING_CAPS       82
+#define X_LOCKING_NUM        83
+#define X_LOCKING_SCROLL     84
+#define X_KP_COMMA           85
+#define X_KP_EQUAL_AS400     86
+#define X_INT1               87
+#define X_INT2               88
+#define X_INT3               89
+#define X_INT4               8a
+#define X_INT5               8b
+#define X_INT6               8c
+#define X_INT7               8d
+#define X_INT8               8e
+#define X_INT9               8f
+#define X_LANG1              90
+#define X_LANG2              91
+#define X_LANG3              92
+#define X_LANG4              93
+#define X_LANG5              94
+#define X_LANG6              95
+#define X_LANG7              96
+#define X_LANG8              97
+#define X_LANG9              98
+#define X_ALT_ERASE          99
+#define X_SYSREQ             9a
+#define X_CANCEL             9b
+#define X_CLEAR              9c
+#define X_PRIOR              9d
+#define X_RETURN             9e
+#define X_SEPARATOR          9f
+#define X_OUT                a0
+#define X_OPER               a1
+#define X_CLEAR_AGAIN        a2
+#define X_CRSEL              a3
+#define X_EXSEL              a4
+
+/* Modifiers */
+#define X_LCTRL              e0
+#define X_LSHIFT             e1
+#define X_LALT               e2
+#define X_LGUI               e3
+#define X_RCTRL              e4
+#define X_RSHIFT             e5
+#define X_RALT               e6
+#define X_RGUI               e7
+
+/* Media and Function keys */
+/* Generic Desktop Page (0x01) */
+#define X_SYSTEM_POWER       a5
+#define X_SYSTEM_SLEEP       a6
+#define X_SYSTEM_WAKE        a7
+
+/* Consumer Page (0x0C) */
+#define X_AUDIO_MUTE         a8
+#define X_AUDIO_VOL_UP       a9
+#define X_AUDIO_VOL_DOWN     aa
+#define X_MEDIA_NEXT_TRACK   ab
+#define X_MEDIA_PREV_TRACK   ac
+#define X_MEDIA_STOP         ad
+#define X_MEDIA_PLAY_PAUSE   ae
+#define X_MEDIA_SELECT       af
+#define X_MEDIA_EJECT        b0
+#define X_MAIL               b1
+#define X_CALCULATOR         b2
+#define X_MY_COMPUTER        b3
+#define X_WWW_SEARCH         b4
+#define X_WWW_HOME           b5
+#define X_WWW_BACK           b6
+#define X_WWW_FORWARD        b7
+#define X_WWW_STOP           b8
+#define X_WWW_REFRESH        b9
+#define X_WWW_FAVORITES      ba
+#define X_MEDIA_FAST_FORWARD bb
+#define X_MEDIA_REWIND       bc
+#define X_BRIGHTNESS_UP      bd
+#define X_BRIGHTNESS_DOWN    be
+
+/* Mouse Buttons (unallocated range in HID spec) */
+#ifdef VIA_ENABLE
+#define X_MS_UP              f0
+#define X_MS_DOWN            f1
+#define X_MS_LEFT            f2
+#define X_MS_RIGHT           f3
+#define X_MS_BTN1            f4
+#define X_MS_BTN2            f5
+#define X_MS_BTN3            f6
+#define X_MS_BTN4            f7
+#define X_MS_BTN5            f8
+#define X_MS_BTN6            f8
+#define X_MS_BTN7            f8
+#define X_MS_BTN8            f8
+#else
+#define X_MS_UP              ed
+#define X_MS_DOWN            ee
+#define X_MS_LEFT            ef
+#define X_MS_RIGHT           f0
+#define X_MS_BTN1            f1
+#define X_MS_BTN2            f2
+#define X_MS_BTN3            f3
+#define X_MS_BTN4            f4
+#define X_MS_BTN5            f5
+#define X_MS_BTN6            f6
+#define X_MS_BTN7            f7
+#define X_MS_BTN8            f8
+#endif
+#define X_MS_WH_UP           f9
+#define X_MS_WH_DOWN         fa
+#define X_MS_WH_LEFT         fb
+#define X_MS_WH_RIGHT        fc
+#define X_MS_ACCEL0          fd
+#define X_MS_ACCEL1          fe
+#define X_MS_ACCEL2          ff
+
+// Send string macros
+#define STRINGIZE(z) #z
+#define ADD_SLASH_X(y) STRINGIZE(\x##y)
+#define SYMBOL_STR(x) ADD_SLASH_X(x)
+
+#define SS_QMK_PREFIX 1
+
+#define SS_TAP_CODE 1
+#define SS_DOWN_CODE 2
+#define SS_UP_CODE 3
+#define SS_DELAY_CODE 4
+
+#define SS_TAP(keycode) "\1\1" SYMBOL_STR(keycode)
+#define SS_DOWN(keycode) "\1\2" SYMBOL_STR(keycode)
+#define SS_UP(keycode) "\1\3" SYMBOL_STR(keycode)
+#define SS_DELAY(msecs) "\1\4" STRINGIZE(msecs) "|"
+
+// `string` arguments must not be parenthesized
+#define SS_LCTL(string) SS_DOWN(X_LCTL) string SS_UP(X_LCTL)
+#define SS_LSFT(string) SS_DOWN(X_LSFT) string SS_UP(X_LSFT)
+#define SS_LALT(string) SS_DOWN(X_LALT) string SS_UP(X_LALT)
+#define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
+#define SS_LCMD(string) SS_LGUI(string)
+#define SS_LWIN(string) SS_LGUI(string)
+
+#define SS_RCTL(string) SS_DOWN(X_RCTL) string SS_UP(X_RCTL)
+#define SS_RSFT(string) SS_DOWN(X_RSFT) string SS_UP(X_RSFT)
+#define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
+#define SS_RGUI(string) SS_DOWN(X_RGUI) string SS_UP(X_RGUI)
+#define SS_ALGR(string) SS_RALT(string)
+#define SS_RCMD(string) SS_RGUI(string)
+#define SS_RWIN(string) SS_RGUI(string)
+
+// DEPRECATED
+#define SS_LCTRL(string) SS_LCTL(string)