~ruther/qmk_firmware

9175eebc8796f31a481ba16b1ca2ba9e4432502e — wanleg 7 years ago 8007d9f
Keymap: Wanleg userspace (#3670)

* configure wanleg userspace

* additional layout support

* additional layout support

* userspace edits

* fix swap hands between 30 and 40 percent

* add additional keymaps

* userspace edits

* userspace configuration

* userspace configuration

* Update readme.md

* userspace work

* swap hands userspace fix

* made requested edits

* Update readme.md

* use relative paths instead of copying file

* Update wanleg.h

* fixing layer order
D keyboards/gherkin/keymaps/wanleg/config.h => keyboards/gherkin/keymaps/wanleg/config.h +0 -24
@@ 1,24 0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H

#include "../../config.h"
#endif

#define PREVENT_STUCK_MODIFIERS

//Tap Dance Prerequisite
#define TAPPING_TERM 200

//Mousekeys Settings
#define MOUSEKEY_INTERVAL 16
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0

/* for QMK DFU bootloader */
/* not required if using default ProMicro bootloader */
/* set top left key as bootloader mode escape key */
#define QMK_ESC_OUTPUT B4 // usually COL
#define QMK_ESC_INPUT F7 // usually ROW
#define QMK_LED B0
\ No newline at end of file

D keyboards/gherkin/keymaps/wanleg/rules.mk => keyboards/gherkin/keymaps/wanleg/rules.mk +0 -7
@@ 1,7 0,0 @@
TAP_DANCE_ENABLE = yes		# Enable Tap Dance (comment if not being implemented)

#If ProMicro has QMK DFU bootloader instead of Caterina,
#run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed
ifeq ($(strip $(dfu)), qmk)
    BOOTLOADER = qmk-dfu
endif
\ No newline at end of file

A layouts/community/ortho_3x10/layout.json => layouts/community/ortho_3x10/layout.json +3 -0
@@ 0,0 1,3 @@
["","","","","","","","","",""],
["","","","","","","","","",""],
["","","","","","","","","",""]

A layouts/community/ortho_3x10/readme.md => layouts/community/ortho_3x10/readme.md +3 -0
@@ 0,0 1,3 @@
# ortho_3x10

    LAYOUT_ortho_3x10

A layouts/community/ortho_3x10/wanleg/config.h => layouts/community/ortho_3x10/wanleg/config.h +9 -0
@@ 0,0 1,9 @@
#pragma once

//QMK DFU settings (ProMicro boards)
// set top left key as bootloader mode escape key on Gherkin
#if defined(KEYBOARD_gherkin)
#define QMK_LED B0
#define QMK_ESC_OUTPUT B4 // usually COL
#define QMK_ESC_INPUT F7 // usually ROW
#endif

A layouts/community/ortho_3x10/wanleg/keymap.c => layouts/community/ortho_3x10/wanleg/keymap.c +29 -0
@@ 0,0 1,29 @@
#include QMK_KEYBOARD_H
#include "wanleg.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[gGK] = LAYOUT_ortho_3x10_wrapper(
  _______________Gherkin_Row_0_______________,
  _______________Gherkin_Row_1_______________,
  _______________Gherkin_Row_2_______________
),

[gNUM] = LAYOUT_ortho_3x10_wrapper(
  _______________Gherkin_NUM_0_______________,
  _______________Gherkin_NUM_1_______________,
  _______________Gherkin_NUM_2_______________
),

[gDIR] = LAYOUT_ortho_3x10_wrapper(
  _______________Gherkin_DIR_0_______________,
  _______________Gherkin_DIR_1_______________,
  _______________Gherkin_DIR_2_______________
),

[gETC] = LAYOUT_ortho_3x10_wrapper(
  _______________Gherkin_ETC_0_______________,
  _______________Gherkin_ETC_1_______________,
  _______________Gherkin_ETC_2_______________
),

};

R keyboards/gherkin/keymaps/wanleg/readme.md => layouts/community/ortho_3x10/wanleg/readme.md +5 -8
@@ 1,7 1,7 @@
![Gherkin Wanleg Layout Image](https://i.imgur.com/nCPog2W.png)  
# Gherkin Wanleg Layout
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. 
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. 
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.  
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.  
I've left them in my `keymap.c` ready for use if anyone wants to try them out:

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
| 5V | VCC |

## Make the QMK DFU .hex
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.
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.
```
#define QMK_ESC_OUTPUT B4
#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
On a Gherkin, B4/F7 corresponds to the top-left corner key.  
`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.  
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.  
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`.  
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`.  
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).
For example  
`make <keyboard>:<keymap>:production`  
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  
`make gherkin:wanleg:production dfu=qmk`  

## Burn QMK DFU
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

