summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2023-07-08 00:59:28 +1000
committerGitHub <noreply@github.com>2023-07-08 00:59:28 +1000
commit71f0fc59bef7a37b55c7e1c10b1b21b8a86475b7 (patch)
treeb7e0f3ae7916ca27bcdb7d4e3d42b13c0a2cfaad
parentddc45719864e934bcb53576057c2423ed558cbc8 (diff)
Revert "bootmagic mods covering the case when swapped mods are pressed at the same time (#21320)" (#21471)
-rw-r--r--quantum/keycode_config.c44
1 files changed, 24 insertions, 20 deletions
diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c
index 864488a65c..9dd7097c86 100644
--- a/quantum/keycode_config.c
+++ b/quantum/keycode_config.c
@@ -122,36 +122,40 @@ __attribute__((weak)) uint16_t keycode_config(uint16_t keycode) {
122 */ 122 */
123 123
124__attribute__((weak)) uint8_t mod_config(uint8_t mod) { 124__attribute__((weak)) uint8_t mod_config(uint8_t mod) {
125 /**
126 * Note: This function is for the 5-bit packed mods, NOT the full 8-bit mods.
127 * More info about the mods can be seen in modifiers.h.
128 */
129 if (keymap_config.swap_lalt_lgui) { 125 if (keymap_config.swap_lalt_lgui) {
130 /** If both modifiers pressed or neither pressed, do nothing 126 if ((mod & MOD_RGUI) == MOD_LGUI) {
131 * Otherwise swap the values 127 mod &= ~MOD_LGUI;
132 * Note: The left mods are ANDed with the right-hand values to check 128 mod |= MOD_LALT;
133 * if they were pressed with the right hand bit set 129 } else if ((mod & MOD_RALT) == MOD_LALT) {
134 */ 130 mod &= ~MOD_LALT;
135 if (((mod & MOD_RALT) == MOD_LALT) ^ ((mod & MOD_RGUI) == MOD_LGUI)) { 131 mod |= MOD_LGUI;
136 mod ^= (MOD_LALT | MOD_LGUI);
137 } 132 }
138 } 133 }
139 if (keymap_config.swap_ralt_rgui) { 134 if (keymap_config.swap_ralt_rgui) {
140 if (((mod & MOD_RALT) == MOD_RALT) ^ ((mod & MOD_RGUI) == MOD_RGUI)) { 135 if ((mod & MOD_RGUI) == MOD_RGUI) {
141 /* lefthand values to preserve the right hand bit */ 136 mod &= ~MOD_RGUI;
142 mod ^= (MOD_LALT | MOD_LGUI); 137 mod |= MOD_RALT;
138 } else if ((mod & MOD_RALT) == MOD_RALT) {
139 mod &= ~MOD_RALT;
140 mod |= MOD_RGUI;
143 } 141 }
144 } 142 }
145 if (keymap_config.swap_lctl_lgui) { 143 if (keymap_config.swap_lctl_lgui) {
146 /* left mods ANDed with right-hand values to check for right hand bit */ 144 if ((mod & MOD_RGUI) == MOD_LGUI) {
147 if (((mod & MOD_RCTL) == MOD_LCTL) ^ ((mod & MOD_RGUI) == MOD_LGUI)) { 145 mod &= ~MOD_LGUI;
148 mod ^= (MOD_LCTL | MOD_LGUI); 146 mod |= MOD_LCTL;
147 } else if ((mod & MOD_RCTL) == MOD_LCTL) {
148 mod &= ~MOD_LCTL;
149 mod |= MOD_LGUI;
149 } 150 }
150 } 151 }
151 if (keymap_config.swap_rctl_rgui) { 152 if (keymap_config.swap_rctl_rgui) {
152 if (((mod & MOD_RCTL) == MOD_RCTL) ^ ((mod & MOD_RGUI) == MOD_RGUI)) { 153 if ((mod & MOD_RGUI) == MOD_RGUI) {
153 /* lefthand values to preserve the right hand bit */ 154 mod &= ~MOD_RGUI;
154 mod ^= (MOD_LCTL | MOD_LGUI); 155 mod |= MOD_RCTL;
156 } else if ((mod & MOD_RCTL) == MOD_RCTL) {
157 mod &= ~MOD_RCTL;
158 mod |= MOD_RGUI;
155 } 159 }
156 } 160 }
157 if (keymap_config.no_gui) { 161 if (keymap_config.no_gui) {