From 91716611fd6b050396daf3914d490e9d9e760628 Mon Sep 17 00:00:00 2001 From: RoguePullRequest <> Date: Mon, 15 Apr 2019 23:28:35 +0100 Subject: [PATCH] Made basic LSHIFT framework but is not working. Listed other tapdances. --- .../planck/keymaps/roguepullrequest/keymap.c | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/roguepullrequest/keymap.c b/keyboards/planck/keymaps/roguepullrequest/keymap.c index 64d9cfb2b7..e3d67a7d3b 100644 --- a/keyboards/planck/keymaps/roguepullrequest/keymap.c +++ b/keyboards/planck/keymaps/roguepullrequest/keymap.c @@ -24,14 +24,28 @@ enum { // Tap dance enums enum { X_AT_FUN = 0, - SH_M_LPAREN, - SH_M_RPAREN + RSHIFT, + LSHIFT, + TD_SMICN, + TD_COMMA, + TD_DOT, + TD_P, + TD_Y, + TD_F, + TD_G, + TD_C, + TD_R, + TD_L, + TD_S + }; int cur_dance (qk_tap_dance_state_t *state); void x_finished (qk_tap_dance_state_t *state, void *user_data); void x_reset (qk_tap_dance_state_t *state, void *user_data); +void lshift_finished (qk_tap_dance_state_t *state, void *user_data); +void lshift_reset(qk_tap_dance_state_t *state, void *user_data); bool is_alt_tab_active = false; uint16_t alt_tab_timer = 0; @@ -106,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_PDVORAK] = LAYOUT_planck_grid( KC_GESC, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, KC_LAST, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLASH, - KC_LSPO, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC, + LSHIFT, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC, TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS) ), @@ -145,6 +159,10 @@ int cur_dance (qk_tap_dance_state_t *state) { if (state->interrupted || !state->pressed) return DOUBLE_TAP; else return DOUBLE_HOLD; } + else if (state->count == 3) { + if (state->interrupted || !state->pressed)return TRIPLE_TAP; + else return TRIPLE_HOLD; + } else return 8; // magic number that i dont believe works. } @@ -164,6 +182,17 @@ void x_finished (qk_tap_dance_state_t *state, void *user_data) { case DOUBLE_HOLD: reset_keyboard(); break; } } +void lshift_finished (qk_tap_dance_state_t *state, void *user_data) { + xtap_state.state = cur_dance(state); + switch (xtap_state.state) { + case SINGLE_TAP: register_code16(KC_LSFT); register_code16(KC_9); break; + case SINGLE_HOLD: register_code16(KC_LSFT); break; + case DOUBLE_TAP: register_code16(KC_LBRC); break; + case TRIPLE_TAP: register_code16(KC_LSFT); register_code16(KC_LBRC); break; + } + xtap_state.state = 0; +} + // forgetting keypresses void x_reset (qk_tap_dance_state_t *state, void *user_data) { @@ -175,9 +204,19 @@ void x_reset (qk_tap_dance_state_t *state, void *user_data) { } xtap_state.state = 0; } - +void lshift_reset (qk_tap_dance_state_t *state, void *user_data) { + switch (xtap_state.state) { + case SINGLE_TAP: unregister_code16(KC_9); unregister_code16(KC_LSFT); break; + case SINGLE_HOLD: unregister_code16(KC_LSFT); break; + case DOUBLE_TAP: unregister_code16(KC_LBRC); break; + case TRIPLE_TAP: unregister_code16(KC_LBRC); unregister_code16(KC_LSFT); break; + } + xtap_state.state = 0; +} qk_tap_dance_action_t tap_dance_actions[] = { - [X_AT_FUN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset) + [X_AT_FUN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset), + [LSHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lshift_finished, lshift_reset), + }; void shutdown_user(void) { clear_keyboard(); }