qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

commit 71f0fc59bef7a37b55c7e1c10b1b21b8a86475b7
parent ddc45719864e934bcb53576057c2423ed558cbc8
Author: Nick Brassel <nick@tzarc.org>
Date:   Sat,  8 Jul 2023 00:59:28 +1000

Revert "bootmagic mods covering the case when swapped mods are pressed at the same time (#21320)" (#21471)


Diffstat:
Mquantum/keycode_config.c | 44++++++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 20 deletions(-)

diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c @@ -122,36 +122,40 @@ __attribute__((weak)) uint16_t keycode_config(uint16_t keycode) { */ __attribute__((weak)) uint8_t mod_config(uint8_t mod) { - /** - * Note: This function is for the 5-bit packed mods, NOT the full 8-bit mods. - * More info about the mods can be seen in modifiers.h. - */ if (keymap_config.swap_lalt_lgui) { - /** If both modifiers pressed or neither pressed, do nothing - * Otherwise swap the values - * Note: The left mods are ANDed with the right-hand values to check - * if they were pressed with the right hand bit set - */ - if (((mod & MOD_RALT) == MOD_LALT) ^ ((mod & MOD_RGUI) == MOD_LGUI)) { - mod ^= (MOD_LALT | MOD_LGUI); + if ((mod & MOD_RGUI) == MOD_LGUI) { + mod &= ~MOD_LGUI; + mod |= MOD_LALT; + } else if ((mod & MOD_RALT) == MOD_LALT) { + mod &= ~MOD_LALT; + mod |= MOD_LGUI; } } if (keymap_config.swap_ralt_rgui) { - if (((mod & MOD_RALT) == MOD_RALT) ^ ((mod & MOD_RGUI) == MOD_RGUI)) { - /* lefthand values to preserve the right hand bit */ - mod ^= (MOD_LALT | MOD_LGUI); + if ((mod & MOD_RGUI) == MOD_RGUI) { + mod &= ~MOD_RGUI; + mod |= MOD_RALT; + } else if ((mod & MOD_RALT) == MOD_RALT) { + mod &= ~MOD_RALT; + mod |= MOD_RGUI; } } if (keymap_config.swap_lctl_lgui) { - /* left mods ANDed with right-hand values to check for right hand bit */ - if (((mod & MOD_RCTL) == MOD_LCTL) ^ ((mod & MOD_RGUI) == MOD_LGUI)) { - mod ^= (MOD_LCTL | MOD_LGUI); + if ((mod & MOD_RGUI) == MOD_LGUI) { + mod &= ~MOD_LGUI; + mod |= MOD_LCTL; + } else if ((mod & MOD_RCTL) == MOD_LCTL) { + mod &= ~MOD_LCTL; + mod |= MOD_LGUI; } } if (keymap_config.swap_rctl_rgui) { - if (((mod & MOD_RCTL) == MOD_RCTL) ^ ((mod & MOD_RGUI) == MOD_RGUI)) { - /* lefthand values to preserve the right hand bit */ - mod ^= (MOD_LCTL | MOD_LGUI); + if ((mod & MOD_RGUI) == MOD_RGUI) { + mod &= ~MOD_RGUI; + mod |= MOD_RCTL; + } else if ((mod & MOD_RCTL) == MOD_RCTL) { + mod &= ~MOD_RCTL; + mod |= MOD_RGUI; } } if (keymap_config.no_gui) {