[Keymap Removal] keyboard with most keymaps (#23092)

This commit is contained in:
Joel Challis 2024-02-16 13:25:44 +00:00 committed by GitHub
parent b8646bc40b
commit 78a74ca974
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
426 changed files with 0 additions and 27404 deletions

View file

@ -1,20 +0,0 @@
#pragma once
// Sets good default for the speed of the mouse.
#undef MOUSEKEY_INTERVAL
#undef MOUSEKEY_DELAY
#undef MOUSEKEY_TIME_TO_MAX
#undef MOUSEKEY_MAX_SPEED
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 100
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#undef MOUSEKEY_WHEEL_MAX_SPEED
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
#undef MOUSEKEY_WHEEL_DELAY
#define MOUSEKEY_WHEEL_MAX_SPEED 5
#define MOUSEKEY_WHEEL_TIME_TO_MAX 60
#define MOUSEKEY_WHEEL_DELAY 100

View file

@ -1,397 +0,0 @@
/*
Copyright 2019 Mario Arias <mario@marioarias.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "version.h"
#include "keymap_spanish.h"
enum layers {
BASE = 0, //Colemak
QWERTY, //Qwerty
FN, //Colemak but FN1 to FN12 instead of numbers
NUM, //Numpad
MOUSE, //Mouse and media controls
IDEA //Shortcuts for IDEA / Other tools
};
//Special paste
#define S_PASTE LSFT(LGUI(KC_V))
//tmux prefix
#define T_PREFIX LCTL(KC_B)
// Column mode
#define I_COLUMN ALGR(LCTL(LGUI(ES_MINS)))
// Terminal
#define I_TERM ALGR(KC_F12)
// Line comment
#define I_LN_COM LCTL(LGUI(KC_7))
// Block comment
#define I_BK_COM LCTL(LGUI(KC_8))
// Reformat code
#define I_REFORM LALT(LGUI(KC_L))
// Rename
#define I_RENAME LSFT(KC_F6)
// Find usages
#define I_FUSAGE LALT(KC_F7)
// Code for Packt
#define P_CODE LCTL(ALGR(KC_X))
// Search
#define I_SEARCH LCTL(LSFT(KC_F))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Colemak MacOS Spanish layer
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | 1 ! | 2 " | 3 · | 4 $ | 5 % | º \ | | ¡ ¿ | 6 & | 7 / | 8 ( | 9 ) | 0 = | Backsp |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | TAB | Q | W | F | P | G | Home | | End | J | L | U | Y | Ñ | ' ? |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | CAPS | A | R | S | T | D |------| |------| H | N | E | I | O | ENT |
* |--------+------+------+------+------+------| <> | | -_ |------+------+------+------+------+--------|
* | Shift | Z | X | C | V | B | | | | K | M | , ; | . : | UP | Shift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | Del | PgUp |Ctl/PD|Alt/[ |Cmd/] | |Cmd/{ |Alt/} | LEFT | DOWN | RIGHT|
* `----------------------------------' `----------------------------------'
* ,--------------. ,--------------.
* | Num | Mouse | | Qwer | Ctrl |
* ,------|------|-------| |------+-------+------.
* | | | FN | |SPaste| | |
* |LShift|Backsp|-------| |------| ENT |Space |
* | | | IDEA | | T-pre| | |
* `---------------------' `---------------------'
*/
[BASE] = LAYOUT_ergodox(
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, ES_LABK,
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_HOME,
KC_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV,
KC_DEL, KC_PGUP, CTL_T(KC_PGDN), ALT_T(ES_GRV), GUI_T(ES_PLUS),
DF(NUM), DF(MOUSE),
DF(FN),
KC_LSFT, KC_BSPC, MO(IDEA),
// right hand
ES_IEXL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_END, KC_J, KC_L, KC_U, KC_Y, ES_NTIL, ES_QUOT,
KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT,
ES_MINS, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
GUI_T(ES_ACUT), ALT_T(KC_BSLS), KC_LEFT, KC_DOWN, KC_RIGHT,
DF(QWERTY), KC_RCTL,
S_PASTE,
T_PREFIX, KC_ENT, KC_SPC
),
/* Keymap 1: Spanish QWERTY layer (games) //Will probably change it for a Linux/Windows Colemak layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | Q | W | E | R | T | | | | Y | U | I | O | P | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | A | S | D | F | G |------| |------| H | J | K | L | Ñ | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | Z | X | C | V | B | | | | N | M | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | Base | |
* ,------|------|------| |------+--------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `----------------------'
*/
[QWERTY] = LAYOUT_ergodox(
// left hand
_______, _______, _______, _______, _______, _______, _______,
_______, KC_Q, KC_W, KC_E, KC_R, KC_T, _______,
_______, KC_A, KC_S, KC_D, KC_F, KC_G,
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______,
_______, _______, _______,
// right hand
_______, _______, _______, _______, _______, _______, _______,
_______, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______,
_______, KC_N, KC_M, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
DF(BASE), _______,
_______,
_______, _______, _______
),
/* Keymap 2: Function Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | Base | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[FN] = LAYOUT_ergodox(
// left hand
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
DF(BASE),
_______, _______, _______,
// right hand
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______,
_______, _______, _______
),
/* Mouse and media controls
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | | | | | | Play | | Vol+ | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | Ms U | | | | | | | | Wh U | | | |
* |--------+------+------+------+------+------| Rwd | | Vol- |------+------+------+------+------+--------|
* | | | Ms L | Ms D | Ms R | |------| |------| | Wh L | Wh D | Wh R | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | Acc0 | Acc1 | Acc2 | | Fwd | | Mute | | Btn1 | Btn2 | Btn3 | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Num | Base | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------ |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[MOUSE] = LAYOUT_ergodox(
// left hand
KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY,
XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, KC_MRWD,
XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX,
XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, KC_MFFD,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
DF(NUM), DF(BASE),
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX,
// right hand
KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_VOLD, XXXXXXX, XXXXXXX, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_R, XXXXXXX, XXXXXXX,
KC_MUTE, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN3, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX
),
/* Num pad
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | ( | ) | = | / | * | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | Up | | | | | | | 7 | 8 | 9 | - | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | Left | Down |Right | |------| |------| | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | 1 | 2 | 3 |Enter | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | 0 | 0 | , |Enter | . |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Base | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------ |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[NUM] = LAYOUT_ergodox(
// left hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_UP, _______, _______, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
DF(BASE), _______,
_______,
_______, _______, _______,
// right hand
_______, LSFT(KC_8), LSFT(KC_9), KC_PEQL, KC_PSLS, KC_PAST, _______,
_______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
_______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______,
_______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______,
KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_DOT,
_______, _______,
_______,
_______, _______, _______
),
/* IDEA
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | Renm | | Usag | | LnCm | BkCm | | Term | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | |Search| | | | | | | Refm | | | | |
* |--------+------+------+------+------+------| | | Col |------+------+------+------+------+--------|
* | | | | | | |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | Code | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------ |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[IDEA] = LAYOUT_ergodox(
//Left hand
_______, _______, _______, _______, _______, _______, I_RENAME,
_______, _______, _______, I_SEARCH, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, P_CODE, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, DF(BASE),
_______,
_______, _______, _______,
// right hand
I_FUSAGE, _______, I_LN_COM, I_BK_COM, _______, I_TERM, _______,
I_COLUMN, _______, I_REFORM, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______,
_______, _______, _______
)
};
void led_1_off(void) {
ergodox_right_led_1_off();
}
void led_2_off(void) {
ergodox_right_led_2_off();
}
void led_3_off(void) {
ergodox_right_led_3_off();
}
//Runs just one time when the keyboard initializes
void matrix_init_use(void) {
led_1_off();
led_2_off();
led_3_off();
}
// Value to use to switch LEDs on. The default value of 255 is far too bright.
static const uint8_t max_led_value = 20;
void led_1_on(void) {
ergodox_right_led_1_on();
ergodox_right_led_1_set(max_led_value);
}
void led_2_on(void) {
ergodox_right_led_2_on();
ergodox_right_led_2_set(max_led_value);
}
void led_3_on(void) {
ergodox_right_led_3_on();
ergodox_right_led_3_set(max_led_value);
}
layer_state_t layer_state_set_user(layer_state_t state) {
if(layer_state_cmp(state ,IDEA)) {
led_1_on();
led_3_on();
} else {
led_1_off();
led_3_off();
}
return state;
};
void matrix_scan_user(void) {
ergodox_board_led_off();
led_1_off();
led_2_off();
led_3_off();
if(layer_state_cmp(default_layer_state, QWERTY)) {
led_3_on();
}
if(layer_state_cmp(default_layer_state, FN)) {
led_2_on();
}
if(layer_state_cmp(default_layer_state, NUM)) {
led_2_on();
led_3_on();
}
if(layer_state_cmp(default_layer_state, MOUSE)) {
led_1_on();
}
};

View file

@ -1,67 +0,0 @@
# ErgoDox EZ Spanish Colemak configuration
## Description
A Colemak keymap adapted for Spanish.
### Base Layer - Spanish Colemak
The Base Layer is a Colemak keymap with an additional "&ntilde;" next to the "y" key. The arrow cluster has a proper T inverted shape.
It includes almost all Spanish Symbols from a normal 100% keyboard thanks to the use of tap keys
| Pressed | Tap | Shift | Alt |
|---|---|---|---|
|Left Ctrl|PgDn|||
|Left Alt|`|ˆ|[|
|Left Cmd|+|*|]|
|Right Cmd|´|¨|{|
|Right Alt|ç|Ç|}|
For example, if you want to type ```[]```, you keep pressing the "Left Alt" (To modify) and tap "Right Alt" and "Right Cmd" to send "[" and "]"
### Qwerty Layer
A Qwerty layer for gaming and maybe some VIM commands. It just modifies the few keys that are different between Colemak and Qwerty and keep all the others keys
### Fn Layer
A layer to change the number row including "º" and "¡" for "Fn1" to "Fn12". The rest is just the same as the Base layer
### Mouse and media controls
Mouse movement on the left hand, wheel and buttons on the right hand. "Play/Pause", "Rewind", "Forward" in the Left inner column. "Volume Up", "Volume Down" and "Mute" in the Right inner column
### Numpad
A complete numpad in the right hand, plus and Arrow cluster on the left hand
### IDEA (JetBrains IDEs)
A momentary layer for IDEA shortcuts that require more than two fingers or any Fn key
## How to build it
If you already have all the dependencies (Check QMK's documentation), you can run the command:
```bash
make ergodox_ez:colemak_es_osx
```
On MacOS, if you're using MacPorts you can install the following dependencies:
```bash
port install avr-binutils
port install avr-gcc
port install avr-libc
```
This isn't an exhaustive list and maybe there other dependencies that are technically necessary
## Changelog
* Jul 2019:
* Initial version for the new QMK version
![](https://imgur.com/AyWNGlL.png)

View file

@ -1,2 +0,0 @@
node_modules/
package-lock.json

View file

@ -1,88 +0,0 @@
/*
Set any config.h overrides for your specific keymap here.
See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
*/
#pragma once
#undef TAPPING_TERM
#define TAPPING_TERM 175
#define TAPPING_TERM_PER_KEY
#undef DEBOUNCE
#define DEBOUNCE 15
#define RGB_MATRIX_SLEEP
#undef FORCE_NKRO
#define FORCE_NKRO
#undef TAPPING_TOGGLE
#define TAPPING_TOGGLE 5
#define LEADER_TIMEOUT 1000
#define PERMISSIVE_HOLD
#define DANCING_TERM 175
#define ONESHOT_TAP_TOGGLE 5
#undef ONESHOT_TIMEOUT
#define ONESHOT_TIMEOUT 5000
#define COMBO_TERM 200
#undef RGBLIGHT_HUE_STEP
#define RGBLIGHT_HUE_STEP 24
#undef RGBLIGHT_SAT_STEP
#define RGBLIGHT_SAT_STEP 24
#undef RGBLIGHT_VAL_STEP
#define RGBLIGHT_VAL_STEP 24
#undef RGBLIGHT_BRI_STEP
#define RGBLIGHT_BRI_STEP 24
#undef RGBLIGHT_LIMIT_VAL
#define RGBLIGHT_LIMIT_VAL 255
#undef MOUSEKEY_INTERVAL
#define MOUSEKEY_INTERVAL 10
#undef MOUSEKEY_DELAY
#define MOUSEKEY_DELAY 15
#undef MOUSEKEY_MAX_SPEED
#define MOUSEKEY_MAX_SPEED 20
#undef MOUSEKEY_TIME_TO_MAX
#define MOUSEKEY_TIME_TO_MAX 200
#undef MOUSEKEY_WHEEL_MAX_SPEED
#define MOUSEKEY_WHEEL_MAX_SPEED 20
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
#define MOUSEKEY_WHEEL_TIME_TO_MAX 200
// #undef NO_DEBUG
// #define NO_DEBUG
// #undef NO_PRINT
// #define NO_PRINT
// #define RETRO_TAPPING
// #define QUICK_TAP_TERM 0
// #define AUTO_SHIFT_TIMEOUT 150
// #define NO_AUTO_SHIFT_SPECIAL
// #define NO_AUTO_SHIFT_NUMERIC
// #define NO_AUTO_SHIFT_ALPHA
// #define EXTRA_LONG_COMBOS
// #define EXTRA_EXTRA_LONG_COMBOS
// #define COMBO_ALLOW_ACTION_KEYS
// #define RGBLIGHT_SLEEP

View file

@ -1,22 +0,0 @@
const gulp = require('gulp');
const run = require('gulp-run-command').default;
const ROOT_DIR = '../../../../';
const BUILD_DIR = `${ROOT_DIR}.build`;
const HACKER_DVORAK_DIR = './**/*';
const CLEAN_CMD = `rm -rf ${BUILD_DIR}`;
const BUILD_CMD = `make -C ${ROOT_DIR} ergodox_ez:hacker_dvorak`;
gulp.task('clean', run(CLEAN_CMD));
gulp.task('build', gulp.series('clean', run(BUILD_CMD, {
ignoreErrors: true
})));
gulp.task('watch', gulp.series('build', () => {
gulp.watch(HACKER_DVORAK_DIR, gulp.series('build'));
}));
gulp.task('default', gulp.series('watch'));

View file

@ -1,353 +0,0 @@
// Keyboard keymap:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DVORAK] = LAYOUT_ergodox(
// HACKER DVORAK left hand
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// ESCAPE | | | | | | START RECORDING //
// | | | | | | //
KC_ESC, TD(GRV_TILD), TD(AT_DLR), TD(LCBR_LABK), TD(LPRN_LBRC), TD(EXLM_QUES), DM_REC1, //
// | ~ | $ | < | [ | ? | //
// | TAP DANCE: ` | TAP DANCE: @ TAP DANCE: { | TAP DANCE: ( | TAP DANCE: ! | DYNAMIC MARCO 1 //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// TAB | MOD TAP: ALT+SHIFT | MOD TAP: CTRL+ALT | MOD TAP: CTRL+SHIFT | P | Y | //
// | | | | | | //
KC_TAB, TD(NONE_LEAD), TD(QUOT_DQUO), TD(DOT_COMM), LCG_T(KC_P), LAG_T(KC_Y), DM_PLY1, //
// | LEAD | " | , | | | //
// | TAP DANCE: NONE | TAP DANCE: ' | TAP DANCE: . | MOD TAP: CTRL+GUI | MOD TAP: ALT+GUI | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| PLAY DYNAMIC MACRO 1 //
// | MOD TAP: ALT | MOD TAP: CTRL | LAYER TAP: SHIFT | M TAP DANCE: ARROWS/GUI | MOD TAP: SHIFT+GUI | //
// | | | | Ü | | //
TD(EQL_PLUS), LALT_T(KC_A), LCTL_T(KC_O), LSFT_T(KC_E), TD(U_ARR_GUI), SGUI_T(KC_I), //-----------------------//
// + | Á | Ó | É | Ú | Í | //
// TAP DANCE: = | TAP DANCE: A | TAP DANCE: O | TAP DANCE: E | TAP DANCE: U | TAP DANCE: I | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| META //
// STOP RECORDING | MOD TAP: GUI+SHIFT+ALT | Q | J | K | X | //
// | | | | | | //
DM_RSTP, TD(SCLN_COLN), LCAG_T(KC_Q), TD(J_MED_MEH), TD(K_NUM_HYP), LCSG_T(KC_X), KC_LGUI, //
// | : | | | | | //
// DYNAMIC MACRO | TAP DANCE: ; | MOD TAP: SHIFT+GUI | M TAP DANCE: MEDIA/MEH | M TAP DANCE: ATM/HYPER | MOD TAP: CTL+SHIFT+GUI | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// LAYERS SWITCHER | APPLICATION MENU | | | //
// | | | | SCROLL //
TG(LAYERS), KC_APP, KC_NUM, KC_SCRL, KC_CAPS, //
// | | | | NUM //
// LAYER TOGGLE | | | | TAP DANCE: CAPS //
//------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// HACKER DVORAK left thumb
//------------------------+------------------------//
// MOUSE WHEEL LEFT | MOUSE WHEEL RIGHT //
// | //
KC_WH_L, KC_WH_R, //
// | //
// | //
//-------------------------+-------------------------+------------------------//
// | | HOME //
// | | //
/* SPACE | BACKSPACE */ KC_HOME, //
// | | //
// | | //
KC_SPC, KC_BSPC, //-----------------------//
// | | END //
// | | //
/* | */ KC_END, //
// | | //
// | | //
//-------------------------+-------------------------+------------------------//
// HACKER DVORAK right hand
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
DM_REC2, TD(APMR_PIPE), TD(RPRN_RBRC), TD(RCBR_RABK), TD(HASH_PERC), TD(ASTR_CIRC), XXXXXXX, //
// | | | | | | //
// | | | | | | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
DM_PLY2, LAG_T(KC_F), LCG_T(KC_G), C_S_T(KC_C), LCA_T(KC_R), LAS_T(KC_L), TD(SLSH_BSLS), //
// | | | | | | //
// | | | | | | //
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
/*-----------------------*/ SGUI_T(KC_D), TD(H_MOU_GUI), LSFT_T(KC_T), LCTL_T(KC_N), LALT_T(KC_S), TD(MINS_UNDS), //
// | | | | | | //
// | | | | | | //
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
KC_LGUI, LCSG_T(KC_B), TD(M_CHO_HYP), TD(W_MED_MEH), LCAG_T(KC_V), LASG_T(KC_Z), COMPOSE, //
// | | | | | | //
// | | | | | | ⎄ //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | //
// | | | | //
KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_SYRQ, //
// | | | | //
// | | | | //
//------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// HACKER DVORAK right thumb
//------------------------+------------------------//
// | //
// | //
KC_WH_U, KC_WH_D, //
// | //
// | //
//------------------------+-------------------------+------------------------//
// | | //
// | | //
KC_PGUP, // | //
// | | //
// | | //
//------------------------| | //
// | | //
// | | //
KC_PGDN, KC_DEL, KC_ENT //
// | | //
// | | //
//------------------------+-------------------------+------------------------//
),
[PLOVER] = LAYOUT_ergodox(
// left hand
XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO),
KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM,
KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
KC_CAPS, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
XXXXXXX, TG(LAYERS), PV_NUM, PV_NUM, PV_NUM,
// left thumb
KC_SPACE, KC_BSPC,
KC_HOME,
PV_A, PV_O, KC_END,
// right hand
KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP,
PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
PV_NUM, PV_NUM, PV_NUM, PV_NUM, XXXXXXX,
// right thumb
KC_DELETE, KC_ENTER,
KC_PGUP,
KC_PGDN, PV_E, PV_U
),
[GAMING] = LAYOUT_ergodox(
// left hand
KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T,
KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G,
LT(MOUSE, KC_GRV), KC_LCTL, KC_A, KC_S, KC_D, MEH_T(KC_F),
KC_BSLS, KC_LSFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M,
XXXXXXX, TG(LAYERS), KC_COMM, KC_DOT, KC_LBRC,
// left thumb
MO(MEDIA_FN), KC_NUM,
KC_SCLN,
KC_SPACE, KC_ENTER, KC_BSPC,
// right hand
KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9,
KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6,
KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3,
KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH,
KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX,
// right thumb
KC_MS_BTN5, MO(CHORD),
KC_MS_BTN4,
KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
),
[ARROWS] = LAYOUT_ergodox(
// left hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, KC_LCTL, KC_LSFT, XXXXXXX, _______, XXXXXXX,
XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// left thumb
XXXXXXX, XXXXXXX,
KC_HOME,
KC_SPACE, KC_BSPC, KC_END,
// right hand
LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX,
LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z),
KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION,
LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z),
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCRL,
// right thumb
XXXXXXX, XXXXXXX,
KC_PGUP,
KC_PGDN, KC_DELETE, KC_ENTER
),
[MOUSE] = LAYOUT_ergodox(
// left hand
XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X),
LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C),
KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT,
LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V),
KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// left thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
// right hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
XXXXXXX, _______, KC_MS_ACCEL1, KC_LSFT, KC_LCTL, KC_MS_ACCEL2,
XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// right thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, KC_MS_ACCEL0
),
[NUMPAD] = LAYOUT_ergodox(
// left hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX,
_______, KC_LCTL, KC_LSFT, _______, MEH_T(KC_NO), XXXXXXX,
XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// left thumb
XXXXXXX, XXXXXXX,
KC_HOME,
KC_SPACE, KC_BSPC, KC_END,
// right hand
KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC,
KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS,
KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC,
KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS,
// right thumb
XXXXXXX, XXXXXXX,
KC_PGUP,
KC_PGDN, KC_DELETE, KC_ENTER
),
[LAYERS] = LAYOUT_ergodox(
// left hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
// left thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX,
// right hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, TO(DVORAK), TO(PLOVER), TO(GAMING), XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// right thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX
),
[MEDIA_FN] = LAYOUT_ergodox(
// left hand
KC_VOLD, KC_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH,
KC_MPRV, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME,
KC_PAUS, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11,
RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK,
RGB_VAD, KC_CAPS, KC_PSCR, XXXXXXX, MO(FIRMWARE),
// left thumb
_______, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, KC_MEDIA_EJECT,
// right hand
KC_WWW_FAVORITES, KC_MYCM, KC_CALC, XXXXXXX, RGB_MOD, RGB_M_P, KC_VOLU,
KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MNXT,
KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MPLY,
KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI,
KC_PWR, XXXXXXX, KC_SLEP, KC_WAKE, RGB_VAI,
// right thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX
),
[CHORD] = LAYOUT_ergodox(
// left hand
XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX,
XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX,
XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15),
XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX,
XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24),
// left thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX,
// right hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// right thumb
XXXXXXX, _______,
XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX
),
[FIRMWARE] = LAYOUT_ergodox(
// left hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
// left thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
QK_BOOT, XXXXXXX, XXXXXXX,
// right hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// right thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
XXXXXXX, XXXXXXX, EE_CLR
)
};

