From 047ca9d0a99e5b4333effb1f14567efa92ae874e Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 3 Jul 2024 00:00:41 -0500 Subject: [PATCH] Introduced Ultra-Tab - num layer right encoder will either tab or shift tab. leaving it alone with tab through elements or can hold alt or ctrl for those things - used similar logic to do mouse scroll zoom becuase keyboard shortcuts are not consistent across apps - Damn this is pretty damn clever --- .../rollow/keymaps/t4corun/keymap.c | 2 +- .../bluebell/swoop/keymaps/t4corun/keymap.c | 2 +- keyboards/klor/keymaps/t4corun/keymap.c | 16 ++--- users/t4corun/t4corun.c | 62 +++++++++++++------ users/t4corun/t4corun.h | 11 ++-- 5 files changed, 58 insertions(+), 35 deletions(-) diff --git a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c index 701ac066..123f2f3b 100644 --- a/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c +++ b/keyboards/barbellboards/rollow/keymaps/t4corun/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, [_GAME] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, [_NAVIGATION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(ALT_TAB, RALT_TB) }, + [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(FWD_TAB, BCK_TAB) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, [_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(ZOOMIN, ZOOMOUT) }, [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(BASELYR, RBSELYR) } diff --git a/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c b/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c index de876dca..4f82f865 100644 --- a/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c +++ b/keyboards/bluebell/swoop/keymaps/t4corun/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [_GAME] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [_NAVIGATION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(RALT_TB, ALT_TAB) }, + [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(BCK_TAB, FWD_TAB) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, [_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(ZOOMOUT, ZOOMIN) }, [_CONFIG] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RBSELYR, BASELYR) } diff --git a/keyboards/klor/keymaps/t4corun/keymap.c b/keyboards/klor/keymaps/t4corun/keymap.c index 93e5dee0..602fb8de 100644 --- a/keyboards/klor/keymaps/t4corun/keymap.c +++ b/keyboards/klor/keymaps/t4corun/keymap.c @@ -35,14 +35,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_GAME] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) }, - [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(RALT_TB, ALT_TAB) }, - [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(ZOOMOUT, ZOOMIN) }, - [_CONFIG] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RBSELYR, BASELYR) } + [_QWERTY] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_GAME] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NAVIGATION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, + [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(BCK_TAB, FWD_TAB) }, + [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, + [_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(ZOOMOUT, ZOOMIN) }, + [_CONFIG] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RBSELYR, BASELYR) } }; diff --git a/users/t4corun/t4corun.c b/users/t4corun/t4corun.c index 57918b9d..26aa7b44 100644 --- a/users/t4corun/t4corun.c +++ b/users/t4corun/t4corun.c @@ -8,10 +8,10 @@ static uint8_t current_base_layer = FIRST_DEFAULT_LAYER; // keep track of current mods to override existing keys static uint8_t current_mods; -// enables alt tab for the encoder -static bool is_alt_tab_active = false; -static bool is_alt_shift_tab_active = false; -static uint16_t alt_tab_timer = 0; +// enables encoder to handle alt/ctrl tab and ctrl scroll wheel +static bool hold_forward_active = false; +static bool hold_reverse_active = false; +static uint16_t hold_mod_timer = 0; #if defined(WPM_ENABLE) // Luna Pet Variables @@ -75,6 +75,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; +#if defined(WPM_ENABLE) case KC_SPC: if (record->event.pressed) { isJumping = true; @@ -84,6 +85,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { isJumping = false; } break; +#endif // WPM_ENABLE case BASELYR: if (record->event.pressed) { @@ -103,34 +105,54 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - case ALT_TAB: + case FWD_TAB: if (record->event.pressed) { - if (!is_alt_tab_active || (current_mods & MOD_MASK_SHIFT)) { - is_alt_tab_active = true; - register_code(KC_LALT); + if (!hold_forward_active || (current_mods & MOD_MASK_SHIFT)) { + hold_forward_active = true; unregister_code(KC_LSFT); } - alt_tab_timer = timer_read(); + hold_mod_timer = timer_read(); register_code(KC_TAB); } else { unregister_code(KC_TAB); } return false; - case RALT_TB: + case BCK_TAB: if (record->event.pressed) { - if (!is_alt_shift_tab_active || !(current_mods & MOD_MASK_SHIFT)) { - is_alt_shift_tab_active = true; - register_code(KC_LALT); + if (!hold_reverse_active || !(current_mods & MOD_MASK_SHIFT)) { + hold_reverse_active = true; register_code(KC_LSFT); } - alt_tab_timer = timer_read(); + hold_mod_timer = timer_read(); register_code(KC_TAB); } else { unregister_code(KC_TAB); } return false; + case ZOOMIN: + case ZOOMOUT: + if (record->event.pressed) { + if (!hold_forward_active) { + hold_forward_active = true; + register_code(KC_LCTL); + } + hold_mod_timer = timer_read(); + if (keycode == ZOOMIN) { + register_code(KC_WH_U); + } else { + register_code(KC_WH_D); + } + } else { + if (keycode == ZOOMIN) { + unregister_code(KC_WH_U); + } else { + unregister_code(KC_WH_D); + } + } + return false; + #if defined(HAPTIC_ENABLE) case TR_HNXT: if (record->event.pressed) { @@ -208,13 +230,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } void matrix_scan_user(void) { - // timer for the super alt-tab - if (is_alt_tab_active || is_alt_shift_tab_active) { - if (timer_elapsed(alt_tab_timer) > ALT_TAB_TIMEOUT) { - unregister_code(KC_LALT); + // timer for the hold mods + if (hold_forward_active || hold_reverse_active) { + if (timer_elapsed(hold_mod_timer) > HOLD_MOD_TIMEOUT) { unregister_code(KC_LSFT); - is_alt_tab_active = false; - is_alt_shift_tab_active = false; + unregister_code(KC_LCTL); + hold_forward_active = false; + hold_reverse_active = false; } } } \ No newline at end of file diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index a8922da1..ed853598 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -8,7 +8,7 @@ bool isJumpShown(void); void setLunaJumped(void); #endif // WPM_ENABLE -#define ALT_TAB_TIMEOUT 1000 +#define HOLD_MOD_TIMEOUT 1000 // put the default base layers first enum layers { @@ -56,8 +56,11 @@ enum keycodes { TR_HNXT, // HF_NEXT or HF_PREV when shift is held TR_CKUP, // CK_UP or CK_DOWN when shift is held - ALT_TAB, - RALT_TB, + FWD_TAB, + BCK_TAB, + + ZOOMIN, + ZOOMOUT, BASELYR, RBSELYR @@ -83,8 +86,6 @@ enum keycodes { #define SC_WIN LGUI(KC_TAB) // Zoom for encoders -#define ZOOMIN LCTL(KC_PLUS) -#define ZOOMOUT LCTL(KC_MINS) #define ZOOMRST LCTL(KC_0) /*