summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2025-06-28 12:44:24 +1000
committerGitHub <noreply@github.com>2025-06-28 12:44:24 +1000
commit36636205ddc835a6bb6f630179cd9395ea8b0689 (patch)
tree62c93dd1a6a909609254fb0809ac8c87b98d38bc /quantum
parent89e39b98587f9d12d3b4b6659c7655df63b8633b (diff)
Clean up mod & mod-tap shortcuts (#25399)
Diffstat (limited to 'quantum')
-rw-r--r--quantum/quantum_keycodes.h122
-rw-r--r--quantum/quantum_keycodes_legacy.h2
2 files changed, 77 insertions, 47 deletions
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index bcaf94af8b..a2a86e175c 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -41,44 +41,59 @@
41#define QK_MODS_GET_MODS(kc) (((kc) >> 8) & 0x1F) 41#define QK_MODS_GET_MODS(kc) (((kc) >> 8) & 0x1F)
42#define QK_MODS_GET_BASIC_KEYCODE(kc) ((kc)&0xFF) 42#define QK_MODS_GET_BASIC_KEYCODE(kc) ((kc)&0xFF)
43 43
44// Keycode modifiers & aliases 44// Modified keycodes
45#define LCTL(kc) (QK_LCTL | (kc)) 45#define LCTL(kc) (QK_LCTL | (kc))
46#define LSFT(kc) (QK_LSFT | (kc)) 46#define LSFT(kc) (QK_LSFT | (kc))
47#define LALT(kc) (QK_LALT | (kc)) 47#define LALT(kc) (QK_LALT | (kc))
48#define LGUI(kc) (QK_LGUI | (kc)) 48#define LGUI(kc) (QK_LGUI | (kc))
49
49#define LOPT(kc) LALT(kc) 50#define LOPT(kc) LALT(kc)
50#define LCMD(kc) LGUI(kc) 51#define LCMD(kc) LGUI(kc)
51#define LWIN(kc) LGUI(kc) 52#define LWIN(kc) LGUI(kc)
53
54#define C(kc) LCTL(kc)
55#define S(kc) LSFT(kc)
56#define A(kc) LALT(kc)
57#define G(kc) LGUI(kc)
58
59#define LCS(kc) (QK_LCTL | QK_LSFT | (kc))
60#define LCA(kc) (QK_LCTL | QK_LALT | (kc))
61#define LCG(kc) (QK_LCTL | QK_LGUI | (kc))
62#define LSA(kc) (QK_LSFT | QK_LALT | (kc))
63#define LSG(kc) (QK_LSFT | QK_LGUI | (kc))
64#define LAG(kc) (QK_LALT | QK_LGUI | (kc))
65#define LCSG(kc) (QK_LCTL | QK_LSFT | QK_LGUI | (kc))
66#define LCAG(kc) (QK_LCTL | QK_LALT | QK_LGUI | (kc))
67#define LSAG(kc) (QK_LSFT | QK_LALT | QK_LGUI | (kc))
68
69#define SGUI(kc) LSG(kc)
70#define SCMD(kc) LSG(kc)
71#define SWIN(kc) LSG(kc)
72
52#define RCTL(kc) (QK_RCTL | (kc)) 73#define RCTL(kc) (QK_RCTL | (kc))
53#define RSFT(kc) (QK_RSFT | (kc)) 74#define RSFT(kc) (QK_RSFT | (kc))
54#define RALT(kc) (QK_RALT | (kc)) 75#define RALT(kc) (QK_RALT | (kc))
55#define RGUI(kc) (QK_RGUI | (kc)) 76#define RGUI(kc) (QK_RGUI | (kc))
77
56#define ALGR(kc) RALT(kc) 78#define ALGR(kc) RALT(kc)
57#define ROPT(kc) RALT(kc) 79#define ROPT(kc) RALT(kc)
58#define RCMD(kc) RGUI(kc) 80#define RCMD(kc) RGUI(kc)
59#define RWIN(kc) RGUI(kc) 81#define RWIN(kc) RGUI(kc)
60 82
61#define HYPR(kc) (QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI | (kc)) 83#define RCA(kc) (QK_RCTL | QK_RALT | (kc))
62#define MEH(kc) (QK_LCTL | QK_LSFT | QK_LALT | (kc)) 84#define RCS(kc) (QK_RCTL | QK_RSFT | (kc))
63#define LCAG(kc) (QK_LCTL | QK_LALT | QK_LGUI | (kc)) 85#define RCG(kc) (QK_RCTL | QK_RGUI | (kc))
64#define LSG(kc) (QK_LSFT | QK_LGUI | (kc)) 86#define RSA(kc) (QK_RSFT | QK_RALT | (kc))
65#define SGUI(kc) LSG(kc)
66#define SCMD(kc) LSG(kc)
67#define SWIN(kc) LSG(kc)
68#define LAG(kc) (QK_LALT | QK_LGUI | (kc))
69#define RSG(kc) (QK_RSFT | QK_RGUI | (kc)) 87#define RSG(kc) (QK_RSFT | QK_RGUI | (kc))
70#define RAG(kc) (QK_RALT | QK_RGUI | (kc)) 88#define RAG(kc) (QK_RALT | QK_RGUI | (kc))
71#define LCA(kc) (QK_LCTL | QK_LALT | (kc)) 89#define RCSG(kc) (QK_RCTL | QK_RSFT | QK_RGUI | (kc))
72#define LSA(kc) (QK_LSFT | QK_LALT | (kc)) 90#define RCAG(kc) (QK_RCTL | QK_RALT | QK_RGUI | (kc))
73#define RSA(kc) (QK_RSFT | QK_RALT | (kc)) 91#define RSAG(kc) (QK_RSFT | QK_RALT | QK_RGUI | (kc))
74#define RCS(kc) (QK_RCTL | QK_RSFT | (kc)) 92
75#define SAGR(kc) RSA(kc) 93#define SAGR(kc) RSA(kc)
76 94
77// Modified keycode aliases 95#define HYPR(kc) (QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI | (kc))
78#define C(kc) LCTL(kc) 96#define MEH(kc) (QK_LCTL | QK_LSFT | QK_LALT | (kc))
79#define S(kc) LSFT(kc)
80#define A(kc) LALT(kc)
81#define G(kc) LGUI(kc)
82 97
83// GOTO layer - 32 layer max 98// GOTO layer - 32 layer max
84#define TO(layer) (QK_TO | ((layer)&0x1F)) 99#define TO(layer) (QK_TO | ((layer)&0x1F))
@@ -127,50 +142,63 @@
127#define QK_MOD_TAP_GET_MODS(kc) (((kc) >> 8) & 0x1F) 142#define QK_MOD_TAP_GET_MODS(kc) (((kc) >> 8) & 0x1F)
128#define QK_MOD_TAP_GET_TAP_KEYCODE(kc) ((kc)&0xFF) 143#define QK_MOD_TAP_GET_TAP_KEYCODE(kc) ((kc)&0xFF)
129 144
145// Mod-Tap shortcuts
130#define LCTL_T(kc) MT(MOD_LCTL, kc) 146#define LCTL_T(kc) MT(MOD_LCTL, kc)
131#define RCTL_T(kc) MT(MOD_RCTL, kc)
132#define CTL_T(kc) LCTL_T(kc)
133
134#define LSFT_T(kc) MT(MOD_LSFT, kc) 147#define LSFT_T(kc) MT(MOD_LSFT, kc)
135#define RSFT_T(kc) MT(MOD_RSFT, kc)
136#define SFT_T(kc) LSFT_T(kc)
137
138#define LALT_T(kc) MT(MOD_LALT, kc) 148#define LALT_T(kc) MT(MOD_LALT, kc)
139#define RALT_T(kc) MT(MOD_RALT, kc) 149#define LGUI_T(kc) MT(MOD_LGUI, kc)
140#define LOPT_T(kc) LALT_T(kc) 150
141#define ROPT_T(kc) RALT_T(kc) 151#define CTL_T(kc) LCTL_T(kc)
142#define ALGR_T(kc) RALT_T(kc) 152#define SFT_T(kc) LSFT_T(kc)
143#define ALT_T(kc) LALT_T(kc) 153#define ALT_T(kc) LALT_T(kc)
144#define OPT_T(kc) LOPT_T(kc) 154#define GUI_T(kc) LGUI_T(kc)
145 155
146#define LGUI_T(kc) MT(MOD_LGUI, kc) 156#define LOPT_T(kc) LALT_T(kc)
147#define RGUI_T(kc) MT(MOD_RGUI, kc)
148#define LCMD_T(kc) LGUI_T(kc) 157#define LCMD_T(kc) LGUI_T(kc)
149#define LWIN_T(kc) LGUI_T(kc) 158#define LWIN_T(kc) LGUI_T(kc)
150#define RCMD_T(kc) RGUI_T(kc) 159
151#define RWIN_T(kc) RGUI_T(kc) 160#define OPT_T(kc) LOPT_T(kc)
152#define GUI_T(kc) LGUI_T(kc)
153#define CMD_T(kc) LCMD_T(kc) 161#define CMD_T(kc) LCMD_T(kc)
154#define WIN_T(kc) LWIN_T(kc) 162#define WIN_T(kc) LWIN_T(kc)
155 163
156#define C_S_T(kc) MT(MOD_LCTL | MOD_LSFT, kc) // Left Control + Shift e.g. for gnome-terminal 164#define LCS_T(kc) MT(MOD_LCTL | MOD_LSFT, kc)
157#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) // Meh is a less hyper version of the Hyper key -- doesn't include GUI, so just Left Control + Shift + Alt 165#define LCA_T(kc) MT(MOD_LCTL | MOD_LALT, kc)
158#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) // Left Control + Alt + GUI 166#define LCG_T(kc) MT(MOD_LCTL | MOD_LGUI, kc)
159#define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc) // Right Control + Alt + GUI 167#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc)
160#define HYPR_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ 168#define LSG_T(kc) MT(MOD_LSFT | MOD_LGUI, kc)
161#define LSG_T(kc) MT(MOD_LSFT | MOD_LGUI, kc) // Left Shift + GUI 169#define LAG_T(kc) MT(MOD_LALT | MOD_LGUI, kc)
170#define LCSG_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LGUI, kc)
171#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc)
172#define LSAG_T(kc) MT(MOD_LSFT | MOD_LALT | MOD_LGUI, kc)
173
162#define SGUI_T(kc) LSG_T(kc) 174#define SGUI_T(kc) LSG_T(kc)
163#define SCMD_T(kc) LSG_T(kc) 175#define SCMD_T(kc) LSG_T(kc)
164#define SWIN_T(kc) LSG_T(kc) 176#define SWIN_T(kc) LSG_T(kc)
165#define LAG_T(kc) MT(MOD_LALT | MOD_LGUI, kc) // Left Alt + GUI 177
166#define RSG_T(kc) MT(MOD_RSFT | MOD_RGUI, kc) // Right Shift + GUI 178#define RCTL_T(kc) MT(MOD_RCTL, kc)
167#define RAG_T(kc) MT(MOD_RALT | MOD_RGUI, kc) // Right Alt + GUI 179#define RSFT_T(kc) MT(MOD_RSFT, kc)
168#define LCA_T(kc) MT(MOD_LCTL | MOD_LALT, kc) // Left Control + Alt 180#define RALT_T(kc) MT(MOD_RALT, kc)
169#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc) // Left Shift + Alt 181#define RGUI_T(kc) MT(MOD_RGUI, kc)
170#define RSA_T(kc) MT(MOD_RSFT | MOD_RALT, kc) // Right Shift + Alt 182
171#define RCS_T(kc) MT(MOD_RCTL | MOD_RSFT, kc) // Right Control + Shift 183#define ROPT_T(kc) RALT_T(kc)
184#define ALGR_T(kc) RALT_T(kc)
185#define RCMD_T(kc) RGUI_T(kc)
186#define RWIN_T(kc) RGUI_T(kc)
187
188#define RCS_T(kc) MT(MOD_RCTL | MOD_RSFT, kc)
189#define RCA_T(kc) MT(MOD_RCTL | MOD_RALT, kc)
190#define RCG_T(kc) MT(MOD_RCTL | MOD_RGUI, kc)
191#define RSA_T(kc) MT(MOD_RSFT | MOD_RALT, kc)
192#define RSG_T(kc) MT(MOD_RSFT | MOD_RGUI, kc)
193#define RAG_T(kc) MT(MOD_RALT | MOD_RGUI, kc)
194#define RCSG_T(kc) MT(MOD_RCTL | MOD_RSFT | MOD_RGUI, kc)
195#define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc)
196#define RSAG_T(kc) MT(MOD_RSFT | MOD_RALT | MOD_RGUI, kc)
197
172#define SAGR_T(kc) RSA_T(kc) 198#define SAGR_T(kc) RSA_T(kc)
173 199
200#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc)
201#define HYPR_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc)
174#define ALL_T(kc) HYPR_T(kc) 202#define ALL_T(kc) HYPR_T(kc)
175 203
176// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap 204// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
diff --git a/quantum/quantum_keycodes_legacy.h b/quantum/quantum_keycodes_legacy.h
index 21aec90675..55b0fc3596 100644
--- a/quantum/quantum_keycodes_legacy.h
+++ b/quantum/quantum_keycodes_legacy.h
@@ -57,3 +57,5 @@
57#define KC_ACL2 QK_MOUSE_ACCELERATION_2 57#define KC_ACL2 QK_MOUSE_ACCELERATION_2
58 58
59#define QK_OUTPUT_AUTO OU_AUTO 59#define QK_OUTPUT_AUTO OU_AUTO
60
61#define C_S_T(kc) LCS_T(kc)