View file

@ -1,13 +0,0 @@
// Compound keycode aliases
#define SCTL(kc) LSFT(LCTL(kc)) // Modifier keys: SHIFT+CTRL+kc combination.
// Tap
#define LASG_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, GUI+ALT+SHIFT when held.
#define LCSG_T(kc) MT(MOD_LGUI | MOD_LSFT | MOD_LCTL, kc) // Mod tap: kc when tapped, GUI+CTL+SHIFT when held.
#define LCG_T(kc) MT(MOD_LCTL | MOD_LGUI, kc) // Mod tap: kc when tapped, CTL+GUI when held.
#define LAS_T(kc) MT(MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, ALT+SHIFT when held.
#define LAG_T(kc) MT(MOD_LALT | MOD_LGUI, kc) // Mod tap: kc when tapped, ALT+GUI when held.
// Others
#define COMPOSE KC_RALT // Compose key (used to input characters like á, ñ, ü).

View file

@ -1,7 +0,0 @@
// Define custom user keycodes:
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // Can always be here.
MY_CUSTOM_MACRO, // Custom macro example.
MY_OTHER_MACRO, // Custom macro example.
DYNAMIC_MACRO_RANGE // Should always be the last.
};

View file

@ -1,28 +0,0 @@
#include QMK_KEYBOARD_H // Includes the QMK-verse.
#include "keymap_plover.h" // Includes the Plover keymap for easier readability.
// TODO: No eeprom changes unless needed, custom rgb settings for animations.
#include "keycodes/aliases_definitions.c"
#include "layers/layers_definitions.c"
#include "tap_dance/tap_dance_setup.c"
#include "tap_dance/tap_dances.c"
#include "user/matrix_scan_user.c"
#include "tap_dance/mod_tap_layer_dances/none_lead.c"
#include "tap_dance/mod_tap_layer_dances/dot_comm.c"
#include "tap_dance/mod_tap_layer_dances/quot_dquot.c"
#include "tap_dance/mod_tap_layer_dances/scln_coln.c"
#include "tap_dance/mod_tap_layer_dances/u_arrows_gui.c"
#include "tap_dance/mod_tap_layer_dances/h_mouse_gui.c"
#include "tap_dance/mod_tap_layer_dances/j_media_meh.c"
#include "tap_dance/mod_tap_layer_dances/w_media_meh.c"
#include "tap_dance/mod_tap_layer_dances/k_numpad_hyper.c"
#include "tap_dance/mod_tap_layer_dances/m_chords_hyper.c"
#include "tap_dance/tap_dance_actions.c"
#include "keycodes/custom_keycodes.c"
#include "dynamic_macro.h" // Includes dynamic macro definitions, needed *after* the custom keycodes.
#include "hacker_dvorak.c"
#include "user/eeconfig_init_user.c"
#include "user/process_record_user.c"
#include "plover/plover_mode.c"
#include "user/layer_set_state_user.c"