## Using QMK DFU
7. Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with
`make gherkin:<keymap>:dfu dfu=qmk`  
The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina` 
`make gherkin:<keymap>:dfu`  

A layouts/community/ortho_3x10/wanleg/rules.mk => layouts/community/ortho_3x10/wanleg/rules.mk +3 -0
@@ 0,0 1,3 @@
SWAP_HANDS_ENABLE = no

BOOTLOADER = qmk-dfu
\ No newline at end of file

A layouts/community/ortho_4x12/wanleg/config.h => layouts/community/ortho_4x12/wanleg/config.h +15 -0
@@ 0,0 1,15 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H

//QMK DFU settings (ProMicro boards)
// set top left key as bootloader mode escape key on Lets Split rev2
#if defined(KEYBOARD_lets_split_rev2)
#define QMK_LED B0
#define QMK_ESC_OUTPUT F6 // usually COL
#define QMK_ESC_INPUT D7 // usually ROW
#define USE_SERIAL
#undef USE_I2C
#define EE_HANDS
#endif

#endif

A layouts/community/ortho_4x12/wanleg/keymap.c => layouts/community/ortho_4x12/wanleg/keymap.c +67 -0
@@ 0,0 1,67 @@
#include QMK_KEYBOARD_H
#include "wanleg.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#if defined(KEYBOARD_lets_split_rev2)
[_GK] = LAYOUT_ortho_4x12_wrapper(
  _______________GherkinLike_0_______________,
  _______________GherkinLike_1_______________,
  _______________GherkinLike_2_______________,
  _______________GherkinLike_3_OneHand_______
),
[ONE] = LAYOUT_ortho_4x12_wrapper(
  _______________Qwerty_Row__0_______________,
  _______________Qwerty_Row__1_______________,
  _______________Qwerty_Row__2_______________,
  KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), KC_SPC, SUPRA, KC_RGUI, KC_RALT, KC_RGUI, KC_RCTL
),
#else
[_GK] = LAYOUT_ortho_4x12_wrapper(
  _______________GherkinLike_0_______________,
  _______________GherkinLike_1_______________,
  _______________GherkinLike_2_______________,
  _______________GherkinLike_3_______________
),
#endif
[_QW] = LAYOUT_ortho_4x12_wrapper(
  _______________Qwerty_Row__0_______________,
  _______________Qwerty_Row__1_______________,
  _______________Qwerty_Row__2_______________,
  _______________Qwerty_Row__3_______________
),

[SUP] = LAYOUT_ortho_4x12_wrapper(
  ________________SUPRA_Row_0________________,
  ________________SUPRA_Row_1________________,
  ________________SUPRA_Row_2________________,
  ________________SUPRA_Row_3________________
),

[SUB] = LAYOUT_ortho_4x12_wrapper(
  _______________SUBTER_Row__0_______________,
  _______________SUBTER_Row__1_______________,
  _______________SUBTER_Row__2_______________,
  _______________SUBTER_Row__3_______________
),

[NUM] = LAYOUT_ortho_4x12_wrapper(
  _______________NUMBERS_Row_0_______________,
  _______________NUMBERS_Row_1_______________,
  _______________NUMBERS_Row_2_______________,
  _______________NUMBERS_Row_3_______________
),

[DIR] = LAYOUT_ortho_4x12_wrapper(
  _____________DIRECTIONS_Row__0_____________,
  _____________DIRECTIONS_Row__1_____________,
  _____________DIRECTIONS_Row__2_____________,
  _____________DIRECTIONS_Row__3_____________
),

[ETC] = LAYOUT_ortho_4x12_wrapper(
  ______________ETCETERA_Row__0______________,
  ______________ETCETERA_Row__1______________,
  ______________ETCETERA_Row__2______________,
  ______________ETCETERA_Row__3______________
),
};

A layouts/community/ortho_4x12/wanleg/readme.md => layouts/community/ortho_4x12/wanleg/readme.md +24 -0
@@ 0,0 1,24 @@
# Let's Split Flashing  
(More information at `qmk_firmware/layouts/community/ortho_3x10/wanleg/readme.md`)
## Make the QMK DFU .hex
`make lets_split/rev2:wanleg:production dfu=qmk` 

## Burning EEPROM settings and Firmware
Navigate to the directory with your .hex file and the `eeprom-lefthand.eep` and `eeprom-righthand.eep` files in it.  
**Burn Left Side With QMK DFU and Firmware**  
`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`  

**Burn Right Side With QMK DFU and Firmware**  
`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`  

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.

## Using QMK DFU  
Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with
`make lets_split/rev2:<keymap>:dfu dfu=qmk`  
The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina` 

---
# JJ40 
## To Do
- [ ] Mousekeys not working with Userspace for some reason (jj40 only)
\ No newline at end of file

A layouts/community/ortho_4x12/wanleg/rules.mk => layouts/community/ortho_4x12/wanleg/rules.mk +6 -0
@@ 0,0 1,6 @@
AUDIO_ENABLE = no
SWAP_HANDS_ENABLE = yes

ifeq ($(strip $(KEYBOARD)), jj40)
	SWAP_HANDS_ENABLE = no
endif
\ No newline at end of file

