diff options
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/process_keycode/process_auto_shift.c | 43 | ||||
-rw-r--r-- | quantum/process_keycode/process_auto_shift.h | 5 | ||||
-rw-r--r-- | quantum/quantum_keycodes.h | 4 |
3 files changed, 40 insertions, 12 deletions
diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c index e2e6b02e0a..fcce91849c 100644 --- a/quantum/process_keycode/process_auto_shift.c +++ b/quantum/process_keycode/process_auto_shift.c @@ -34,8 +34,6 @@ uint16_t autoshift_time = 0; uint16_t autoshift_timeout = AUTO_SHIFT_TIMEOUT; uint16_t autoshift_lastkey = KC_NO; -bool autoshift_enabled = true; - void autoshift_timer_report(void) { char display[8]; @@ -69,6 +67,30 @@ void autoshift_flush(void) { } } +bool autoshift_enabled = true; + +void autoshift_enable(void) { + autoshift_enabled = true; +} +void autoshift_disable(void) { + autoshift_enabled = false; + autoshift_flush(); +} + +void autoshift_toggle(void) { + if (autoshift_enabled) { + autoshift_enabled = false; + autoshift_flush(); + } + else { + autoshift_enabled = true; + } +} + +bool autoshift_state(void) { + return autoshift_enabled; +} + bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { static uint8_t any_mod_pressed; @@ -87,13 +109,14 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { return false; case KC_ASTG: - if (autoshift_enabled) { - autoshift_enabled = false; - autoshift_flush(); - } - else { - autoshift_enabled = true; - } + autoshift_toggle(); + return false; + case KC_ASON: + autoshift_enable(); + return false; + case KC_ASOFF: + autoshift_disable(); + return false; #ifndef NO_AUTO_SHIFT_ALPHA case KC_A: @@ -148,9 +171,9 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { case KC_DOT: case KC_SLSH: #endif - if (!autoshift_enabled) return true; autoshift_flush(); + if (!autoshift_enabled) return true; any_mod_pressed = get_mods() & ( MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)| diff --git a/quantum/process_keycode/process_auto_shift.h b/quantum/process_keycode/process_auto_shift.h index a0361346bd..a4abf04145 100644 --- a/quantum/process_keycode/process_auto_shift.h +++ b/quantum/process_keycode/process_auto_shift.h @@ -25,4 +25,9 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record); +void autoshift_enable(void); +void autoshift_disable(void); +void autoshift_toggle(void); +bool autoshift_state(void); + #endif diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index b0e555f2ee..65bf9e1410 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -121,13 +121,13 @@ enum quantum_keycodes { KC_LEAD, #endif -#ifdef AUTO_SHIFT_ENABLE // Auto Shift setup KC_ASUP, KC_ASDN, KC_ASRP, KC_ASTG, -#endif // AUTO_SHIFT_ENABLE + KC_ASON, + KC_ASOFF, // Audio on/off/toggle AU_ON, |