View file

@ -1,12 +0,0 @@
enum layers { // Hacker Dvorak keyboard layers:
DVORAK = 0, // * Dvorak base layer.
PLOVER = 1, // * Steno layer for use with Plover.
GAMING = 2, // * Gaming layer intended for general purpose playing.
ARROWS = 3, // * Arrows movement keys and edition shortcuts.
MOUSE = 4, // * Mouse movement keys and edition shortcuts.
NUMPAD = 5, // * ATM style numpad with symbols and letters that should suffice to input any numeric literal.
LAYERS = 6, // * Layer switcher used to change between DVORAK, PLOVER and GAMING layers.
MEDIA_FN = 7, // * Media, RGB and function keys from F1 to F24 in symmetric fashion.
CHORD = 8, // * Hot keys layer (uses hyper + F1 .. F24) suitable for global shortcut tasks.
FIRMWARE = 9 // * Layer with firmware related functionality, like the reset and EEPROM keys.
};

View file

@ -1,15 +0,0 @@
{
"name": "hacker_dvorak",
"version": "1.0.0",
"description": "Inspired by the [*Programmer Dvorak*](https://www.kaufmann.no/roland/dvorak) keyboard layout, cherry picked ideas from other layouts in the [EZ Repository](https://configure.ergodox-ez.com/search?q=dvorak&legacy=true), a character distribution [heatmap vizualizer](https://run.plnkr.co/plunks/5EEO8nJ2wRzYAfT3), my own subjective use cases and lots of trial and error.",
"main": "gulpfile.js",
"scripts": {
"test": "test"
},
"author": "SalchiPapa",
"license": "GPL-2.0",
"dependencies": {
"gulp": "^4.0.0",
"gulp-run-command": "0.0.9"
}
}