A layouts/community/ortho_5x15/wanleg/config.h => layouts/community/ortho_5x15/wanleg/config.h +3 -0
@@ 0,0 1,3 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#endif

A layouts/community/ortho_5x15/wanleg/keymap.c => layouts/community/ortho_5x15/wanleg/keymap.c +176 -0
@@ 0,0 1,176 @@
#include QMK_KEYBOARD_H
#include "wanleg.h"

#define _________________BLANK_75__________________ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
#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

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* QWERTY 75
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * | ESC    | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | NUMLOCK| gherkin|        | FN     |
 * |-----------------------------------------------------------------------------------------------------------+--------+--------+--------|
 * |                                                                                                           |   7    |   8    |   9    |
 * |                                                                                                           |--------+--------+--------|
 * |                                             4x12 QWERTY LAYOUT                                            |   4    |   5    |   6    |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |   1    |   2    |   3    |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |   0    |   0    |   .    |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[QW75] = LAYOUT_ortho_5x15_wrapper(
  _________________Num_Row_75________________, GHERKIN75, XXXXXXX, FUNCTION75,
  _______________Qwerty_Row__0_______________, KC_KP_7, KC_KP_8, KC_KP_9,
  _______________Qwerty_Row__1_______________, KC_KP_4, KC_KP_5, KC_KP_6,
  _______________Qwerty_Row__2_______________, KC_KP_1, KC_KP_2, KC_KP_3,
  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
),

 /* Gherkin 75
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * | ESC    | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | NUMLOCK| qwerty |        | FN     |
 * |-----------------------------------------------------------------------------------------------------------+--------+--------+--------|
 * |                                                                                                           |   7    |   8    |   9    |
 * |                                                                                                           |--------+--------+--------|
 * |                                            4x12 GHERKIN LAYOUT                                            |   4    |   5    |   6    |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |   1    |   2    |   3    |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |   0    |   0    |   .    |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[GK75] = LAYOUT_ortho_5x15_wrapper(
  _________________Num_Row_75________________, QWERTY75, XXXXXXX, FUNCTION75,
  _______________GherkinLike_0_______________, KC_KP_7, KC_KP_8, KC_KP_9,
  _______________GherkinLike_1_______________, KC_KP_4, KC_KP_5, KC_KP_6,
  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,
  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
),

 /* SUBTER75
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * |                                            SUBTER ROW 0 LAYOUT                                            |        |        |        |
 * |-----------------------------------------------------------------------------------------------------------+--------+-----------------|
 * |                                                                                                           |   /    |   *    |   -    |
 * |                                                                                                           |--------+--------+--------|
 * |                                            4x12 SUBTER LAYOUT                                             |        |        |   +    |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        | ENTER  |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[SUB75] = LAYOUT_ortho_5x15_wrapper(
  _______________SUBTER_Row__0_______________, _______, _______, _______,
  _______________SUBTER_Row__0_______________, KC_PSLS, KC_PAST, KC_PMNS,
  _______________SUBTER_Row__1_______________, _______, _______, KC_PPLS,
  _______________SUBTER_Row__2_______________, _______, _______, KC_PENT,
  _______, _______, GHERKIN75, _______, _______, _______, KC_ENT, KC_LSFT, _______, _______,	_______,	_______, _______,	_______,	_______
),

/* SUPRA75
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
 * |                                                                                                           |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                             4x12 SUPRA LAYOUT                                             |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[SUP75] = LAYOUT_ortho_5x15_wrapper(
  _________________BLANK_75__________________,
  ________________SUPRA_Row_0________________, _______, _______, _______,
  ________________SUPRA_Row_1________________, _______, _______, _______,
  ________________SUPRA_Row_2________________, _______, _______, _______,
  _________________BLANK_75__________________
),

/* Gherkin 75 Numbers
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
 * |-----------------------------------------------------------------------------------------------------------|--------+-----------------|
 * |                                                                                                           |   /    |   *    |   -    |
 * |                                                                                                           |--------+--------+--------|
 * |                                            4x12 NUMBERS LAYOUT                                            |        |        |   +    |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        | ENTER  |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[NUM75] = LAYOUT_ortho_5x15_wrapper(
  _________________BLANK_75__________________,
  _______________NUMBERS_Row_0_______________, KC_PSLS, KC_PAST, KC_PMNS,
  _______________NUMBERS_Row_1_______________, _______, _______, KC_PPLS,
  _______________NUMBERS_Row_2_______________, _______, _______, KC_PENT,
  _______________NUMBERS_Row_3_______________, _______, _______, _______
),

/* Gherkin 75 Et Cetera
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
 * |-----------------------------------------------------------------------------------------------------------|--------+-----------------|
 * |                                                                                                           |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                           4x12 ETCETERA LAYOUT                                            |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[ETC75] = LAYOUT_ortho_5x15_wrapper(
  _________________BLANK_75__________________,
  ______________ETCETERA_Row__0______________, _______, _______, _______,
  ______________ETCETERA_Row__1______________, _______, _______, _______,
  ______________ETCETERA_Row__2______________, _______, _______, _______,
  ______________ETCETERA_Row__3______________, _______, _______, _______
),

/* Gherkin 75 Directional Keys
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
 * |-----------------------------------------------------------------------------------------------------------|--------+-----------------|
 * |                                                                                                           |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                          4x12 DIRECTIONAL LAYOUT                                          |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * |                                                                                                           |--------+--------+--------|
 * |                                                                                                           |        |        |        |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[DIR75] = LAYOUT_ortho_5x15_wrapper(
  _________________BLANK_75__________________,
  _____________DIRECTIONS_Row__0_____________, _______, _______, _______,
  _____________DIRECTIONS_Row__1_____________, _______, _______, _______,
  _____________DIRECTIONS_Row__2_____________, _______, _______, _______,
  _______, _______, QWERTY75,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),


/* FUNCTION 75
 * .--------------------------------------------------------------------------------------------------------------------------------------.
 * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
 * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT   | VOL+   | VOL-   | PLAY   |        |        |        | WHEEL+ |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | 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- |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |        |        |        |        |        | MS BT1 |        |        |        |        |        | MOUS L | MOUS D | MOUS R |
 * '--------------------------------------------------------------------------------------------------------------------------------------'
 */
