1f6dfd19cf93b365c6ad5227d2a8a054ff30cc24

Author
Paul Landers <paul@thelanders.family>
Committer
GitHub <noreply@github.com>
Date

Message

Ignore space cadet key release when caps word is active (#21721)

Diff

 1diff --git a/quantum/process_keycode/process_caps_word.c b/quantum/process_keycode/process_caps_word.c
 2index 1088c8f76c17c87284ce807a926a54850775fa1b..b8fb868c6d37143f58772798060007eba2172429 100644
 3--- a/quantum/process_keycode/process_caps_word.c
 4+++ b/quantum/process_keycode/process_caps_word.c
 5@@ -14,6 +14,7 @@
 6 
 7 #include "process_caps_word.h"
 8 #include "process_auto_shift.h"
 9+#include "process_space_cadet.h"
10 #include "caps_word.h"
11 #include "keycodes.h"
12 #include "quantum_keycodes.h"
13@@ -110,6 +111,9 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
14 #        endif // COMMAND_ENABLE
15         ) {
16             caps_word_on();
17+#        ifdef SPACE_CADET_ENABLE
18+            reset_space_cadet();
19+#        endif // SPACE_CADET_ENABLE
20         }
21 #    endif     // defined(COMMAND_ENABLE) && !defined(IS_COMMAND)
22 #endif         // BOTH_SHIFTS_TURNS_ON_CAPS_WORD
23diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c
24index f948ad6238b989d64f1742f3a257ca727bedc3a7..3e280d57d9759cb379b8aebd11c4e8f97f99be94 100644
25--- a/quantum/process_keycode/process_space_cadet.c
26+++ b/quantum/process_keycode/process_space_cadet.c
27@@ -157,10 +157,14 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
28         }
29         default: {
30             if (record->event.pressed) {
31-                sc_last = 0;
32+                reset_space_cadet();
33             }
34             break;
35         }
36     }
37     return true;
38 }
39+
40+void reset_space_cadet() {
41+    sc_last = 0;
42+}
43diff --git a/quantum/process_keycode/process_space_cadet.h b/quantum/process_keycode/process_space_cadet.h
44index 6d10051532c3ed35b998dea89dfe7a171c9e4d09..9d254e26fd19289a8b0436a1eb320e78f28e8c26 100644
45--- a/quantum/process_keycode/process_space_cadet.h
46+++ b/quantum/process_keycode/process_space_cadet.h
47@@ -21,3 +21,4 @@
48 
49 void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdMod, uint8_t tapMod, uint8_t keycode);
50 bool process_space_cadet(uint16_t keycode, keyrecord_t *record);
51+void reset_space_cadet(void);
52diff --git a/tests/caps_word/test_caps_word.cpp b/tests/caps_word/test_caps_word.cpp
53index 802f1e960e5c89deba40366247f42fbe7392882f..28d86e93243adae867d4efbc4741c2b4ab0d571b 100644
54--- a/tests/caps_word/test_caps_word.cpp
55+++ b/tests/caps_word/test_caps_word.cpp
56@@ -423,8 +423,8 @@ TEST_P(CapsWordBothShifts, PressLRLR) {
57     run_one_scan_loop();
58     right_shift.press();
59 
60-    // For mod-tap and Space Cadet keys, wait for the tapping term.
61-    if (left_shift.code == LSFT_T(KC_A) || left_shift.code == QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN) {
62+    // For mod-tap, wait for the tapping term.
63+    if (left_shift.code == LSFT_T(KC_A)) {
64         idle_for(TAPPING_TERM);
65     }
66 
67@@ -461,7 +461,7 @@ TEST_P(CapsWordBothShifts, PressLRRL) {
68     run_one_scan_loop();
69     right_shift.press();
70 
71-    if (left_shift.code == LSFT_T(KC_A) || left_shift.code == QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN) {
72+    if (left_shift.code == LSFT_T(KC_A)) {
73         idle_for(TAPPING_TERM);
74     }
75     run_one_scan_loop();