From fc25a525ce1c596e9aa81475e470a281843f9c83 Mon Sep 17 00:00:00 2001 From: "Peter J. Keleher" <keleher@cs.umd.edu> Date: Tue, 14 Apr 2020 09:17:09 -0400 Subject: [PATCH] auto --- keymap.c | 38 ++++++++++++++++++++++--------------- massdrop_ctrl_keleher1.bin | Bin 67180 -> 67324 bytes 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/keymap.c b/keymap.c index 81285e4..a406673 100644 --- a/keymap.c +++ b/keymap.c @@ -10,10 +10,14 @@ enum ctrl_layers { }; enum tapdance_keycodes { - TD_F9_LGUI_0 = 0, - TD_F10_LCAG_0, - TD_F11_SGUI_Y, - TD_F12_LGUI_1, + TD_F9 = 0, + TD_F10, + TD_F11, + TD_F12, + TD_HOME_UPLEFT, + TD_END_DNLEFT, + TD_PGUP_UPRIGHT, + TD_PGDN_DNRIGHT, }; enum ctrl_keycodes { @@ -47,27 +51,31 @@ bool autoshift_enabled; //Associate our tap dance key with its functionality qk_tap_dance_action_t tap_dance_actions[] = { - [TD_F9_LGUI_0] = ACTION_TAP_DANCE_DOUBLE(KC_F9, LGUI(KC_0)), - [TD_F10_LCAG_0] = ACTION_TAP_DANCE_DOUBLE(KC_F10, LCAG(KC_0)), - [TD_F11_SGUI_Y] = ACTION_TAP_DANCE_DOUBLE(KC_F11, SGUI(KC_Y)), - [TD_F12_LGUI_1] = ACTION_TAP_DANCE_DOUBLE(KC_F12, LGUI(KC_1)), + [TD_F9] = ACTION_TAP_DANCE_DOUBLE(KC_F9, LCTL(KC_TAB)), + [TD_F10] = ACTION_TAP_DANCE_DOUBLE(KC_F10, LSFT(LCTL(KC_TAB))), + [TD_F11] = ACTION_TAP_DANCE_DOUBLE(KC_F11, LALT(KC_TAB)), + [TD_F12] = ACTION_TAP_DANCE_DOUBLE(KC_F12, LSFT(LALT(KC_TAB))), + [TD_HOME_UPLEFT] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, LGUI(LSFT(KC_1))), + [TD_END_DNLEFT] = ACTION_TAP_DANCE_DOUBLE(KC_END, LGUI(LSFT(KC_2))), + [TD_PGUP_UPRIGHT] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, LGUI(LSFT(KC_3))), + [TD_PGDN_DNRIGHT] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, LGUI(LSFT(KC_4))), }; keymap_config_t keymap_config; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, TD(TD_F9_LGUI_0), TD(TD_F10_LCAG_0), TD(TD_F11_SGUI_Y), TD(TD_F12_LGUI_1), RGB_TOG, KC_SLCK, TG(_KEN), \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, TD(TD_F9), TD(TD_F10), TD(TD_F11), TD(TD_F12), RGB_TOG, KC_SLCK, TG(_KEN), \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, TD(TD_HOME_UPLEFT), TD(TD_PGUP_UPRIGHT), \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, TD(TD_END_DNLEFT), (TD_PGDN_DNRIGHT), \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(_PROG), MO(_FNC), KC_APP, KC_LEAD, KC_LEFT, KC_DOWN, KC_RGHT \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(_PROG), MO(_FNC), MO(_NAV), KC_LEAD, KC_LEFT, KC_DOWN, KC_RGHT \ ), [_NAV] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, \ - _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, KC_P4, KC_P5, KC_P6, KC_PSLS, _______, _______, KC_EQL, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PMNS, KC_PPLS, _______, LGUI(KC_TAB) , LALT(KC_TAB) , LCTL(KC_TAB), \ + _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, KC_P4, KC_P5, KC_P6, KC_PSLS, _______, _______, KC_EQL, LSFT(LGUI(KC_TAB)), LSFT(LALT(KC_TAB)), LSFT(LCTL(KC_TAB)), \ _V_V_V_, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PPLS, _______, \ _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, KC_P0, KC_PDOT, KC_PSLS, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ @@ -78,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, MAS_MGT, MAS_BLU, MAS_WHT, RGB_RMOD, RGB_MOD, _______, KC_MPRV, KC_MNXT, KC_VOLD, \ _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, MAS_RED, MAS_KEY, MAS_CYN, MAS_PRP, _______, _______, \ MAS_TOG, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, MAS_YEL, MAS_GRN, MAS_CRM, _______, _______, RGB_VAI, \ - _______, _______, _______, _______, _______, _V_V_V_, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI \ + _______, _______, _______, _______, _______, _V_V_V_, _______, _______, LSFT(LCTL(KC_TAB)), RGB_VAD, LCTL(KC_TAB) \ ), [_KEN] = LAYOUT( LGUI(KC_R), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ diff --git a/massdrop_ctrl_keleher1.bin b/massdrop_ctrl_keleher1.bin index 1c7e27c6d9bee00aa25d72c284e1aa5b39e6fb27..84c3f0f6b63ffe60b5789408b41962cef3691d8d 100644 GIT binary patch delta 4322 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 KeN&)o=>GsrqY(=L delta 4272 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 VAt(CWN3U;Y%q70QIe^u({{gqd4MzX~ -- GitLab