[FN75] = LAYOUT_ortho_5x15_wrapper(
  _________________BLANK_75__________________,
  _________________BLANK_75__________________,
  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,
  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,
  _______, _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
};

A layouts/community/ortho_5x15/wanleg/rules.mk => layouts/community/ortho_5x15/wanleg/rules.mk +1 -0
@@ 0,0 1,1 @@
SWAP_HANDS_ENABLE = no
\ No newline at end of file

A users/wanleg/config.h => users/wanleg/config.h +32 -0
@@ 0,0 1,32 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H

#define PREVENT_STUCK_MODIFIERS

//TAPPING_TERM
#ifdef TAP_DANCE_ENABLE
#define TAPPING_TERM 200
#endif

//Mousekey Settings
#ifdef MOUSEKEY_ENABLE
#define MOUSEKEY_INTERVAL 16
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
#endif

// Disable action_get_macro and fn_actions, since we don't use these
// and it saves on space in the firmware.
#ifndef NO_DEBUG
#define NO_DEBUG
#endif // !NO_DEBUG
#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
#define NO_PRINT
#endif // !NO_PRINT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define NO_ACTION_ONESHOT

#endif // !USERSPACE_CONFIG_H

A users/wanleg/readme.md => users/wanleg/readme.md +14 -0
@@ 0,0 1,14 @@
Copyright 2018 Brian Fong @wanleg

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/>.

A users/wanleg/rules.mk => users/wanleg/rules.mk +19 -0
@@ 0,0 1,19 @@
ifeq ($(strip $(KEYBOARD)), lets_split_rev2)
SRC += ../../keyboards/lets_split/lets_split.c
endif

SRC += wanleg.c tapdances.c 

ifndef TAP_DANCE_ENABLE
TAP_DANCE_ENABLE = yes
endif

ifndef MOUSEKEY_ENABLE
MOUSEKEY_ENABLE = yes
endif

#If using a ProMicro and it has the QMK DFU bootloader instead of Caterina,
#run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed
ifeq ($(strip $(dfu)), qmk)
    BOOTLOADER = qmk-dfu
endif

