diff options
22 files changed, 985 insertions, 257 deletions
diff --git a/keyboards/gherkin/keymaps/wanleg/config.h b/keyboards/gherkin/keymaps/wanleg/config.h deleted file mode 100644 index 98e2b2338..000000000 --- a/keyboards/gherkin/keymaps/wanleg/config.h +++ /dev/null | |||
| @@ -1,24 +0,0 @@ | |||
| 1 | #ifndef CONFIG_USER_H | ||
| 2 | #define CONFIG_USER_H | ||
| 3 | |||
| 4 | #include "../../config.h" | ||
| 5 | #endif | ||
| 6 | |||
| 7 | #define PREVENT_STUCK_MODIFIERS | ||
| 8 | |||
| 9 | //Tap Dance Prerequisite | ||
| 10 | #define TAPPING_TERM 200 | ||
| 11 | |||
| 12 | //Mousekeys Settings | ||
| 13 | #define MOUSEKEY_INTERVAL 16 | ||
| 14 | #define MOUSEKEY_DELAY 0 | ||
| 15 | #define MOUSEKEY_TIME_TO_MAX 60 | ||
| 16 | #define MOUSEKEY_MAX_SPEED 7 | ||
| 17 | #define MOUSEKEY_WHEEL_DELAY 0 | ||
| 18 | |||
| 19 | /* for QMK DFU bootloader */ | ||
| 20 | /* not required if using default ProMicro bootloader */ | ||
| 21 | /* set top left key as bootloader mode escape key */ | ||
| 22 | #define QMK_ESC_OUTPUT B4 // usually COL | ||
| 23 | #define QMK_ESC_INPUT F7 // usually ROW | ||
| 24 | #define QMK_LED B0 \ No newline at end of file | ||
diff --git a/keyboards/gherkin/keymaps/wanleg/keymap.c b/keyboards/gherkin/keymaps/wanleg/keymap.c deleted file mode 100644 index 108ed40e5..000000000 --- a/keyboards/gherkin/keymaps/wanleg/keymap.c +++ /dev/null | |||
| @@ -1,218 +0,0 @@ | |||
| 1 | /* Copyright 2017 Brian Fong | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #include QMK_KEYBOARD_H | ||
| 17 | |||
| 18 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 19 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 20 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 21 | // entirely and just use numbers. | ||
| 22 | #define _QW 0 | ||
| 23 | #define DIR 1 | ||
| 24 | #define NUM 2 | ||
| 25 | #define ETC 3 | ||
| 26 | |||
| 27 | // Readability keycodes | ||
| 28 | #define _______ KC_TRNS | ||
| 29 | |||
| 30 | |||
| 31 | /////////////// TAP DANCE SECTION START /////////////// | ||
| 32 | //Tap Dance Declarations (list of my tap dance configurations) | ||
| 33 | enum { | ||
| 34 | TD_SFT_CAPS = 0 | ||
| 35 | ,TD_Q_ESC | ||
| 36 | ,ENT_TAP_DANCE | ||
| 37 | ,DEL_TAP_DANCE | ||
| 38 | }; | ||
| 39 | |||
| 40 | ///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION START ///// | ||
| 41 | ///// (no need to edit this section) ///// | ||
| 42 | //Enums used to clearly convey the state of the tap dance | ||
| 43 | enum { | ||
| 44 | SINGLE_TAP = 1, | ||
| 45 | SINGLE_HOLD = 2, | ||
| 46 | DOUBLE_TAP = 3, | ||
| 47 | DOUBLE_HOLD = 4, | ||
| 48 | DOUBLE_SINGLE_TAP = 5 //send SINGLE_TAP twice - NOT DOUBLE_TAP | ||
| 49 | // Add more enums here if you want for triple, quadruple, etc. | ||
| 50 | }; | ||
| 51 | |||
| 52 | typedef struct { | ||
| 53 | bool is_press_action; | ||
| 54 | int state; | ||
| 55 | } tap; | ||
| 56 | |||
| 57 | int cur_dance (qk_tap_dance_state_t *state) { | ||
| 58 | if (state->count == 1) { | ||
| 59 | //If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP | ||
| 60 | if (state->interrupted || !state->pressed) return SINGLE_TAP; | ||
| 61 | if (state->interrupted) return SINGLE_TAP; | ||
| 62 | else return SINGLE_HOLD; | ||
| 63 | } | ||
| 64 | //If count = 2, and it has been interrupted - assume that user is trying to type the letter associated | ||
| 65 | //with single tap. | ||
| 66 | else if (state->count == 2) { | ||
| 67 | if (state->interrupted) return DOUBLE_SINGLE_TAP; | ||
| 68 | else if (state->pressed) return DOUBLE_HOLD; | ||
| 69 | else return DOUBLE_TAP; | ||
| 70 | } | ||
| 71 | else return 6; //magic number. At some point this method will expand to work for more presses | ||
| 72 | } | ||
| 73 | ///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION END ///// | ||
| 74 | ///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION START ///// | ||
| 75 | //instantialize an instance of 'tap' for the 'ENT' tap dance. | ||
| 76 | static tap ENTtap_state = { | ||
| 77 | .is_press_action = true, | ||
| 78 | .state = 0 | ||
| 79 | }; | ||
| 80 | |||
| 81 | void ENT_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
| 82 | ENTtap_state.state = cur_dance(state); | ||
| 83 | switch (ENTtap_state.state) { | ||
| 84 | case SINGLE_TAP: register_code(KC_SPC); break; | ||
| 85 | case SINGLE_HOLD: register_code(KC_LSFT); break; | ||
| 86 | case DOUBLE_TAP: register_code(KC_ENT); break; | ||
| 87 | case DOUBLE_HOLD: register_code(KC_NO); break; // setting double hold to do nothing (change this if you want) | ||
| 88 | case DOUBLE_SINGLE_TAP: register_code(KC_SPC); unregister_code(KC_SPC); register_code(KC_SPC); | ||
| 89 | //Last case is for fast typing. Assuming your key is `f`: | ||
| 90 | //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`. | ||
| 91 | //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms. | ||
| 92 | } | ||
| 93 | } | ||
| 94 | |||
| 95 | void ENT_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 96 | switch (ENTtap_state.state) { | ||
| 97 | case SINGLE_TAP: unregister_code(KC_SPC); break; | ||
| 98 | case SINGLE_HOLD: unregister_code(KC_LSFT); break; | ||
| 99 | case DOUBLE_TAP: unregister_code(KC_ENT); break; | ||
| 100 | case DOUBLE_HOLD: unregister_code(KC_NO); | ||
| 101 | case DOUBLE_SINGLE_TAP: unregister_code(KC_SPC); | ||
| 102 | } | ||
| 103 | ENTtap_state.state = 0; | ||
| 104 | } | ||
| 105 | |||
| 106 | //instanalize an instance of 'tap' for the 'DEL' tap dance. | ||
| 107 | static tap DELtap_state = { | ||
| 108 | .is_press_action = true, | ||
| 109 | .state = 0 | ||
| 110 | }; | ||
| 111 | |||
| 112 | void DEL_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
| 113 | DELtap_state.state = cur_dance(state); | ||
| 114 | switch (DELtap_state.state) { | ||
| 115 | case SINGLE_TAP: register_code(KC_BSPC); break; | ||
| 116 | case SINGLE_HOLD: register_code(KC_LCTL); break; | ||
| 117 | case DOUBLE_TAP: register_code(KC_DEL); break; | ||
| 118 | case DOUBLE_HOLD: register_code(KC_NO); break; | ||
| 119 | case DOUBLE_SINGLE_TAP: register_code(KC_BSPC); unregister_code(KC_BSPC); register_code(KC_BSPC); | ||
| 120 | } | ||
| 121 | } | ||
| 122 | |||
| 123 | void DEL_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 124 | switch (DELtap_state.state) { | ||
| 125 | case SINGLE_TAP: unregister_code(KC_BSPC); break; | ||
| 126 | case SINGLE_HOLD: unregister_code(KC_LCTL); break; | ||
| 127 | case DOUBLE_TAP: unregister_code(KC_DEL); break; | ||
| 128 | case DOUBLE_HOLD: unregister_code(KC_NO); | ||
| 129 | case DOUBLE_SINGLE_TAP: unregister_code(KC_BSPC); | ||
| 130 | } | ||
| 131 | DELtap_state.state = 0; | ||
| 132 | } | ||
| 133 | ///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION END ///// | ||
| 134 | |||
| 135 | //Tap Dance Definitions | ||
| 136 | //THIS SECTION HAS TO BE AT THE END OF THE TAP DANCE SECTION | ||
| 137 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 138 | [TD_SFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS) | ||
| 139 | // Other declarations would go here, separated by commas, if you have them | ||
| 140 | ,[TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC) | ||
| 141 | ,[ENT_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ENT_finished, ENT_reset) | ||
| 142 | ,[DEL_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, DEL_finished, DEL_reset) | ||
| 143 | }; | ||
| 144 | |||
| 145 | //In Layer declaration, add tap dance item in place of a key code | ||
| 146 | //TD(TD_SFT_CAPS) | ||
| 147 | |||
| 148 | ///////////// TAP DANCE SECTION END /////////////// | ||
| 149 | |||
| 150 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 151 | |||
| 152 | /* Qwerty | ||
| 153 | * .-----------------------------------------------------------------------------------------. | ||
| 154 | * | Q//ESC | W | E | R | T | Y | U | I | O | P | | ||
| 155 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 156 | * | A | S | D | F | G | H | J | K | L | SPACE | | ||
| 157 | * | | | | | | | | | |SFThold | | ||
| 158 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 159 | * | Z | X | C | V/NUM | B/ETC | N | M/DIR | ,/GUI | ./ALT | BKSC | | ||
| 160 | * | SFThold| | | | | | | | |CTRLhold| | ||
| 161 | * '-----------------------------------------------------------------------------------------' | ||
| 162 | */ | ||
| 163 | [_QW] = LAYOUT_ortho_3x10( /* Qwerty*/ | ||
| 164 | TD(TD_Q_ESC), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, | ||
| 165 | KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SFT_T(KC_SPC), | ||
| 166 | SFT_T(KC_Z), KC_X, KC_C, LT(NUM, KC_V), LT(ETC, KC_B), KC_N, LT(DIR, KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC) | ||
| 167 | ), | ||
| 168 | |||
| 169 | /* | ||
| 170 | * Directional Modifiers | ||
| 171 | * .-----------------------------------------------------------------------------------------. | ||
| 172 | * | TAB | up | | INS | CTRL | SHIFT | PgUp | HOME | - | = | | ||
| 173 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 174 | * | left | down | right | PrScr | SHIFT | CTRL | PgDn | END | [ | ] | | ||
| 175 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 176 | * | P-Brk | | | | | | | RGUI | ALT | / | | ||
| 177 | * '-----------------------------------------------------------------------------------------' | ||
| 178 | */ | ||
| 179 | [DIR] = LAYOUT_ortho_3x10( /* Directional Modifiers */ | ||
| 180 | KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, | ||
| 181 | KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC, | ||
| 182 | KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_LALT, KC_SLSH | ||
| 183 | ), | ||
| 184 | |||
| 185 | /* | ||
| 186 | * Numbers | ||
| 187 | * .-----------------------------------------------------------------------------------------. | ||
| 188 | * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | ||
| 189 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 190 | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | ||
| 191 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 192 | * | F11 | F12 | | | | ENTER | SHIFT | GUI | ./ALT | BKSC | | ||
| 193 | * | | | | | | | | | |CTRLhold| | ||
| 194 | * '-----------------------------------------------------------------------------------------' | ||
| 195 | */ | ||
| 196 | [NUM] = LAYOUT_ortho_3x10 ( /* Numbers */ | ||
| 197 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, | ||
| 198 | KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, | ||
| 199 | KC_F11, KC_F12, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC) | ||
| 200 | ), | ||
| 201 | |||
| 202 | /* | ||
| 203 | * ETC | ||
| 204 | * .-----------------------------------------------------------------------------------------. | ||
| 205 | * | ` | mUP | | | RESET | SHIFT | mUp | mDown | | \ | | ||
| 206 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 207 | * | mLeft | mDown | mRight | | SHIFT | mBtn3 | mBtn1 | mBtn2 | ; | ' | | ||
| 208 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 209 | * | Sft//Cp| | | | | C-A-D | mLeft | mRight | ALT | DEL | | ||
| 210 | * '-----------------------------------------------------------------------------------------' | ||
| 211 | */ | ||
| 212 | [ETC] = LAYOUT_ortho_3x10( /* ETC */ | ||
| 213 | KC_GRV, KC_MS_U, _______, _______, RESET, KC_RSFT, KC_WH_U, KC_WH_D, _______, KC_BSLS, | ||
| 214 | KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_LSFT, KC_BTN3, KC_BTN1, KC_BTN2, KC_SCLN, KC_QUOT, | ||
| 215 | TD(TD_SFT_CAPS), _______, _______, _______, _______, LALT(LCTL(KC_DEL)), KC_WH_L, KC_WH_R, KC_LALT, KC_DEL | ||
| 216 | ), | ||
| 217 | |||
| 218 | }; | ||
diff --git a/keyboards/gherkin/keymaps/wanleg/rules.mk b/keyboards/gherkin/keymaps/wanleg/rules.mk deleted file mode 100644 index 7f2ff3327..000000000 --- a/keyboards/gherkin/keymaps/wanleg/rules.mk +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | TAP_DANCE_ENABLE = yes # Enable Tap Dance (comment if not being implemented) | ||
| 2 | |||
| 3 | #If ProMicro has QMK DFU bootloader instead of Caterina, | ||
| 4 | #run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed | ||
| 5 | ifeq ($(strip $(dfu)), qmk) | ||
| 6 | BOOTLOADER = qmk-dfu | ||
| 7 | endif \ No newline at end of file | ||
diff --git a/layouts/community/ortho_3x10/layout.json b/layouts/community/ortho_3x10/layout.json new file mode 100644 index 000000000..6600f32a6 --- /dev/null +++ b/layouts/community/ortho_3x10/layout.json | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | ["","","","","","","","","",""], | ||
| 2 | ["","","","","","","","","",""], | ||
| 3 | ["","","","","","","","","",""] | ||
diff --git a/layouts/community/ortho_3x10/readme.md b/layouts/community/ortho_3x10/readme.md new file mode 100644 index 000000000..e0a31cdf6 --- /dev/null +++ b/layouts/community/ortho_3x10/readme.md | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | # ortho_3x10 | ||
| 2 | |||
| 3 | LAYOUT_ortho_3x10 | ||
diff --git a/layouts/community/ortho_3x10/wanleg/config.h b/layouts/community/ortho_3x10/wanleg/config.h new file mode 100644 index 000000000..6719a4591 --- /dev/null +++ b/layouts/community/ortho_3x10/wanleg/config.h | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | //QMK DFU settings (ProMicro boards) | ||
| 4 | // set top left key as bootloader mode escape key on Gherkin | ||
| 5 | #if defined(KEYBOARD_gherkin) | ||
| 6 | #define QMK_LED B0 | ||
| 7 | #define QMK_ESC_OUTPUT B4 // usually COL | ||
| 8 | #define QMK_ESC_INPUT F7 // usually ROW | ||
| 9 | #endif | ||
diff --git a/layouts/community/ortho_3x10/wanleg/keymap.c b/layouts/community/ortho_3x10/wanleg/keymap.c new file mode 100644 index 000000000..44be300a4 --- /dev/null +++ b/layouts/community/ortho_3x10/wanleg/keymap.c | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | #include "wanleg.h" | ||
| 3 | |||
| 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 5 | [gGK] = LAYOUT_ortho_3x10_wrapper( | ||
| 6 | _______________Gherkin_Row_0_______________, | ||
| 7 | _______________Gherkin_Row_1_______________, | ||
| 8 | _______________Gherkin_Row_2_______________ | ||
| 9 | ), | ||
| 10 | |||
| 11 | [gNUM] = LAYOUT_ortho_3x10_wrapper( | ||
| 12 | _______________Gherkin_NUM_0_______________, | ||
| 13 | _______________Gherkin_NUM_1_______________, | ||
| 14 | _______________Gherkin_NUM_2_______________ | ||
| 15 | ), | ||
| 16 | |||
| 17 | [gDIR] = LAYOUT_ortho_3x10_wrapper( | ||
| 18 | _______________Gherkin_DIR_0_______________, | ||
| 19 | _______________Gherkin_DIR_1_______________, | ||
| 20 | _______________Gherkin_DIR_2_______________ | ||
| 21 | ), | ||
| 22 | |||
| 23 | [gETC] = LAYOUT_ortho_3x10_wrapper( | ||
| 24 | _______________Gherkin_ETC_0_______________, | ||
| 25 | _______________Gherkin_ETC_1_______________, | ||
| 26 | _______________Gherkin_ETC_2_______________ | ||
| 27 | ), | ||
| 28 | |||
| 29 | }; | ||
diff --git a/keyboards/gherkin/keymaps/wanleg/readme.md b/layouts/community/ortho_3x10/wanleg/readme.md index 0b1b099c4..ef6c1f9db 100644 --- a/keyboards/gherkin/keymaps/wanleg/readme.md +++ b/layouts/community/ortho_3x10/wanleg/readme.md | |||
| @@ -1,7 +1,7 @@ | |||
| 1 |  | 1 |  |
| 2 | # Gherkin Wanleg Layout | 2 | # Gherkin Wanleg Layout |
| 3 | This is the layout I came up with to preserve a standard QWERTY 104 key ANSI layout as much as possible, in as few layers as possible for a 30 key board. | 3 | This is the layout I came up with to preserve a standard QWERTY 104 key ANSI layout as much as possible, in as few layers as possible for a 30 key board. |
| 4 | I originally set up a few Tap Dance keys, but dropped half of them in favor of chorded versions since in actual use, they tended to impede typing speed more than their current two-key versions. | 4 | I originally set up a few Tap Dance keys, but dropped half of them in favor of chorded versions since in actual use, they tended to impede typing speed more than their current two-key versions. |
| 5 | I've left them in my `keymap.c` ready for use if anyone wants to try them out: | 5 | I've left them in my `keymap.c` ready for use if anyone wants to try them out: |
| 6 | 6 | ||
| 7 | Legend Name | Single Tap | Double Tap | Hold | 7 | Legend Name | Single Tap | Double Tap | Hold |
| @@ -57,7 +57,7 @@ The instructions below have been adapted from https://www.reddit.com/r/olkb/comm | |||
| 57 | | 5V | VCC | | 57 | | 5V | VCC | |
| 58 | 58 | ||
| 59 | ## Make the QMK DFU .hex | 59 | ## Make the QMK DFU .hex |
| 60 | 3. In `config.h` add the following. This is already set up in `qmk_firmware/keyboards/gherkin/wanleg`. You only need to do this on other keymaps. | 60 | 3. In `config.h` add the following. This is already set up in `qmk_firmware/layouts/community/ortho_3x10/wanleg`. You only need to do this on other keymaps. |
| 61 | ``` | 61 | ``` |
| 62 | #define QMK_ESC_OUTPUT B4 | 62 | #define QMK_ESC_OUTPUT B4 |
| 63 | #define QMK_ESC_INPUT F7 | 63 | #define QMK_ESC_INPUT F7 |
| @@ -68,12 +68,10 @@ You hit the bootloader escape key to exit bootloader mode after you've hit the R | |||
| 68 | On a Gherkin, B4/F7 corresponds to the top-left corner key. | 68 | On a Gherkin, B4/F7 corresponds to the top-left corner key. |
| 69 | `B0` is an indicator light on one of the ProMicro's onboard LEDs. With QMK DFU, it will flash to indicate the ProMicro is in bootloader mode. | 69 | `B0` is an indicator light on one of the ProMicro's onboard LEDs. With QMK DFU, it will flash to indicate the ProMicro is in bootloader mode. |
| 70 | You can add `#define QMK_SPEAKER C6` if you have a speaker hooked up to pin C6. The Gherkin PCB already uses pin C6 in its switch layout, so you cannot use a speaker on a standard Gherkin. | 70 | You can add `#define QMK_SPEAKER C6` if you have a speaker hooked up to pin C6. The Gherkin PCB already uses pin C6 in its switch layout, so you cannot use a speaker on a standard Gherkin. |
| 71 | 4. Also, you should add `BOOTLOADER = qmk-dfu` to your `rules.mk` file, so it is flagged properly. Again, this is already set up in `qmk_firmware/keyboards/gherkin/wanleg`. | 71 | 4. Also, you should add `BOOTLOADER = qmk-dfu` to your `rules.mk` file, so it is flagged properly. Again, this is already set up in `qmk_firmware/layouts/community/ortho_3x10/wanleg`. |
| 72 | 5. Once you've made the required edits, it's time to compile the firmware. If you use the `:production` target when compiling, it will produce the usual `.hex` file as well as `_bootloader.hex` and `_production.hex` files. The `_production.hex` will be what we want. This contains the bootloader and the firmware, so we only have to flash once (rather than flash the bootloader, and THEN flash the firmware). | 72 | 5. Once you've made the required edits, it's time to compile the firmware. If you use the `:production` target when compiling, it will produce the usual `.hex` file as well as `_bootloader.hex` and `_production.hex` files. The `_production.hex` will be what we want. This contains the bootloader and the firmware, so we only have to flash once (rather than flash the bootloader, and THEN flash the firmware). |
| 73 | For example | 73 | For example |
| 74 | `make <keyboard>:<keymap>:production` | 74 | `make <keyboard>:<keymap>:production` |
| 75 | For my particular keymap, for reasons listed in the **Using QMK DFU** section, you should use the following to ensure the bootloader is set properly | ||
| 76 | `make gherkin:wanleg:production dfu=qmk` | ||
| 77 | 75 | ||
| 78 | ## Burn QMK DFU | 76 | ## Burn QMK DFU |
| 79 | 6. Navigate to the directory with your `_production.hex` file, and burn it with the following command | 77 | 6. Navigate to the directory with your `_production.hex` file, and burn it with the following command |
| @@ -82,5 +80,4 @@ Change `comPORT` to whatever port is used by the Arduino (e.g. `com11` in Window | |||
| 82 | 80 | ||
| 83 | ## Using QMK DFU | 81 | ## Using QMK DFU |
| 84 | 7. Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with | 82 | 7. Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with |
| 85 | `make gherkin:<keymap>:dfu dfu=qmk` | 83 | `make gherkin:<keymap>:dfu` |
| 86 | The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina` | ||
diff --git a/layouts/community/ortho_3x10/wanleg/rules.mk b/layouts/community/ortho_3x10/wanleg/rules.mk new file mode 100644 index 000000000..90841d2ab --- /dev/null +++ b/layouts/community/ortho_3x10/wanleg/rules.mk | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | SWAP_HANDS_ENABLE = no | ||
| 2 | |||
| 3 | BOOTLOADER = qmk-dfu \ No newline at end of file | ||
diff --git a/layouts/community/ortho_4x12/wanleg/config.h b/layouts/community/ortho_4x12/wanleg/config.h new file mode 100644 index 000000000..2c6fcc75f --- /dev/null +++ b/layouts/community/ortho_4x12/wanleg/config.h | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | #ifndef CONFIG_USER_H | ||
| 2 | #define CONFIG_USER_H | ||
| 3 | |||
| 4 | //QMK DFU settings (ProMicro boards) | ||
| 5 | // set top left key as bootloader mode escape key on Lets Split rev2 | ||
| 6 | #if defined(KEYBOARD_lets_split_rev2) | ||
| 7 | #define QMK_LED B0 | ||
| 8 | #define QMK_ESC_OUTPUT F6 // usually COL | ||
| 9 | #define QMK_ESC_INPUT D7 // usually ROW | ||
| 10 | #define USE_SERIAL | ||
| 11 | #undef USE_I2C | ||
| 12 | #define EE_HANDS | ||
| 13 | #endif | ||
| 14 | |||
| 15 | #endif | ||
diff --git a/layouts/community/ortho_4x12/wanleg/keymap.c b/layouts/community/ortho_4x12/wanleg/keymap.c new file mode 100644 index 000000000..43cae711a --- /dev/null +++ b/layouts/community/ortho_4x12/wanleg/keymap.c | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | #include "wanleg.h" | ||
| 3 | |||
| 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 5 | #if defined(KEYBOARD_lets_split_rev2) | ||
| 6 | [_GK] = LAYOUT_ortho_4x12_wrapper( | ||
| 7 | _______________GherkinLike_0_______________, | ||
| 8 | _______________GherkinLike_1_______________, | ||
| 9 | _______________GherkinLike_2_______________, | ||
| 10 | _______________GherkinLike_3_OneHand_______ | ||
| 11 | ), | ||
| 12 | [ONE] = LAYOUT_ortho_4x12_wrapper( | ||
| 13 | _______________Qwerty_Row__0_______________, | ||
| 14 | _______________Qwerty_Row__1_______________, | ||
| 15 | _______________Qwerty_Row__2_______________, | ||
| 16 | KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), KC_SPC, SUPRA, KC_RGUI, KC_RALT, KC_RGUI, KC_RCTL | ||
| 17 | ), | ||
| 18 | #else | ||
| 19 | [_GK] = LAYOUT_ortho_4x12_wrapper( | ||
| 20 | _______________GherkinLike_0_______________, | ||
| 21 | _______________GherkinLike_1_______________, | ||
| 22 | _______________GherkinLike_2_______________, | ||
| 23 | _______________GherkinLike_3_______________ | ||
| 24 | ), | ||
| 25 | #endif | ||
| 26 | [_QW] = LAYOUT_ortho_4x12_wrapper( | ||
| 27 | _______________Qwerty_Row__0_______________, | ||
| 28 | _______________Qwerty_Row__1_______________, | ||
| 29 | _______________Qwerty_Row__2_______________, | ||
| 30 | _______________Qwerty_Row__3_______________ | ||
| 31 | ), | ||
| 32 | |||
| 33 | [SUP] = LAYOUT_ortho_4x12_wrapper( | ||
| 34 | ________________SUPRA_Row_0________________, | ||
| 35 | ________________SUPRA_Row_1________________, | ||
| 36 | ________________SUPRA_Row_2________________, | ||
| 37 | ________________SUPRA_Row_3________________ | ||
| 38 | ), | ||
| 39 | |||
| 40 | [SUB] = LAYOUT_ortho_4x12_wrapper( | ||
| 41 | _______________SUBTER_Row__0_______________, | ||
| 42 | _______________SUBTER_Row__1_______________, | ||
| 43 | _______________SUBTER_Row__2_______________, | ||
| 44 | _______________SUBTER_Row__3_______________ | ||
| 45 | ), | ||
| 46 | |||
| 47 | [NUM] = LAYOUT_ortho_4x12_wrapper( | ||
| 48 | _______________NUMBERS_Row_0_______________, | ||
| 49 | _______________NUMBERS_Row_1_______________, | ||
| 50 | _______________NUMBERS_Row_2_______________, | ||
| 51 | _______________NUMBERS_Row_3_______________ | ||
| 52 | ), | ||
| 53 | |||
| 54 | [DIR] = LAYOUT_ortho_4x12_wrapper( | ||
| 55 | _____________DIRECTIONS_Row__0_____________, | ||
| 56 | _____________DIRECTIONS_Row__1_____________, | ||
| 57 | _____________DIRECTIONS_Row__2_____________, | ||
| 58 | _____________DIRECTIONS_Row__3_____________ | ||
| 59 | ), | ||
| 60 | |||
| 61 | [ETC] = LAYOUT_ortho_4x12_wrapper( | ||
| 62 | ______________ETCETERA_Row__0______________, | ||
| 63 | ______________ETCETERA_Row__1______________, | ||
| 64 | ______________ETCETERA_Row__2______________, | ||
| 65 | ______________ETCETERA_Row__3______________ | ||
| 66 | ), | ||
| 67 | }; | ||
diff --git a/layouts/community/ortho_4x12/wanleg/readme.md b/layouts/community/ortho_4x12/wanleg/readme.md new file mode 100644 index 000000000..2f89d1de6 --- /dev/null +++ b/layouts/community/ortho_4x12/wanleg/readme.md | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | # Let's Split Flashing | ||
| 2 | (More information at `qmk_firmware/layouts/community/ortho_3x10/wanleg/readme.md`) | ||
| 3 | ## Make the QMK DFU .hex | ||
| 4 | `make lets_split/rev2:wanleg:production dfu=qmk` | ||
| 5 | |||
| 6 | ## Burning EEPROM settings and Firmware | ||
| 7 | Navigate to the directory with your .hex file and the `eeprom-lefthand.eep` and `eeprom-righthand.eep` files in it. | ||
| 8 | **Burn Left Side With QMK DFU and Firmware** | ||
| 9 | `avrdude -b 19200 -c avrisp -p m32u4 -v -e -U lock:w:0x3F:m -U efuse:w:0xC3:m -U hfuse:w:0xD9:m -U lfuse:w:0x5E:m -U eeprom:w:eeprom-lefthand.eep -P comPORT -U flash:w:YOUR_production.hex:a` | ||
| 10 | |||
| 11 | **Burn Right Side With QMK DFU and Firmware** | ||
| 12 | `avrdude -b 19200 -c avrisp -p m32u4 -v -e -U lock:w:0x3F:m -U efuse:w:0xC3:m -U hfuse:w:0xD9:m -U lfuse:w:0x5E:m -U eeprom:w:eeprom-righthand.eep -P comPORT -U flash:w:YOUR_production.hex:a` | ||
| 13 | |||
| 14 | Change `comPORT` to whatever port is used by the Arduino (e.g. `com11` in Windows or `/dev/ttyACM0` in Linux). Use Device Manager in Windows to find the port being used. Use `ls /dev/tty*` in Linux. Change `YOUR_production.hex` to whatever you've created in the previous step. | ||
| 15 | |||
| 16 | ## Using QMK DFU | ||
| 17 | Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with | ||
| 18 | `make lets_split/rev2:<keymap>:dfu dfu=qmk` | ||
| 19 | The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina` | ||
| 20 | |||
| 21 | --- | ||
| 22 | # JJ40 | ||
| 23 | ## To Do | ||
| 24 | - [ ] Mousekeys not working with Userspace for some reason (jj40 only) \ No newline at end of file | ||
diff --git a/layouts/community/ortho_4x12/wanleg/rules.mk b/layouts/community/ortho_4x12/wanleg/rules.mk new file mode 100644 index 000000000..79929689c --- /dev/null +++ b/layouts/community/ortho_4x12/wanleg/rules.mk | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | AUDIO_ENABLE = no | ||
| 2 | SWAP_HANDS_ENABLE = yes | ||
| 3 | |||
| 4 | ifeq ($(strip $(KEYBOARD)), jj40) | ||
| 5 | SWAP_HANDS_ENABLE = no | ||
| 6 | endif \ No newline at end of file | ||
diff --git a/layouts/community/ortho_5x15/wanleg/config.h b/layouts/community/ortho_5x15/wanleg/config.h new file mode 100644 index 000000000..a55fc6a3e --- /dev/null +++ b/layouts/community/ortho_5x15/wanleg/config.h | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | #ifndef CONFIG_USER_H | ||
| 2 | #define CONFIG_USER_H | ||
| 3 | #endif | ||
diff --git a/layouts/community/ortho_5x15/wanleg/keymap.c b/layouts/community/ortho_5x15/wanleg/keymap.c new file mode 100644 index 000000000..7731edb6a --- /dev/null +++ b/layouts/community/ortho_5x15/wanleg/keymap.c | |||
| @@ -0,0 +1,176 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | #include "wanleg.h" | ||
| 3 | |||
| 4 | #define _________________BLANK_75__________________ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 5 | #define _________________Num_Row_75________________ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NLCK | ||
| 6 | |||
| 7 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 8 | /* QWERTY 75 | ||
| 9 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 10 | * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | NUMLOCK| gherkin| | FN | | ||
| 11 | * |-----------------------------------------------------------------------------------------------------------+--------+--------+--------| | ||
| 12 | * | | 7 | 8 | 9 | | ||
| 13 | * | |--------+--------+--------| | ||
| 14 | * | 4x12 QWERTY LAYOUT | 4 | 5 | 6 | | ||
| 15 | * | |--------+--------+--------| | ||
| 16 | * | | 1 | 2 | 3 | | ||
| 17 | * | |--------+--------+--------| | ||
| 18 | * | | 0 | 0 | . | | ||
| 19 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 20 | */ | ||
| 21 | [QW75] = LAYOUT_ortho_5x15_wrapper( | ||
| 22 | _________________Num_Row_75________________, GHERKIN75, XXXXXXX, FUNCTION75, | ||
| 23 | _______________Qwerty_Row__0_______________, KC_KP_7, KC_KP_8, KC_KP_9, | ||
| 24 | _______________Qwerty_Row__1_______________, KC_KP_4, KC_KP_5, KC_KP_6, | ||
| 25 | _______________Qwerty_Row__2_______________, KC_KP_1, KC_KP_2, KC_KP_3, | ||
| 26 | KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, SUBTER75, KC_LSFT, KC_SPC, SUPRA75, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL, KC_KP_0, KC_KP_0, KC_KP_DOT | ||
| 27 | ), | ||
| 28 | |||
| 29 | /* Gherkin 75 | ||
| 30 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 31 | * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | NUMLOCK| qwerty | | FN | | ||
| 32 | * |-----------------------------------------------------------------------------------------------------------+--------+--------+--------| | ||
| 33 | * | | 7 | 8 | 9 | | ||
| 34 | * | |--------+--------+--------| | ||
| 35 | * | 4x12 GHERKIN LAYOUT | 4 | 5 | 6 | | ||
| 36 | * | |--------+--------+--------| | ||
| 37 | * | | 1 | 2 | 3 | | ||
| 38 | * | |--------+--------+--------| | ||
| 39 | * | | 0 | 0 | . | | ||
| 40 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 41 | */ | ||
| 42 | [GK75] = LAYOUT_ortho_5x15_wrapper( | ||
| 43 | _________________Num_Row_75________________, QWERTY75, XXXXXXX, FUNCTION75, | ||
| 44 | _______________GherkinLike_0_______________, KC_KP_7, KC_KP_8, KC_KP_9, | ||
| 45 | _______________GherkinLike_1_______________, KC_KP_4, KC_KP_5, KC_KP_6, | ||
| 46 | TD(TD_SFT_CAPS), SFT_T(KC_Z), KC_X, KC_C, LT(NUM75, KC_V), LT(ETC75, KC_B), KC_N, LT(DIR75, KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC), SFT_T(KC_ENT), KC_KP_1, KC_KP_2, KC_KP_3, | ||
| 47 | KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, NUMBER75, ETCETERA75, KC_SPC,DIRECTION75, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL, KC_KP_0, KC_KP_0, KC_KP_DOT | ||
| 48 | ), | ||
| 49 | |||
| 50 | /* SUBTER75 | ||
| 51 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 52 | * | SUBTER ROW 0 LAYOUT | | | | | ||
| 53 | * |-----------------------------------------------------------------------------------------------------------+--------+-----------------| | ||
| 54 | * | | / | * | - | | ||
| 55 | * | |--------+--------+--------| | ||
| 56 | * | 4x12 SUBTER LAYOUT | | | + | | ||
| 57 | * | |--------+--------+--------| | ||
| 58 | * | | | | ENTER | | ||
| 59 | * | |--------+--------+--------| | ||
| 60 | * | | | | | | ||
| 61 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 62 | */ | ||
| 63 | [SUB75] = LAYOUT_ortho_5x15_wrapper( | ||
| 64 | _______________SUBTER_Row__0_______________, _______, _______, _______, | ||
| 65 | _______________SUBTER_Row__0_______________, KC_PSLS, KC_PAST, KC_PMNS, | ||
| 66 | _______________SUBTER_Row__1_______________, _______, _______, KC_PPLS, | ||
| 67 | _______________SUBTER_Row__2_______________, _______, _______, KC_PENT, | ||
| 68 | _______, _______, GHERKIN75, _______, _______, _______, KC_ENT, KC_LSFT, _______, _______, _______, _______, _______, _______, _______ | ||
| 69 | ), | ||
| 70 | |||
| 71 | /* SUPRA75 | ||
| 72 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 73 | * | | | | | | | | | | | | | | | | | ||
| 74 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| | ||
| 75 | * | | | | | | ||
| 76 | * | |--------+--------+--------| | ||
| 77 | * | 4x12 SUPRA LAYOUT | | | | | ||
| 78 | * | |--------+--------+--------| | ||
| 79 | * | | | | | | ||
| 80 | * | |--------+--------+--------| | ||
| 81 | * | | | | | | ||
| 82 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 83 | */ | ||
| 84 | [SUP75] = LAYOUT_ortho_5x15_wrapper( | ||
| 85 | _________________BLANK_75__________________, | ||
| 86 | ________________SUPRA_Row_0________________, _______, _______, _______, | ||
| 87 | ________________SUPRA_Row_1________________, _______, _______, _______, | ||
| 88 | ________________SUPRA_Row_2________________, _______, _______, _______, | ||
| 89 | _________________BLANK_75__________________ | ||
| 90 | ), | ||
| 91 | |||
| 92 | /* Gherkin 75 Numbers | ||
| 93 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 94 | * | | | | | | | | | | | | | | | | | ||
| 95 | * |-----------------------------------------------------------------------------------------------------------|--------+-----------------| | ||
| 96 | * | | / | * | - | | ||
| 97 | * | |--------+--------+--------| | ||
| 98 | * | 4x12 NUMBERS LAYOUT | | | + | | ||
| 99 | * | |--------+--------+--------| | ||
| 100 | * | | | | ENTER | | ||
| 101 | * | |--------+--------+--------| | ||
| 102 | * | | | | | | ||
| 103 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 104 | */ | ||
| 105 | [NUM75] = LAYOUT_ortho_5x15_wrapper( | ||
| 106 | _________________BLANK_75__________________, | ||
| 107 | _______________NUMBERS_Row_0_______________, KC_PSLS, KC_PAST, KC_PMNS, | ||
| 108 | _______________NUMBERS_Row_1_______________, _______, _______, KC_PPLS, | ||
| 109 | _______________NUMBERS_Row_2_______________, _______, _______, KC_PENT, | ||
| 110 | _______________NUMBERS_Row_3_______________, _______, _______, _______ | ||
| 111 | ), | ||
| 112 | |||
| 113 | /* Gherkin 75 Et Cetera | ||
| 114 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 115 | * | | | | | | | | | | | | | | | | | ||
| 116 | * |-----------------------------------------------------------------------------------------------------------|--------+-----------------| | ||
| 117 | * | | | | | | ||
| 118 | * | |--------+--------+--------| | ||
| 119 | * | 4x12 ETCETERA LAYOUT | | | | | ||
| 120 | * | |--------+--------+--------| | ||
| 121 | * | | | | | | ||
| 122 | * | |--------+--------+--------| | ||
| 123 | * | | | | | | ||
| 124 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 125 | */ | ||
| 126 | [ETC75] = LAYOUT_ortho_5x15_wrapper( | ||
| 127 | _________________BLANK_75__________________, | ||
| 128 | ______________ETCETERA_Row__0______________, _______, _______, _______, | ||
| 129 | ______________ETCETERA_Row__1______________, _______, _______, _______, | ||
| 130 | ______________ETCETERA_Row__2______________, _______, _______, _______, | ||
| 131 | ______________ETCETERA_Row__3______________, _______, _______, _______ | ||
| 132 | ), | ||
| 133 | |||
| 134 | /* Gherkin 75 Directional Keys | ||
| 135 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 136 | * | | | | | | | | | | | | | | | | | ||
| 137 | * |-----------------------------------------------------------------------------------------------------------|--------+-----------------| | ||
| 138 | * | | | | | | ||
| 139 | * | |--------+--------+--------| | ||
| 140 | * | 4x12 DIRECTIONAL LAYOUT | | | | | ||
| 141 | * | |--------+--------+--------| | ||
| 142 | * | | | | | | ||
| 143 | * | |--------+--------+--------| | ||
| 144 | * | | | | | | ||
| 145 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 146 | */ | ||
| 147 | [DIR75] = LAYOUT_ortho_5x15_wrapper( | ||
| 148 | _________________BLANK_75__________________, | ||
| 149 | _____________DIRECTIONS_Row__0_____________, _______, _______, _______, | ||
| 150 | _____________DIRECTIONS_Row__1_____________, _______, _______, _______, | ||
| 151 | _____________DIRECTIONS_Row__2_____________, _______, _______, _______, | ||
| 152 | _______, _______, QWERTY75, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 153 | ), | ||
| 154 | |||
| 155 | |||
| 156 | /* FUNCTION 75 | ||
| 157 | * .--------------------------------------------------------------------------------------------------------------------------------------. | ||
| 158 | * | | | | | | | | | | | | | | | | | ||
| 159 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| | ||
| 160 | * | | | | | | | | | | | | | | | | | ||
| 161 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 162 | * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | | | WHEEL+ | | ||
| 163 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 164 | * | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | | | MOUS U | WHEEL- | | ||
| 165 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 166 | * | | | | | | | MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | | ||
| 167 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 168 | */ | ||
| 169 | [FN75] = LAYOUT_ortho_5x15_wrapper( | ||
| 170 | _________________BLANK_75__________________, | ||
| 171 | _________________BLANK_75__________________, | ||
| 172 | KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, KC_WH_U, | ||
| 173 | RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, _______, _______, KC_MS_U, KC_WH_D, | ||
| 174 | _______, _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R | ||
| 175 | ), | ||
| 176 | }; | ||
diff --git a/layouts/community/ortho_5x15/wanleg/rules.mk b/layouts/community/ortho_5x15/wanleg/rules.mk new file mode 100644 index 000000000..e36226fb2 --- /dev/null +++ b/layouts/community/ortho_5x15/wanleg/rules.mk | |||
| @@ -0,0 +1 @@ | |||
| SWAP_HANDS_ENABLE = no \ No newline at end of file | |||
diff --git a/users/wanleg/config.h b/users/wanleg/config.h new file mode 100644 index 000000000..22073449b --- /dev/null +++ b/users/wanleg/config.h | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | #ifndef USERSPACE_CONFIG_H | ||
| 2 | #define USERSPACE_CONFIG_H | ||
| 3 | |||
| 4 | #define PREVENT_STUCK_MODIFIERS | ||
| 5 | |||
| 6 | //TAPPING_TERM | ||
| 7 | #ifdef TAP_DANCE_ENABLE | ||
| 8 | #define TAPPING_TERM 200 | ||
| 9 | #endif | ||
| 10 | |||
| 11 | //Mousekey Settings | ||
| 12 | #ifdef MOUSEKEY_ENABLE | ||
| 13 | #define MOUSEKEY_INTERVAL 16 | ||
| 14 | #define MOUSEKEY_DELAY 0 | ||
| 15 | #define MOUSEKEY_TIME_TO_MAX 60 | ||
| 16 | #define MOUSEKEY_MAX_SPEED 7 | ||
| 17 | #define MOUSEKEY_WHEEL_DELAY 0 | ||
| 18 | #endif | ||
| 19 | |||
| 20 | // Disable action_get_macro and fn_actions, since we don't use these | ||
| 21 | // and it saves on space in the firmware. | ||
| 22 | #ifndef NO_DEBUG | ||
| 23 | #define NO_DEBUG | ||
| 24 | #endif // !NO_DEBUG | ||
| 25 | #if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE) | ||
| 26 | #define NO_PRINT | ||
| 27 | #endif // !NO_PRINT | ||
| 28 | #define NO_ACTION_MACRO | ||
| 29 | #define NO_ACTION_FUNCTION | ||
| 30 | #define NO_ACTION_ONESHOT | ||
| 31 | |||
| 32 | #endif // !USERSPACE_CONFIG_H | ||
diff --git a/users/wanleg/readme.md b/users/wanleg/readme.md new file mode 100644 index 000000000..f687b92f4 --- /dev/null +++ b/users/wanleg/readme.md | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | Copyright 2018 Brian Fong @wanleg | ||
| 2 | |||
| 3 | This program is free software: you can redistribute it and/or modify | ||
| 4 | it under the terms of the GNU General Public License as published by | ||
| 5 | the Free Software Foundation, either version 2 of the License, or | ||
| 6 | (at your option) any later version. | ||
| 7 | |||
| 8 | This program is distributed in the hope that it will be useful, | ||
| 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | GNU General Public License for more details. | ||
| 12 | |||
| 13 | You should have received a copy of the GNU General Public License | ||
| 14 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
diff --git a/users/wanleg/rules.mk b/users/wanleg/rules.mk new file mode 100644 index 000000000..8dcc911ce --- /dev/null +++ b/users/wanleg/rules.mk | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | ifeq ($(strip $(KEYBOARD)), lets_split_rev2) | ||
| 2 | SRC += ../../keyboards/lets_split/lets_split.c | ||
| 3 | endif | ||
| 4 | |||
| 5 | SRC += wanleg.c tapdances.c | ||
| 6 | |||
| 7 | ifndef TAP_DANCE_ENABLE | ||
| 8 | TAP_DANCE_ENABLE = yes | ||
| 9 | endif | ||
| 10 | |||
| 11 | ifndef MOUSEKEY_ENABLE | ||
| 12 | MOUSEKEY_ENABLE = yes | ||
| 13 | endif | ||
| 14 | |||
| 15 | #If using a ProMicro and it has the QMK DFU bootloader instead of Caterina, | ||
| 16 | #run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed | ||
| 17 | ifeq ($(strip $(dfu)), qmk) | ||
| 18 | BOOTLOADER = qmk-dfu | ||
| 19 | endif | ||
diff --git a/users/wanleg/tapdances.c b/users/wanleg/tapdances.c new file mode 100644 index 000000000..318810b1b --- /dev/null +++ b/users/wanleg/tapdances.c | |||
| @@ -0,0 +1,110 @@ | |||
| 1 | //Tap Dance Settings | ||
| 2 | #include "wanleg.h" | ||
| 3 | |||
| 4 | ///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION START ///// | ||
| 5 | ///// (no need to edit this section) ///// | ||
| 6 | //Enums used to clearly convey the state of the tap dance | ||
| 7 | enum { | ||
| 8 | SINGLE_TAP = 1, | ||
| 9 | SINGLE_HOLD = 2, | ||
| 10 | DOUBLE_TAP = 3, | ||
| 11 | DOUBLE_HOLD = 4, | ||
| 12 | DOUBLE_SINGLE_TAP = 5 //send SINGLE_TAP twice - NOT DOUBLE_TAP | ||
| 13 | // Add more enums here if you want for triple, quadruple, etc. | ||
| 14 | }; | ||
| 15 | |||
| 16 | typedef struct { | ||
| 17 | bool is_press_action; | ||
| 18 | int state; | ||
| 19 | } tap; | ||
| 20 | |||
| 21 | int cur_dance (qk_tap_dance_state_t *state) { | ||
| 22 | if (state->count == 1) { | ||
| 23 | //If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP | ||
| 24 | if (state->interrupted || !state->pressed) return SINGLE_TAP; | ||
| 25 | if (state->interrupted) return SINGLE_TAP; | ||
| 26 | else return SINGLE_HOLD; | ||
| 27 | } | ||
| 28 | //If count = 2, and it has been interrupted - assume that user is trying to type the letter associated | ||
| 29 | //with single tap. | ||
| 30 | else if (state->count == 2) { | ||
| 31 | if (state->interrupted) return DOUBLE_SINGLE_TAP; | ||
| 32 | else if (state->pressed) return DOUBLE_HOLD; | ||
| 33 | else return DOUBLE_TAP; | ||
| 34 | } | ||
| 35 | else return 6; //magic number. At some point this method will expand to work for more presses | ||
| 36 | } | ||
| 37 | ///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION END ///// | ||
| 38 | ///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION START ///// | ||
| 39 | //instantialize an instance of 'tap' for the 'ENT' tap dance. | ||
| 40 | static tap ENTtap_state = { | ||
| 41 | .is_press_action = true, | ||
| 42 | .state = 0 | ||
| 43 | }; | ||
| 44 | |||
| 45 | void ENT_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
| 46 | ENTtap_state.state = cur_dance(state); | ||
| 47 | switch (ENTtap_state.state) { | ||
| 48 | case SINGLE_TAP: register_code(KC_SPC); break; | ||
| 49 | case SINGLE_HOLD: register_code(KC_LSFT); break; | ||
| 50 | case DOUBLE_TAP: register_code(KC_ENT); break; | ||
| 51 | case DOUBLE_HOLD: register_code(KC_NO); break; // setting double hold to do nothing (change this if you want) | ||
| 52 | case DOUBLE_SINGLE_TAP: register_code(KC_SPC); unregister_code(KC_SPC); register_code(KC_SPC); | ||
| 53 | //Last case is for fast typing. Assuming your key is `f`: | ||
| 54 | //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`. | ||
| 55 | //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms. | ||
| 56 | } | ||
| 57 | } | ||
| 58 | |||
| 59 | void ENT_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 60 | switch (ENTtap_state.state) { | ||
| 61 | case SINGLE_TAP: unregister_code(KC_SPC); break; | ||
| 62 | case SINGLE_HOLD: unregister_code(KC_LSFT); break; | ||
| 63 | case DOUBLE_TAP: unregister_code(KC_ENT); break; | ||
| 64 | case DOUBLE_HOLD: unregister_code(KC_NO); | ||
| 65 | case DOUBLE_SINGLE_TAP: unregister_code(KC_SPC); | ||
| 66 | } | ||
| 67 | ENTtap_state.state = 0; | ||
| 68 | } | ||
| 69 | |||
| 70 | //instanalize an instance of 'tap' for the 'DEL' tap dance. | ||
| 71 | static tap DELtap_state = { | ||
| 72 | .is_press_action = true, | ||
| 73 | .state = 0 | ||
| 74 | }; | ||
| 75 | |||
| 76 | void DEL_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
| 77 | DELtap_state.state = cur_dance(state); | ||
| 78 | switch (DELtap_state.state) { | ||
| 79 | case SINGLE_TAP: register_code(KC_BSPC); break; | ||
| 80 | case SINGLE_HOLD: register_code(KC_LCTL); break; | ||
| 81 | case DOUBLE_TAP: register_code(KC_DEL); break; | ||
| 82 | case DOUBLE_HOLD: register_code(KC_NO); break; | ||
| 83 | case DOUBLE_SINGLE_TAP: register_code(KC_BSPC); unregister_code(KC_BSPC); register_code(KC_BSPC); | ||
| 84 | } | ||
| 85 | } | ||
| 86 | |||
| 87 | void DEL_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 88 | switch (DELtap_state.state) { | ||
| 89 | case SINGLE_TAP: unregister_code(KC_BSPC); break; | ||
| 90 | case SINGLE_HOLD: unregister_code(KC_LCTL); break; | ||
| 91 | case DOUBLE_TAP: unregister_code(KC_DEL); break; | ||
| 92 | case DOUBLE_HOLD: unregister_code(KC_NO); | ||
| 93 | case DOUBLE_SINGLE_TAP: unregister_code(KC_BSPC); | ||
| 94 | } | ||
| 95 | DELtap_state.state = 0; | ||
| 96 | } | ||
| 97 | ///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION END ///// | ||
| 98 | |||
| 99 | //Tap Dance Definitions | ||
| 100 | //THIS SECTION HAS TO BE AT THE END OF THE TAP DANCE SECTION | ||
| 101 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 102 | [TD_SFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS) | ||
| 103 | // Other declarations would go here, separated by commas, if you have them | ||
| 104 | ,[TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC) | ||
| 105 | ,[ENT_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ENT_finished, ENT_reset) | ||
| 106 | ,[DEL_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, DEL_finished, DEL_reset) | ||
| 107 | }; | ||
| 108 | |||
| 109 | //In Layer declaration, add tap dance item in place of a key code | ||
| 110 | //TD(TD_SFT_CAPS) \ No newline at end of file | ||
diff --git a/users/wanleg/wanleg.c b/users/wanleg/wanleg.c new file mode 100644 index 000000000..0175ae201 --- /dev/null +++ b/users/wanleg/wanleg.c | |||
| @@ -0,0 +1,158 @@ | |||
| 1 | #include "wanleg.h" | ||
| 2 | |||
| 3 | // Defines actions for my global custom keycodes. Defined in wanleg.h file | ||
| 4 | // Then runs the _keymap's record handier if not processed here | ||
| 5 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 6 | switch (keycode) { | ||
| 7 | case QWERTY: | ||
| 8 | if (record->event.pressed) { | ||
| 9 | print("mode just switched to qwerty and this is a huge string\n"); | ||
| 10 | set_single_persistent_default_layer(_QW); | ||
| 11 | } | ||
| 12 | return false; | ||
| 13 | break; | ||
| 14 | case GHERKIN: | ||
| 15 | if (record->event.pressed) { | ||
| 16 | set_single_persistent_default_layer(_GK); | ||
| 17 | } | ||
| 18 | return false; | ||
| 19 | break; | ||
| 20 | case gGHERKIN: | ||
| 21 | if (record->event.pressed) { | ||
| 22 | set_single_persistent_default_layer(gGK); | ||
| 23 | } | ||
| 24 | return false; | ||
| 25 | break; | ||
| 26 | case ONEHAND: | ||
| 27 | if (record->event.pressed) { | ||
| 28 | set_single_persistent_default_layer(ONE); | ||
| 29 | } | ||
| 30 | return false; | ||
| 31 | break; | ||
| 32 | case QWERTY75: | ||
| 33 | if (record->event.pressed) { | ||
| 34 | set_single_persistent_default_layer(QW75); | ||
| 35 | } | ||
| 36 | return false; | ||
| 37 | break; | ||
| 38 | case GHERKIN75: | ||
| 39 | if (record->event.pressed) { | ||
| 40 | set_single_persistent_default_layer(GK75); | ||
| 41 | } | ||
| 42 | return false; | ||
| 43 | break; | ||
| 44 | case SUBTER: | ||
| 45 | if (record->event.pressed) { | ||
| 46 | layer_on(SUB); | ||
| 47 | } else { | ||
| 48 | layer_off(SUB); | ||
| 49 | } | ||
| 50 | return false; | ||
| 51 | break; | ||
| 52 | case SUPRA: | ||
| 53 | if (record->event.pressed) { | ||
| 54 | layer_on(SUP); | ||
| 55 | } else { | ||
| 56 | layer_off(SUP); | ||
| 57 | } | ||
| 58 | return false; | ||
| 59 | break; | ||
| 60 | case NUMBER: | ||
| 61 | if (record->event.pressed) { | ||
| 62 | layer_on(NUM); | ||
| 63 | } else { | ||
| 64 | layer_off(NUM); | ||
| 65 | } | ||
| 66 | return false; | ||
| 67 | break; | ||
| 68 | case DIRECTION: | ||
| 69 | if (record->event.pressed) { | ||
| 70 | layer_on(DIR); | ||
| 71 | } else { | ||
| 72 | layer_off(DIR); | ||
| 73 | } | ||
| 74 | return false; | ||
| 75 | break; | ||
| 76 | case ETCETERA: | ||
| 77 | if (record->event.pressed) { | ||
| 78 | layer_on(ETC); | ||
| 79 | } else { | ||
| 80 | layer_off(ETC); | ||
| 81 | } | ||
| 82 | return false; | ||
| 83 | break; | ||
| 84 | case gNUMBER: | ||
| 85 | if (record->event.pressed) { | ||
| 86 | layer_on(gNUM); | ||
| 87 | } else { | ||
| 88 | layer_off(gNUM); | ||
| 89 | } | ||
| 90 | return false; | ||
| 91 | break; | ||
| 92 | case gDIRECTION: | ||
| 93 | if (record->event.pressed) { | ||
| 94 | layer_on(gDIR); | ||
| 95 | } else { | ||
| 96 | layer_off(gDIR); | ||
| 97 | } | ||
| 98 | return false; | ||
| 99 | break; | ||
| 100 | case gETCETERA: | ||
| 101 | if (record->event.pressed) { | ||
| 102 | layer_on(gETC); | ||
| 103 | } else { | ||
| 104 | layer_off(gETC); | ||
| 105 | } | ||
| 106 | return false; | ||
| 107 | break; | ||
| 108 | case SUBTER75: | ||
| 109 | if (record->event.pressed) { | ||
| 110 | layer_on(SUB75); | ||
| 111 | } else { | ||
| 112 | layer_off(SUB75); | ||
| 113 | } | ||
| 114 | return false; | ||
| 115 | break; | ||
| 116 | case SUPRA75: | ||
| 117 | if (record->event.pressed) { | ||
| 118 | layer_on(SUP75); | ||
| 119 | } else { | ||
| 120 | layer_off(SUP75); | ||
| 121 | } | ||
| 122 | return false; | ||
| 123 | break; | ||
| 124 | case NUMBER75: | ||
| 125 | if (record->event.pressed) { | ||
| 126 | layer_on(NUM75); | ||
| 127 | } else { | ||
| 128 | layer_off(NUM75); | ||
| 129 | } | ||
| 130 | return false; | ||
| 131 | break; | ||
| 132 | case DIRECTION75: | ||
| 133 | if (record->event.pressed) { | ||
| 134 | layer_on(DIR75); | ||
| 135 | } else { | ||
| 136 | layer_off(DIR75); | ||
| 137 | } | ||
| 138 | return false; | ||
| 139 | break; | ||
| 140 | case ETCETERA75: | ||
| 141 | if (record->event.pressed) { | ||
| 142 | layer_on(ETC75); | ||
| 143 | } else { | ||
| 144 | layer_off(ETC75); | ||
| 145 | } | ||
| 146 | return false; | ||
| 147 | break; | ||
| 148 | case FUNCTION75: | ||
| 149 | if (record->event.pressed) { | ||
| 150 | layer_on(FN75); | ||
| 151 | } else { | ||
| 152 | layer_off(FN75); | ||
| 153 | } | ||
| 154 | return false; | ||
| 155 | break; | ||
| 156 | } | ||
| 157 | return true; | ||
| 158 | } | ||
diff --git a/users/wanleg/wanleg.h b/users/wanleg/wanleg.h new file mode 100644 index 000000000..da14dcdf5 --- /dev/null +++ b/users/wanleg/wanleg.h | |||
| @@ -0,0 +1,308 @@ | |||
| 1 | #ifndef USERSPACE | ||
| 2 | #define USERSPACE | ||
| 3 | |||
| 4 | #include "quantum.h" | ||
| 5 | |||
| 6 | // Define layer names and order | ||
| 7 | #ifdef KEYBOARD_gherkin | ||
| 8 | enum userspace_layers { | ||
| 9 | gGK = 0, | ||
| 10 | gNUM, | ||
| 11 | gDIR, | ||
| 12 | gETC, | ||
| 13 | _GK, | ||
| 14 | _QW, | ||
| 15 | QW75, | ||
| 16 | GK75, | ||
| 17 | ONE, | ||
| 18 | SUB, | ||
| 19 | SUP, | ||
| 20 | NUM, | ||
| 21 | DIR, | ||
| 22 | ETC, | ||
| 23 | SUB75, | ||
| 24 | SUP75, | ||
| 25 | NUM75, | ||
| 26 | DIR75, | ||
| 27 | ETC75, | ||
| 28 | FN75 | ||
| 29 | }; | ||
| 30 | #elif KEYBOARD_xd75 | ||
| 31 | enum userspace_layers { | ||
| 32 | GK75 = 0, | ||
| 33 | QW75, | ||
| 34 | SUB75, | ||
| 35 | SUP75, | ||
| 36 | NUM75, | ||
| 37 | DIR75, | ||
| 38 | ETC75, | ||
| 39 | FN75, | ||
| 40 | gGK, | ||
| 41 | _GK, | ||
| 42 | _QW, | ||
| 43 | ONE, | ||
| 44 | SUB, | ||
| 45 | SUP, | ||
| 46 | NUM, | ||
| 47 | DIR, | ||
| 48 | ETC, | ||
| 49 | gNUM, | ||
| 50 | gDIR, | ||
| 51 | gETC, | ||
| 52 | }; | ||
| 53 | #else | ||
| 54 | enum userspace_layers { | ||
| 55 | _GK = 0, | ||
| 56 | _QW, | ||
| 57 | QW75, | ||
| 58 | GK75, | ||
| 59 | gGK, | ||
| 60 | ONE, | ||
| 61 | SUB, | ||
| 62 | SUP, | ||
| 63 | NUM, | ||
| 64 | DIR, | ||
| 65 | ETC, | ||
| 66 | gNUM, | ||
| 67 | gDIR, | ||
| 68 | gETC, | ||
| 69 | SUB75, | ||
| 70 | SUP75, | ||
| 71 | NUM75, | ||
| 72 | DIR75, | ||
| 73 | ETC75, | ||
| 74 | FN75 | ||
| 75 | }; | ||
| 76 | #endif | ||
| 77 | |||
| 78 | enum userspace_custom_keycodes { | ||
| 79 | gGHERKIN = SAFE_RANGE, | ||
| 80 | GHERKIN, | ||
| 81 | QWERTY, | ||
| 82 | QWERTY75, | ||
| 83 | GHERKIN75, | ||
| 84 | ONEHAND, | ||
| 85 | SUBTER, | ||
| 86 | SUPRA, | ||
| 87 | NUMBER, | ||
| 88 | DIRECTION, | ||
| 89 | ETCETERA, | ||
| 90 | gNUMBER, | ||
| 91 | gDIRECTION, | ||
| 92 | gETCETERA, | ||
| 93 | SUBTER75, | ||
| 94 | SUPRA75, | ||
| 95 | NUMBER75, | ||
| 96 | DIRECTION75, | ||
| 97 | ETCETERA75, | ||
| 98 | FUNCTION75 | ||
| 99 | |||
| 100 | }; | ||
| 101 | |||
| 102 | //Tap Dance Declarations (list of my tap dance configurations) | ||
| 103 | #ifdef TAP_DANCE_ENABLE | ||
| 104 | enum { | ||
| 105 | TD_SFT_CAPS = 0 | ||
| 106 | ,TD_Q_ESC | ||
| 107 | ,ENT_TAP_DANCE | ||
| 108 | ,DEL_TAP_DANCE | ||
| 109 | }; | ||
| 110 | #endif | ||
| 111 | |||
| 112 | // Since our quirky block definitions are basically a list of comma separated | ||
| 113 | // arguments, we need a wrapper in order for these definitions to be | ||
| 114 | // expanded before being used as arguments to the LAYOUT_xxx macro. | ||
| 115 | #if (!defined(LAYOUT) && defined(KEYMAP)) | ||
| 116 | #define LAYOUT KEYMAP | ||
| 117 | #endif | ||
| 118 | |||
| 119 | #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 120 | #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 121 | #define LAYOUT_ortho_3x10_wrapper(...) LAYOUT_ortho_3x10(__VA_ARGS__) | ||
| 122 | #define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) | ||
| 123 | #define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__) | ||
| 124 | |||
| 125 | // Blocks for each of the major keyboard layouts | ||
| 126 | // Organized so we can quickly adapt and modify all of them | ||
| 127 | // at once, rather than for each keyboard, one at a time. | ||
| 128 | // And this allows for much cleaner blocks in the keymaps. | ||
| 129 | |||
| 130 | // NOTE: These are all the same length. If you do a search/replace | ||
| 131 | // then you need to add/remove underscores to keep the | ||
| 132 | // lengths consistent. | ||
| 133 | |||
| 134 | |||
| 135 | /* Pure Gherkin | ||
| 136 | * .-----------------------------------------------------------------------------------------. | ||
| 137 | * | Q//ESC | W | E | R | T | Y | U | I | O | P | | ||
| 138 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 139 | * | A | S | D | F | G | H | J | K | L | SPACE | | ||
| 140 | * | | | | | | | | | |SFThold | | ||
| 141 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 142 | * | Z | X | C | V/gNUM | B/gETC | N | M/gDIR | ,/GUI | ./ALT | BKSC | | ||
| 143 | * | SFThold| | | | | | | | |CTRLhold| | ||
| 144 | * '-----------------------------------------------------------------------------------------' | ||
| 145 | */ | ||
| 146 | #define _______________Gherkin_Row_0_______________ TD(TD_Q_ESC), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P | ||
| 147 | #define _______________Gherkin_Row_1_______________ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SFT_T(KC_SPC) | ||
| 148 | #define _______________Gherkin_Row_2_______________ SFT_T(KC_Z), KC_X, KC_C, LT(gNUM,KC_V), LT(gETC,KC_B), KC_N, LT(gDIR,KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC) | ||
| 149 | |||
| 150 | /* Directional Keys | ||
| 151 | * .-----------------------------------------------------------------------------------------. | ||
| 152 | * | TAB | up | | INS | CTRL | SHIFT | PgUp | HOME | - | = | | ||
| 153 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 154 | * | left | down | right | PrScr | SHIFT | CTRL | PgDn | END | [ | ] | | ||
| 155 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 156 | * | P-Brk | | | | | | | RGUI | ALT | / | | ||
| 157 | * '-----------------------------------------------------------------------------------------' | ||
| 158 | */ | ||
| 159 | #define _______________Gherkin_DIR_0_______________ KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL | ||
| 160 | #define _______________Gherkin_DIR_1_______________ KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC | ||
| 161 | #define _______________Gherkin_DIR_2_______________ KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_LALT, KC_SLSH | ||
| 162 | |||
| 163 | /* Numbers | ||
| 164 | * .-----------------------------------------------------------------------------------------. | ||
| 165 | * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | ||
| 166 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 167 | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | ||
| 168 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 169 | * | F11 | F12 | | | | ENTER | SHIFT | GUI | ./ALT | BKSC | | ||
| 170 | * | | | | | | | | | |CTRLhold| | ||
| 171 | * '-----------------------------------------------------------------------------------------' | ||
| 172 | */ | ||
| 173 | #define _______________Gherkin_NUM_0_______________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 | ||
| 174 | #define _______________Gherkin_NUM_1_______________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 175 | #define _______________Gherkin_NUM_2_______________ KC_F11, KC_F12, _______,_______, _______, KC_ENT, KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC) | ||
| 176 | |||
| 177 | /* Et Cetera | ||
| 178 | * .-----------------------------------------------------------------------------------------. | ||
| 179 | * | ` | mUP | | | RESET | SHIFT | mScrUp | mScrDn | | \ | | ||
| 180 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 181 | * | mLeft | mDown | mRight | | SHIFT | mBtn3 | mBtn1 | mBtn2 | ; | ' | | ||
| 182 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 183 | * | Sft//Cp| | | | | C-A-D | mScrL | mScrR | ALT | DEL | | ||
| 184 | * '-----------------------------------------------------------------------------------------' | ||
| 185 | */ | ||
| 186 | #define _______________Gherkin_ETC_0_______________ KC_GRV, KC_MS_U, _______,_______, RESET, KC_RSFT, KC_WH_U, KC_WH_D, _______, KC_BSLS | ||
| 187 | #define _______________Gherkin_ETC_1_______________ KC_MS_L, KC_MS_D, KC_MS_R,_______, KC_LSFT, KC_BTN3, KC_BTN1, KC_BTN2, KC_SCLN, KC_QUOT | ||
| 188 | #define _______________Gherkin_ETC_2_______________ TD(TD_SFT_CAPS),_______, _______,_______, _______, LALT(LCTL(KC_DEL)), KC_WH_L, KC_WH_R, KC_LALT, KC_DEL | ||
| 189 | |||
| 190 | /* Gherkin-Like | ||
| 191 | * .-----------------------------------------------------------------------------------------------------------. | ||
| 192 | * | ESC | Q//ESC | W | E | R | T | Y | U | I | O | P | BACKSP | | ||
| 193 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 194 | * | TAB | A | S | D | F | G | H | J | K | L | SPACE | ' | | ||
| 195 | * | | | | | | | | | | |SFThold | | | ||
| 196 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 197 | * |SFT/CAPS| Z | X | C | V/NUM | B/ETC | N | M/DIR | ,/GUI | ./ALT | BKSC | ENT/SFT| | ||
| 198 | * | |SFThold | | | | | | | | |CTRLhold| | | ||
| 199 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 200 | * | LCTRL | LGUI | ALT | ONEHAND| NUM | ETC | SPACE | DIR | RGUI | ALT | DEL | CTRL | | ||
| 201 | * '-----------------------------------------------------------------------------------------------------------' | ||
| 202 | */ | ||
| 203 | #define _______________GherkinLike_0_______________ KC_ESC, _______________Gherkin_Row_0_______________, KC_BSPC | ||
| 204 | #define _______________GherkinLike_1_______________ KC_TAB, _______________Gherkin_Row_1_______________, KC_QUOT | ||
| 205 | #define _______________GherkinLike_2_______________ TD(TD_SFT_CAPS), SFT_T(KC_Z), KC_X, KC_C, LT(NUM, KC_V),LT(ETC, KC_B),KC_N, LT(DIR, KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC), SFT_T(KC_ENT) | ||
| 206 | #define _______________GherkinLike_3_______________ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL | ||
| 207 | #define _______________GherkinLike_3_OneHand_______ KC_LCTL, KC_LGUI, KC_LALT, ONEHAND, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL | ||
| 208 | |||
| 209 | /* Qwerty | ||
| 210 | * .-------------------------------------------------------------------------------------. | ||
| 211 | * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | | ||
| 212 | * |-------+------+------+------+------+-------------+------+------+------+------+-------| | ||
| 213 | * | Tab | A | S | D | F | G | H | J | K | L | ; | ' | | ||
| 214 | * |-------+------+------+------+------+------|------+------+------+------+------+-------| | ||
| 215 | * |Sft/Cps| Z | X | C | V | B | N | M | , | . | / |ENT/SFT| | ||
| 216 | * |-------+------+------+------+------+------+------+------+------+------+------+-------| | ||
| 217 | * | LCTRL | LGUI | ALT | ALT | SUB | SHIFT| SPACE| SUP | RGUI | RALT | DEL | CTRL | | ||
| 218 | * '-------------------------------------------------------------------------------------' | ||
| 219 | */ | ||
| 220 | #define _______________Qwerty_Row__0_______________ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC | ||
| 221 | #define _______________Qwerty_Row__1_______________ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT | ||
| 222 | #define _______________Qwerty_Row__2_______________ TD(TD_SFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT) | ||
| 223 | #define _______________Qwerty_Row__3_______________ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, SUBTER, KC_LSFT, KC_SPC, SUPRA, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL | ||
| 224 | |||
| 225 | /* SUPRA | ||
| 226 | * .-----------------------------------------------------------------------------------------------------------. | ||
| 227 | * | RESET | TAB | up | | INS | CTRL | SHIFT | PgUp | Home | - | = | DEL | | ||
| 228 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 229 | * | | left | down | right | PrScr | SHIFT | CTRL | PgDn | End | [ | ] | \ | | ||
| 230 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 231 | * | | P-Brk | | | | | | | RGUI | ALT | | | | ||
| 232 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 233 | * | | | | | | | | | | | | | | ||
| 234 | * '-----------------------------------------------------------------------------------------------------------' | ||
| 235 | */ | ||
| 236 | #define ________________SUPRA_Row_0________________ RESET, KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_DEL | ||
| 237 | #define ________________SUPRA_Row_1________________ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC, KC_BSLS | ||
| 238 | #define ________________SUPRA_Row_2________________ _______, KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, _______, _______ | ||
| 239 | #define ________________SUPRA_Row_3________________ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 240 | |||
| 241 | /* SUBTER | ||
| 242 | * .-----------------------------------------------------------------------------------------------------------. | ||
| 243 | * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | DEL | | ||
| 244 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 245 | * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | ||
| 246 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 247 | * | | F11 | F12 | | | | | | RGUI | ./ALT | BKSC | | | ||
| 248 | * | | | | | | | | | | |CTRLhold| | | ||
| 249 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 250 | * | | | gherkin| | | | ENTER | SHIFT | | | | | | ||
| 251 | * '-----------------------------------------------------------------------------------------------------------' | ||
| 252 | */ | ||
| 253 | #define _______________SUBTER_Row__0_______________ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL | ||
| 254 | #define _______________SUBTER_Row__1_______________ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______ | ||
| 255 | #define _______________SUBTER_Row__2_______________ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_RGUI,ALT_T(KC_DOT), CTL_T(KC_BSPC), _______ | ||
| 256 | #define _______________SUBTER_Row__3_______________ _______, _______, GHERKIN, _______, _______, _______, KC_ENT, KC_LSFT, _______,_______, _______, _______ | ||
| 257 | |||
| 258 | /* Gherkin Numbers | ||
| 259 | * .-----------------------------------------------------------------------------------------------------------. | ||
| 260 | * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | DEL | | ||
| 261 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 262 | * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | ||
| 263 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 264 | * | | F11 | F12 | | | | ENTER | SHIFT | RGUI | ./ALT | BKSC | | | ||
| 265 | * | | | | | | | | | | |CTRLhold| | | ||
| 266 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 267 | * | | | | | | | ENTER | SHIFT | RGUI | | | | | ||
| 268 | * '-----------------------------------------------------------------------------------------------------------' | ||
| 269 | */ | ||
| 270 | #define _______________NUMBERS_Row_0_______________ _______, _______________Gherkin_NUM_0_______________, KC_DEL | ||
| 271 | #define _______________NUMBERS_Row_1_______________ _______, _______________Gherkin_NUM_1_______________, _______ | ||
| 272 | #define _______________NUMBERS_Row_2_______________ _______, _______________Gherkin_NUM_2_______________, _______ | ||
| 273 | #define _______________NUMBERS_Row_3_______________ _______, _______, _______, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, _______, _______, _______ | ||
| 274 | |||
| 275 | |||
| 276 | /* Gherkin Directional Keys | ||
| 277 | * .-----------------------------------------------------------------------------------------------------------. | ||
| 278 | * | | TAB | up | | INS | CTRL | SHIFT | PgUp | HOME | - | = | DEL | | ||
| 279 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 280 | * | | left | down | right | PrScr | SHIFT | CTRL | PgDn | END | [ | ] | | | ||
| 281 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 282 | * | | P-Brk | | | | | | | RGUI | ALT | / | | | ||
| 283 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 284 | * | | | qwerty | | | | | | | | | | | ||
| 285 | * '-----------------------------------------------------------------------------------------------------------' | ||
| 286 | */ | ||
| 287 | #define _____________DIRECTIONS_Row__0_____________ _______, _______________Gherkin_DIR_0_______________, KC_DEL | ||
| 288 | #define _____________DIRECTIONS_Row__1_____________ _______, _______________Gherkin_DIR_1_______________, _______ | ||
| 289 | #define _____________DIRECTIONS_Row__2_____________ _______, _______________Gherkin_DIR_2_______________, _______ | ||
| 290 | #define _____________DIRECTIONS_Row__3_____________ _______, _______, QWERTY, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 291 | |||
| 292 | /* Gherkin Et Cetera | ||
| 293 | * .-----------------------------------------------------------------------------------------------------------. | ||
| 294 | * | | ` | mUP | | | RESET | SHIFT | mScrUp |mScrDown| | \ | DEL | | ||
| 295 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 296 | * | | mLeft | mDown | mRight | | SHIFT | mBtn3 | mBtn1 | mBtn2 | ; | ' | | | ||
| 297 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 298 | * | | Sft//Cp| | | | | C-A-D |mScrLeft| mScrRt | ALT | DEL | | | ||
| 299 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | ||
| 300 | * | | | | | | | C-A-D | | | | | | | ||
| 301 | * '-----------------------------------------------------------------------------------------------------------' | ||
| 302 | */ | ||
| 303 | #define ______________ETCETERA_Row__0______________ _______, _______________Gherkin_ETC_0_______________, KC_DEL | ||
| 304 | #define ______________ETCETERA_Row__1______________ _______, _______________Gherkin_ETC_1_______________, _______ | ||
| 305 | #define ______________ETCETERA_Row__2______________ _______, _______________Gherkin_ETC_2_______________, _______ | ||
| 306 | #define ______________ETCETERA_Row__3______________ _______, _______, _______, _______, _______, _______, LALT(LCTL(KC_DEL)), _______, _______, _______, _______, _______ | ||
| 307 | |||
| 308 | #endif // !USERSPACE | ||
