diff options
Diffstat (limited to 'users/stanrc85')
| -rw-r--r-- | users/stanrc85/config.h | 2 | ||||
| -rw-r--r-- | users/stanrc85/stanrc85.c | 56 | ||||
| -rw-r--r-- | users/stanrc85/stanrc85.h | 31 |
3 files changed, 82 insertions, 7 deletions
diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h index 14284435be..42306727ce 100644 --- a/users/stanrc85/config.h +++ b/users/stanrc85/config.h @@ -1,6 +1,6 @@ #pragma once -#define TAPPING_TERM 200 +#define TAPPING_TERM 250 #define RETRO_TAPPING #ifdef RGBLIGHT_ENABLE diff --git a/users/stanrc85/stanrc85.c b/users/stanrc85/stanrc85.c index bddc14d7e2..78b0c4a149 100644 --- a/users/stanrc85/stanrc85.c +++ b/users/stanrc85/stanrc85.c @@ -1,10 +1,55 @@ #include "stanrc85.h" +static td_state_t td_state; + __attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } +// determine the tapdance state to return +int cur_dance (qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { return SINGLE_TAP; } + else { return SINGLE_HOLD; } + } + if (state->count == 2) { return DOUBLE_TAP; } + else { return 3; } // any number higher than the maximum state value you return above +} + +// handle the possible states for each tapdance keycode you define: +void ctl_copy_finished (qk_tap_dance_state_t *state, void *user_data) { + td_state = cur_dance(state); + switch (td_state) { + case SINGLE_TAP: + SEND_STRING(SS_LCTRL("c")); + break; + case SINGLE_HOLD: + register_mods(MOD_BIT(KC_RCTL)); + break; + case DOUBLE_TAP: + SEND_STRING(SS_LCTRL("v")); + } +} + +void ctl_copy_reset (qk_tap_dance_state_t *state, void *user_data) { + switch (td_state) { + case SINGLE_TAP: + break; + case SINGLE_HOLD: + unregister_mods(MOD_BIT(KC_RCTL)); + break; + case DOUBLE_TAP: + break; + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_WIN] = ACTION_TAP_DANCE_DOUBLE(KC_CAD, KC_LOCK), + [TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRV), + [TD_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_copy_finished, ctl_copy_reset) +}; + bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_MAKE: @@ -32,7 +77,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10); set_mods(mods); } - return false; + break; + case KC_RDP: //Opens Windows RDP + if (!record->event.pressed) { + register_code(KC_LGUI); + tap_code(KC_R); + unregister_code(KC_LGUI); + wait_ms(200); + send_string_with_delay_P(PSTR("mstsc"), 10); + send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10); + } break; } return process_record_keymap(keycode, record); diff --git a/users/stanrc85/stanrc85.h b/users/stanrc85/stanrc85.h index 1d9602a05e..da52df09ba 100644 --- a/users/stanrc85/stanrc85.h +++ b/users/stanrc85/stanrc85.h @@ -8,11 +8,6 @@ #define LAYER2 2 //Function keys, arrows, custom shortcuts, volume control #define LAYER3 3 //RGB Underglow controls and RESET -enum custom_keycodes { - KC_MAKE = SAFE_RANGE, - NEW_SAFE_RANGE //use "NEW_SAFE_RANGE" for keymap specific codes -}; - //Aliases for longer keycodes #define KC_CAD LALT(LCTL(KC_DEL)) #define KC_LOCK LGUI(KC_L) @@ -22,3 +17,29 @@ enum custom_keycodes { #define LT_SPCF LT(2, KC_SPC) #define TD_TESC TD(TD_ESC) #define TD_TWIN TD(TD_WIN) +#define TD_TCTL TD(TD_RCTL) + +enum cust_keys { + KC_MAKE = SAFE_RANGE, + KC_RDP +}; + +enum tap_dance { + TD_WIN, + TD_ESC, + TD_RCTL +}; + +// define a type containing as many tapdance states as you need +typedef enum { + SINGLE_TAP, + SINGLE_HOLD, + DOUBLE_TAP +} td_state_t; + +// function to determine the current tapdance state +int cur_dance (qk_tap_dance_state_t *state); + +// `finished` and `reset` functions for each tapdance keycode +void ctl_copy_finished (qk_tap_dance_state_t *state, void *user_data); +void ctl_copy_reset (qk_tap_dance_state_t *state, void *user_data); |