R keyboards/gherkin/keymaps/wanleg/keymap.c => users/wanleg/tapdances.c +3 -111
@@ 1,41 1,5 @@
/* Copyright 2017 Brian Fong
 *
 * 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

// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QW 0
#define DIR 1
#define NUM 2
#define ETC 3

// Readability keycodes
#define _______ KC_TRNS


/////////////// TAP DANCE SECTION START ///////////////
//Tap Dance Declarations (list of my tap dance configurations)
enum {
  TD_SFT_CAPS = 0
  ,TD_Q_ESC
  ,ENT_TAP_DANCE
  ,DEL_TAP_DANCE
};
//Tap Dance Settings
#include "wanleg.h"

///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION START /////
///// (no need to edit this section) /////


@@ 143,76 107,4 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};

//In Layer declaration, add tap dance item in place of a key code
//TD(TD_SFT_CAPS)

///////////// TAP DANCE SECTION END ///////////////

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  /* Qwerty
   * .-----------------------------------------------------------------------------------------.
   * | Q//ESC | W      | E      | R      | T      | Y      | U      | I      | O      | P      |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | A      | S      | D      | F      | G      | H      | J      | K      | L      | SPACE  |
   * |        |        |        |        |        |        |        |        |        |SFThold |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | Z      | X      | C      | V/NUM  | B/ETC  | N      | M/DIR  | ,/GUI  | ./ALT  | BKSC   |
   * | SFThold|        |        |        |        |        |        |        |        |CTRLhold|
   * '-----------------------------------------------------------------------------------------'
   */
  [_QW] = LAYOUT_ortho_3x10( /* Qwerty*/
    TD(TD_Q_ESC), KC_W,    KC_E,    KC_R,          KC_T,          KC_Y, KC_U,          KC_I,           KC_O,          KC_P,
    KC_A,         KC_S,    KC_D,    KC_F,          KC_G,          KC_H, KC_J,          KC_K,           KC_L,          SFT_T(KC_SPC),
    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)
  ),

  /*
   *  Directional Modifiers
   * .-----------------------------------------------------------------------------------------.
   * | TAB    |   up   |        | INS    |  CTRL  | SHIFT  | PgUp   | HOME   |  -     |  =     |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | left   |  down  | right  | PrScr  | SHIFT  |  CTRL  | PgDn   | END    |  [     |  ]     |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | P-Brk  |        |        |        |        |        |        | RGUI   | ALT    |  /     |
   * '-----------------------------------------------------------------------------------------'
   */
  [DIR] = LAYOUT_ortho_3x10( /* Directional Modifiers */
    KC_TAB,  KC_UP,   _______, KC_INS,  KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL,
    KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END,  KC_LBRC, KC_RBRC,
    KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_LALT, KC_SLSH
  ),

  /*
   *  Numbers
   * .-----------------------------------------------------------------------------------------.
   * | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | F11    | F12    |        |        |        | ENTER  | SHIFT  | GUI    | ./ALT  | BKSC   |
   * |        |        |        |        |        |        |        |        |        |CTRLhold|
   * '-----------------------------------------------------------------------------------------'
   */
  [NUM] = LAYOUT_ortho_3x10 ( /* Numbers */
    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,
    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,
    KC_F11,  KC_F12,  _______, _______, _______, KC_ENT,  KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC)
  ),

  /*
   *  ETC
   * .-----------------------------------------------------------------------------------------.
   * |  `     | mUP    |        |        | RESET  | SHIFT  | mUp    | mDown  |        |  \     |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | mLeft  | mDown  | mRight |        | SHIFT  | mBtn3  | mBtn1  | mBtn2  |  ;     |  '     |
   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
   * | Sft//Cp|        |        |        |        | C-A-D  | mLeft  | mRight | ALT    |  DEL   |
   * '-----------------------------------------------------------------------------------------'
   */
  [ETC] = LAYOUT_ortho_3x10( /* ETC */
    KC_GRV,  KC_MS_U, _______, _______, RESET,   KC_RSFT, KC_WH_U, KC_WH_D, _______, KC_BSLS,
    KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_LSFT, KC_BTN3, KC_BTN1, KC_BTN2, KC_SCLN, KC_QUOT,
    TD(TD_SFT_CAPS), _______, _______, _______, _______, LALT(LCTL(KC_DEL)), KC_WH_L, KC_WH_R, KC_LALT, KC_DEL
  ),

};
//TD(TD_SFT_CAPS)
\ No newline at end of file

A users/wanleg/wanleg.c => users/wanleg/wanleg.c +158 -0
@@ 0,0 1,158 @@
#include "wanleg.h"

// Defines actions for my global custom keycodes. Defined in wanleg.h file
// Then runs the _keymap's record handier if not processed here
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
    case QWERTY:
      if (record->event.pressed) {
        print("mode just switched to qwerty and this is a huge string\n");
        set_single_persistent_default_layer(_QW);
      }
      return false;
      break;
    case GHERKIN:
      if (record->event.pressed) {
        set_single_persistent_default_layer(_GK);
      }
      return false;
      break;
    case gGHERKIN:
      if (record->event.pressed) {
        set_single_persistent_default_layer(gGK);
      }
      return false;
      break;
    case ONEHAND:
    if (record->event.pressed) {
      set_single_persistent_default_layer(ONE);
      }
      return false;
      break;
    case QWERTY75:
    if (record->event.pressed) {
      set_single_persistent_default_layer(QW75);
      }
      return false;
      break;
    case GHERKIN75:
    if (record->event.pressed) {
      set_single_persistent_default_layer(GK75);
      }
      return false;
      break;
    case SUBTER:
      if (record->event.pressed) {
        layer_on(SUB);
      } else {
        layer_off(SUB);
      }
      return false;
      break;
    case SUPRA:
      if (record->event.pressed) {
        layer_on(SUP);
      } else {
        layer_off(SUP);
      }
      return false;
      break;
	case NUMBER:
      if (record->event.pressed) {
        layer_on(NUM);
      } else {
        layer_off(NUM);
      }
      return false;
      break;
	case DIRECTION:
      if (record->event.pressed) {
        layer_on(DIR);
      } else {
        layer_off(DIR);
      }
      return false;
      break;
	case ETCETERA:
      if (record->event.pressed) {
        layer_on(ETC);
      } else {
        layer_off(ETC);
      }
      return false;
      break;
  case gNUMBER:
      if (record->event.pressed) {
        layer_on(gNUM);
      } else {
        layer_off(gNUM);
      }
      return false;
      break;
  case gDIRECTION:
      if (record->event.pressed) {
        layer_on(gDIR);
      } else {
        layer_off(gDIR);
      }
      return false;
      break;
	case gETCETERA:
      if (record->event.pressed) {
        layer_on(gETC);
      } else {
        layer_off(gETC);
      }
      return false;
      break;
	case SUBTER75:
      if (record->event.pressed) {
        layer_on(SUB75);
      } else {
        layer_off(SUB75);
      }
      return false;
      break;
	case SUPRA75:
      if (record->event.pressed) {
        layer_on(SUP75);
      } else {
        layer_off(SUP75);
      }
      return false;
      break;
	case NUMBER75:
      if (record->event.pressed) {
        layer_on(NUM75);
      } else {
        layer_off(NUM75);
      }
      return false;
      break;
	case DIRECTION75:
      if (record->event.pressed) {
        layer_on(DIR75);
      } else {
        layer_off(DIR75);
      }
      return false;
      break;
	case ETCETERA75:
      if (record->event.pressed) {
        layer_on(ETC75);
      } else {
        layer_off(ETC75);
      }
      return false;
      break;
	case FUNCTION75:
      if (record->event.pressed) {
        layer_on(FN75);
      } else {
        layer_off(FN75);
      }
      return false;
      break;
  }
  return true;
}

