From 1f6dfd19cf93b365c6ad5227d2a8a054ff30cc24 Mon Sep 17 00:00:00 2001 From: Paul Landers Date: Tue, 9 Jan 2024 06:07:10 -0500 Subject: [PATCH] Ignore space cadet key release when caps word is active (#21721) --- quantum/process_keycode/process_caps_word.c | 4 ++++ quantum/process_keycode/process_space_cadet.c | 6 +++++- quantum/process_keycode/process_space_cadet.h | 1 + tests/caps_word/test_caps_word.cpp | 6 +++--- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/quantum/process_keycode/process_caps_word.c b/quantum/process_keycode/process_caps_word.c index 1088c8f76c1..b8fb868c6d3 100644 --- a/quantum/process_keycode/process_caps_word.c +++ b/quantum/process_keycode/process_caps_word.c @@ -14,6 +14,7 @@ #include "process_caps_word.h" #include "process_auto_shift.h" +#include "process_space_cadet.h" #include "caps_word.h" #include "keycodes.h" #include "quantum_keycodes.h" @@ -110,6 +111,9 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) { # endif // COMMAND_ENABLE ) { caps_word_on(); +# ifdef SPACE_CADET_ENABLE + reset_space_cadet(); +# endif // SPACE_CADET_ENABLE } # endif // defined(COMMAND_ENABLE) && !defined(IS_COMMAND) #endif // BOTH_SHIFTS_TURNS_ON_CAPS_WORD diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c index f948ad6238b..3e280d57d97 100644 --- a/quantum/process_keycode/process_space_cadet.c +++ b/quantum/process_keycode/process_space_cadet.c @@ -157,10 +157,14 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) { } default: { if (record->event.pressed) { - sc_last = 0; + reset_space_cadet(); } break; } } return true; } + +void reset_space_cadet() { + sc_last = 0; +} diff --git a/quantum/process_keycode/process_space_cadet.h b/quantum/process_keycode/process_space_cadet.h index 6d10051532c..9d254e26fd1 100644 --- a/quantum/process_keycode/process_space_cadet.h +++ b/quantum/process_keycode/process_space_cadet.h @@ -21,3 +21,4 @@ void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdMod, uint8_t tapMod, uint8_t keycode); bool process_space_cadet(uint16_t keycode, keyrecord_t *record); +void reset_space_cadet(void); diff --git a/tests/caps_word/test_caps_word.cpp b/tests/caps_word/test_caps_word.cpp index 802f1e960e5..28d86e93243 100644 --- a/tests/caps_word/test_caps_word.cpp +++ b/tests/caps_word/test_caps_word.cpp @@ -423,8 +423,8 @@ TEST_P(CapsWordBothShifts, PressLRLR) { run_one_scan_loop(); right_shift.press(); - // For mod-tap and Space Cadet keys, wait for the tapping term. - if (left_shift.code == LSFT_T(KC_A) || left_shift.code == QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN) { + // For mod-tap, wait for the tapping term. + if (left_shift.code == LSFT_T(KC_A)) { idle_for(TAPPING_TERM); } @@ -461,7 +461,7 @@ TEST_P(CapsWordBothShifts, PressLRRL) { run_one_scan_loop(); right_shift.press(); - if (left_shift.code == LSFT_T(KC_A) || left_shift.code == QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN) { + if (left_shift.code == LSFT_T(KC_A)) { idle_for(TAPPING_TERM); } run_one_scan_loop();