qmk / qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families
https://qmk.fm
GNU General Public License v2.0
18.39k stars 39.61k forks source link

[Bug] MODS_TO_NEUTRALIZE ignored in Layer activated by Hold-Tap button #24123

Open Ceffa93 opened 4 months ago

Ceffa93 commented 4 months ago

Describe the Bug

I have a mod-tap key in Layer 2: MT(MOD_LGUI, KC_6) Layer 2 is activated from a hold-tap button: LT(MO(2), KC_ENT)

I have neutralized GUI, but with the above conditions a hold causes GUI action to trigger. Note that if I replace the layer-activation button with a non-hold-tap one, neutralization works correctly: MO(2)

Keyboard Used

splitkb/aurora/sweep/rev1

Link to product page (if applicable)

No response

Operating System

Windows 11

qmk doctor Output

No response

Is AutoHotKey / Karabiner installed

Other keyboard-related software installed

No response

Additional Context

Flags in config.h:

define QUICK_TAP_TERM 0

define TAPPING_TERM 175

define PERMISSIVE_HOLD

define RETRO_TAPPING

define RETRO_TAPPING_PER_KEY

define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LGUI), MOD_BIT(KC_LALT) }

define DUMMY_MOD_NEUTRALIZER_KEYCODE KC_RIGHT_CTRL

Ceffa93 commented 4 months ago

Locally I was able to dirty fix the issue by modifying quantun/action.c from:

if (retro_tapping_counter == 2) {
    neutralize_flashing_modifiers(get_mods());
}

to:

if (retro_tapping_counter == 2 || retro_tapping_counter == 3) {
    neutralize_flashing_modifiers(get_mods());
}

Hope this info helps!