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