View file

@ -1,20 +0,0 @@
// TODO: improve feedback
void plover_toggle(void) {
// Press "PHROLG"
register_code(PV_LP);
register_code(PV_LH);
register_code(PV_LR);
register_code(PV_O);
register_code(PV_RL);
register_code(PV_RG);
// Release "PHROLG"
unregister_code(PV_LP);
unregister_code(PV_LH);
unregister_code(PV_LR);
unregister_code(PV_O);
unregister_code(PV_RL);
unregister_code(PV_RG);
}
bool PLOVER_MODE = false;

View file

@ -1,62 +0,0 @@
# [Ergodox EZ Hacker Dvorak Layout](https://configure.ergodox-ez.com/layouts/Wadz/latest/0)
Inspired by the [*Programmer Dvorak*](https://www.kaufmann.no/roland/dvorak) keyboard layout, cherry picked ideas from other layouts in the [EZ Repository](https://configure.ergodox-ez.com/search?q=dvorak&legacy=true), a character distribution [heatmap vizualizer](https://run.plnkr.co/plunks/5EEO8nJ2wRzYAfT3), my own subjective use cases and lots of trial and error.
## Setup
Configure your OS keyboard layout to US, or the keymap will be incorrect.
## Limitations
I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome some limitations of the Ergodox EZ [graphical configurator](https://configure.ergodox-ez.com/layouts/default/latest/0)), however I will defer that, until more progress is made to the new [configurator](https://medium.com/the-ergo/the-configurator-is-out-of-beta-e107aec80cae).
## Layers
1. Dvorak
* US Dvorak layout.
* All symbols (including shifted symbols).
* All modifier are dual keys positioned near the home row.
2. Querty
* Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use
Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on
the Ergodox EZ Shine at the same time, without changing back and forth tho OS layout.
3. Gaming
* Still in development.
* Left side is mainly "normal" Qwerty.
* Right side is mainly for movement, either using the mouse, the arrow keys, the number pad or the `H`, `J`, `K`, `L` as direction keys.
4. Arrows
* Arrow keys navigation.
* All modifier keys.
* Common text edititng shortcuts (doesn't work for MacOS).
5. Mouse
* Mouse navigation.
* All modifier keys.
* Common text edititng shortcuts (doesn't work for MacOS).
6. Numpad
* ATM style numpad.
* All modifier keys.
* Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming
languages, ie. `0b11001`).
* `X` for hexadecimal numeric literals in most programming languages, ie. `0xbeef`.
* `O` for octal numeric literals in most programming languages, ie `0o123`.
* `J` for complex numeric literals in Python, ie. `3j`.
* `I` and `M` for complex Julia numeric literals, ie. `3im`.
* Common symbols for mathematical operations.
7. Hyper Fn
* Useful for custom global shortcuts.
8. Media Fn
* Media keys.
* Function keys.
* EZ Shine keys.
9. Meh Fn
* Useful for custom application shortcuts.
10. Meh Fn +
* Useful for custom standard shortcuts.
## To Do
Add images.
***
Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience!

View file

@ -1,37 +0,0 @@
# Set any rules.mk overrides for your specific keymap here.
# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
LTO_ENABLE = yes
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
TAP_DANCE_ENABLE = yes
MOUSEKEY_ENABLE = yes # Mouse keys(+4700b).
EXTRAKEY_ENABLE = yes # Audio control and System control(+450b).
RGBLIGHT_ENABLE = yes
LEADER_ENABLE = yes
UNICODE_ENABLE = no
COMMAND_ENABLE = no # Commands for debug and configuration
SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard.
# This are by default off:
# COMBO_ENABLE = no
# UCIS_ENABLE = no # For Unicode.
# UNICODEMAP_ENABLE = no
# SLEEP_LED_ENABLE = no # Turn off leds when computer is sleeping.
# KEY_LOCK_ENABLE = no # (+1730b)
# CONSOLE_ENABLE = no # Console for debug(+400b)
# MIDI_ENABLE = no
# BLUETOOTH_ENABLE = no
# AUDIO_ENABLE = no
# VARIABLE_TRACE = no
# BACKLIGHT_ENABLE = no
# RGB_MATRIX_ENABLE = no
# POINTING_DEVICE_ENABLE = no
# AUTO_SHIFT_ENABLE = no
# This don't need argument?
# CUSTOM_MATRIX # Custom matrix file for the ErgoDox EZ
# SPLIT_KEYBOARD

View file

@ -1,41 +0,0 @@
//instanalize an instance of 'tap' for the Dot - Comma tap dance.
static tap dot_comm_state = {
.is_press_action = true,
.state = 0
};
void dot_comm_finished(tap_dance_state_t *state, void *user_data) {
dot_comm_state.state = current_dance(state);
switch (dot_comm_state.state) {
case SINGLE_TAP:
register_code(KC_DOT);
break;
case SINGLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
break;
case DOUBLE_TAP:
register_code(KC_COMM);
break;
}
}
void dot_comm_reset(tap_dance_state_t *state, void *user_data) {
switch (dot_comm_state.state) {
case SINGLE_TAP:
unregister_code(KC_DOT);
break;
case SINGLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
break;
case DOUBLE_TAP:
unregister_code(KC_COMM);
break;
}
dot_comm_state.state = 0;
}

View file

@ -1,39 +0,0 @@
//instanalize an instance of 'tap' for the H - Mouse - Gui tap dance.
static tap h_mouse_gui_state = {
.is_press_action = true,
.state = 0
};
void h_mouse_gui_finished(tap_dance_state_t *state, void *user_data) {
h_mouse_gui_state.state = current_dance(state);
switch (h_mouse_gui_state.state) {
case SINGLE_TAP:
register_code(KC_H);
break;
case SINGLE_HOLD:
layer_on(MOUSE);
break;
case DOUBLE_HOLD:
register_code(KC_LGUI);
break;
}
}
void h_mouse_gui_reset(tap_dance_state_t *state, void *user_data) {
switch (h_mouse_gui_state.state) {
case SINGLE_TAP:
unregister_code(KC_H);
break;
case SINGLE_HOLD:
layer_off(MOUSE);
break;
case DOUBLE_HOLD:
unregister_code(KC_LGUI);
break;
}
h_mouse_gui_state.state = 0;
}

View file

@ -1,43 +0,0 @@
//instanalize an instance of 'tap' for the J - Media - Meh tap dance.
static tap j_media_meh_state = {
.is_press_action = true,
.state = 0
};
void j_media_meh_finished(tap_dance_state_t *state, void *user_data) {
j_media_meh_state.state = current_dance(state);
switch (j_media_meh_state.state) {
case SINGLE_TAP:
register_code(KC_J);
break;
case SINGLE_HOLD:
layer_on(MEDIA_FN);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
break;
}
}
void j_media_meh_reset(tap_dance_state_t *state, void *user_data) {
switch (j_media_meh_state.state) {
case SINGLE_TAP:
unregister_code(KC_J);
break;
case SINGLE_HOLD:
layer_off(MEDIA_FN);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
break;
}
j_media_meh_state.state = 0;
}

View file

@ -1,45 +0,0 @@
//instanalize an instance of 'tap' for the K - Numpad - Hyper tap dance.
static tap k_numpad_hyper_state = {
.is_press_action = true,
.state = 0
};
void k_numpad_hyper_finished(tap_dance_state_t *state, void *user_data) {
k_numpad_hyper_state.state = current_dance(state);
switch (k_numpad_hyper_state.state) {
case SINGLE_TAP:
register_code(KC_K);
break;
case SINGLE_HOLD:
layer_on(NUMPAD);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
register_code(KC_LGUI);
break;
}
}
void k_numpad_hyper_reset(tap_dance_state_t *state, void *user_data) {
switch (k_numpad_hyper_state.state) {
case SINGLE_TAP:
unregister_code(KC_K);
break;
case SINGLE_HOLD:
layer_off(NUMPAD);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
unregister_code(KC_LGUI);
break;
}
k_numpad_hyper_state.state = 0;
}

View file

@ -1,45 +0,0 @@
//instanalize an instance of 'tap' for the M - Chords - Hyper tap dance.
static tap m_chords_hyper_state = {
.is_press_action = true,
.state = 0
};
void m_chords_hyper_finished(tap_dance_state_t *state, void *user_data) {
m_chords_hyper_state.state = current_dance(state);
switch (m_chords_hyper_state.state) {
case SINGLE_TAP:
register_code(KC_M);
break;
case SINGLE_HOLD:
layer_on(CHORD);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
register_code(KC_LGUI);
break;
}
}
void m_chords_hyper_reset(tap_dance_state_t *state, void *user_data) {
switch (m_chords_hyper_state.state) {
case SINGLE_TAP:
unregister_code(KC_M);
break;
case SINGLE_HOLD:
layer_off(CHORD);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
unregister_code(KC_LGUI);
break;
}
m_chords_hyper_state.state = 0;
}

View file

@ -1,40 +0,0 @@
//instanalize an instance of 'tap' for the None - Lead tap dance.
static tap none_lead_state = {
.is_press_action = true,
.state = 0
};
void none_lead_finished(tap_dance_state_t *state, void *user_data) {
none_lead_state.state = current_dance(state);
switch (none_lead_state.state) {
case SINGLE_TAP:
register_code(KC_NO);
break;
case SINGLE_HOLD:
register_code(KC_LALT);
register_code(KC_LSFT);
break;
case DOUBLE_TAP:
leader_start();
break;
}
}
void none_lead_reset(tap_dance_state_t *state, void *user_data) {
switch (none_lead_state.state) {
case SINGLE_TAP:
unregister_code(KC_NO);
break;
case SINGLE_HOLD:
unregister_code(KC_LALT);
unregister_code(KC_LSFT);
break;
case DOUBLE_TAP:
break;
}
none_lead_state.state = 0;
}

View file

@ -1,41 +0,0 @@
//instanalize an instance of 'tap' for the Quote - Double Quote tap dance.
static tap quot_dquot_state = {
.is_press_action = true,
.state = 0
};
void quot_dquot_finished(tap_dance_state_t *state, void *user_data) {
quot_dquot_state.state = current_dance(state);
switch (quot_dquot_state.state) {
case SINGLE_TAP:
register_code(KC_QUOT);
break;
case SINGLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LALT);
break;
case DOUBLE_TAP:
register_code16(KC_DQUO);
break;
}
}
void quot_dquot_reset(tap_dance_state_t *state, void *user_data) {
switch (quot_dquot_state.state) {
case SINGLE_TAP:
unregister_code(KC_QUOT);
break;
case SINGLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LALT);
break;
case DOUBLE_TAP:
unregister_code16(KC_DQUO);
break;
}
quot_dquot_state.state = 0;
}

View file

@ -1,43 +0,0 @@
//instanalize an instance of 'tap' for the Semicolon - Colon tap dance.
static tap scln_coln_state = {
.is_press_action = true,
.state = 0
};
void scln_coln_finished(tap_dance_state_t *state, void *user_data) {
scln_coln_state.state = current_dance(state);
switch (scln_coln_state.state) {
case SINGLE_TAP:
register_code(KC_SCLN);
break;
case SINGLE_HOLD:
register_code(KC_LALT);
register_code(KC_LSFT);
register_code(KC_LGUI);
break;
case DOUBLE_TAP:
register_code16(KC_COLN);
break;
}
}
void scln_coln_reset(tap_dance_state_t *state, void *user_data) {
switch (scln_coln_state.state) {
case SINGLE_TAP:
unregister_code(KC_SCLN);
break;
case SINGLE_HOLD:
unregister_code(KC_LALT);
unregister_code(KC_LSFT);
unregister_code(KC_LGUI);
break;
case DOUBLE_TAP:
unregister_code16(KC_COLN);
break;
}
scln_coln_state.state = 0;
}

View file

@ -1,39 +0,0 @@
//instanalize an instance of 'tap' for the U - Arrows - Gui tap dance.
static tap u_arrows_gui_state = {
.is_press_action = true,
.state = 0
};
void u_arrows_gui_finished(tap_dance_state_t *state, void *user_data) {
u_arrows_gui_state.state = current_dance(state);
switch (u_arrows_gui_state.state) {
case SINGLE_TAP:
register_code(KC_U);
break;
case SINGLE_HOLD:
layer_on(ARROWS);
break;
case DOUBLE_HOLD:
register_code(KC_LGUI);
break;
}
}
void u_arrows_gui_reset(tap_dance_state_t *state, void *user_data) {
switch (u_arrows_gui_state.state) {
case SINGLE_TAP:
unregister_code(KC_U);
break;
case SINGLE_HOLD:
layer_off(ARROWS);
break;
case DOUBLE_HOLD:
unregister_code(KC_LGUI);
break;
}
u_arrows_gui_state.state = 0;
}

View file

@ -1,43 +0,0 @@
//instanalize an instance of 'tap' for the W - Media - Meh tap dance.
static tap w_media_meh_state = {
.is_press_action = true,
.state = 0
};
void w_media_meh_finished(tap_dance_state_t *state, void *user_data) {
w_media_meh_state.state = current_dance(state);
switch (w_media_meh_state.state) {
case SINGLE_TAP:
register_code(KC_W);
break;
case SINGLE_HOLD:
layer_on(MEDIA_FN);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
break;
}
}
void w_media_meh_reset(tap_dance_state_t *state, void *user_data) {
switch (w_media_meh_state.state) {
case SINGLE_TAP:
unregister_code(KC_W);
break;
case SINGLE_HOLD:
layer_off(MEDIA_FN);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
break;
}
w_media_meh_state.state = 0;
}

View file

@ -1,44 +0,0 @@
// Register the double tap dances:
tap_dance_action_t tap_dance_actions[] = {
[EQL_PLUS] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS),
[MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS),
[SLSH_BSLS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS),
[GRV_TILD] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD),
[ASTR_CIRC] = ACTION_TAP_DANCE_DOUBLE(KC_ASTR, KC_CIRC),
[APMR_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_AMPR, KC_PIPE),
[EXLM_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_EXLM, KC_QUES),
[HASH_PERC] = ACTION_TAP_DANCE_DOUBLE(KC_HASH, KC_PERC),
[AT_DLR] = ACTION_TAP_DANCE_DOUBLE(KC_AT, KC_DLR),
[LPRN_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC),
[RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
[LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK),
[RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK),
[SCLN_COLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, scln_coln_finished, scln_coln_reset),
[QUOT_DQUO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, quot_dquot_finished, quot_dquot_reset),
[DOT_COMM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dot_comm_finished, dot_comm_reset),
[NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, none_lead_finished, none_lead_reset),
[U_ARR_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, u_arrows_gui_finished, u_arrows_gui_reset),
[H_MOU_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, h_mouse_gui_finished, h_mouse_gui_reset),
[J_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, j_media_meh_finished, j_media_meh_reset),
[W_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, w_media_meh_finished, w_media_meh_reset),
[K_NUM_HYP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, k_numpad_hyper_finished, k_numpad_hyper_reset),
[M_CHO_HYP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, m_chords_hyper_finished, m_chords_hyper_reset),
};
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TD(SCLN_COLN):
case TD(QUOT_DQUO):
case TD(DOT_COMM):
case TD(NONE_LEAD):
case TD(U_ARR_GUI):
case TD(H_MOU_GUI):
case TD(J_MED_MEH):
case TD(W_MED_MEH):
case TD(K_NUM_HYP):
case TD(M_CHO_HYP):
return DANCING_TERM;
default:
return TAPPING_TERM;
}
}

