diff options
| author | imchipwood <[email protected]> | 2021-07-20 09:40:54 -0700 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2021-07-20 09:40:54 -0700 | 
| commit | ec78f8bca2523a91a293d8ae4d61050d1e36b320 (patch) | |
| tree | 4c25c6448c0cea9bd2ad49765d8a41affa9f11d9 | |
| parent | 4f880801ecb781c74ccf4e4f80a2097d67bc27c2 (diff) | |
| download | qmk_firmware-ec78f8bca2523a91a293d8ae4d61050d1e36b320.tar.gz qmk_firmware-ec78f8bca2523a91a293d8ae4d61050d1e36b320.zip | |
[Keymap] Adding user code & keymaps for dumbpad & hotdox (#12924)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
| -rw-r--r-- | keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c | 95 | ||||
| -rw-r--r-- | keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c | 88 | ||||
| -rw-r--r-- | keyboards/hotdox/keymaps/imchipwood/keymap.c | 151 | ||||
| -rw-r--r-- | users/imchipwood/imchipwood.c | 141 | ||||
| -rw-r--r-- | users/imchipwood/imchipwood.h | 51 | ||||
| -rw-r--r-- | users/imchipwood/rules.mk | 2 | 
6 files changed, 528 insertions, 0 deletions
| 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 | 