A users/wanleg/wanleg.h => users/wanleg/wanleg.h +308 -0
@@ 0,0 1,308 @@
#ifndef USERSPACE
#define USERSPACE

#include "quantum.h"

// Define layer names and order
#ifdef KEYBOARD_gherkin
enum userspace_layers {
  gGK = 0,
  gNUM,
  gDIR,
  gETC,
  _GK,
  _QW,
  QW75,
  GK75,
  ONE,
  SUB,
  SUP,
  NUM,
  DIR,
  ETC,
  SUB75,
  SUP75,
  NUM75,
  DIR75,
  ETC75,
  FN75
};
#elif KEYBOARD_xd75
enum userspace_layers {
  GK75 = 0,
  QW75,
  SUB75,
  SUP75,
  NUM75,
  DIR75,
  ETC75,
  FN75,
  gGK,
  _GK,
  _QW,
  ONE,
  SUB,
  SUP,
  NUM,
  DIR,
  ETC,
  gNUM,
  gDIR,
  gETC,
};
#else
  enum userspace_layers {
  _GK = 0,
  _QW,
  QW75,
  GK75,
  gGK,
  ONE,
  SUB,
  SUP,
  NUM,
  DIR,
  ETC,
  gNUM,
  gDIR,
  gETC,
  SUB75,
  SUP75,
  NUM75,
  DIR75,
  ETC75,
  FN75
};
#endif

enum userspace_custom_keycodes {
  gGHERKIN = SAFE_RANGE,
  GHERKIN,
  QWERTY,
  QWERTY75,
  GHERKIN75,
  ONEHAND,
  SUBTER,
  SUPRA,
  NUMBER,
  DIRECTION,
  ETCETERA,
  gNUMBER,
  gDIRECTION,
  gETCETERA,
  SUBTER75,
  SUPRA75,
  NUMBER75,
  DIRECTION75,
  ETCETERA75,
  FUNCTION75

};

//Tap Dance Declarations (list of my tap dance configurations)
#ifdef TAP_DANCE_ENABLE
enum {
  TD_SFT_CAPS = 0
  ,TD_Q_ESC
  ,ENT_TAP_DANCE
  ,DEL_TAP_DANCE
};
#endif

// Since our quirky block definitions are basically a list of comma separated
// arguments, we need a wrapper in order for these definitions to be
// expanded before being used as arguments to the LAYOUT_xxx macro.
#if (!defined(LAYOUT) && defined(KEYMAP))
#define LAYOUT KEYMAP
#endif

#define KEYMAP_wrapper(...)                  LAYOUT(__VA_ARGS__)
#define LAYOUT_wrapper(...)                  LAYOUT(__VA_ARGS__)
#define LAYOUT_ortho_3x10_wrapper(...)       LAYOUT_ortho_3x10(__VA_ARGS__)
#define LAYOUT_ortho_4x12_wrapper(...)       LAYOUT_ortho_4x12(__VA_ARGS__)
#define LAYOUT_ortho_5x15_wrapper(...)       LAYOUT_ortho_5x15(__VA_ARGS__)

// Blocks for each of the major keyboard layouts
// Organized so we can quickly adapt and modify all of them
// at once, rather than for each keyboard, one at a time.
// And this allows for much cleaner blocks in the keymaps.

// NOTE: These are all the same length.  If you do a search/replace
//       then you need to add/remove underscores to keep the
//       lengths consistent.