View file

@ -1,75 +0,0 @@
typedef struct {
bool is_press_action;
int state;
} tap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD = 2,
DOUBLE_TAP = 3,
DOUBLE_HOLD = 4,
DOUBLE_SINGLE_TAP = 5, // Send two single taps.
TRIPLE_TAP = 6,
TRIPLE_HOLD = 7,
TRIPLE_SINGLE_TAP = 8 // Send three single taps.
};
/* Return an integer that corresponds to what kind of tap dance should be executed.
*
* How to figure out tap dance state: interrupted and pressed.
*
* Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
* under the tapping term. This is typically indicitive that you are trying to "tap" the key.
*
* Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
* has ended, but the key is still being pressed down. This generally means the key is being "held".
*
* One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
* feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
* For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
*
* Good places to put an advanced tap dance:
* z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
*
* Criteria for "good placement" of a tap dance key:
* Not a key that is hit frequently in a sentence
* Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
* in a web form. So 'tab' would be a poor choice for a tap dance.
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
* letter 'p', the word 'pepper' would be quite frustating to type.
*
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
*
*/
int current_dance(tap_dance_state_t *state) {
int current_state = 0;
if (state->count == 1) {
if (state->interrupted || !state->pressed) {
current_state = SINGLE_TAP;
} else {
current_state = SINGLE_HOLD; //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
}
} else if (state->count == 2) {
/*
* DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
* action when hitting 'pp'. Suggested use case for this return value is when you want to send two
* keystrokes of the key, and not the 'double tap' action/macro.
*/
if (state->interrupted) {
current_state = DOUBLE_SINGLE_TAP;
} else if (state->pressed) {
current_state = DOUBLE_HOLD;
} else {
current_state = DOUBLE_TAP;
}
} else if (state->count == 3) {
if (state->interrupted) {
current_state = TRIPLE_SINGLE_TAP;
} else if (state->pressed) {
current_state = TRIPLE_HOLD;
} else {
current_state = TRIPLE_TAP;
}
}
return current_state;
}

