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

This commit is contained in:
Paul Landers 2024-01-09 06:07:10 -05:00 committed by GitHub
parent 8b48f0dea3
commit 1f6dfd19cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 4 deletions

View File

@ -14,6 +14,7 @@
#include "process_caps_word.h" #include "process_caps_word.h"
#include "process_auto_shift.h" #include "process_auto_shift.h"
#include "process_space_cadet.h"
#include "caps_word.h" #include "caps_word.h"
#include "keycodes.h" #include "keycodes.h"
#include "quantum_keycodes.h" #include "quantum_keycodes.h"
@ -110,6 +111,9 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
# endif // COMMAND_ENABLE # endif // COMMAND_ENABLE
) { ) {
caps_word_on(); caps_word_on();
# ifdef SPACE_CADET_ENABLE
reset_space_cadet();
# endif // SPACE_CADET_ENABLE
} }
# endif // defined(COMMAND_ENABLE) && !defined(IS_COMMAND) # endif // defined(COMMAND_ENABLE) && !defined(IS_COMMAND)
#endif // BOTH_SHIFTS_TURNS_ON_CAPS_WORD #endif // BOTH_SHIFTS_TURNS_ON_CAPS_WORD

View File

@ -157,10 +157,14 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
} }
default: { default: {
if (record->event.pressed) { if (record->event.pressed) {
sc_last = 0; reset_space_cadet();
} }
break; break;
} }
} }
return true; return true;
} }
void reset_space_cadet() {
sc_last = 0;
}

View File

@ -21,3 +21,4 @@
void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdMod, uint8_t tapMod, uint8_t keycode); 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); bool process_space_cadet(uint16_t keycode, keyrecord_t *record);
void reset_space_cadet(void);

View File

@ -423,8 +423,8 @@ TEST_P(CapsWordBothShifts, PressLRLR) {
run_one_scan_loop(); run_one_scan_loop();
right_shift.press(); right_shift.press();
// For mod-tap and Space Cadet keys, wait for the tapping term. // For mod-tap, wait for the tapping term.
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); idle_for(TAPPING_TERM);
} }
@ -461,7 +461,7 @@ TEST_P(CapsWordBothShifts, PressLRRL) {
run_one_scan_loop(); run_one_scan_loop();
right_shift.press(); 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); idle_for(TAPPING_TERM);
} }
run_one_scan_loop(); run_one_scan_loop();