/* Pure Gherkin
 * .-----------------------------------------------------------------------------------------.
 * | Q//ESC | W      | E      | R      | T      | Y      | U      | I      | O      | P      |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | A      | S      | D      | F      | G      | H      | J      | K      | L      | SPACE  |
 * |        |        |        |        |        |        |        |        |        |SFThold |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | Z      | X      | C      | V/gNUM | B/gETC | N      | M/gDIR | ,/GUI  | ./ALT  | BKSC   |
 * | SFThold|        |        |        |        |        |        |        |        |CTRLhold|
 * '-----------------------------------------------------------------------------------------'
 */
#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
#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)
#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)

/* Directional Keys
 * .-----------------------------------------------------------------------------------------.
 * | TAB    |   up   |        | INS    |  CTRL  | SHIFT  | PgUp   | HOME   |  -     |  =     |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | left   |  down  | right  | PrScr  | SHIFT  |  CTRL  | PgDn   | END    |  [     |  ]     |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | P-Brk  |        |        |        |        |        |        | RGUI   | ALT    |  /     |
 * '-----------------------------------------------------------------------------------------'
 */
#define _______________Gherkin_DIR_0_______________			KC_TAB,	 KC_UP,   _______, KC_INS,  KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL
#define _______________Gherkin_DIR_1_______________			KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END,  KC_LBRC, KC_RBRC
#define _______________Gherkin_DIR_2_______________			KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_LALT, KC_SLSH

/* Numbers
 * .-----------------------------------------------------------------------------------------.
 * | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | F11    | F12    |        |        |        | ENTER  | SHIFT  | GUI    | ./ALT  | BKSC   |
 * |        |        |        |        |        |        |        |        |        |CTRLhold|
 * '-----------------------------------------------------------------------------------------'
 */
#define _______________Gherkin_NUM_0_______________			KC_F1,  KC_F2,  KC_F3,  KC_F4,   KC_F5,   KC_F6,  KC_F7,   KC_F8,   KC_F9,         KC_F10
#define _______________Gherkin_NUM_1_______________			KC_1,   KC_2,   KC_3,	KC_4,    KC_5,    KC_6,   KC_7,    KC_8,    KC_9,          KC_0
#define _______________Gherkin_NUM_2_______________			KC_F11, KC_F12, _______,_______, _______, KC_ENT, KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC)

/* Et Cetera
 * .-----------------------------------------------------------------------------------------.
 * |  `     | mUP    |        |        | RESET  | SHIFT  | mScrUp | mScrDn |        |  \     |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | mLeft  | mDown  | mRight |        | SHIFT  | mBtn3  | mBtn1  | mBtn2  |  ;     |  '     |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | Sft//Cp|        |        |        |        | C-A-D  | mScrL  | mScrR  | ALT    |  DEL   |
 * '-----------------------------------------------------------------------------------------'
 */
#define _______________Gherkin_ETC_0_______________			KC_GRV, 		KC_MS_U, _______,_______, RESET,   KC_RSFT, 			KC_WH_U, KC_WH_D, _______, KC_BSLS
#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
#define _______________Gherkin_ETC_2_______________			TD(TD_SFT_CAPS),_______, _______,_______, _______, LALT(LCTL(KC_DEL)),	KC_WH_L, KC_WH_R, KC_LALT, KC_DEL

/* Gherkin-Like
 * .-----------------------------------------------------------------------------------------------------------.
 * | ESC    | Q//ESC | W      | E      | R      | T      | Y      | U      | I      | O      | P      | BACKSP |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | TAB    | A      | S      | D      | F      | G      | H      | J      | K      | L      | SPACE  |  '     |
 * |        |        |        |        |        |        |        |        |        |        |SFThold |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |SFT/CAPS| Z      | X      | C      | V/NUM  | B/ETC  | N      | M/DIR  | ,/GUI  | ./ALT  | BKSC   | ENT/SFT|
 * |        |SFThold |        |        |        |        |        |        |        |        |CTRLhold|        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * | LCTRL  | LGUI   | ALT    | ONEHAND|  NUM   | ETC    | SPACE  |  DIR   | RGUI   | ALT    | DEL    | CTRL   |
 * '-----------------------------------------------------------------------------------------------------------'
 */
#define _______________GherkinLike_0_______________     KC_ESC, _______________Gherkin_Row_0_______________, KC_BSPC
#define _______________GherkinLike_1_______________     KC_TAB, _______________Gherkin_Row_1_______________, KC_QUOT
#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)
#define _______________GherkinLike_3_______________     KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL
#define _______________GherkinLike_3_OneHand_______     KC_LCTL, KC_LGUI, KC_LALT, ONEHAND, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL

/* Qwerty
 * .-------------------------------------------------------------------------------------.
 * | Esc   |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp  |
 * |-------+------+------+------+------+-------------+------+------+------+------+-------|
 * | Tab   |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  '    |
 * |-------+------+------+------+------+------|------+------+------+------+------+-------|
 * |Sft/Cps|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |ENT/SFT|
 * |-------+------+------+------+------+------+------+------+------+------+------+-------|
 * | LCTRL | LGUI | ALT  | ALT  | SUB  | SHIFT| SPACE| SUP  | RGUI | RALT | DEL  | CTRL  |
 * '-------------------------------------------------------------------------------------'
 */
