diff --git a/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c b/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c
new file mode 100644
index 0000000000..96a98b11c5
--- /dev/null
+++ b/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c
@@ -0,0 +1,95 @@
+/* Copyright 2020 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "imchipwood.h"
+
+enum custom_layers {
+    _BASE,
+    _SUB,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /*
+          BASE LAYER
+     /-----------------------------------------------------`
+     |             |    7    |    8    |    9    |  Bkspc  |
+     |             |---------|---------|---------|---------|
+     |             |    4    |    5    |    6    |    +    |
+     |             |---------|---------|---------|---------|
+     |             |    1    |    2    |    3    |    *    |
+     |-------------|---------|---------|---------|---------|
+     | Play/Pause  | TT(SUB) |    0    |    .    |  Enter  |
+     \-----------------------------------------------------'
+    */
+    [_BASE] = LAYOUT(
+                      KC_P7,      KC_P8,    KC_P9,     KC_BSPC,
+                      KC_P4,      KC_P5,    KC_P6,     KC_KP_PLUS,
+                      KC_P1,      KC_P2,    KC_P3,     KC_KP_ASTERISK,
+      MEH_T(KC_MPLY), TT(_SUB),   KC_P0,    KC_PDOT,   KC_KP_ENTER
+    ),
+    /*
+          SUB LAYER
+     /-----------------------------------------------------`
+     |             |   F7    |   F8    |   F9    | Del/NLK |
+     |             |---------|---------|---------|---------|
+     |             |   F4    |   F5    |   F6    |    -    |
+     |             |---------|---------|---------|---------|
+     |             |   F1    |   F2    |   F3    |    /    |
+     |-------------|---------|---------|---------|---------|
+     |    MUTE     |         |  LSFT   |  LCTL   |    =    |
+     \-----------------------------------------------------'
+    */
+    [_SUB] = LAYOUT(
+                   TD(ALT_F7),          KC_F8,          KC_F9, TD(DEL_NLCK),
+                        KC_F4,     TD(CTL_F5),          KC_F6,  KC_KP_MINUS,
+                        KC_F1,     TD(ALT_F2),          KC_F3,  KC_KP_SLASH,
+        KC_MUTE,      _______,  OSM(MOD_LSFT),  OSM(MOD_LCTL),  KC_KP_EQUAL
+    )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+    if (index == 0) {
+        switch (get_highest_layer(layer_state)) {
+            case _BASE:
+                // main layer - volume up/down
+                if (clockwise) {
+                    tap_code(KC_VOLU);
+                } else {
+                    tap_code(KC_VOLD);
+                }
+                break;
+
+            case _SUB:
+                // sub layer - next/previous track
+                if (clockwise) {
+                    tap_code(KC_MNXT);
+                } else {
+                    tap_code(KC_MPRV);
+                }
+                break;
+
+            default:
+                // default - volume up/down
+                if (clockwise) {
+                    tap_code(KC_VOLU);
+                } else {
+                    tap_code(KC_VOLD);
+                }
+                break;
+        }
+    }
+    return true;
+}
diff --git a/keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c b/keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c
new file mode 100644
index 0000000000..2806a31740
--- /dev/null
+++ b/keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2020 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /*
+            BASE LAYER
+    /-----------------------------------------------------`
+    |             |    7    |    8    |    9    |  Bkspc  |
+    |             |---------|---------|---------|---------|
+    |             |    4    |    5    |    6    |    +    |
+    |             |---------|---------|---------|---------|
+    |             |    1    |    2    |    3    |    *    |
+    |-------------|---------|---------|---------|---------|
+    | Play/pause  |  TT(1)  |    0    |    .    |  Enter  |
+    \-----------------------------------------------------'
+    */
+    [0] = LAYOUT(
+                    KC_P7,     KC_P8,   KC_P9,    KC_BSPC,
+                    KC_P4,     KC_P5,   KC_P6,    KC_KP_PLUS,
+                    KC_P1,     KC_P2,   KC_P3,    KC_KP_ASTERISK,
+        KC_MPLY,    TT(1),     KC_P0,   KC_PDOT,  KC_KP_ENTER
+    ),
+    /*
+            SUB LAYER
+    /-----------------------------------------------------`
+    |             |         |         |         | Numlock |
+    |             |---------|---------|---------|---------|
+    |             |         |         |         |    -    |
+    |             |---------|---------|---------|---------|
+    |             |         |         |         |    /    |
+    |-------------|---------|---------|---------|---------|
+    |    MUTE     |         |         |         |    =    |
+    \-----------------------------------------------------'
+    */
+    [1] = LAYOUT(
+                    _______,     _______,     _______,      KC_NLCK,
+                    _______,     _______,     _______,      KC_KP_MINUS,
+                    _______,     _______,     _______,      KC_KP_SLASH,
+        KC_MUTE,    _______,     _______,     _______,      KC_KP_EQUAL
+    ),
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+    /*  Custom encoder control - handles CW/CCW turning of encoder
+     *  Default behavior:
+     *    main layer:
+     *       CW: volume up
+     *      CCW: volume down
+     *    other layers:
+     *       CW: next track
+     *      CCW: previous track
+     */
+    if (index == 0) {
+        switch (get_highest_layer(layer_state)) {
+            case 0:
+                // main layer - volume up (CW) and volume down (CCW)
+                if (clockwise) {
+                    tap_code(KC_VOLU);
+                } else {
+                    tap_code(KC_VOLD);
+                }
+                break;
+
+            default:
+                // other layers - media next (CW) and media previous (CCW)
+                if (clockwise) {
+                    tap_code(KC_MNXT);
+                } else {
+                    tap_code(KC_MPRV);
+                }
+                break;
+        }
+    }
+}
diff --git a/keyboards/hotdox/keymaps/imchipwood/keymap.c b/keyboards/hotdox/keymaps/imchipwood/keymap.c
new file mode 100644
index 0000000000..c5d7bc34cf
--- /dev/null
+++ b/keyboards/hotdox/keymaps/imchipwood/keymap.c
@@ -0,0 +1,151 @@
+/* Copyright 2021 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "imchipwood.h"
+
+// Layer names
+enum custom_layers {
+    _QWERTY,
+    _NUM,
+    _MED
+};
+
+// Layer definitions
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QWERTY] = LAYOUT_ergodox_pretty(
+/* Keymap 0: Basic layer
+ *        ,--------------------------------------------------.                    ,--------------------------------------------------.
+ *        |   =    |   1  |   2  |   3  |   4  |   5  | ESC  |                    |BkTick|   6  |   7  |   8  |   9  |   0  |   -    |
+ *        |--------+------+------+------+------+-------------|                    |------+------+------+------+------+------+--------|
+ *        | Tab    |   Q  |   W  |   E  |   R  |   T  | MEH  |                    |      |   Y  |   U  |   I  |   O  |   P  |   [    |
+ *        |--------+------+------+------+------+------|      |                    |      |------+------+------+------+------+--------|
+ *        | BkSlsh |   A  |   S  |   D  |   F  |   G  |------|                    |------|   H  |   J  |   K  |   L  |  ;   |   '    |
+ *        |--------+------+------+------+------+------|MO(2) |                    |MO(2) |------+------+------+------+------+--------|
+ *        | LSHIFT |   Z  |   X  |   C  |   V  |   B  |      |                    |      |   N  |   M  |   ,  |   .  |   /  |SHFT/CAP|
+ *        `--------+------+------+------+------+-------------'                    `-------------+------+------+------+------+--------'
+ *          |RCTRL | LALT | GUI  |L/HOME|R/END |                                                |  Up  | Down | LEFT |RIGHT |PRSCR |
+ *          `----------------------------------'                                                `----------------------------------'
+ *                                                       ,-------------.  ,-------------.
+ *                                                       | DEL  | INS  |  | Ctrl |  Alt |
+ *                                                ,------|------|------|  |------+--------+------.
+ *                                                |      |      | Home |  | PgUp |        |      |
+ *                                                |Enter |MO(1) |------|  |------|  Bksp  |Space |
+ *                                                |      |      | End  |  | PgDn |        |      |
+ *                                                `--------------------'  `----------------------'
+ */
+//                                                                                       Left hand   Right hand
+//    ,------------------------------------------------------------------------------------------.   ,------------------------------------------------------------------------------------------.
+        KC_EQL,      KC_1,        KC_2,        KC_3,        KC_4,        KC_5,        KC_ESC,          KC_GRV,      KC_6,        KC_7,        KC_8,        KC_9,        KC_0,        KC_MINS,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TAB,      KC_Q,        KC_W,        KC_E,        KC_R,        KC_T,        KC_MEH,          KC_TRNS,     KC_Y,        KC_U,        KC_I,        KC_O,        KC_P,        KC_LBRC,
+//    |------------+------------+------------+------------+------------+------------+            |   |            +------------+------------+------------+------------+------------+------------|
+        KC_BSLS,     KC_A,        KC_S,        KC_D,        KC_F,        KC_G,                                      KC_H,        KC_J,        KC_K,        KC_L,        KC_SCLN,     KC_QUOT,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_LSHIFT,   KC_Z,        KC_X,        KC_C,        KC_V,        KC_B,        MO(_MED),        MO(_MED),    KC_N,        KC_M,        KC_COMM,     KC_DOT,      KC_SLSH,     TD(TD_RSFT_CAPS),
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_LCTRL,    KC_LALT,     KC_LGUI,     TD(TD_LOME), TD(TD_REND),                                                         KC_UP,       KC_DOWN,     KC_LEFT,     KC_RGHT,     KC_PSCR,
+//     `---------------------------------------------------------------'                                                       `----------------------------------------------------------------'
+//                                                                     ,-------------------------.   ,-------------------------.
+                                                                         KC_DEL,      KC_INS,          KC_TRNS,     KC_TRNS,
+//                                                        ,------------+------------+------------|   |------------+------------+------------.
+                                                                                      KC_TRNS,         KC_TRNS,
+//                                                        |            |            +------------|   |------------+            |            |
+                                                            KC_ENT,      MO(_NUM),    KC_TRNS,         KC_TRNS,     KC_BSPC,     KC_SPC
+//                                                        `--------------------------------------'   `--------------------------------------'
+    ),
+    [_NUM] = LAYOUT_ergodox_pretty(
+/* Keymap 1: Numpad, function keys, and some convenience keys
+ *        ,---------------------------------------------------.                   ,--------------------------------------------------.
+ *        |         |  F1  |  F2  |  F3  |  F4  |  F5  |      |                   |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ *        |---------+------+------+------+------+------+------|                   |------+------+------+------+------+------+--------|
+ *        |         |      |  up  |      |      |      |      |                   |      |   7  |   8  |   9  |   *  |   /  |    ]   |
+ *        |---------+------+------+------+------+------|      |                   |      |------+------+------+------+------+--------|
+ *        |         | left | down |right |      |      |------|                   |------|   4  |   5  |   6  |   +  |   -  |        |
+ *        |---------+------+------+------+------+------|      |                   |      |------+------+------+------+------+--------|
+ *        |         |      |      |      |      |      |      |                   |      |   1  |   2  |   3  |   =  |  up  | enter  |
+ *        `---------+------+------+------+------+-------------'                   `-------------+------+------+------+------+--------'
+ *          |       |      |      | PgUp | PgDn |                                               |   0  |   .  | left | down |right |
+ *          `-----------------------------------'                                               `----------------------------------'
+ *                                                      ,-------------.   ,-------------.
+ *                                                      |      |      |   |      |      |
+ *                                               ,------|------|------|   |------+------+------.
+ *                                               |      |      |      |   |      |      |      |
+ *                                               |      |      |------|   |------| Del  | Esc  |
+ *                                               |      |      |      |   |      |      |      |
+ *                                               `--------------------'   `--------------------'
+ */
+//                                                    Left hand                   Right hand
+//    ,------------------------------------------------------------------------------------------.   ,------------------------------------------------------------------------------------------.
+        KC_TRNS,     KC_F1,       KC_F2,       KC_F3,       KC_F4,       TD(CTL_F5),  KC_TRNS,         KC_F12,      KC_F6,       TD(ALT_F7),  KC_F8,       KC_F9,       KC_F10,      KC_F11,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_TRNS,     KC_UP,       KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,         KC_TRNS,     KC_7,        KC_8,        KC_9,        KC_PAST,     KC_PSLS,     KC_RBRC,
+//    |------------+------------+------------+------------+------------+------------+            |   |            +------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_LEFT,     KC_DOWN,     KC_RGHT,     KC_TRNS,     KC_TRNS,                                   KC_4,        KC_5,        KC_6,        KC_PPLS,     KC_PMNS,     KC_TRNS,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,         KC_TRNS,     KC_1,        KC_2,        KC_3,        KC_PEQL,     KC_UP,       KC_PENT,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_PGUP,     KC_PGDN,                                                             KC_0,        KC_PDOT,     KC_LEFT,     KC_DOWN,     KC_RGHT,
+//     `---------------------------------------------------------------'                                                       `----------------------------------------------------------------'
+//                                                                     ,-------------------------.   ,-------------------------.
+                                                                         KC_TRNS,     KC_TRNS,         KC_TRNS,     KC_TRNS,
+//                                                        ,------------+------------+------------|   |------------+------------+------------.
+                                                                                      KC_TRNS,         KC_TRNS,
+//                                                        |            |            +------------|   |------------+            |            |
+                                                            KC_TRNS,     KC_TRNS,     KC_TRNS,         KC_TRNS,     KC_DEL,      KC_ESC
+//                                                        `--------------------------------------'   `--------------------------------------'
+    ),
+    [_MED] = LAYOUT_ergodox_pretty(
+/* Keymap 2: Media and mouse keys
+ *         ,--------------------------------------------------.                   ,--------------------------------------------------.
+ *         |        |      |      |      |      |      |      |                   |      |      |      |      |      |      | Mute   |
+ *         |--------+------+------+------+------+-------------|                   |------+------+------+------+------+------+--------|
+ *         |        |      | MsUp |      |      |      |      |                   |      | MP7  | MP8  | MP9  |      |      |        |
+ *         |--------+------+------+------+------+------|      |                   |      |------+------+------+------+------+--------|
+ *         |        |MsLeft|MsDown|MsRght|      |      |------|                   |------| MP4  | MP5  | MP6  |      |      |        |
+ *         |--------+------+------+------+------+------|      |                   |      |------+------+------+------+------+--------|
+ *         |        |      |      |      |      |      |      |                   |      | MP1  | MP2  | MP3  |      |VolUp |        |
+ *         `--------+------+------+------+------+-------------'                   `-------------+------+------+------+------+--------'
+ *           |      |      |      | Lclk | Rclk |                                               |      |      | Prev |VolDn | Next |
+ *           `----------------------------------'                                               `----------------------------------'
+ *                                                      ,-------------.   ,-------------.
+ *                                                      |RESET |      |   |      |      |
+ *                                               ,------|------|------|   |------+------+------.
+ *                                               |      |      |      |   |      |      |      |
+ *                                               |MPENT |      |------|   |------|      |Play  |
+ *                                               |      |      |      |   |      |      |      |
+ *                                               `--------------------'   `--------------------'
+ */
+//                                                    Left hand                   Right hand
+//    ,------------------------------------------------------------------------------------------.   ,------------------------------------------------------------------------------------------.
+        KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,         KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_MUTE,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_TRNS,     KC_MS_U,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,         KC_TRNS,     MEH(KC_P7),  MEH(KC_P8),  MEH(KC_P9),  KC_TRNS,     KC_TRNS,     KC_TRNS,
+//    |------------+------------+------------+------------+------------+------------+            |   |            +------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_MS_L,     KC_MS_D,     KC_MS_R,     KC_TRNS,     KC_TRNS,                                   MEH(KC_P4),  MEH(KC_P5),  MEH(KC_P6),  KC_TRNS,     KC_TRNS,     KC_TRNS,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,         KC_TRNS,     MEH(KC_P1),  MEH(KC_P2),  MEH(KC_P3),  KC_TRNS,     KC_VOLU,     KC_TRNS,
+//    |------------+------------+------------+------------+------------+------------+------------|   |------------+------------+------------+------------+------------+------------+------------|
+        KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_BTN1,     KC_BTN2,                                                             KC_TRNS,     KC_TRNS,     KC_MPRV,     KC_VOLD,     KC_MNXT,
+//     `---------------------------------------------------------------'                                                       `----------------------------------------------------------------'
+//                                                                     ,-------------------------.   ,-------------------------.
+                                                                         RESET,       KC_TRNS,         KC_TRNS,     KC_TRNS,
+//                                                        ,------------+------------+------------|   |------------+------------+------------.
+                                                                                      KC_TRNS,         KC_TRNS,
+//                                                        |            |            +------------|   |------------+            |            |
+                                                           MEH(KC_PENT), KC_TRNS,     KC_TRNS,         KC_TRNS,     KC_TRNS,     KC_MPLY
+//                                                        `--------------------------------------'   `--------------------------------------'
+    )
+};
diff --git a/users/imchipwood/imchipwood.c b/users/imchipwood/imchipwood.c
new file mode 100644
index 0000000000..e319c00ce7
--- /dev/null
+++ b/users/imchipwood/imchipwood.c
@@ -0,0 +1,141 @@
+/* Copyright 2021 imchipwood
+  *
+  * This program is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 2 of the License, or
+  * (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  */
+#include "imchipwood.h"
+
+static td_state_t td_state[3];
+
+// 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
+}
+
+void altf2_finished(qk_tap_dance_state_t *state, void *user_data) {
+    td_state[0] = cur_dance(state);
+    switch (td_state[0]) {
+        case SINGLE_TAP:
+            register_code(KC_F2);
+            break;
+        case SINGLE_HOLD:
+            register_mods(MOD_BIT(KC_LALT));
+            break;
+        case DOUBLE_TAP:
+            register_mods(MOD_BIT(KC_LALT));
+            tap_code(KC_F2);
+            break;
+    }
+}
+
+void altf2_reset(qk_tap_dance_state_t *state, void *user_data) {
+    switch (td_state[0]) {
+        case SINGLE_TAP:
+            unregister_code(KC_F2);
+            break;
+        case SINGLE_HOLD:
+            unregister_mods(MOD_BIT(KC_LALT));
+            break;
+        case DOUBLE_TAP:
+            unregister_code(KC_F2);
+            unregister_mods(MOD_BIT(KC_LALT));
+            break;
+    }
+}
+
+
+void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data) {
+    td_state[1] = cur_dance(state);
+    switch (td_state[1]) {
+        case SINGLE_TAP:
+            register_code(KC_F5);
+            break;
+        case SINGLE_HOLD:
+            register_mods(MOD_BIT(KC_LCTL));
+            break;
+        case DOUBLE_TAP:
+            register_mods(MOD_BIT(KC_LCTL));
+            tap_code(KC_F5);
+            break;
+    }
+}
+
+void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data) {
+    switch (td_state[1]) {
+        case SINGLE_TAP:
+            unregister_code(KC_F5);
+            break;
+        case SINGLE_HOLD:
+            unregister_mods(MOD_BIT(KC_LCTL));
+            break;
+        case DOUBLE_TAP:
+            unregister_code(KC_F5);
+            unregister_mods(MOD_BIT(KC_LCTL));
+            break;
+    }
+}
+
+void altf7_finished(qk_tap_dance_state_t *state, void *user_data) {
+    td_state[2] = cur_dance(state);
+    switch (td_state[2]) {
+        case SINGLE_TAP:
+            register_code(KC_F7);
+            break;
+        case SINGLE_HOLD:
+            register_mods(MOD_BIT(KC_LALT));
+            break;
+        case DOUBLE_TAP:
+            register_mods(MOD_BIT(KC_LALT));
+            tap_code(KC_F7);
+            break;
+    }
+}
+
+void altf7_reset(qk_tap_dance_state_t *state, void *user_data) {
+    switch (td_state[2]) {
+        case SINGLE_TAP:
+            unregister_code(KC_F7);
+            break;
+        case SINGLE_HOLD:
+            unregister_mods(MOD_BIT(KC_LALT));
+            break;
+        case DOUBLE_TAP:
+            unregister_code(KC_F7);
+            unregister_mods(MOD_BIT(KC_LALT));
+            break;
+    }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+    [ALT_F2]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf2_finished, altf2_reset),
+    [CTL_F5]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctlf5_finished, ctlf5_reset),
+    [ALT_F7]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf7_finished, altf7_reset),
+    [DEL_NLCK] = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_NLCK),
+    // Double tap right -> END
+    [TD_REND] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_END),
+    // Double tap left -> HOME
+    [TD_LOME] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
+    // Double tap right shift -> CAPS LOCK
+    [TD_RSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_RSFT, KC_CAPS),
+};
diff --git a/users/imchipwood/imchipwood.h b/users/imchipwood/imchipwood.h
new file mode 100644
index 0000000000..64726a862b
--- /dev/null
+++ b/users/imchipwood/imchipwood.h
@@ -0,0 +1,51 @@
+/* Copyright 2021 imchipwood
+  *
+  * This program is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 2 of the License, or
+  * (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  */
+#pragma once
+
+#include "quantum.h"
+
+// change the tapping term to a little bit quicker
+#ifdef TAPPING_TERM
+  #undef TAPPING_TERM
+#endif
+#define TAPPING_TERM    175
+
+#ifdef TAPPING_TOGGLE
+  #undef TAPPING_TOGGLE
+#endif
+#define TAPPING_TOGGLE 2
+
+
+enum td_keycodes {
+    TD_REND = 0, // right when tapped, end when double tapped
+    TD_LOME,     // left when tapped, home when double tapped
+    TD_RSFT_CAPS,
+    ALT_F2,    // F2 when tapped, LALT when held, LALT+F2 when double tapped
+    CTL_F5,    // F5 when tapped, LCTL when held, LCTL+F5 when double tapped
+    ALT_F7,    // F7 when tapped, LALT when held, LALT+F7 when double tapped
+    DEL_NLCK,  // DEL when tapped, NUMLOCK when double tapped
+};
+
+
+typedef enum { SINGLE_TAP, SINGLE_HOLD, DOUBLE_TAP } td_state_t;
+int cur_dance(qk_tap_dance_state_t *state);
+
+void altf2_finished(qk_tap_dance_state_t *state, void *user_data);
+void altf2_reset(qk_tap_dance_state_t *state, void *user_data);
+void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data);
+void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data);
+void altf7_finished(qk_tap_dance_state_t *state, void *user_data);
+void altf7_reset(qk_tap_dance_state_t *state, void *user_data);
diff --git a/users/imchipwood/rules.mk b/users/imchipwood/rules.mk
new file mode 100644
index 0000000000..87cca5b5e2
--- /dev/null
+++ b/users/imchipwood/rules.mk
@@ -0,0 +1,2 @@
+SRC += imchipwood.c
+TAP_DANCE_ENABLE=yes