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 ordermaster
parent
8007d9f3a7
commit
9175eebc87
|
@ -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
|
|
@ -1,218 +0,0 @@
|
|||
/* 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
|
||||
};
|
||||
|
||||
///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION START /////
|
||||
///// (no need to edit this section) /////
|
||||
//Enums used to clearly convey the state of the tap dance
|
||||
enum {
|
||||
SINGLE_TAP = 1,
|
||||
SINGLE_HOLD = 2,
|
||||
DOUBLE_TAP = 3,
|
||||
DOUBLE_HOLD = 4,
|
||||
DOUBLE_SINGLE_TAP = 5 //send SINGLE_TAP twice - NOT DOUBLE_TAP
|
||||
// Add more enums here if you want for triple, quadruple, etc.
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
int state;
|
||||
} tap;
|
||||
|
||||
int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
//If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP
|
||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
||||
if (state->interrupted) return SINGLE_TAP;
|
||||
else return SINGLE_HOLD;
|
||||
}
|
||||
//If count = 2, and it has been interrupted - assume that user is trying to type the letter associated
|
||||
//with single tap.
|
||||
else if (state->count == 2) {
|
||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
||||
else if (state->pressed) return DOUBLE_HOLD;
|
||||
else return DOUBLE_TAP;
|
||||
}
|
||||
else return 6; //magic number. At some point this method will expand to work for more presses
|
||||
}
|
||||
///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION END /////
|
||||
///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION START /////
|
||||
//instantialize an instance of 'tap' for the 'ENT' tap dance.
|
||||
static tap ENTtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void ENT_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
ENTtap_state.state = cur_dance(state);
|
||||
switch (ENTtap_state.state) {
|
||||
case SINGLE_TAP: register_code(KC_SPC); break;
|
||||
case SINGLE_HOLD: register_code(KC_LSFT); break;
|
||||
case DOUBLE_TAP: register_code(KC_ENT); break;
|
||||
case DOUBLE_HOLD: register_code(KC_NO); break; // setting double hold to do nothing (change this if you want)
|
||||
case DOUBLE_SINGLE_TAP: register_code(KC_SPC); unregister_code(KC_SPC); register_code(KC_SPC);
|
||||
//Last case is for fast typing. Assuming your key is `f`:
|
||||
//For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
|
||||
//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.
|
||||
}
|
||||
}
|
||||
|
||||
void ENT_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (ENTtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code(KC_SPC); break;
|
||||
case SINGLE_HOLD: unregister_code(KC_LSFT); break;
|
||||
case DOUBLE_TAP: unregister_code(KC_ENT); break;
|
||||
case DOUBLE_HOLD: unregister_code(KC_NO);
|
||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_SPC);
|
||||
}
|
||||
ENTtap_state.state = 0;
|
||||
}
|
||||
|
||||
//instanalize an instance of 'tap' for the 'DEL' tap dance.
|
||||
static tap DELtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void DEL_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
DELtap_state.state = cur_dance(state);
|
||||
switch (DELtap_state.state) {
|
||||
case SINGLE_TAP: register_code(KC_BSPC); break;
|
||||
case SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case DOUBLE_TAP: register_code(KC_DEL); break;
|
||||
case DOUBLE_HOLD: register_code(KC_NO); break;
|
||||
case DOUBLE_SINGLE_TAP: register_code(KC_BSPC); unregister_code(KC_BSPC); register_code(KC_BSPC);
|
||||
}
|
||||
}
|
||||
|
||||
void DEL_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (DELtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code(KC_BSPC); break;
|
||||
case SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
case DOUBLE_TAP: unregister_code(KC_DEL); break;
|
||||
case DOUBLE_HOLD: unregister_code(KC_NO);
|
||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_BSPC);
|
||||
}
|
||||
DELtap_state.state = 0;
|
||||
}
|
||||
///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION END /////
|
||||
|
||||
//Tap Dance Definitions
|
||||
//THIS SECTION HAS TO BE AT THE END OF THE TAP DANCE SECTION
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS)
|
||||
// Other declarations would go here, separated by commas, if you have them
|
||||
,[TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC)
|
||||
,[ENT_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ENT_finished, ENT_reset)
|
||||
,[DEL_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, DEL_finished, DEL_reset)
|
||||
};
|
||||
|
||||
//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
|
||||
),
|
||||
|
||||
};
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
["","","","","","","","","",""],
|
||||
["","","","","","","","","",""],
|
||||
["","","","","","","","","",""]
|
|
@ -0,0 +1,3 @@
|
|||
# ortho_3x10
|
||||
|
||||
LAYOUT_ortho_3x10
|
|
@ -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
|
|
@ -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_______________
|
||||
),
|
||||
|
||||
};
|
|
@ -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`
|
|
@ -0,0 +1,3 @@
|
|||
SWAP_HANDS_ENABLE = no
|
||||
|
||||
BOOTLOADER = qmk-dfu
|
|
@ -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
|
|
@ -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______________
|
||||
),
|
||||
};
|
|
@ -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)
|
|
@ -0,0 +1,6 @@
|
|||
AUDIO_ENABLE = no
|
||||
SWAP_HANDS_ENABLE = yes
|
||||
|
||||
ifeq ($(strip $(KEYBOARD)), jj40)
|
||||
SWAP_HANDS_ENABLE = no
|
||||
endif
|
|
@ -0,0 +1,3 @@
|
|||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
#endif
|
|
@ -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
|
||||
),
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
SWAP_HANDS_ENABLE = no
|
|
@ -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
|
|
@ -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/>.
|
|
@ -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
|
|
@ -0,0 +1,110 @@
|
|||
//Tap Dance Settings
|
||||
#include "wanleg.h"
|
||||
|
||||
///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION START /////
|
||||
///// (no need to edit this section) /////
|
||||
//Enums used to clearly convey the state of the tap dance
|
||||
enum {
|
||||
SINGLE_TAP = 1,
|
||||
SINGLE_HOLD = 2,
|
||||
DOUBLE_TAP = 3,
|
||||
DOUBLE_HOLD = 4,
|
||||
DOUBLE_SINGLE_TAP = 5 //send SINGLE_TAP twice - NOT DOUBLE_TAP
|
||||
// Add more enums here if you want for triple, quadruple, etc.
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
int state;
|
||||
} tap;
|
||||
|
||||
int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
//If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP
|
||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
||||
if (state->interrupted) return SINGLE_TAP;
|
||||
else return SINGLE_HOLD;
|
||||
}
|
||||
//If count = 2, and it has been interrupted - assume that user is trying to type the letter associated
|
||||
//with single tap.
|
||||
else if (state->count == 2) {
|
||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
||||
else if (state->pressed) return DOUBLE_HOLD;
|
||||
else return DOUBLE_TAP;
|
||||
}
|
||||
else return 6; //magic number. At some point this method will expand to work for more presses
|
||||
}
|
||||
///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION END /////
|
||||
///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION START /////
|
||||
//instantialize an instance of 'tap' for the 'ENT' tap dance.
|
||||
static tap ENTtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void ENT_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
ENTtap_state.state = cur_dance(state);
|
||||
switch (ENTtap_state.state) {
|
||||
case SINGLE_TAP: register_code(KC_SPC); break;
|
||||
case SINGLE_HOLD: register_code(KC_LSFT); break;
|
||||
case DOUBLE_TAP: register_code(KC_ENT); break;
|
||||
case DOUBLE_HOLD: register_code(KC_NO); break; // setting double hold to do nothing (change this if you want)
|
||||
case DOUBLE_SINGLE_TAP: register_code(KC_SPC); unregister_code(KC_SPC); register_code(KC_SPC);
|
||||
//Last case is for fast typing. Assuming your key is `f`:
|
||||
//For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
|
||||
//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.
|
||||
}
|
||||
}
|
||||
|
||||
void ENT_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (ENTtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code(KC_SPC); break;
|
||||
case SINGLE_HOLD: unregister_code(KC_LSFT); break;
|
||||
case DOUBLE_TAP: unregister_code(KC_ENT); break;
|
||||
case DOUBLE_HOLD: unregister_code(KC_NO);
|
||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_SPC);
|
||||
}
|
||||
ENTtap_state.state = 0;
|
||||
}
|
||||
|
||||
//instanalize an instance of 'tap' for the 'DEL' tap dance.
|
||||
static tap DELtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void DEL_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
DELtap_state.state = cur_dance(state);
|
||||
switch (DELtap_state.state) {
|
||||
case SINGLE_TAP: register_code(KC_BSPC); break;
|
||||
case SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case DOUBLE_TAP: register_code(KC_DEL); break;
|
||||
case DOUBLE_HOLD: register_code(KC_NO); break;
|
||||
case DOUBLE_SINGLE_TAP: register_code(KC_BSPC); unregister_code(KC_BSPC); register_code(KC_BSPC);
|
||||
}
|
||||
}
|
||||
|
||||
void DEL_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (DELtap_state.state) {
|
||||
case SINGLE_TAP: unregister_code(KC_BSPC); break;
|
||||
case SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
case DOUBLE_TAP: unregister_code(KC_DEL); break;
|
||||
case DOUBLE_HOLD: unregister_code(KC_NO);
|
||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_BSPC);
|
||||
}
|
||||
DELtap_state.state = 0;
|
||||
}
|
||||
///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION END /////
|
||||
|
||||
//Tap Dance Definitions
|
||||
//THIS SECTION HAS TO BE AT THE END OF THE TAP DANCE SECTION
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS)
|
||||
// Other declarations would go here, separated by commas, if you have them
|
||||
,[TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC)
|
||||
,[ENT_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ENT_finished, ENT_reset)
|
||||
,[DEL_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, DEL_finished, DEL_reset)
|
||||
};
|
||||
|
||||
//In Layer declaration, add tap dance item in place of a key code
|
||||
//TD(TD_SFT_CAPS)
|
|
@ -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;
|
||||
}
|
|
@ -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
|
Loading…
Reference in New Issue