#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
#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
#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)
#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

/* SUPRA
 * .-----------------------------------------------------------------------------------------------------------.
 * | RESET  | TAB    |   up   |        | INS    | CTRL   | SHIFT  | PgUp   | Home   |   -    |   =    |  DEL   |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |  left  |  down  | right  | PrScr  | SHIFT  | CTRL   | PgDn   | End    |   [    |   ]    |   \    |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | P-Brk  |        |        |        |        |        |        | RGUI   | ALT    |        |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |        |        |        |        |        |        |        |        |        |        |        |
 * '-----------------------------------------------------------------------------------------------------------'
 */
#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
#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
#define ________________SUPRA_Row_2________________   _______, KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, _______, _______
#define ________________SUPRA_Row_3________________   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______

/* SUBTER
 * .-----------------------------------------------------------------------------------------------------------.
 * |        | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    |  DEL   |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |    `   | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | F11    | F12    |        |        |        |        |        | RGUI   | ./ALT  | BKSC   |        |
 * |        |        |        |        |        |        |        |        |        |        |CTRLhold|	       |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |        | gherkin|        |        |        | ENTER  | SHIFT  |        |        |        |        |
 * '-----------------------------------------------------------------------------------------------------------'
 */
#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
#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,    		_______
#define _______________SUBTER_Row__2_______________   _______, KC_F11,  KC_F12,  _______, _______, _______, _______, _______,  KC_RGUI,ALT_T(KC_DOT),  	CTL_T(KC_BSPC), _______
#define _______________SUBTER_Row__3_______________   _______, _______, GHERKIN, _______, _______, _______, KC_ENT,  KC_LSFT,  _______,_______,			_______,		_______

/* Gherkin Numbers
 * .-----------------------------------------------------------------------------------------------------------.
 * |        | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    |  DEL   |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | F11    | F12    |        |        |        | ENTER  | SHIFT  | RGUI   | ./ALT  | BKSC   |        |
 * |        |        |        |        |        |        |        |        |        |        |CTRLhold|	  	   |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |        |        |        |        |        | ENTER  | SHIFT  | RGUI   |        |        |        |
 * '-----------------------------------------------------------------------------------------------------------'
 */
#define _______________NUMBERS_Row_0_______________   _______, _______________Gherkin_NUM_0_______________,  KC_DEL
#define _______________NUMBERS_Row_1_______________   _______, _______________Gherkin_NUM_1_______________,  _______
#define _______________NUMBERS_Row_2_______________   _______, _______________Gherkin_NUM_2_______________,  _______
#define _______________NUMBERS_Row_3_______________   _______, _______, _______, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, _______, _______, _______


/* Gherkin Directional Keys
 * .-----------------------------------------------------------------------------------------------------------.
 * |        | TAB    |   up   |        | INS    | CTRL   | SHIFT  | PgUp   | HOME   |  -     |  =     | DEL    |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | left   |  down  | right  | PrScr  | SHIFT  | CTRL   | PgDn   | END    |  [     |  ]     |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | P-Brk  |        |        |        |        |        |        | RGUI   | ALT    |  /     |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |        | qwerty |        |        |        |        |        |        |        |        |        |
 * '-----------------------------------------------------------------------------------------------------------'
 */
#define _____________DIRECTIONS_Row__0_____________   _______, _______________Gherkin_DIR_0_______________, KC_DEL
#define _____________DIRECTIONS_Row__1_____________   _______, _______________Gherkin_DIR_1_______________, _______
#define _____________DIRECTIONS_Row__2_____________   _______, _______________Gherkin_DIR_2_______________, _______
#define _____________DIRECTIONS_Row__3_____________   _______, _______, QWERTY, _______, _______, _______, _______, _______, _______, _______, _______, _______

/* Gherkin Et Cetera
 * .-----------------------------------------------------------------------------------------------------------.
 * |        |  `     | mUP    |        |        | RESET  | SHIFT  | mScrUp |mScrDown|        |  \     | DEL    |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | mLeft  | mDown  | mRight |        | SHIFT  | mBtn3  | mBtn1  | mBtn2  |  ;     |  '     |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        | Sft//Cp|        |        |        |        | C-A-D  |mScrLeft| mScrRt | ALT    |  DEL   |        |
 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 * |        |        |        |        |        |        | C-A-D  |        |        |        |        |        |
 * '-----------------------------------------------------------------------------------------------------------'
 */
#define ______________ETCETERA_Row__0______________   _______, _______________Gherkin_ETC_0_______________, KC_DEL
#define ______________ETCETERA_Row__1______________   _______, _______________Gherkin_ETC_1_______________, _______
#define ______________ETCETERA_Row__2______________   _______, _______________Gherkin_ETC_2_______________, _______
#define ______________ETCETERA_Row__3______________   _______, _______, _______, _______, _______, _______, LALT(LCTL(KC_DEL)), _______, _______, _______, _______, _______
 
#endif // !USERSPACE