summaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_auto_shift.c
diff options
context:
space:
mode:
authorIlya Zhuravlev <whatever@xyz.is>2023-03-18 17:51:58 -0600
committerIlya Zhuravlev <whatever@xyz.is>2023-03-18 17:51:58 -0600
commit06a2fdcc9c286a04cd09ea6f358655d65e876ca1 (patch)
tree4071d7fa12d3d1006b3c112be0eccf6e83f0d369 /quantum/process_keycode/process_auto_shift.c
parent1a0527b66e191eece367bf73eacd393d83b859fc (diff)
parenta5e7390419a23c6db9cb62810f8ff1645d20b6a3 (diff)
Merge remote-tracking branch 'qmk/master' into merge-2023-03-12
Diffstat (limited to 'quantum/process_keycode/process_auto_shift.c')
-rw-r--r--quantum/process_keycode/process_auto_shift.c69
1 files changed, 29 insertions, 40 deletions
diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c
index 777c2755f0..30c502888b 100644
--- a/quantum/process_keycode/process_auto_shift.c
+++ b/quantum/process_keycode/process_auto_shift.c
@@ -17,7 +17,6 @@
#ifdef AUTO_SHIFT_ENABLE
# include <stdbool.h>
-# include <stdio.h>
# include "process_auto_shift.h"
# include "qmk_settings.h"
@@ -332,11 +331,12 @@ void autoshift_disable(void) {
# ifndef AUTO_SHIFT_NO_SETUP
void autoshift_timer_report(void) {
# ifdef SEND_STRING_ENABLE
- char display[8];
-
- snprintf(display, 8, "\n%d\n", autoshift_timeout);
-
- send_string((const char *)display);
+ const char *autoshift_timeout_str = get_u16_str(autoshift_timeout, ' ');
+ // Skip padding spaces
+ while (*autoshift_timeout_str == ' ') {
+ autoshift_timeout_str++;
+ }
+ send_string(autoshift_timeout_str);
# endif
}
# endif
@@ -345,7 +345,7 @@ bool get_autoshift_state(void) {
return autoshift_flags.enabled;
}
-uint16_t get_generic_autoshift_timeout() {
+uint16_t get_generic_autoshift_timeout(void) {
return autoshift_timeout;
}
__attribute__((weak)) uint16_t get_autoshift_timeout(uint16_t keycode, keyrecord_t *record) {
@@ -377,30 +377,39 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
- case KC_ASTG:
+ case AS_TOGG:
autoshift_toggle();
break;
- case KC_ASON:
+ case AS_ON:
autoshift_enable();
break;
- case KC_ASOFF:
+ case AS_OFF:
autoshift_disable();
break;
# ifndef AUTO_SHIFT_NO_SETUP
- case KC_ASUP:
+ case AS_UP:
autoshift_timeout += 5;
break;
- case KC_ASDN:
+ case AS_DOWN:
autoshift_timeout -= 5;
break;
- case KC_ASRP:
+ case AS_RPT:
autoshift_timer_report();
break;
# endif
}
- // If Retro Shift is disabled, possible custom actions shouldn't happen.
- // clang-format off
+ // If Retro Shift is disabled, possible custom actions shouldn't happen.
+ // clang-format off
+# if defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING)
+# if defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
+ const bool is_hold_on_interrupt = get_hold_on_other_key_press(keycode, record);
+# elif defined(IGNORE_MOD_TAP_INTERRUPT)
+ const bool is_hold_on_interrupt = false;
+# else
+ const bool is_hold_on_interrupt = IS_QK_MOD_TAP(keycode);
+# endif
+# endif
if (IS_RETRO(keycode)
# if defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING)
// Not tapped or #defines mean that rolls should use hold action.
@@ -409,27 +418,7 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
# ifdef RETRO_TAPPING_PER_KEY
|| !get_retro_tapping(keycode, record)
# endif
- || (record->tap.interrupted && (IS_LT(keycode)
-# if defined(HOLD_ON_OTHER_KEY_PRESS) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
-# ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY
- ? get_hold_on_other_key_press(keycode, record)
-# else
- ? true
-# endif
-# else
- ? false
-# endif
-# if defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY)
-# ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- : !get_ignore_mod_tap_interrupt(keycode, record)
-# else
- : false
-# endif
-# else
- : true
-# endif
- ))
- )
+ || (record->tap.interrupted && is_hold_on_interrupt))
# endif
) {
// clang-format on
@@ -456,10 +445,10 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
# endif
) {
// Fixes modifiers not being applied to rolls with AUTO_SHIFT_MODIFIERS set.
-# if !defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY)
+# if !defined(IGNORE_MOD_TAP_INTERRUPT) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
if (autoshift_flags.in_progress
-# ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- && !get_ignore_mod_tap_interrupt(keycode, record)
+# ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY
+ && get_hold_on_other_key_press(keycode, record)
# endif
) {
autoshift_end(KC_NO, now, false, &autoshift_lastrecord);
@@ -497,7 +486,7 @@ void retroshift_poll_time(keyevent_t *event) {
retroshift_time = timer_read();
}
// Used to swap the times of Retro Shifted key and Auto Shift key that interrupted it.
-void retroshift_swap_times() {
+void retroshift_swap_times(void) {
if (last_retroshift_time != 0 && autoshift_flags.in_progress) {
uint16_t temp = retroshift_time;
retroshift_time = last_retroshift_time;