sync ACHORDION_STREAK fix and enable it again
This commit is contained in:
parent
01631f9d70
commit
d893a9bca0
|
@ -77,7 +77,13 @@ static void update_streak_timer(uint16_t keycode, keyrecord_t* record) {
|
||||||
// Calls `process_record()` with state set to RECURSING.
|
// Calls `process_record()` with state set to RECURSING.
|
||||||
static void recursively_process_record(keyrecord_t* record, uint8_t state) {
|
static void recursively_process_record(keyrecord_t* record, uint8_t state) {
|
||||||
achordion_state = STATE_RECURSING;
|
achordion_state = STATE_RECURSING;
|
||||||
|
#if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE)
|
||||||
|
int8_t mouse_key_tracker = get_auto_mouse_key_tracker();
|
||||||
|
#endif
|
||||||
process_record(record);
|
process_record(record);
|
||||||
|
#if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE)
|
||||||
|
set_auto_mouse_key_tracker(mouse_key_tracker);
|
||||||
|
#endif
|
||||||
achordion_state = state;
|
achordion_state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,21 +124,6 @@ static void settle_as_tap(void) {
|
||||||
tap_hold_record.event.pressed = false;
|
tap_hold_record.event.pressed = false;
|
||||||
// Plumb tap release event.
|
// Plumb tap release event.
|
||||||
recursively_process_record(&tap_hold_record, STATE_TAPPING);
|
recursively_process_record(&tap_hold_record, STATE_TAPPING);
|
||||||
#ifdef ACHORDION_STREAK
|
|
||||||
update_streak_timer(keycode, record);
|
|
||||||
if (is_streak && is_key_event && is_tap_hold && record->tap.count == 0) {
|
|
||||||
// If we are in a streak and resolved the current tap-hold key as a tap
|
|
||||||
// consider the next tap-hold key as active to be resolved next.
|
|
||||||
update_streak_timer(tap_hold_keycode, &tap_hold_record);
|
|
||||||
const uint16_t timeout = achordion_timeout(keycode);
|
|
||||||
tap_hold_keycode = keycode;
|
|
||||||
tap_hold_record = *record;
|
|
||||||
hold_timer = record->event.time + timeout;
|
|
||||||
achordion_state = STATE_UNSETTLED;
|
|
||||||
pressed_another_key_before_release = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool process_achordion(uint16_t keycode, keyrecord_t* record) {
|
bool process_achordion(uint16_t keycode, keyrecord_t* record) {
|
||||||
|
@ -262,6 +253,22 @@ bool process_achordion(uint16_t keycode, keyrecord_t* record) {
|
||||||
#endif // REPEAT_KEY_ENABLE
|
#endif // REPEAT_KEY_ENABLE
|
||||||
} else {
|
} else {
|
||||||
settle_as_tap();
|
settle_as_tap();
|
||||||
|
|
||||||
|
#ifdef ACHORDION_STREAK
|
||||||
|
update_streak_timer(keycode, record);
|
||||||
|
if (is_streak && is_key_event && is_tap_hold && record->tap.count == 0) {
|
||||||
|
// If we are in a streak and resolved the current tap-hold key as a tap
|
||||||
|
// consider the next tap-hold key as active to be resolved next.
|
||||||
|
update_streak_timer(tap_hold_keycode, &tap_hold_record);
|
||||||
|
const uint16_t timeout = achordion_timeout(keycode);
|
||||||
|
tap_hold_keycode = keycode;
|
||||||
|
tap_hold_record = *record;
|
||||||
|
hold_timer = record->event.time + timeout;
|
||||||
|
achordion_state = STATE_UNSETTLED;
|
||||||
|
pressed_another_key_before_release = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
recursively_process_record(record, achordion_state); // Re-process event.
|
recursively_process_record(record, achordion_state); // Re-process event.
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
// details see https://precondition.github.io/home-row-mods
|
// details see https://precondition.github.io/home-row-mods
|
||||||
|
|
||||||
// detect typing streaks
|
// detect typing streaks
|
||||||
//#define ACHORDION_STREAK
|
#define ACHORDION_STREAK
|
||||||
|
|
||||||
// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
|
// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
|
||||||
#define QUICK_TAP_TERM 0
|
#define QUICK_TAP_TERM 0
|
||||||
|
|
Loading…
Reference in a new issue