View file

@ -1,98 +0,0 @@
//--------------------------------------------------------------------------------------------//
// | | | | | //
// Single tap | Single hold | Double tap | Double hold | Triple tap | Triple hold //
// Mod tap dances: // | | | | | //
enum tap_dances { //--------------------------------------------------------------------------------------------//
// | | | | | //
EQL_PLUS = 0, // = | | + | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
MINS_UNDS = 1, // - | | _ | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
SLSH_BSLS = 2, // / | | \ | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
GRV_TILD = 3, // ` | | ~ | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
QUOT_DQUO = 4, // ' | CTRL+ALT | " | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
SCLN_COLN = 5, // ; |ALT+SHIFT+META | : | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
ASTR_CIRC = 6, // * | | ^ | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
APMR_PIPE = 7, // & | | | | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
EXLM_QUES = 8, // ! | | ? | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
HASH_PERC = 9, // # | | % | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
AT_DLR = 10, // @ | | $ | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
LPRN_LBRC = 11, // ( | | [ | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
RPRN_RBRC = 12, // ) | | ] | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
LCBR_LABK = 13, // { | | < | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
RCBR_RABK = 14, // } | | > | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
DOT_COMM = 15, // . | CTRL+SHIFT | , | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
NONE_LEAD = 16, // NONE | ALT+SHIFT | LEAD | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
U_ARR_GUI = 17, // U | ARROWS | | GUI | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
H_MOU_GUI = 18, // H | MOUSE | | GUI | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
J_MED_MEH = 19, // J | MEDIA_FN | | MEH | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
W_MED_MEH = 20, // W | MEDIA_FN | | MEH | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
K_NUM_HYP = 21, // K | NUMPAD | | HYPER | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
M_CHO_HYP = 22, // M | CHORD | | HYPER | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
};

