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
This commit is contained in:
parent
8007d9f3a7
commit
9175eebc87
22 changed files with 985 additions and 257 deletions
|
@ -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
|
|
3
layouts/community/ortho_3x10/layout.json
Normal file
3
layouts/community/ortho_3x10/layout.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
["","","","","","","","","",""],
|
||||||
|
["","","","","","","","","",""],
|
||||||
|
["","","","","","","","","",""]
|
3
layouts/community/ortho_3x10/readme.md
Normal file
3
layouts/community/ortho_3x10/readme.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# ortho_3x10
|
||||||
|
|
||||||
|
LAYOUT_ortho_3x10
|
9
layouts/community/ortho_3x10/wanleg/config.h
Normal file
9
layouts/community/ortho_3x10/wanleg/config.h
Normal file
|
@ -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
|
29
layouts/community/ortho_3x10/wanleg/keymap.c
Normal file
29
layouts/community/ortho_3x10/wanleg/keymap.c
Normal file
|
@ -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 Image](https://i.imgur.com/nCPog2W.png)
|
||||||
# Gherkin Wanleg Layout
|
# 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.
|
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 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:
|
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
|
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 |
|
| 5V | VCC |
|
||||||
|
|
||||||
## Make the QMK DFU .hex
|
## 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_OUTPUT B4
|
||||||
#define QMK_ESC_INPUT F7
|
#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.
|
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.
|
`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.
|
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).
|
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
|
For example
|
||||||
`make <keyboard>:<keymap>:production`
|
`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
|
## Burn QMK DFU
|
||||||
6. Navigate to the directory with your `_production.hex` file, and burn it with the following command
|
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
|
## Using QMK DFU
|
||||||
7. Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with
|
7. Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with
|
||||||
`make gherkin:<keymap>:dfu dfu=qmk`
|
`make gherkin:<keymap>:dfu`
|
||||||
The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina`
|
|
3
layouts/community/ortho_3x10/wanleg/rules.mk
Normal file
3
layouts/community/ortho_3x10/wanleg/rules.mk
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
SWAP_HANDS_ENABLE = no
|
||||||
|
|
||||||
|
BOOTLOADER = qmk-dfu
|
15
layouts/community/ortho_4x12/wanleg/config.h
Normal file
15
layouts/community/ortho_4x12/wanleg/config.h
Normal file
|
@ -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
|
67
layouts/community/ortho_4x12/wanleg/keymap.c
Normal file
67
layouts/community/ortho_4x12/wanleg/keymap.c
Normal file
|
@ -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______________
|
||||||
|
),
|
||||||
|
};
|
24
layouts/community/ortho_4x12/wanleg/readme.md
Normal file
24
layouts/community/ortho_4x12/wanleg/readme.md
Normal file
|
@ -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)
|
6
layouts/community/ortho_4x12/wanleg/rules.mk
Normal file
6
layouts/community/ortho_4x12/wanleg/rules.mk
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
AUDIO_ENABLE = no
|
||||||
|
SWAP_HANDS_ENABLE = yes
|
||||||
|
|
||||||
|
ifeq ($(strip $(KEYBOARD)), jj40)
|
||||||
|
SWAP_HANDS_ENABLE = no
|
||||||
|
endif
|
3
layouts/community/ortho_5x15/wanleg/config.h
Normal file
3
layouts/community/ortho_5x15/wanleg/config.h
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
#endif
|
176
layouts/community/ortho_5x15/wanleg/keymap.c
Normal file
176
layouts/community/ortho_5x15/wanleg/keymap.c
Normal file
|
@ -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
|
||||||
|
),
|
||||||
|
};
|
1
layouts/community/ortho_5x15/wanleg/rules.mk
Normal file
1
layouts/community/ortho_5x15/wanleg/rules.mk
Normal file
|
@ -0,0 +1 @@
|
||||||
|
SWAP_HANDS_ENABLE = no
|
32
users/wanleg/config.h
Normal file
32
users/wanleg/config.h
Normal file
|
@ -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
|
14
users/wanleg/readme.md
Normal file
14
users/wanleg/readme.md
Normal file
|
@ -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/>.
|
19
users/wanleg/rules.mk
Normal file
19
users/wanleg/rules.mk
Normal file
|
@ -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
|
110
users/wanleg/tapdances.c
Normal file
110
users/wanleg/tapdances.c
Normal file
|
@ -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)
|
158
users/wanleg/wanleg.c
Normal file
158
users/wanleg/wanleg.c
Normal file
|
@ -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;
|
||||||
|
}
|
308
users/wanleg/wanleg.h
Normal file
308
users/wanleg/wanleg.h
Normal file
|
@ -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 a new issue