diff options
Diffstat (limited to 'quantum/process_keycode/process_auto_shift.c')
-rw-r--r-- | quantum/process_keycode/process_auto_shift.c | 296 |
1 files changed, 143 insertions, 153 deletions
diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c index 0d0930ee67..4ae3fe446e 100644 --- a/quantum/process_keycode/process_auto_shift.c +++ b/quantum/process_keycode/process_auto_shift.c @@ -16,195 +16,185 @@ #ifdef AUTO_SHIFT_ENABLE -#include <stdio.h> +# include <stdio.h> -#include "process_auto_shift.h" +# include "process_auto_shift.h" -#define TAP(key) \ - register_code(key); \ - unregister_code(key) +# define TAP(key) \ + register_code(key); \ + unregister_code(key) -#define TAP_WITH_MOD(mod, key) \ - register_code(mod); \ - register_code(key); \ - unregister_code(key); \ - unregister_code(mod) +# define TAP_WITH_MOD(mod, key) \ + register_code(mod); \ + register_code(key); \ + unregister_code(key); \ + unregister_code(mod) -uint16_t autoshift_time = 0; +uint16_t autoshift_time = 0; uint16_t autoshift_timeout = AUTO_SHIFT_TIMEOUT; uint16_t autoshift_lastkey = KC_NO; void autoshift_timer_report(void) { - char display[8]; + char display[8]; - snprintf(display, 8, "\n%d\n", autoshift_timeout); + snprintf(display, 8, "\n%d\n", autoshift_timeout); - send_string((const char *)display); + send_string((const char *)display); } void autoshift_on(uint16_t keycode) { - autoshift_time = timer_read(); - autoshift_lastkey = keycode; + autoshift_time = timer_read(); + autoshift_lastkey = keycode; } void autoshift_flush(void) { - if (autoshift_lastkey != KC_NO) { - uint16_t elapsed = timer_elapsed(autoshift_time); + if (autoshift_lastkey != KC_NO) { + uint16_t elapsed = timer_elapsed(autoshift_time); - if (elapsed > autoshift_timeout) { - register_code(KC_LSFT); - } + if (elapsed > autoshift_timeout) { + register_code(KC_LSFT); + } - register_code(autoshift_lastkey); - unregister_code(autoshift_lastkey); + register_code(autoshift_lastkey); + unregister_code(autoshift_lastkey); - if (elapsed > autoshift_timeout) { - unregister_code(KC_LSFT); - } + if (elapsed > autoshift_timeout) { + unregister_code(KC_LSFT); + } - autoshift_time = 0; - autoshift_lastkey = KC_NO; - } + autoshift_time = 0; + autoshift_lastkey = KC_NO; + } } bool autoshift_enabled = true; -void autoshift_enable(void) { - 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; +void autoshift_toggle(void) { + if (autoshift_enabled) { + autoshift_enabled = false; + autoshift_flush(); + } else { + autoshift_enabled = true; + } } -bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { -#ifndef AUTO_SHIFT_MODIFIERS - static uint8_t any_mod_pressed; -#endif - - if (record->event.pressed) { - switch (keycode) { - case KC_ASUP: - autoshift_timeout += 5; - return false; - - case KC_ASDN: - autoshift_timeout -= 5; - return false; - - case KC_ASRP: - autoshift_timer_report(); - return false; - - case KC_ASTG: - 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: - case KC_B: - case KC_C: - case KC_D: - case KC_E: - case KC_F: - case KC_G: - case KC_H: - case KC_I: - case KC_J: - case KC_K: - case KC_L: - case KC_M: - case KC_N: - case KC_O: - case KC_P: - case KC_Q: - case KC_R: - case KC_S: - case KC_T: - case KC_U: - case KC_V: - case KC_W: - case KC_X: - case KC_Y: - case KC_Z: -#endif -#ifndef NO_AUTO_SHIFT_NUMERIC - case KC_1: - case KC_2: - case KC_3: - case KC_4: - case KC_5: - case KC_6: - case KC_7: - case KC_8: - case KC_9: - case KC_0: -#endif -#ifndef NO_AUTO_SHIFT_SPECIAL - case KC_MINUS: - case KC_EQL: - case KC_TAB: - case KC_LBRC: - case KC_RBRC: - case KC_BSLS: - case KC_SCLN: - case KC_QUOT: - case KC_COMM: - case KC_DOT: - case KC_SLSH: - case KC_GRAVE: - case KC_NONUS_BSLASH: - case KC_NONUS_HASH: -#endif +bool autoshift_state(void) { return autoshift_enabled; } - autoshift_flush(); - if (!autoshift_enabled) return true; - -#ifndef AUTO_SHIFT_MODIFIERS - any_mod_pressed = get_mods() & ( - MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)| - MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)| - MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTL)| - MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT) - ); - - if (any_mod_pressed) { - return true; +bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { +# ifndef AUTO_SHIFT_MODIFIERS + static uint8_t any_mod_pressed; +# endif + + if (record->event.pressed) { + switch (keycode) { + case KC_ASUP: + autoshift_timeout += 5; + return false; + + case KC_ASDN: + autoshift_timeout -= 5; + return false; + + case KC_ASRP: + autoshift_timer_report(); + return false; + + case KC_ASTG: + 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: + case KC_B: + case KC_C: + case KC_D: + case KC_E: + case KC_F: + case KC_G: + case KC_H: + case KC_I: + case KC_J: + case KC_K: + case KC_L: + case KC_M: + case KC_N: + case KC_O: + case KC_P: + case KC_Q: + case KC_R: + case KC_S: + case KC_T: + case KC_U: + case KC_V: + case KC_W: + case KC_X: + case KC_Y: + case KC_Z: +# endif +# ifndef NO_AUTO_SHIFT_NUMERIC + case KC_1: + case KC_2: + case KC_3: + case KC_4: + case KC_5: + case KC_6: + case KC_7: + case KC_8: + case KC_9: + case KC_0: +# endif +# ifndef NO_AUTO_SHIFT_SPECIAL + case KC_MINUS: + case KC_EQL: + case KC_TAB: + case KC_LBRC: + case KC_RBRC: + case KC_BSLS: + case KC_SCLN: + case KC_QUOT: + case KC_COMM: + case KC_DOT: + case KC_SLSH: + case KC_GRAVE: + case KC_NONUS_BSLASH: + case KC_NONUS_HASH: +# endif + + autoshift_flush(); + if (!autoshift_enabled) return true; + +# ifndef AUTO_SHIFT_MODIFIERS + any_mod_pressed = get_mods() & (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI) | MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL) | MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + + if (any_mod_pressed) { + return true; + } +# endif + + autoshift_on(keycode); + return false; + + default: + autoshift_flush(); + return true; } -#endif - - autoshift_on(keycode); - return false; - - default: + } else { autoshift_flush(); - return true; } - } else { - autoshift_flush(); - } - return true; + return true; } #endif |