View file

@ -1,3 +0,0 @@
// void eeconfig_init_user(void) {
//
// };

View file

@ -1,121 +0,0 @@
layer_state_t layer_state_set_user(layer_state_t state) {
uint8_t layer = get_highest_layer(state);
switch (layer) {
case DVORAK:
rgblight_sethsv_noeeprom(HSV_GREEN);
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case PLOVER:
rgblight_sethsv_noeeprom(HSV_RED);
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
if (!(PLOVER_MODE)) {
plover_toggle();
PLOVER_MODE = true;
}
break;
case GAMING:
rgblight_sethsv_noeeprom(HSV_RED);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case ARROWS:
rgblight_sethsv_noeeprom(HSV_BLUE);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case MOUSE:
rgblight_sethsv_noeeprom(HSV_BLUE);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case NUMPAD:
rgblight_sethsv_noeeprom(HSV_BLUE);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case LAYERS:
rgblight_sethsv_noeeprom(HSV_CYAN);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case MEDIA_FN:
rgblight_sethsv_noeeprom(HSV_YELLOW);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case CHORD:
rgblight_sethsv_noeeprom(HSV_MAGENTA);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case FIRMWARE:
rgblight_sethsv_noeeprom(HSV_MAGENTA);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
default:
break;
}
return state;
}

