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
This commit is contained in:
Victor 2024-07-03 00:00:41 -05:00
parent edf4c932f2
commit 047ca9d0a9
Failed to generate hash of commit
5 changed files with 58 additions and 35 deletions

View file

@ -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) }, [_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) }, [_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___) }, [_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___) }, [_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) }, [_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) } [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(BASELYR, RBSELYR) }

View file

@ -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) }, [_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) }, [_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___) }, [_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___) }, [_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) }, [_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) } [_CONFIG] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RBSELYR, BASELYR) }

View file

@ -38,8 +38,8 @@ 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) }, [_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) }, [_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) }, [_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___) }, [_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___) }, [_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) }, [_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) } [_CONFIG] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RBSELYR, BASELYR) }

View file

@ -8,10 +8,10 @@ static uint8_t current_base_layer = FIRST_DEFAULT_LAYER;
// keep track of current mods to override existing keys // keep track of current mods to override existing keys
static uint8_t current_mods; static uint8_t current_mods;
// enables alt tab for the encoder // enables encoder to handle alt/ctrl tab and ctrl scroll wheel
static bool is_alt_tab_active = false; static bool hold_forward_active = false;
static bool is_alt_shift_tab_active = false; static bool hold_reverse_active = false;
static uint16_t alt_tab_timer = 0; static uint16_t hold_mod_timer = 0;
#if defined(WPM_ENABLE) #if defined(WPM_ENABLE)
// Luna Pet Variables // Luna Pet Variables
@ -75,6 +75,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return false; return false;
#if defined(WPM_ENABLE)
case KC_SPC: case KC_SPC:
if (record->event.pressed) { if (record->event.pressed) {
isJumping = true; isJumping = true;
@ -84,6 +85,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
isJumping = false; isJumping = false;
} }
break; break;
#endif // WPM_ENABLE
case BASELYR: case BASELYR:
if (record->event.pressed) { if (record->event.pressed) {
@ -103,34 +105,54 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return false; return false;
case ALT_TAB: case FWD_TAB:
if (record->event.pressed) { if (record->event.pressed) {
if (!is_alt_tab_active || (current_mods & MOD_MASK_SHIFT)) { if (!hold_forward_active || (current_mods & MOD_MASK_SHIFT)) {
is_alt_tab_active = true; hold_forward_active = true;
register_code(KC_LALT);
unregister_code(KC_LSFT); unregister_code(KC_LSFT);
} }
alt_tab_timer = timer_read(); hold_mod_timer = timer_read();
register_code(KC_TAB); register_code(KC_TAB);
} else { } else {
unregister_code(KC_TAB); unregister_code(KC_TAB);
} }
return false; return false;
case RALT_TB: case BCK_TAB:
if (record->event.pressed) { if (record->event.pressed) {
if (!is_alt_shift_tab_active || !(current_mods & MOD_MASK_SHIFT)) { if (!hold_reverse_active || !(current_mods & MOD_MASK_SHIFT)) {
is_alt_shift_tab_active = true; hold_reverse_active = true;
register_code(KC_LALT);
register_code(KC_LSFT); register_code(KC_LSFT);
} }
alt_tab_timer = timer_read(); hold_mod_timer = timer_read();
register_code(KC_TAB); register_code(KC_TAB);
} else { } else {
unregister_code(KC_TAB); unregister_code(KC_TAB);
} }
return false; 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) #if defined(HAPTIC_ENABLE)
case TR_HNXT: case TR_HNXT:
if (record->event.pressed) { if (record->event.pressed) {
@ -208,13 +230,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
void matrix_scan_user(void) { void matrix_scan_user(void) {
// timer for the super alt-tab // timer for the hold mods
if (is_alt_tab_active || is_alt_shift_tab_active) { if (hold_forward_active || hold_reverse_active) {
if (timer_elapsed(alt_tab_timer) > ALT_TAB_TIMEOUT) { if (timer_elapsed(hold_mod_timer) > HOLD_MOD_TIMEOUT) {
unregister_code(KC_LALT);
unregister_code(KC_LSFT); unregister_code(KC_LSFT);
is_alt_tab_active = false; unregister_code(KC_LCTL);
is_alt_shift_tab_active = false; hold_forward_active = false;
hold_reverse_active = false;
} }
} }
} }

View file

@ -8,7 +8,7 @@ bool isJumpShown(void);
void setLunaJumped(void); void setLunaJumped(void);
#endif // WPM_ENABLE #endif // WPM_ENABLE
#define ALT_TAB_TIMEOUT 1000 #define HOLD_MOD_TIMEOUT 1000
// put the default base layers first // put the default base layers first
enum layers { enum layers {
@ -56,8 +56,11 @@ enum keycodes {
TR_HNXT, // HF_NEXT or HF_PREV when shift is held TR_HNXT, // HF_NEXT or HF_PREV when shift is held
TR_CKUP, // CK_UP or CK_DOWN when shift is held TR_CKUP, // CK_UP or CK_DOWN when shift is held
ALT_TAB, FWD_TAB,
RALT_TB, BCK_TAB,
ZOOMIN,
ZOOMOUT,
BASELYR, BASELYR,
RBSELYR RBSELYR
@ -83,8 +86,6 @@ enum keycodes {
#define SC_WIN LGUI(KC_TAB) #define SC_WIN LGUI(KC_TAB)
// Zoom for encoders // Zoom for encoders
#define ZOOMIN LCTL(KC_PLUS)
#define ZOOMOUT LCTL(KC_MINS)
#define ZOOMRST LCTL(KC_0) #define ZOOMRST LCTL(KC_0)
/* /*