View file

@ -1,20 +0,0 @@
bool MATRIX_SCANNED = false;
void matrix_scan_user(void) {
if (!(MATRIX_SCANNED)) {
rgblight_sethsv_noeeprom(HSV_GREEN);
MATRIX_SCANNED = true;
}
};
void leader_end_user(void) {
if (leader_sequence_one_key(TD(APMR_PIPE))) {
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_U);
unregister_code(KC_U);
unregister_code(KC_LSFT);
unregister_code(KC_LCTL);
}
}

View file

@ -1,75 +0,0 @@
// TODO: Improve this currently there is no feedback if activated by other means.
bool CAPS_LOCK = false;
bool NUM_LOCK = false;
bool SCROLL_LOCK = false;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
switch (keycode) {
case KC_CAPS_LOCK:
if (record->event.pressed) {
if (!(CAPS_LOCK)) {
ergodox_right_led_1_on();
CAPS_LOCK = true;
} else {
ergodox_right_led_1_off();
CAPS_LOCK = false;
}
}
return true;
case KC_NUM_LOCK:
if (record->event.pressed) {
if (!(NUM_LOCK)) {
ergodox_right_led_2_on();
NUM_LOCK = true;
} else {
ergodox_right_led_2_off();
NUM_LOCK = false;
}
}
return true;
case KC_SCROLL_LOCK:
if (record->event.pressed) {
if (!(SCROLL_LOCK)) {
ergodox_right_led_3_on();
SCROLL_LOCK = true;
} else {
ergodox_right_led_3_off();
SCROLL_LOCK = false;
}
}
return true;
case KC_MS_WH_UP ... KC_MS_WH_RIGHT:
if (record->event.pressed) {
if (SCROLL_LOCK) {
return false;
} else {
return true;
}
}
case MY_CUSTOM_MACRO:
if (record->event.pressed) {
SEND_STRING("QMK is the best thing ever!"); // this is our macro!
return false;
}
case MY_OTHER_MACRO:
if (record->event.pressed) {
SEND_STRING(SS_LCTL("ac")); // selects all and copies
return false;
}
default:
return true;
}
}