Remove non-default keymaps

This commit is contained in:
Drashna Jaelre
2019-04-09 09:01:04 -07:00
parent b6850bc043
commit 7c9d1d58ee
592 changed files with 2 additions and 54618 deletions

13
.gitignore vendored
View File

@@ -28,18 +28,9 @@ doxygen/
.DS_STORE .DS_STORE
/util/wsl_downloaded /util/wsl_downloaded
/util/win_downloaded /util/win_downloaded
/users/
/layouts/
/keyboards/*/Makefile /keyboards/*/Makefile
/keyboards/*/*/Makefile
/keyboards/*/*/*/Makefile
/keyboards/*/*/*/*/Makefile
/keyboards/*/*/*/*/*/Makefile
/keyboards/*/keymaps/Makefile
/keyboards/*/*/keymaps/Makefile
/keyboards/*/*/*/keymaps/Makefile
/keyboards/*/*/*/*/keymaps/Makefile
/keyboards/*/*/*/*/*/keymaps/Makefile
users/
layouts/
!/keyboards/ergodox_ez/ !/keyboards/ergodox_ez/
!/keyboards/planck/ !/keyboards/planck/

View File

@@ -1,5 +0,0 @@
#pragma once
#define ONESHOT_TAP_TOGGLE 2
#define ONESHOT_TIMEOUT 167
#define FORCE_NKRO

View File

@@ -1,176 +0,0 @@
#include QMK_KEYBOARD_H
#define SHIFT_DOWN() (get_mods() & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)))
#define KC_FKEYS MO(FKEYS)
// Layers
enum {
BASE=0,
SYMNUM, // Symbols and numbers (activated by holding enter)
FKEYS, // Function keys (activated by a thumb button)
};
// counter that increments on all key press events. This is needed for our LT
// handling
uint16_t press_counter = 0;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Keymap 0: Base layer
[BASE] = LAYOUT_ergodox(
// left hand ---------------------------------------------------------------------------------------------------
KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_NO,
KC_GRV, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_LGUI,
KC_SLSH, KC_A, KC_O, KC_E, KC_U, KC_I,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_HOME,
KC_LCTL, KC_LALT, KC_PGUP, KC_PGDN, KC_NO,
// left thumb --------------------------------------------------------------------------------------------------
KC_NO, KC_NO,
KC_NO,
KC_SPC, KC_TAB, KC_FKEYS,
// right hand --------------------------------------------------------------------------------------------------
KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO,
KC_RGUI, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
KC_END, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_RCTL,
// right thumb -------------------------------------------------------------------------------------------------
KC_NO, KC_NO,
KC_NO,
KC_DEL, KC_BSPC, KC_ENT
),
// SYMNUM -- numpad and function keys
[SYMNUM] = LAYOUT_ergodox(
// left hand ---------------------------------------------------------------------------------------------------
KC_TRNS, LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AMPR, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LCBR, KC_LBRC, KC_LPRN, KC_0, KC_MINS,
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_SLSH, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// left thumb --------------------------------------------------------------------------------------------------
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand --------------------------------------------------------------------------------------------------
KC_TRNS, LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), KC_TRNS,
KC_TRNS, KC_PERC, KC_EQL, KC_LT, KC_GT, KC_EXLM, KC_TRNS,
KC_PLUS, KC_1, KC_RPRN, KC_RBRC, KC_RCBR, KC_TRNS,
KC_TRNS, KC_ASTR, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// right thumb -------------------------------------------------------------------------------------------------
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
// FKEYS -- function keys
[FKEYS] = LAYOUT_ergodox(
// left hand ---------------------------------------------------------------------------------------------------
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// left thumb --------------------------------------------------------------------------------------------------
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand --------------------------------------------------------------------------------------------------
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// right thumb -------------------------------------------------------------------------------------------------
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
};
// Code to handle layer tap.
//
// The default code doesn't work for me, so I rolled my own code. The main
// difference is that it always tries to send modifier+key combination, rather
// than two keys. One place where this is noticable is if you tap the key,
// then try hold it.
struct tap_start_info {
uint16_t timer;
uint16_t initial_press_counter;
};
static struct tap_start_info tap_start_infos[5];
// Quick check to see if a key is down. Note that this requires NKRO enabled
static bool key_down(uint8_t code) {
return (keyboard_report->nkro.bits[code>>3] & 1<<(code&7)) != 0;
}
static bool handle_lt(uint16_t keycode, keyrecord_t *record, uint8_t layer, uint8_t index) {
struct tap_start_info* tap_start = tap_start_infos + index;
if(record->event.pressed) {
layer_on(layer);
tap_start->timer = timer_read();
tap_start->initial_press_counter = press_counter;
} else {
layer_off(layer);
// Only click the key if:
// - No other keys are pressed between the press and release events
// - The release happens before the ONESHOT_TIMEOUT
if(press_counter == tap_start->initial_press_counter && timer_elapsed(tap_start->timer) < ONESHOT_TIMEOUT) {
register_code16(keycode);
unregister_code16(keycode);
}
}
return false;
}
static bool handle_mt(uint16_t keycode, keyrecord_t *record, uint8_t mods, uint8_t index) {
struct tap_start_info* tap_start = tap_start_infos + index;
if(record->event.pressed) {
register_mods(mods);
tap_start->timer = timer_read();
tap_start->initial_press_counter = press_counter;
} else {
unregister_mods(mods);
// Only click the key if:
// - No other keys are pressed between the press and release events
// - The release happens before the ONESHOT_TIMEOUT
if(press_counter == tap_start->initial_press_counter && timer_elapsed(tap_start->timer) < ONESHOT_TIMEOUT) {
register_code16(keycode);
unregister_code16(keycode);
}
}
return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if(record->event.pressed) {
press_counter++;
// The symbol layer allows sequences repeat the same "physical" key.
// For example "0)", which is like pressing the "0" key twice in a
// row. It's very easy to make a sequence of these where the ")"
// press comes before the "0" release. If that happens, force a
// release of the "0" key, otherwise nothing will happen.
uint8_t shortcode = keycode & 0xFF;
if(key_down(shortcode)) {
unregister_code(shortcode);
}
}
switch(keycode) {
case KC_ENTER:
return handle_lt(keycode, record, SYMNUM, 0);
case KC_TAB:
return handle_mt(keycode, record, MOD_BIT(KC_LCTL), 1);
case KC_LSFT:
case KC_RSFT:
return handle_mt(KC_ESC, record, MOD_BIT(keycode), 2);
}
return true;
}

View File

@@ -1,36 +0,0 @@
# The BDK Ergodox Keyboard Layout
## Dvorak-based
This was the first alternative layout I switched to and I don't want to change
again.
## Mod-tap / Layer-tap is great for thumb keys
This means a key that activates a layer/modifier when you hold it down, but
results in a keyclick when you tap it. Thumb keys are great for this since
they are good for both high-usage keys as well as modifiers.
The one thing to avoid is when you mean to tap a key, but hit the next key
before you release, which results in the modifier/layer instead of a tap. To
avoid this, I chose Enter/Tab as the tap keys, since they aren't chorded
together with other keys often.
The other issue is I found several problems with using the standard MT,LT code,
so I rolled my own to handle it.
## Don't have too many layers
My first layouts had multiple layers that I could switch to, but that
overloaded my brain. This layout basically only uses 1 extra layer.
Technically there's also a function key layer, but I only use those keys for
a handlful of things: boot order, rename, reload page, that's basically it.
## Brackets should be easy to use
There's a lot of ways to lay out a symbol layer. I organized mine around
making the {[()]} chars easy to use since they're so frequent in programming.
I put them all on the symbol layer home row.
I also arranged the numbers so 0/1 were also on the symbol layer home row.
This makes for fairly easy chording of "[0]" and "[1]".

View File

@@ -1,3 +0,0 @@
# CONSOLE_ENABLE = yes
# DEBUG_ENABLE = yes
COMMAND_ENABLE = no

View File

@@ -1,28 +0,0 @@
#include "../../config.h"
// 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
#undef TAPPING_TOGGLE
#undef TAPPING_TERM
#undef IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_TOGGLE 1
#define TAPPING_TERM 150
#define IGNORE_MOD_TAP_INTERRUPT

View File

@@ -1,353 +0,0 @@
// An Ergodox EZ keymap meant to be used with a bépo layout (FR ergonomic
// layout, dvorak style). The overall design is slightly inspired by the
// TypeMatrix keyboard. Switching between a TypeMatrix and an Ergodox with this
// layout should be relatively easy.
//
// See the README.md file for an image of this keymap.
#include QMK_KEYBOARD_H
#include "keymap_bepo.h"
// The layers that we are defining for this keyboards.
#define BASE 0
#define FN 1
#define MOUSE 2
#define NUMS 3
#define SWAP 4
#define SYSLEDS 5
// The Tap Dance identifiers, used in the TD keycode and tap_dance_actions array.
#define TAP_MACRO 0
// A 'transparent' key code (that falls back to the layers below it).
#define ___ KC_TRANSPARENT
// A 'blocking' key code. Does nothing but prevent falling back to another layer.
#define XXX KC_NO
// Some combined keys (one normal keycode when tapped and one modifier or layer
// toggle when held).
#define ESC_FN LT(FN, KC_ESC) // ESC key and FN layer toggle.
#define M_RSFT MT(MOD_RSFT, BP_M) // 'M' key and right shift modifier.
#define W_RCTL MT(MOD_RCTL, BP_W) // 'W' key and right control modifier.
#define SPC_RALT MT(MOD_RALT, KC_SPC) // SPACE key and right alt modifier.
#define PERC_FN LT(FN, BP_PERC) // '%' key and FN layer toggle.
// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
#define MK_CUT LSFT(KC_DEL) // shift + delete
#define MK_COPY LCTL(KC_INS) // ctrl + insert
#define MK_PASTE LSFT(KC_INS) // shift + insert
// Custom keycodes
enum {
// SAFE_RANGE must be used to tag the first element of the enum.
// DYNAMIC_MACRO_RANGE must always be the last element of the enum if other
// values are added (as its value is used to create a couple of other keycodes
// after it).
DYNAMIC_MACRO_RANGE = SAFE_RANGE,
};
// This file must be included after DYNAMIC_MACRO_RANGE is defined...
#include "dynamic_macro.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Layer 0: basic keys.
[BASE] = LAYOUT_ergodox(
/* left hand */
BP_DLR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL,
KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC,
KC_LSFT, BP_A, BP_U, BP_I, BP_E, BP_COMM,
KC_LCTRL, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT,
ESC_FN, BP_ECRC, KC_LGUI, KC_LALT, SPC_RALT,
TT(SWAP), KC_MNXT,
KC_MPLY,
TT(FN), TT(NUMS), KC_MPRV,
/* right hand */
KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL,
KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z,
BP_C, BP_T, BP_S, BP_R, BP_N, M_RSFT,
KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, W_RCTL,
SPC_RALT, KC_LALT, TT(SYSLEDS), BP_CCED, PERC_FN,
KC_LEFT, KC_RIGHT,
KC_UP,
KC_DOWN, TD(TAP_MACRO), TT(MOUSE)),
// Layer 1: function and media keys.
[FN] = LAYOUT_ergodox(
/* left hand */
KC_SLEP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, KC_LSFT,
___, ___, MK_CUT, MK_COPY, MK_PASTE, KC_LCTRL, ___,
___, ___, ___, ___, ___,
___, KC_VOLU,
KC_VOLD,
___, ___, KC_MUTE,
/* right hand */
___, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
___, ___, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F12,
___, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___,
KC_HOME, KC_END,
KC_PGUP,
KC_PGDN, ___, ___),
// Note that any change to the FN layer above must be added to
// the MOUSE layer below (except for the arrow keys).
// Layer 2: Mouse control.
[MOUSE] = LAYOUT_ergodox(
/* left hand */
KC_SLEP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, ___,
___, ___, KC_BTN4, KC_MS_U, KC_BTN5, ___, ___,
___, ___, KC_MS_L, KC_MS_D, KC_MS_R, KC_LSFT,
___, ___, MK_CUT, MK_COPY, MK_PASTE, KC_LCTRL, ___,
___, ___, ___, ___, ___,
___, KC_VOLU,
KC_VOLD,
___, ___, KC_MUTE,
/* right hand */
___, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
___, ___, XXX, KC_WH_U, XXX, XXX, KC_F12,
___, KC_WH_L, KC_WH_D, KC_WH_R, XXX, ___,
___, ___, KC_ACL0, KC_ACL1, KC_ACL2, ___, ___,
KC_BTN1, KC_BTN2, KC_BTN3, ___, ___,
___, ___,
___,
___, ___, ___),
// Layer 3: Numeric keypad and system keys.
[NUMS] = LAYOUT_ergodox(
/* left hand */
KC_PSCR, KC_INS, KC_PAUS, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, MK_CUT, MK_COPY, MK_PASTE, ___, ___,
___, ___, ___, ___, ___,
___, ___,
___,
___, ___, ___,
/* right hand */
___, ___, ___, ___, ___, ___, KC_NLCK,
___, KC_PEQL, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_SLCK,
KC_PCMM, KC_P4, KC_P5, KC_P6, KC_PPLS, ___,
KC_PENT, KC_P0, KC_P1, KC_P2, KC_P3, KC_PAST, ___,
___, ___, ___, KC_PSLS, ___,
___, ___,
___,
___, ___, ___),
// Layer 4: hand swap, all keys are mirrored to the other side of the keyboard
// except for the layer toggle itself (so there is no right arrow when this
// layer is activated).
[SWAP] = LAYOUT_ergodox(
/* left hand */
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___,
TT(SWAP), ___,
___,
___, ___, ___,
/* right hand */
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___,
___, TT(SWAP),
___,
___, ___, ___),
// Layer 5: The LEDs are showing the "standard" caps/num/scroll lock indicator
// instead of their default which shows the currently active layers (FN, NUMS,
// and MOUSE in that order).
[SYSLEDS] = LAYOUT_ergodox(
/* left hand */
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___,
___, ___,
___,
___, ___, ___,
/* right hand */
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, TT(SYSLEDS), ___, ___,
___, ___,
___,
___, ___, ___),
};
// Whether the macro 1 is currently being recorded.
static bool is_macro1_recording = false;
// The current set of active layers (as a bitmask).
// There is a global 'layer_state' variable but it is set after the call
// to layer_state_set_user().
static uint32_t current_layer_state = 0;
uint32_t layer_state_set_user(uint32_t state);
// Method called at the end of the tap dance on the TAP_MACRO key. That key is
// used to start recording a macro (double tap or more), to stop recording (any
// number of tap), or to play the recorded macro (1 tap).
void macro_tapdance_fn(qk_tap_dance_state_t *state, void *user_data) {
uint16_t keycode;
keyrecord_t record;
dprintf("macro_tap_dance_fn %d\n", state->count);
if (is_macro1_recording) {
keycode = DYN_REC_STOP;
is_macro1_recording = false;
layer_state_set_user(current_layer_state);
} else if (state->count == 1) {
keycode = DYN_MACRO_PLAY1;
} else {
keycode = DYN_REC_START1;
is_macro1_recording = true;
layer_state_set_user(current_layer_state);
}
record.event.pressed = true;
process_record_dynamic_macro(keycode, &record);
record.event.pressed = false;
process_record_dynamic_macro(keycode, &record);
}
// The definition of the tap dance actions:
qk_tap_dance_action_t tap_dance_actions[] = {
// This Tap dance plays the macro 1 on TAP and records it on double tap.
[TAP_MACRO] = ACTION_TAP_DANCE_FN(macro_tapdance_fn),
};
// Runs for each key down or up event.
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (keycode != TD(TAP_MACRO)) {
// That key is processed by the macro_tapdance_fn. Not ignoring it here is
// mostly a no-op except that it is recorded in the macros (and uses space).
// We can't just return false when the key is a tap dance, because
// process_record_user, is called before the tap dance processing (and
// returning false would eat the tap dance).
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
}
return true; // Let QMK send the enter press/release events
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
};
// The state of the LEDs requested by the system, as a bitmask.
static uint8_t sys_led_state = 0;
// Use these masks to read the system LEDs state.
static const uint8_t sys_led_mask_num_lock = 1 << USB_LED_NUM_LOCK;
static const uint8_t sys_led_mask_caps_lock = 1 << USB_LED_CAPS_LOCK;
static const uint8_t sys_led_mask_scroll_lock = 1 << USB_LED_SCROLL_LOCK;
// Value to use to switch LEDs on. The default value of 255 is far too bright.
static const uint8_t max_led_value = 20;
// Whether the given layer (one of the constant defined at the top) is active.
#define LAYER_ON(layer) (current_layer_state & (1<<layer))
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);
}
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();
}
// Called when the computer wants to change the state of the keyboard LEDs.
void led_set_user(uint8_t usb_led) {
sys_led_state = usb_led;
if (LAYER_ON(SYSLEDS)) {
if (sys_led_state & sys_led_mask_caps_lock) {
led_1_on();
} else {
led_1_off();
}
if (sys_led_state & sys_led_mask_num_lock) {
led_2_on();
} else {
led_2_off();
}
if (sys_led_state & sys_led_mask_scroll_lock) {
led_3_on();
} else {
led_3_off();
}
}
}
uint32_t layer_state_set_user(uint32_t state) {
current_layer_state = state;
swap_hands = LAYER_ON(SWAP);
if (is_macro1_recording) {
led_1_on();
led_2_on();
led_3_on();
return state;
}
if (LAYER_ON(SYSLEDS)) {
led_set_user(sys_led_state);
return state;
}
if (LAYER_ON(FN)) {
led_1_on();
} else {
led_1_off();
}
if (LAYER_ON(NUMS)) {
led_2_on();
} else {
led_2_off();
}
if (LAYER_ON(MOUSE)) {
led_3_on();
} else {
led_3_off();
}
return state;
};

View File

@@ -1,22 +0,0 @@
# Bépo compatible keymap for the Ergodox EZ, *TypeMatrix* style.
This keymap is meant to be used with a [Bépo](http://bepo.fr) layout. It is
designed to be somewhat similar to a TypeMatrix keyboard so that switching
between one and the other is easy.
![The Keymap](https://i.imgur.com/yChIbaK.png)
## Build instruction
To build this on Windows, under Cygwin, provided that you have installed the
Arduino environment and Teensy loaded in the default path, you can do:
```shell
PATH=/cygdrive/c/Program\ Files\ \(x86\)/Arduino/hardware/tools/avr/bin:$PATH
make ergodox_ez:bepo_tm_style:all
```
## Debug
See https://github.com/tmk/tmk_keyboard#magic-commands for command that can help
debug, together with the [hid_listen tool](https://docs.qmk.fm/faq_debug.html).

View File

@@ -1,15 +0,0 @@
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - for issues, see github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard
KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key
TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
CONSOLE_ENABLE = yes # Console for debug
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
UNICODE_ENABLE = no
SLEEP_LED_ENABLE = no
API_SYSEX_ENABLE = no
RGBLIGHT_ENABLE = no
RGBLIGHT_ANIMATION = no

View File

@@ -1,285 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
/**
* This section of macros is for tap or hold functionality. Keys will fire off the second symbol in the name if tapped
* or fire the first symbol in the name if held. For example
* GUI_Z
*
* - will fire z if tapped
* - will fire cmd/super/win if held
*/
#define ALT_DOT ALT_T(KC_DOT)
#define ALT_X ALT_T(KC_X)
#define CTL_SLSH CTL_T(KC_SLSH)
#define CTL_Z CTL_T(KC_Z)
#define GUI_C GUI_T(KC_C)
#define GUI_COMM GUI_T(KC_COMM)
#define HPR_ESC ALL_T(KC_ESC)
#define HPR_QUO ALL_T(KC_QUOT)
#define BASE 0
#define SYMB 1
#define MDIA 2
#define MOUSE 3
#define DEV 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| '" |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl|X/Alt |C/GUI | V | B | | | | N | M |,/GUI |./ALT |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,------------.
* |MOUSE | Home | | PgDn | PgUp|
* ,------|------|------| |------+-----+------.
* | | | ESC | | ESC | | |
* | Space|Backsp|------| |------| Tab |Enter |
* | |ace | LGui | | LGui | | |
* `--------------------' `-------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DEV),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), ALT_T(KC_X), GUI_T(KC_C), KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
TG(MOUSE), KC_HOME,
KC_ESC,
KC_SPC, KC_BSPC, KC_LGUI,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), KC_QUOT,
MEH_T(KC_NO), KC_N, KC_M, GUI_COMM, ALT_DOT, CTL_SLSH, KC_RSFT,
KC_DOWN, KC_UP, KC_LBRC, KC_RBRC, TT(SYMB),
KC_PGDN, KC_PGUP,
KC_ESC,
KC_LGUI, KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------| | Prev | Next | Mute | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | VolDn| VolUp| | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA
[MDIA] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_MPRV, KC_MNXT, KC_MUTE, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
[MOUSE] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
[DEV] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_TRNS,
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
};
// MACRODOWN only works in this function
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
case SYMB:
// Binary 1 represented by the leds
// --*
ergodox_right_led_3_on();
break;
case MDIA:
// Binary 2 represented by the leds
// -*-
ergodox_right_led_2_on();
break;
case MOUSE:
// Binary 3 represented by the leds
// -**
ergodox_right_led_3_on();
ergodox_right_led_2_on();
break;
case DEV:
// Binary 4 represented by the leds
// *--
ergodox_right_led_1_on();
break;
default:
// none
break;
}
};
//bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// switch (keycode) {
// case QWERTY:
// return false
// break;
// case LOWER:
// if (record->event.pressed) {
// layer_on(_LOWER);
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
// } else {
// layer_off(_LOWER);
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
// }
// return false;
// break;
// case RAISE:
// if (record->event.pressed) {
// layer_on(_RAISE);
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
// } else {
// layer_off(_RAISE);
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
// }
// return false;
// break;
// }
// return true;
//}

View File

@@ -1,28 +0,0 @@
#include "../../config.h"
// 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
#undef TAPPING_TOGGLE
#undef TAPPING_TERM
#undef IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_TOGGLE 1
#define TAPPING_TERM 150
#define IGNORE_MOD_TAP_INTERRUPT

View File

@@ -1,234 +0,0 @@
// An Ergodox EZ keymap mostly following the programmer's dvorak layout.
// There is a standard QWERTY layer as well
//
// See the README.md file for an image of this keymap.
#include QMK_KEYBOARD_H
// The layers that we are defining for this keyboards.
#define BASE 0
#define NUM 1
#define QWERTY 2
#define MAC 3
// The Tap Dance identifiers, used in the TD keycode and tap_dance_actions array.
#define TAP_MACRO 0
// SAFE_RANGE must be used to tag the first element of the enum.
// DYNAMIC_MACRO_RANGE must always be the last element of the enum if other
// values are added (as its value is used to create a couple of other keycodes
// after it).
enum custom_keycodes {
MC_ARROW = SAFE_RANGE,
DYNAMIC_MACRO_RANGE
};
// A 'transparent' key code (that falls back to the layers below it).
#define ___ KC_TRANSPARENT
// A 'blocking' key code. Does nothing but prevent falling back to another layer.
#define XXX KC_NO
// Some combined keys (one normal keycode when tapped and one modifier or layer
// toggle when held).
#define SPC_RALT MT(MOD_RALT, KC_SPC) // SPACE key and right alt modifier.
// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
#define MK_CUT LSFT(KC_DEL) // shift + delete
#define MK_COPY LCTL(KC_INS) // ctrl + insert
#define MK_PASTE LSFT(KC_INS) // shift + insert
//Move mac desktop spaces
#define MAC_L LGUI(LSFT(KC_UP)) // cmd + shift + up
#define MAC_R LGUI(LSFT(KC_DOWN)) // cmd + shift + down
// This file must be included after DYNAMIC_MACRO_RANGE is defined...
#include "dynamic_macro.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Layer 0: basic keys.
[BASE] = LAYOUT_ergodox_pretty(
KC_DLR, KC_AMPR, KC_LBRC, KC_LCBR, KC_RCBR, KC_LPRN, KC_CIRC, KC_F4, KC_EQUAL,KC_ASTR, KC_BSLASH, KC_PLUS, KC_RBRACKET, KC_EXLM,
GUI_T(KC_BSLASH), KC_SCOLON,KC_COMMA, KC_DOT, KC_P, KC_Y, KC_PERC, KC_DELETE, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH,
MO(NUM), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS,
KC_LSPO, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_LALT, TD(TAP_MACRO),KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC,
KC_AT, KC_HASH, KC_GRAVE, KC_LEFT, KC_RIGHT, KC_UP, KC_DOWN, KC_HOME, KC_END, TO(QWERTY),
ALT_T(KC_APPLICATION), ALL_T(KC_NO), KC_PGUP, KC_LGUI,
KC_BSLASH, TO(MAC),
KC_ENTER, KC_TAB, CTL_T(KC_ESCAPE), CTL_T(KC_ESCAPE), KC_BSPACE, KC_SPACE),
// Layer 1: function and numpad keys.
[NUM] = LAYOUT_ergodox_pretty(
___, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, ___, ___, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
___, KC_EXLM, KC_COMMA, KC_DOT, KC_MS_BTN1, KC_MS_BTN2, ___, ___, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
XXX, ___, KC_LCBR, KC_RCBR, MC_ARROW, KC_GRAVE, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_UNDS,
___, ___, KC_CIRC, KC_LBRACKET, KC_RBRACKET, KC_TILD, ___, ___, KC_0, KC_1, KC_2, KC_3, KC_KP_SLASH, KC_BSLASH,
___, ___, ___, ___, ___, ___, KC_0, KC_KP_DOT, KC_EQUAL, ___,
___, ___, KC_KP_ASTERISK, KC_KP_SLASH,
KC_LCTL, ___,
KC_KP_PLUS, KC_KP_MINUS, KC_DLR, KC_DELETE, KC_BSPACE, KC_SPACE),
// Layer 2: QWERTY control.
[QWERTY] = LAYOUT_ergodox_pretty(
/* left hand */
KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RIGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
KC_DELETE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, TO(BASE), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
MO(NUM), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, GUI_T(KC_QUOT),
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALT_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSPC,
KC_GRAVE, KC_QUOTE, LALT(KC_TAB), KC_LEFT, KC_RIGHT, KC_UP, KC_DOWN, KC_LBRACKET, KC_RBRACKET, TO(BASE),
___, KC_LGUI, ___, KC_ESCAPE,
KC_HOME, KC_PGUP,
KC_ENTER, KC_TAB, KC_END, KC_PGDOWN, KC_BSPACE, KC_SPACE),
// Layer 3: Mac layer
[MAC] = LAYOUT_ergodox_pretty(
/* left hand */
___, KC_1, KC_2, KC_3, KC_4, KC_5, ___, ___, KC_6, KC_7, KC_8, KC_9, KC_0, ___,
___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
___, ___, ___, MAC_L, MAC_R, ___, ___, ___, ___, ___,
___, ___, ___, ___,
___, TO(BASE),
KC_LGUI, KC_LALT, KC_LGUI, KC_LGUI, KC_LALT, KC_LGUI),
};
// Whether the macro 1 is currently being recorded.
static bool is_macro1_recording = false;
// The current set of active layers (as a bitmask).
// There is a global 'layer_state' variable but it is set after the call
// to layer_state_set_user().
static uint32_t current_layer_state = 0;
uint32_t layer_state_set_user(uint32_t state);
// Method called at the end of the tap dance on the TAP_MACRO key. That key is
// used to start recording a macro (double tap or more), to stop recording (any
// number of tap), or to play the recorded macro (1 tap).
void macro_tapdance_fn(qk_tap_dance_state_t *state, void *user_data) {
uint16_t keycode;
keyrecord_t record;
dprintf("macro_tap_dance_fn %d\n", state->count);
if (is_macro1_recording) {
keycode = DYN_REC_STOP;
is_macro1_recording = false;
layer_state_set_user(current_layer_state);
} else if (state->count == 1) {
keycode = DYN_MACRO_PLAY1;
} else {
keycode = DYN_REC_START1;
is_macro1_recording = true;
layer_state_set_user(current_layer_state);
}
record.event.pressed = true;
process_record_dynamic_macro(keycode, &record);
record.event.pressed = false;
process_record_dynamic_macro(keycode, &record);
}
// The definition of the tap dance actions:
qk_tap_dance_action_t tap_dance_actions[] = {
// This Tap dance plays the macro 1 on TAP and records it on double tap.
[TAP_MACRO] = ACTION_TAP_DANCE_FN(macro_tapdance_fn)
};
// Runs for each key down or up event.
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (keycode != TD(TAP_MACRO)) {
// That key is processed by the macro_tapdance_fn. Not ignoring it here is
// mostly a no-op except that it is recorded in the macros (and uses space).
// We can't just return false when the key is a tap dance, because
// process_record_user, is called before the tap dance processing (and
// returning false would eat the tap dance).
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
if(record->event.pressed) {
switch(keycode) {
case MC_ARROW:
SEND_STRING("=>");
return false;
break;
}
}
}
return true; // Let QMK send the enter press/release events
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
};
// Value to use to switch LEDs on. The default value of 255 is far too bright.
static const uint8_t max_led_value = 20;
// Whether the given layer (one of the constant defined at the top) is active.
#define LAYER_ON(layer) (current_layer_state & (1<<layer))
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);
}
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();
}
uint32_t layer_state_set_user(uint32_t state) {
current_layer_state = state;
if (is_macro1_recording) {
led_1_on();
led_2_on();
led_3_on();
return state;
}
if (LAYER_ON(NUM)) {
led_1_on();
} else {
led_1_off();
}
if (LAYER_ON(MAC)) {
led_2_on();
} else {
led_2_off();
}
if (LAYER_ON(QWERTY)) {
led_3_on();
} else {
led_3_off();
}
return state;
};

View File

@@ -1,23 +0,0 @@
# Ergodox EZ Layout by bpruitt-goddard
![Layout Image](https://i.imgur.com/kVPmpFG.png)
[KLE link](http://www.keyboard-layout-editor.com/#/gists/5896c5a729a64633d3f63de71e7e0e79)
## Layers
| Layer | Legend |
| ----- | ------ |
| Base | Top (black) |
| Num | Center (blue) |
| QWERTY | Bottom (Red) |
| MAC | Front/Bottom-most (Yellow) |
## Features
* Tap-dance dynamic macro key.
* Tap twice for starting macro. Then tap once to complete the macro
* Tap one for replaying macro
* Numpad on right hand with momentary Num layer
* QWERTY layer for non-dvorak users
* Mac layer for changing thumbpad modifier keys with Command
* Uses the following dual function keys
* Space Cadet shifts (shift/paren)
* Ctrl/Esc

View File

@@ -1,15 +0,0 @@
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - for issues, see github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
ONEHAND_ENABLE = yes # Allow swapping hands of keyboard
KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key
TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
CONSOLE_ENABLE = yes # Console for debug
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
UNICODE_ENABLE = no
SLEEP_LED_ENABLE = no
API_SYSEX_ENABLE = no
RGBLIGHT_ENABLE = no
RGBLIGHT_ANIMATION = no

View File

@@ -1,183 +0,0 @@
// Netable differences vs. the default firmware for the ErgoDox EZ:
// 1. The Cmd key is now on the right side, making Cmd+Space easier.
// 2. The media keys work on OSX (But not on Windows).
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| LGui |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | Home | | PgUp | | |
* | Space|Backsp|------| |------| Tab |Enter |
* | |ace | End | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
KC_HOME,
KC_SPC,KC_BSPC,KC_END,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_LGUI,
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB),
KC_LALT, CTL_T(KC_ESC),
KC_PGUP,
KC_PGDN,KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case SYMB:
ergodox_right_led_1_on();
break;
case MDIA:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};

View File

@@ -1,8 +0,0 @@
# The OSX Friendly Version of the Default Firmware
So, I took the default firmware and just made a couple of tweaks that make it easier to use with OS X:
1. The Cmd key is now on the right side, making Cmd+Space easier.
2. The media keys work on OSX (But not on Windows).
![default osx](https://i.imgur.com/z0aqFDq.png)

View File

@@ -1,19 +0,0 @@
Overview
========
This is a dvorak based layout for the Ergodox EZ. Its basic key layout is similar to the Atreus "dvorak_42_key" layout. In fact this layout was created for seamless switching between the Ergodox EZ and Atreus. On the base layer, the keys that don't exist on the Atreus are mapped to MEH shortcuts and can be interpreted by Autohotkey. This layout only makes use of the 42 keys that the Atreus also has for the main functionality.
How to build
------------
make ergodox_ez:dvorak_42_key:teensy
Layers
------
* BASE: basic dvorak layout
* KEYNAV: arrow-key navigation. Momentary toggle held by thumb allows the right hand to navigate through text as well as copy/paste/cut, page up/page down
* KEYSEL: similar to KEYNAV, except for shift-selection
* COMBINED: this is a layer that combines numbers, brackets and special characters. !@#$%^&*( can be typed by shift+COMBINED+1/2/3/etc..
* BROWSER_CONTROL: primarily browser left/right tab, open new tab/delete tab, but also mouse keys.
* SHELL_NAV: Linux Bash shortcuts (move forward/backward in command line, Ctrl+C, recall last argument, etc
* SHELL_SCREEN: Linux screen (run multiple terminals in one window) shortcuts such as open new tabs, switch between tabs
* SCREEN_NAV: special layer for copy/pasting within Linux screen, allows using various copy/paste buffers

View File

@@ -1,683 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
// to build this keymap
// make ergodox_ez:dvorak_42_key:teensy
// flashing from rpi:
// sudo teensy_loader_cli -v -w .build/ergodox_ez_dvorak_42_key.hex --mcu atmega32u4
// keeping fork up to date:
// https://help.github.com/articles/configuring-a-remote-for-a-fork/
// https://help.github.com/articles/syncing-a-fork/
// pushing dev branch
// git push origin dev:dev
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD,
// shell nav macros
SHELL_LS,
SHELL_LSLTR,
SHELL_LSLA,
SHELL_CDPRE,
SHELL_LESS,
SHELL_PLESS,
SHELL_PGREP,
SHELL_TAILF,
SHELL_PWD,
SHELL_H3,
SHELL_AMMCOLO,
SHELL_SCREENRD,
SHELL_SCREEN_NEW,
SHELL_SCREEN_LIST,
SHELL_MKE,
SHELL_HTCSTATUS,
SHELL_HTCBOUNCE,
SHELL_DUMPTLOG,
SHELL_EXPAND_OE_LOGPATTERN,
SHELL_EXPAND_OE_TRANPATTERN,
// Cloud9 macros
CLOUD9_TAB_LEFT,
CLOUD9_TAB_RIGHT,
CLOUD9_TAB_CLOSE,
CLOUD9_GOTO_SYMBOL,
CLOUD9_GOTO_LINE,
CLOUD9_NAVIGATE,
};
#define BASE 0 // base dvorak layer
#define BASE_ALTERNATE 1 // base dvorak layer, with different layer toggling
#define KEYNAV 2 // arrow navigation (right hand)
#define KEYSEL 3 // arrow navigation + shift (allow text selection)
#define SHELL_NAV 4 // bash shortcuts
#define SHELL_SCREEN 5 // linux screen shortcuts
#define SCREEN_NAV 6 // navigate between linux screen tabs
#define BROWSER_CONTROL 7 // control browser and mouse
#define COMBINED 8 // combined numbers and symbols layer
#define ANDROID_STUDIO 9
// macros
#define SCREEN_TAB_LEFT 4
#define SCREEN_TAB_RIGHT 5
#define SCREEN_NEW_TAB 6
#define SCREEN_COPY_MODE 8
#define SCREEN_PASTE 9
#define SCREEN_RENAME 10
#define SCREEN_NUMBER 11
#define SCREEN_0 12
#define SCREEN_1 13
#define SCREEN_2 14
#define SCREEN_3 15
#define SCREEN_4 16
#define SCREEN_5 17
#define SCREEN_6 18
#define SCREEN_7 19
#define SCREEN_8 20
#define SCREEN_9 21
#define SCREEN_DETACH 22
#define SCREEN_UP_JUMP 23
#define SCREEN_DOWN_JUMP 24
#define SCREEN_READREG_1 25
#define SCREEN_READREG_2 26
#define SCREEN_READREG_3 27
#define SCREEN_PASTEREG_1 28
#define SCREEN_PASTEREG_2 29
#define SCREEN_PASTEREG_3 30
#define DEL_TO_HOME 36
// Android Studio shortcuts
#define AS_TABLEFT LALT(KC_LEFT)
#define AS_TABRIGHT LALT(KC_RIGHT)
#define AS_SYMBOL LCTL(LALT(KC_N))
#define AS_CLASS LCTL(KC_N)
#define AS_FINDUSAGE LALT(KC_F7)
#define AS_BACK LCTL(LALT(KC_LEFT))
#define AS_GO_DECLARATION LCTL(KC_B)
#define AS_GO_IMPLEMENTATION LCTL(LALT(KC_B))
#define AS_CLOSETAB LCTL(KC_F4)
#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4))
#define MACRO_SCREEN_NUM(MACRO_NAME,NUM) \
case MACRO_NAME:\
if (record->event.pressed) {\
return MACRO( D(LCTL), T(A), U(LCTL), T(NUM), END);\
}\
break;\
#define MACRO_SCREEN_REG(MACRO_NAME,NUM) \
case MACRO_NAME:\
if (record->event.pressed) {\
return MACRO( D(LCTL), T(A), U(LCTL), D(LSFT), T(SCOLON), U(LSFT),\
T(R),\
T(E),\
T(A),\
T(D),\
T(R),\
T(E),\
T(G),\
T(SPC),\
T(NUM),\
T(ENTER),\
END);\
}\
break;\
#define MACRO_SCREEN_PASTE(MACRO_NAME,NUM)\
case MACRO_NAME:\
if (record->event.pressed) {\
return MACRO( D(LCTL), T(A), U(LCTL), D(LSFT), T(SCOLON), U(LSFT),\
T(P),\
T(A),\
T(S),\
T(T),\
T(E),\
T(SPC),\
T(NUM),\
T(ENTER),\
END);\
}\
break;\
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = LAYOUT_ergodox(
// left hand
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
OSL(SCREEN_NAV), KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, MEH(KC_2),
OSL(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I,
OSL(SHELL_SCREEN), KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, MEH(KC_3),
MEH(KC_1), OSM(MOD_LSFT), OSM(MOD_LCTL), MO(KEYSEL), MO(BROWSER_CONTROL),
// left thumb cluster
MEH(KC_4), MEH(KC_5),
MEH(KC_6),
MO(COMBINED),MO(KEYNAV), OSM(MOD_LALT),
// right hand
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MEH(KC_9),
MEH(KC_7), KC_F, KC_G, KC_C, KC_R, KC_L, KC_TAB,
KC_D, KC_H, KC_T, KC_N, KC_S, RCTL(KC_BSPC),
MEH(KC_8), KC_B, KC_M, KC_W, KC_V, KC_Z, MEH(KC_F3),
KC_BSPC, RCTL(KC_BSPC), KC_CAPSLOCK, OSM(MOD_LSFT),MEH(KC_F4),
// right thumb cluster
MEH(KC_F5),MEH(KC_F6),MEH(KC_F7),MEH(KC_F8),KC_ENTER,KC_SPACE
),
// alternate base layout
[BASE_ALTERNATE] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
OSL(ANDROID_STUDIO),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// bottom row
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// bottom row
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
[KEYNAV] = LAYOUT_ergodox(
// left hand
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_ESC, CLOUD9_GOTO_LINE, RCTL(KC_Z), RCTL(KC_S), MEH(KC_F10), KC_TRNS,
KC_TRNS,KC_LSFT, CLOUD9_GOTO_SYMBOL, RSFT(KC_TAB), KC_TAB, MEH(KC_A),
KC_TRNS,MEH(KC_B), CLOUD9_NAVIGATE, CLOUD9_TAB_LEFT, CLOUD9_TAB_RIGHT, CLOUD9_TAB_CLOSE, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// left thumb cluster
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_G),
KC_TRNS,KC_NO, KC_HOME, KC_UP, KC_END, KC_PGUP, MEH(KC_H),
LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), MEH(KC_I),
KC_TRNS,M(DEL_TO_HOME),RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDOWN, MEH(KC_J),
KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), MEH(KC_K),
// right thumb cluster
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
),
// key selection layer
[KEYSEL] = LAYOUT_ergodox(
// left hand
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,MEH(KC_G), MEH(KC_H),MEH(KC_I), MEH(KC_J), MEH(KC_K), KC_TRNS,
KC_TRNS,MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P),
KC_TRNS,MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS,
// bottom row
RESET,DF(BASE),DF(BASE_ALTERNATE),KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_Q),
RSFT(KC_PGUP), KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP), MEH(KC_R),
RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), MEH(KC_S),
RSFT(KC_PGDN), KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN), MEH(KC_T),
// bottom row
KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), MEH(KC_U),
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
// shell navigation layer
[SHELL_NAV] = LAYOUT_ergodox(
// left hand
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, SHELL_PGREP, SHELL_PLESS, SHELL_LESS, SHELL_HTCBOUNCE, SHELL_H3,
KC_TRNS,SHELL_MKE, SHELL_CDPRE, SHELL_LSLTR, SHELL_LS, SHELL_LSLA,
KC_TRNS,SHELL_SCREEN_LIST, SHELL_SCREENRD, SHELL_SCREEN_NEW, SHELL_TAILF, SHELL_HTCSTATUS, SHELL_AMMCOLO,
// bottom row
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, SHELL_EXPAND_OE_TRANPATTERN,
RCTL(KC_L), RCTL(KC_W), KC_HOME, KC_UP, KC_END, KC_TRNS, SHELL_EXPAND_OE_LOGPATTERN,
LALT(KC_B), KC_LEFT, KC_DOWN, KC_RIGHT, LALT(KC_F), RCTL(KC_W),
RCTL(KC_C), RCTL(KC_U), LALT(KC_DOT), RCTL(KC_R), KC_BTN2, RCTL(KC_K), SHELL_DUMPTLOG,
// bottom row (match functionality of base layer)
KC_BSPC, RCTL(KC_W), KC_DELETE, LALT(KC_D), RCTL(KC_U),
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
// linux screen layer
[SHELL_SCREEN] = LAYOUT_ergodox(
// left hand
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// bottom row
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, M(SCREEN_NEW_TAB), M(SCREEN_7), M(SCREEN_8), M(SCREEN_9), M(SCREEN_RENAME), KC_TRNS,
M(SCREEN_TAB_LEFT), M(SCREEN_4), M(SCREEN_5), M(SCREEN_6), M(SCREEN_TAB_RIGHT), KC_TRNS,
KC_TRNS, KC_TRNS, M(SCREEN_1), M(SCREEN_2), M(SCREEN_3), M(SCREEN_NUMBER), KC_TRNS,
// bottom row
M(SCREEN_0), KC_TRNS, KC_TRNS, KC_TRNS, M(SCREEN_DETACH),
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
// navigation within screen (for copy/paste)
[SCREEN_NAV] = LAYOUT_ergodox(
// left hand
// left hand
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, M(SCREEN_READREG_3), M(SCREEN_READREG_2), M(SCREEN_READREG_1), KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, M(SCREEN_PASTEREG_3), M(SCREEN_PASTEREG_2), M(SCREEN_PASTEREG_1), KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// bottom row
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_0, KC_UP, KC_DLR, M(SCREEN_UP_JUMP), KC_TRNS,
KC_B, KC_LEFT, KC_DOWN, KC_RIGHT, KC_W, M(SCREEN_COPY_MODE),
KC_TRNS, KC_TRNS, S(KC_W), S(KC_Y), M(SCREEN_PASTE), M(SCREEN_DOWN_JUMP), MEH(KC_V),
// bottom row (match functionality of base layer)
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
// android studio shortcuts
[ANDROID_STUDIO] = LAYOUT_ergodox(
// left hand
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// bottom row
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, AS_FINDUSAGE, AS_GO_DECLARATION, AS_GO_IMPLEMENTATION, KC_TRNS,
KC_TRNS, AS_TABLEFT, AS_TABRIGHT, AS_SYMBOL, AS_CLASS, AS_BACK,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, AS_CLOSETAB, AS_CLOSETOOLWINDOW, KC_TRNS,
// bottom row
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
[COMBINED] = LAYOUT_ergodox(
// left hand
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS,
KC_TRNS,KC_LPRN, KC_RPRN, KC_LBRACKET, KC_RBRACKET, KC_UNDS,
KC_TRNS,KC_COLN, KC_DQUO, KC_LCBR, KC_RCBR, KC_AMPR, KC_TRNS,
// bottom row
KC_TRNS,KC_TRNS, KC_TILD, KC_GRAVE, KC_CIRC,
// thumb cluster
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_L),
KC_TRNS, KC_PLUS, KC_7, KC_8, KC_9, KC_ASTR, MEH(KC_M),
KC_MINS, KC_4, KC_5, KC_6, KC_SLSH, MEH(KC_N),
KC_TRNS, KC_EQUAL, KC_1, KC_2, KC_3, KC_QUES, MEH(KC_O),
// bottom row
KC_0, KC_DOT, KC_PIPE, KC_BSLS, MEH(KC_P),
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS),
[BROWSER_CONTROL] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
// bottom row
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, KC_TRNS, KC_TRNS,
KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT), KC_TRNS,
KC_TRNS, KC_TRNS, RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5, KC_TRNS,
// bottom row
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, RCTL(KC_W), RCTL(KC_T)
),
};
// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case SCREEN_TAB_LEFT:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(P), END);
}
break;
case SCREEN_TAB_RIGHT:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(N), END);
}
break;
case SCREEN_NEW_TAB:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(C), END);
}
break;
case SCREEN_DETACH:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(D), END);
}
break;
case SCREEN_RENAME:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), D(LSFT), T(A), U(LSFT), END);
}
break;
case SCREEN_NUMBER:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), D(LSFT), T(SCOLON), U(LSFT),
T(N),
T(U),
T(M),
T(B),
T(E),
T(R),
T(SPC),
END);
}
break;
MACRO_SCREEN_REG(SCREEN_READREG_1,1);
MACRO_SCREEN_REG(SCREEN_READREG_2,2);
MACRO_SCREEN_REG(SCREEN_READREG_3,3);
MACRO_SCREEN_PASTE(SCREEN_PASTEREG_1,1);
MACRO_SCREEN_PASTE(SCREEN_PASTEREG_2,2);
MACRO_SCREEN_PASTE(SCREEN_PASTEREG_3,3);
MACRO_SCREEN_NUM(SCREEN_0,0);
MACRO_SCREEN_NUM(SCREEN_1,1);
MACRO_SCREEN_NUM(SCREEN_2,2);
MACRO_SCREEN_NUM(SCREEN_3,3);
MACRO_SCREEN_NUM(SCREEN_4,4);
MACRO_SCREEN_NUM(SCREEN_5,5);
MACRO_SCREEN_NUM(SCREEN_6,6);
MACRO_SCREEN_NUM(SCREEN_7,7);
MACRO_SCREEN_NUM(SCREEN_8,8);
MACRO_SCREEN_NUM(SCREEN_9,9);
case SCREEN_UP_JUMP:
if (record->event.pressed) {
return MACRO( T(5), T(UP), END);
}
break;
case SCREEN_DOWN_JUMP:
if (record->event.pressed) {
return MACRO( T(5), T(DOWN), END);
}
break;
case SCREEN_COPY_MODE:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(ESC), END);
}
break;
case SCREEN_PASTE:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(RBRC), END);
}
break;
case DEL_TO_HOME:
if (record->event.pressed) {
return MACRO(
// delete to the beginning of the line
D(LSFT), T(HOME), U(LSFT),
T(DELETE),
END);
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
break;
}
// shell macros
if(record->event.pressed) {
switch (keycode) {
case SHELL_LS:
SEND_STRING("ls\n");
return true;
break;
case SHELL_LSLTR:
SEND_STRING("ls -ltr\n");
return true;
break;
case SHELL_LSLA:
SEND_STRING("ls -la\n");
return true;
break;
case SHELL_CDPRE:
SEND_STRING("cd ..\n");
return true;
break;
case SHELL_LESS:
SEND_STRING("less ");
return true;
break;
case SHELL_PLESS:
SEND_STRING(" | less");
return true;
break;
case SHELL_PGREP:
SEND_STRING(" | grep ");
return true;
break;
case SHELL_TAILF:
SEND_STRING("tail -f ");
return true;
break;
case SHELL_PWD:
SEND_STRING("echo `pwd`/");
return true;
break;
case SHELL_H3:
SEND_STRING("h3\n");
return true;
break;
case SHELL_AMMCOLO:
SEND_STRING("ammcolo\n");
return true;
break;
case SHELL_SCREENRD:
SEND_STRING("screen -r -d ");
return true;
break;
case SHELL_SCREEN_NEW:
SEND_STRING("screen -S ");
return true;
break;
case SHELL_SCREEN_LIST:
SEND_STRING("screen -list\n");
return true;
break;
case SHELL_MKE:
SEND_STRING("mki -j8\n");
return true;
break;
case SHELL_HTCSTATUS:
SEND_STRING("htcStatus -j ");
return true;
break;
case SHELL_HTCBOUNCE:
SEND_STRING("htcBounce -j ");
return true;
break;
case SHELL_EXPAND_OE_LOGPATTERN:
SEND_STRING(SS_TAP(X_LEFT)"*CQW_HKEX"SS_TAP(X_END)"*.log"SS_LCTRL("x")SS_LSFT("8"));
break;
case SHELL_EXPAND_OE_TRANPATTERN:
SEND_STRING(SS_TAP(X_LEFT)"*CQW_HKEX"SS_TAP(X_END)"*.tran"SS_LCTRL("x")SS_LSFT("8"));
break;
case SHELL_DUMPTLOG:
SEND_STRING(" | dumptlog - ");
return true;
break;
// Cloud9 macros
case CLOUD9_TAB_LEFT:
SEND_STRING(SS_LCTRL("["));
return true;
break;
case CLOUD9_TAB_RIGHT:
SEND_STRING(SS_LCTRL("]"));
return true;
break;
case CLOUD9_TAB_CLOSE:
SEND_STRING(SS_LALT("w"));
return true;
break;
case CLOUD9_GOTO_SYMBOL:
SEND_STRING(SS_LSFT(SS_LCTRL("e")));
return true;
break;
case CLOUD9_GOTO_LINE:
SEND_STRING(SS_LCTRL("g"));
return true;
break;
case CLOUD9_NAVIGATE:
SEND_STRING(SS_LCTRL("e"));
return true;
break;
}
}
return true;
}
void led_set_user(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
ergodox_right_led_1_on();
} else {
ergodox_right_led_1_off();
}
}
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
case COMBINED:
ergodox_right_led_2_on();
break;
case SHELL_NAV:
case SHELL_SCREEN:
case KEYNAV:
case KEYSEL:
case SCREEN_NAV:
ergodox_right_led_3_on();
break;
case BROWSER_CONTROL:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
default:
break;
}
};

View File

@@ -1,354 +0,0 @@
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
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 "keymap_bepo.h"
#include "ericgebhart.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DVORAK] = LAYOUT_ergodox_wrapper(
// left hand
KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___DVORAK_L1___, KC_LBRC,
TAB_BKTAB, ___DVORAK_L2___,
KC_LSFT, ___DVORAK_L3___, KC_LPRN,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
MDIA_SYMB, ___NUMBER_R___, KC_EQL,
KC_RBRC, ___DVORAK_R1___, KC_SLASH,
/* */ ___DVORAK_R2___, KC_MINUS,
KC_RPRN, ___DVORAK_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
[XMONAD] = LAYOUT_ergodox_wrapper(
// left hand
___, ___FUNC_L___, ___,
___, ___DVORAK_L1___, ___,
___, ___DVORAK_L2___,
___, ___DVORAK_L3___, ___,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
___, ___FUNC_R___, ___,
___, ___DVORAK_R1___, ___,
/**/ ___DVORAK_R2___, ___,
___, ___DVORAK_R3___, ___,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
[QWERTY] = LAYOUT_ergodox_wrapper(
// left hand
KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___QWERTY_L1___, KC_LBRC,
TAB_BKTAB, ___QWERTY_L2___,
KC_LSFT, ___QWERTY_L3___, KC_LPRN,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
MDIA_SYMB, ___NUMBER_R___, KC_EQL,
KC_RBRC, ___QWERTY_R1___, KC_SLASH,
/* */ ___QWERTY_R2___, KC_MINUS,
KC_RPRN, ___QWERTY_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
[COLEMAK] = LAYOUT_ergodox_wrapper(
// left hand
KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___COLEMAK_L1___, KC_LBRC,
TAB_BKTAB, ___COLEMAK_L2___,
KC_LSFT, ___COLEMAK_L3___, KC_LPRN,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
MDIA_SYMB, ___NUMBER_R___, KC_EQL,
KC_RBRC, ___COLEMAK_R1___, KC_SLASH,
/* */ ___COLEMAK_R2___, KC_MINUS,
KC_RPRN, ___COLEMAK_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
[WORKMAN] = LAYOUT_ergodox_wrapper(
// left hand
KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___WORKMAN_L1___, KC_LBRC,
TAB_BKTAB, ___WORKMAN_L2___,
KC_LSFT, ___WORKMAN_L3___, KC_LPRN,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
MDIA_SYMB, ___NUMBER_R___, KC_EQL,
KC_RBRC, ___WORKMAN_R1___, KC_SLASH,
/* */ ___WORKMAN_R2___, KC_MINUS,
KC_RPRN, ___WORKMAN_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
[NORMAN] = LAYOUT_ergodox_wrapper(
// left hand
KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___NORMAN_L1___, KC_LBRC,
TAB_BKTAB, ___NORMAN_L2___,
KC_LSFT, ___NORMAN_L3___, KC_LPRN,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
MDIA_SYMB, ___NUMBER_R___, KC_EQL,
KC_RBRC, ___NORMAN_R1___, KC_SLASH,
/* */ ___NORMAN_R2___, KC_MINUS,
KC_RPRN, ___NORMAN_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
[DVORAK_ON_BEPO] = LAYOUT_ergodox_wrapper(
// left hand
DB_GRV, ___NUMBER_BEPO_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC,
TAB_BKTAB, ___DVORAK_FR_L2___,
KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
MDIA_SYMB, ___NUMBER_BEPO_R___, DB_EQL,
DB_RBRC, ___DVORAK_FR_R1___, DB_SLASH,
/* */ ___DVORAK_FR_R2___, DB_MINUS,
DB_RPRN, ___DVORAK_FR_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT_FR___,
___ERGODOX_THUMB_RIGHT___
),
[XMONAD_FR] = LAYOUT_ergodox_wrapper(
// left hand
___, ___FUNC_L___, ___,
___, ___DVORAK_FR_L1___, ___,
___, ___DVORAK_FR_L2___,
___, ___DVORAK_FR_L3___, ___,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// right hand
___, ___FUNC_R___, ___,
___, ___DVORAK_FR_R1___, ___,
/**/ ___DVORAK_FR_R2___, ___,
___, ___DVORAK_FR_R3___, ___,
___ERGODOX_BOTTOM_RIGHT_FR___,
___ERGODOX_THUMB_RIGHT___
),
[BEPO] = LAYOUT_ergodox_wrapper(
// Left hand
BP_DLR, ___SYMBOL_BEPO_L___, DEF_OS_LAYER_SW,
KC_LOCK, ___BEPO_FR_L1___, DB_LBRC,
TAB_BKTAB, ___BEPO_FR_L2___,
BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC,
___ERGODOX_BOTTOM_LEFT___,
___ERGODOX_THUMB_LEFT___,
// Right hand
MDIA_SYMB, ___SYMBOL_BEPO_R___, BP_EQL,
BP_DCRC, ___BEPO_FR_R1___, BP_W,
/* */ ___BEPO_FR_R2___, BP_CCED,
BP_C, ___BEPO_FR_R3___, KC_RSFT,
___ERGODOX_BOTTOM_RIGHT___,
___ERGODOX_THUMB_RIGHT___
),
// SYMBOLS
[SYMB] = LAYOUT_ergodox_wrapper(
// left hand
___, ___FUNC_L___, ___,
___, ___SYMBOLS_1___, ___,
___, ___SYMBOLS_2___,
___, ___SYMBOLS_3___, ___,
___ERGODOX_TRANS_BOTTOM___,
___ERGODOX_TRANS_THUMBS___,
// right hand
___, ___FUNC_R___, KC_F11,
___, KC_UP, ___KEYPAD_1___, KC_F12,
/**/ KC_DOWN, ___KEYPAD_2___, KC_TRNS,
___, KC_AMPR, ___KEYPAD_3___, KC_PENT,
/* */ ___KEYPAD_4___, ___,
___ERGODOX_TRANS_THUMBS___
),
[SYMB_ON_BEPO] = LAYOUT_ergodox_wrapper(
// left hand
___, ___FUNC_L___, ___,
___, ___SYMBOLS_1_BP___, ___,
___, ___SYMBOLS_2_BP___,
___, ___SYMBOLS_3_BP___, ___,
___ERGODOX_TRANS_BOTTOM___,
___ERGODOX_TRANS_THUMBS___,
// right hand
___, ___FUNC_R___, KC_F11,
___, KC_UP, ___KEYPAD_1_BP___, KC_F12,
/**/ KC_DOWN, ___KEYPAD_2_BP___, KC_TRNS,
___, KC_AMPR, ___KEYPAD_3_BP___, KC_PENT,
/* */ ___KEYPAD_4_BP___, ___,
___ERGODOX_TRANS_THUMBS___
),
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox_wrapper(
// left hand
___, ___FUNC_L___, ___,
___MOUSE_BTNS_L___, ___, ___,
___, ___MOUSE_LDUR___, ___,
___, ___MWHEEL_LDUR___, XXX, ___,
___, ___, ___MOUSE_ACCL_012___,
___ERGODOX_TRANS_THUMBS___,
// right hand
___, ___FUNC_R___, KC_F11,
KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12,
/* */ KC_PGUP, ___VI_ARROWS___, ___,
KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___,
___ERGODOX_TRANS_BOTTOM___,
___ERGODOX_TRANS_THUMBS___
),
[LAYERS] = LAYOUT_ergodox_wrapper(
// left hand
___, ___FUNC_L___, ___,
XXX, XXX, XXX, ___LAYERS_L1___, XXX, XXX,
XXX, XXX, XXX, ___LAYERS_L2___, XXX,
XXX, XXX, ___LAYERS_L3___, XXX, XXX,
___, ___, ___LAYERS_L4___,
___ERGODOX_TRANS_THUMBS___,
// right hand
___, ___FUNC_R___, KC_F11,
KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12,
/* */ KC_PGUP, ___VI_ARROWS___, ___,
KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___,
___ERGODOX_TRANS_BOTTOM___,
___ERGODOX_TRANS_THUMBS___
),
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
if(!on_qwerty())
ergodox_right_led_1_on();
switch (layer) {
//case DVORAK:
//ergodox_right_led_1_off();
//break;
// first led on for a bepo software keyboard layer
case DVORAK_ON_BEPO:
ergodox_right_led_2_on();
break;
case BEPO:
ergodox_right_led_1_on();
ergodox_right_led_1_off();
ergodox_right_led_1_on();
ergodox_right_led_1_off();
ergodox_right_led_1_on();
break;
case SYMB:
ergodox_right_led_3_on();
break;
case MDIA:
ergodox_right_led_3_on();
break;
case LAYERS:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
default:
ergodox_board_led_off();
break;
/* default: */
/* // none */
/* break; */
}
}
/*
clear_oneshot_mods();
set_oneshot_locked_mods(mods);
register_mods(mods);
register_code(action.key.code);
unregister_code(action.key.code);
layer_on(action.layer_tap.val);
layer_off(action.layer_tap.val);
clear_oneshot_locked_mods();
clear_oneshot_mods();
unregister_mods(mods);
*/

View File

@@ -1,5 +0,0 @@
Overview
========
These are my ergodox_ez keymaps. There isn't much here. Go take a look at my Userspace readme.
That's where all the code is.

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 200
#undef DEBOUNCE
#define DEBOUNCE 10
#undef IGNORE_MOD_TAP_INTERRUPT
#undef FORCE_NKRO
#define FORCE_NKRO
#undef TAPPING_TOGGLE
#define TAPPING_TOGGLE 5
#define LEADER_TIMEOUT 1000
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD
#define QMK_KEYS_PER_SCAN 4
#define DANCING_TERM 175
#define ONESHOT_TAP_TOGGLE 5
#define ONESHOT_TIMEOUT 5000
#define COMBO_COUNT 4
#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 TAPPING_FORCE_HOLD
// #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,19 +0,0 @@
let gulp = require('gulp');
let run = require('gulp-run-command').default;
gulp.task('clean', run('rm -rf ../../../../.build'));
gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', {
ignoreErrors: true
}));
gulp.task('watch', ['build'], () => {
gulp.watch([
'keymap.c',
'config.h',
'rules.mk',
], ['build']);
});
gulp.task('default', ['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), DYN_REC_START1, //
// | ~ | $ | < | [ | ? | //
// | 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), ALL_T(KC_P), MEH_T(KC_Y), DYN_MACRO_PLAY1, //
// | LEAD | " | , | | | //
// | TAP DANCE: NONE | TAP DANCE: ' | TAP DANCE: . | MOD TAP: HYPER | MOD TAP: MEH | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| PLAY DYNAMIC MACRO 1 //
// | MOD TAP: ALT | MOD TAP: CTRL | LAYER TAP: SHIFT | LAYER TAP: ARROW KEYS | MOD TAP: GUI | //
// | | | | Ü | | //
TD(EQL_PLUS), ALT_T(KC_A), CTL_T(KC_O), SFT_T(KC_E), LT(ARROWS, KC_U), LGUI_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 | //
// | | | | | | //
DYN_REC_STOP, TD(SCLN_COLN), SGUI_T(KC_Q), LT(MEDIA_FN, KC_J), LT(NUMPAD, KC_K), LCAG_T(KC_X), KC_LGUI, //
// | : | | | | | //
// DYNAMIC MACRO | TAP DANCE: ; | MOD TAP: SHIFT+GUI | LAYER TAP: MEDIA/F-KEYS | LAYER TAP: ATM NUMPAD | MOD TAP: CTL+ALT+GUI | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// LAYERS SWITCHER | APPLICATION MENU | | | //
// | | | | SCROLL //
TG(LAYERS), KC_APP, KC_NLCK, KC_SLCK, 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
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
DYN_REC_START2, TD(APMR_PIPE), TD(RPRN_RBRC), TD(RCBR_RABK), TD(HASH_PERC), TD(ASTR_CIRC), XXXXXXX, //
// | | | | | | //
// | | | | | | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
DYN_MACRO_PLAY2, MEH_T(KC_F), ALL_T(KC_G), C_S_T(KC_C), LCA_T(KC_R), LAS_T(KC_L), TD(SLSH_BSLS), //
// | | | | | | //
// | | | | | | //
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
/*-----------------------*/ LGUI_T(KC_D), LT(MOUSE, KC_H), SFT_T(KC_T), CTL_T(KC_N), ALT_T(KC_S), TD(MINS_UNDS), //
// | | | | | | //
// | | | | | | //
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | //
// | | | | | | //
KC_LGUI, LCAG_T(KC_B), LT(HYPER, KC_M), LT(MEDIA_FN, KC_W), SGUI_T(KC_V), LGAS_T(KC_Z), COMPOSE, //
// | | | | | | //
// | | | | | | ⎄ //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | //
// | | | | //
KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_SYSREQ, //
// | | | | //
// | | | | //
//------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// 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_CLCK, 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_BSPACE,
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_PGDOWN, 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_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F),
KC_BSLS, KC_LSHIFT, 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_NLCK,
KC_SCLN,
KC_SPACE, KC_ENTER, KC_BSPACE,
// 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(HYPER),
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_LCTRL, KC_LSHIFT, 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_BSPACE, 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_SLCK,
// right thumb
XXXXXXX, XXXXXXX,
KC_PGUP,
KC_PGDOWN, 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_SLCK, 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_LSHIFT, KC_LCTRL, 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_LCTRL, KC_LSHIFT, _______, 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_BSPACE, 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_PGDOWN, 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_CLCK, KC_PSCREEN, 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,
RGB_GREEN, XXXXXXX, XXXXXXX
),
[HYPER] = 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,
RESET, 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, EEP_RST
)
};

View File

@@ -1,5 +0,0 @@
// Keycode aliases
#define SCTL(kc) LSFT(LCTL(kc)) // Modifier keys: SHIFT+CTRL+kc combination.
#define LGAS_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, GUI+ALT+SHIFT when held.
#define LAS_T(kc) MT(MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, ALT+SHIFT whin held.
#define COMPOSE KC_RALT // Compose key (used to input characters like á, ñ, ü).

View File

@@ -1,8 +0,0 @@
// Define custom user keycodes:
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // Can always be here.
RGB_GREEN, // To set default RGB layer as green once.
MY_CUSTOM_MACRO, // Custom macro example.
MY_OTHER_MACRO, // Custom macro example.
DYNAMIC_MACRO_RANGE // Should always be the last.
};

View File

@@ -1,19 +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/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.
HYPER = 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,14 +0,0 @@
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_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,14 +0,0 @@
LEADER_EXTERNS();
void qk_leader_start(void) {
if (!leading) {
leading = true;
leader_time = timer_read();
leader_sequence_size = 0;
leader_sequence[0] = 0;
leader_sequence[1] = 0;
leader_sequence[2] = 0;
leader_sequence[3] = 0;
leader_sequence[4] = 0;
}
}

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": "^3.9.1",
"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,40 +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
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)
# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000b)
# API_SYSEX_ENABLE = no
# MIDI_ENABLE = no
# BLUETOOTH_ENABLE = no
# AUDIO_ENABLE = no
# FAUXCLICKY_ENABLE = no
# VARIABLE_TRACE = no
# BACKLIGHT_ENABLE = no
# RGB_MATRIX_ENABLE = no
# POINTING_DEVICE_ENABLE = no
# AUTO_SHIFT_ENABLE = no
# AUTO_SHIFT_MODIFIERS = no
# This don't need argument?
# CUSTOM_MATRIX # Custom matrix file for the ErgoDox EZ
# SPLIT_KEYBOARD

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(qk_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:
qk_leader_start();
break;
}
}
void none_lead_reset(qk_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,20 +0,0 @@
// Register the double tap dances:
qk_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),
[QUOT_DQUO] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQUO),
[SCLN_COLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
[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),
[DOT_COMM] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMM),
[NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_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(qk_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,74 +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, // ' | " | | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
SCLN_COLN = 5, // ; | : | | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
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, // . | , | | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
NONE_LEAD = 16, // NONE | ALT+SHIFT | LEAD | | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
};

View File

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

View File

@@ -1,121 +0,0 @@
uint32_t layer_state_set_user(uint32_t state) {
uint8_t layer = biton32(state);
switch (layer) {
case DVORAK:
rgblight_sethsv_noeeprom_green();
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case PLOVER:
rgblight_sethsv_noeeprom_red();
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
if (!(PLOVER_MODE)) {
plover_toggle();
PLOVER_MODE = true;
}
break;
case GAMING:
rgblight_sethsv_noeeprom_red();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case ARROWS:
rgblight_sethsv_noeeprom_blue();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case MOUSE:
rgblight_sethsv_noeeprom_blue();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case NUMPAD:
rgblight_sethsv_noeeprom_blue();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case LAYERS:
rgblight_sethsv_noeeprom_cyan();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case MEDIA_FN:
rgblight_sethsv_noeeprom_yellow();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case HYPER:
rgblight_sethsv_noeeprom_magenta();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
case FIRMWARE:
rgblight_sethsv_noeeprom_magenta();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
if (PLOVER_MODE) {
plover_toggle();
PLOVER_MODE = false;
}
break;
default:
break;
}
return state;
}

View File

@@ -1,12 +0,0 @@
#include "../leader/leader_setup.c"
bool MATRIX_SCANNED = false;
void matrix_scan_user(void) {
if (!(MATRIX_SCANNED)) {
rgblight_sethsv_noeeprom_green();
MATRIX_SCANNED = true;
}
#include "../leader/leader_dictionary.c"
};

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_CLCK:
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_NLCK:
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_SLCK:
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_LCTRL("ac")); // selects all and copies
return false;
}
default:
return true;
}
}

View File

@@ -1,18 +0,0 @@
#ifndef CONFIG_HEARTROBOTNINJA_H
#define CONFIG_HEARTROBOTNINJA_H
#include "../../config.h"
#define ONESHOT_TAP_TOGGLE 2
#define ONESHOT_TIMEOUT 1000
#undef LEADER_TIMEOUT
#define LEADER_TIMEOUT 1000
#undef TAPPING_TERM
#define TAPPING_TERM 200
#undef TAPPING_TOGGLE
#define TAPPING_TOGGLE 2
#endif

View File

@@ -1,680 +0,0 @@
#include QMK_KEYBOARD_H
#include "action_layer.h"
#include "action_util.h"
#include "debug.h"
#include "eeconfig.h"
#include "version.h"
#include "wait.h"
/* Aliases */
#define ____ KC_TRNS
/* Layers */
enum
{
COLE = 0,
LOWER, // right hand 10 key
RAISE, // Function keys
AUX, // Things like rebooting the board to be flashed. NUM + RAISE
};
/* Macros */
enum
{
NONE = 0,
// OS Functions
F_PASTE,
// Config Macros
CF_EPRM,
CF_VERS,
// RGB Macro
RGB_ANI,
};
/* Tap Dancery */
enum
{
TD_BTK,
TD_TDE,
TD_LPRN,
TD_RPRN,
TD_MIN,
TD_USC,
TD_COPY,
TD_UNDO,
TD_FIND,
};
/* OS Identifier */
enum
{
OS_WIN = 0,
OS_OSX,
OS_LIN,
};
uint8_t os_type = OS_WIN;
static uint16_t rgb_timer;
bool time_travel = false;
bool skip_leds = false;
/* Keymaps */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Colemak Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | Find | 1 ! | 2 @ | 3 # | 4 $ | 5 % | Undo | | VOLUP| 6 ^ | 7 & | 8 * | 9 ( | 0 ) | LOCK |
* | | | | | | | | | | | | | | | |
* |-----------+------+------+------+------+------+------| |------+------+------+------+------+------+-----------|
* | ' " ` | Q | W | F | P | G | CCopy| | VOLDN| J | L | U Ü | Y | = + | ~ : ; |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | ( [ { | A Ä | R | S ß | T | D |------| |------| H | N | E | I | O Ö | ) ] } |
* |-----------+------+------+------+------+------| Paste| | MUTE |------+------+------+------+------+-----------|
* | - , < | Z | X | C | V | B | | | | K | M | / ? | \ | | ^ | _ . > |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | AUX | RAISE | LOWER | LEAD | GUI | | ESC | RUN | < | v | > |
* `-----------------------------------' `-----------------------------------'
* ,-------------. ,-------------.
* | ALT | CTRL | | HOME | END |
* ,------|------|------| |------+------+------.
* | | | Del | | PGUP | | |
* | Space|Backsp|------| |------| Enter| Shift|
* | | | Tab | | PGDN | | |
* `--------------------' `--------------------'
*/
[COLE] = LAYOUT_ergodox(
// Left Hand
TD(TD_FIND), KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_UNDO),
TD(TD_BTK), KC_Q, KC_W, KC_F, KC_P, KC_G, TD(TD_COPY),
TD(TD_LPRN), KC_A, KC_R, KC_S, KC_T, KC_D,
TD(TD_MIN), KC_Z, KC_X, KC_C, KC_V, KC_B, M(F_PASTE),
TT(AUX), TT(RAISE), TT(LOWER), KC_LEAD, OSM(MOD_LGUI),
OSM(MOD_LALT), OSM(MOD_LCTL),
KC_DEL,
KC_SPC, KC_BSPC, KC_TAB,
// Right Hand
KC_VOLU, KC_6, KC_7, KC_8, KC_9, KC_0, LGUI(KC_L),
KC_VOLD, KC_J, KC_L, KC_U, KC_Y, KC_EQL, TD(TD_TDE),
KC_H, KC_N, KC_E, KC_I, KC_O, TD(TD_RPRN),
KC_MUTE, KC_K, KC_M, KC_SLSH, KC_BSLS, KC_UP, TD(TD_USC),
KC_ESC, LGUI(KC_R), KC_LEFT, KC_DOWN, KC_RGHT,
KC_HOME, KC_END,
KC_PGUP,
KC_PGDOWN, KC_ENT, OSM(MOD_LSFT)),
/* Keymap 2: LOWER Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ( | ) | ^ | / | ---- | |
* | | | | | | | ---- | | ---- | | | | | | ---- |
* |-----------+------+------+------+------+------+------| |------+------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | 7 | 8 | 9 | * | ---- | ---- |
* |-----------+------+------+------+------+------| ---- | | ---- |------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- |------| |------| 4 | 5 | 6 | - | ---- | ---- |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- | ---- | | ---- | 1 | 2 | 3 | + | ---- | ---- |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | ---- | ---- | ---- | ---- | ---- | | 0 | = | ---- | ---- | ---- |
* `-----------------------------------' `-------------------------------------'
* ,-------------. ,-------------.
* | ---- | ---- | | ---- | ---- |
* ,------|------|------| |------+------+------.
* | | | ---- | | ---- | | |
* | ---- | ---- |------| |------| ---- | ---- |
* | | | ---- | | ---- | | |
* `--------------------' `--------------------'
*/
[LOWER] = LAYOUT_ergodox(
// Left Hand
____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____,
____, ____,
____,
____, ____, ____,
// Right Hand
____, KC_LPRN, KC_RPRN, KC_CIRC, KC_PSLS, ____, ____,
____, KC_7, KC_8, KC_9, KC_PAST, ____, ____,
KC_4, KC_5, KC_6, KC_PMNS, ____, ____,
____, KC_1, KC_2, KC_3, KC_PPLS, ____, ____,
KC_0, KC_PEQL, ____, ____, ____,
____, ____,
____,
____, ____, ____),
/* Keymap 3: RAISE Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | ---- | | ---- | ! | @ | # | $ | % | ` ~ |
* | | | | | | | | | | | | | | | |
* |-----------+------+------+------+------+------+------| |------+------+------+------+------+------+-----------|
* | F7 | F8 | F9 | F10 | F11 | F12 | ---- | | ---- | ^ | & | * | ( | ) | - _ |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- |------| |------| [ { | } ] | \ | | ; : | ' " | = + |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- | ---- | | ---- | , < | > . | / ? | ---- | ---- | ---- |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | ---- | ---- | ---- | ---- | ---- | | ---- | ---- | ---- | ---- | ---- |
* `-----------------------------------' `-----------------------------------'
* ,-------------. ,-------------.
* | ---- | ---- | | ---- | ---- |
* ,------|------|------| |------+------+------.
* | | | ---- | | ---- | | |
* | ---- | ---- |------| |------| ---- | ---- |
* | | | ---- | | ---- | | |
* `--------------------' `--------------------'
*/
[RAISE] = LAYOUT_ergodox(
// Left Hand
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, ____,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ____,
____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____,
____, ____,
____,
____, ____, ____,
// Right Hand
____, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_GRV,
____, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS,
KC_LBRC, KC_RBRC, KC_BSLS, KC_SCLN, KC_QUOT, KC_EQL,
____, KC_COMM, KC_DOT, KC_SLSH, ____, ____, ____,
____, ____, ____, ____, ____,
____, ____,
____,
____, ____, ____),
/* Keymap 7: Configuration Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | EEPROM | ---- | ---- | ---- | ---- | ---- | ---- | | PWR | ---- | ---- | ---- | ---- | ---- | |
* | | | | | | | | | | | | | | | VERSION |
* |-----------+------+------+------+------+------+------| |------+------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
* |-----------+------+------+------+------+------| ---- | | SLP |------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | ---- | ---- | ---- | ---- | ---- | ---- | ---- | | WAKE | ---- | ---- | ---- | ---- | ---- | ---- |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | ---- | ---- | ---- | ---- | ---- | | ---- | ---- | ---- | ---- | ---- |
* `-----------------------------------' `-----------------------------------'
* ,-------------. ,-------------.
* | ---- | ---- | | TOG | ANI |
* ,------|------|------| |------+------+------.
* | | | ---- | | VAI | | |
* | ---- | ---- |------| |------| HUI | HUID |
* | | | ---- | | VAD | | |
* `--------------------' `--------------------'
*/
[AUX] = LAYOUT_ergodox(
// Left Hand
M(CF_EPRM), ____, ____, ____, ____, ____, KC_PWR,
____, ____, ____, ____, ____, ____, KC_SLEP,
____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, KC_WAKE,
____, ____, ____, ____, ____,
____, ____,
____,
____, ____, ____,
// Right Hand
KC_PWR, ____, ____, ____, ____, ____, M(CF_VERS),
KC_SLEP, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____,
KC_WAKE, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____,
RGB_TOG, M(RGB_ANI),
RGB_VAI,
RGB_VAD, RGB_HUI, RGB_HUD),
};
void unredo(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1)
{
register_code(KC_LCTL);
register_code(KC_Y);
unregister_code(KC_Y);
unregister_code(KC_LCTL);
}
else
{
register_code(KC_LCTL);
register_code(KC_Z);
unregister_code(KC_Z);
unregister_code(KC_LCTL);
}
reset_tap_dance(state);
}
void ccopy(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1)
{
register_code(KC_LCTL);
register_code(KC_X);
unregister_code(KC_X);
unregister_code(KC_LCTL);
}
else
{
register_code(KC_LCTL);
register_code(KC_C);
unregister_code(KC_C);
unregister_code(KC_LCTL);
}
reset_tap_dance(state);
}
void findreplace(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1)
{
register_code(KC_LCTL);
register_code(KC_H);
unregister_code(KC_H);
unregister_code(KC_LCTL);
}
else
{
register_code(KC_LCTL);
register_code(KC_F);
unregister_code(KC_F);
unregister_code(KC_LCTL);
}
reset_tap_dance(state);
}
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_BTK] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_GRV),
[TD_TDE] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_TILD),
[TD_LPRN] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LPRN),
[TD_RPRN] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RPRN),
[TD_MIN] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_MINS),
[TD_USC] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_UNDS),
[TD_COPY] = ACTION_TAP_DANCE_FN(ccopy),
[TD_UNDO] = ACTION_TAP_DANCE_FN(unredo),
[TD_FIND] = ACTION_TAP_DANCE_FN(findreplace)};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id)
{
case F_PASTE:
if (record->event.pressed)
{
register_code(KC_LCTL);
register_code(KC_V);
unregister_code(KC_V);
unregister_code(KC_LCTL);
}
break;
case RGB_ANI:
if (record->event.pressed)
{
rgb_timer = timer_read();
}
else
{
if (timer_elapsed(rgb_timer) > 300)
{
rgblight_mode(1);
}
else
{
rgblight_step();
}
}
case CF_EPRM:
if (record->event.pressed)
{
eeconfig_init();
}
return false;
break;
case CF_VERS:
if (record->event.pressed)
{
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
}
return MACRO_NONE;
};
/*
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{}
*/
void tap(uint16_t code)
{
register_code(code);
unregister_code(code);
}
LEADER_EXTERNS();
void matrix_scan_user(void)
{
uint8_t layer = biton32(layer_state);
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
((get_oneshot_mods() & MOD_BIT(KC_LSFT)) &&
!has_oneshot_mods_timed_out()))
{
ergodox_right_led_1_set(LED_BRIGHTNESS_HI);
ergodox_right_led_1_on();
}
else if (layer == RAISE || layer == AUX)
{
ergodox_right_led_1_set(LED_BRIGHTNESS_LO);
ergodox_right_led_1_on();
}
else
{
ergodox_right_led_1_off();
}
if (keyboard_report->mods & MOD_BIT(KC_LCTL) ||
((get_oneshot_mods() & MOD_BIT(KC_LCTL)) &&
!has_oneshot_mods_timed_out()))
{
ergodox_right_led_2_set(LED_BRIGHTNESS_HI);
ergodox_right_led_2_on();
}
else if (layer == LOWER || layer == AUX)
{
ergodox_right_led_2_set(LED_BRIGHTNESS_LO);
ergodox_right_led_2_on();
}
else
{
ergodox_right_led_2_off();
}
if (keyboard_report->mods & MOD_BIT(KC_LALT) ||
((get_oneshot_mods() & MOD_BIT(KC_LALT)) &&
!has_oneshot_mods_timed_out()))
{
ergodox_right_led_3_set(LED_BRIGHTNESS_HI);
ergodox_right_led_3_on();
}
else if (layer == COLE || layer == AUX)
{
ergodox_right_led_3_set(LED_BRIGHTNESS_LO);
ergodox_right_led_3_on();
}
else
{
ergodox_right_led_3_off();
}
LEADER_DICTIONARY()
{
leading = false;
leader_end();
SEQ_THREE_KEYS(KC_W, KC_I, KC_N) { os_type = OS_WIN; };
SEQ_THREE_KEYS(KC_O, KC_S, KC_X) { os_type = OS_OSX; };
SEQ_THREE_KEYS(KC_L, KC_I, KC_N) { os_type = OS_LIN; };
SEQ_ONE_KEY(KC_A)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_2);
tap(KC_KP_2);
tap(KC_KP_8);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
register_code(KC_RSFT);
register_code(KC_SCLN);
unregister_code(KC_SCLN);
unregister_code(KC_RSFT);
unregister_code(KC_RALT);
tap(KC_A);
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_DQT);
tap(KC_A);
break;
}
}
SEQ_TWO_KEYS(KC_A, KC_A)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_1);
tap(KC_KP_9);
tap(KC_KP_6);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
register_code(KC_RSFT);
register_code(KC_SCLN);
unregister_code(KC_SCLN);
unregister_code(KC_RSFT);
unregister_code(KC_RALT);
register_code(KC_LSFT);
register_code(KC_A);
unregister_code(KC_A);
unregister_code(KC_LSFT);
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_DQT);
register_code(KC_LSFT);
register_code(KC_A);
unregister_code(KC_A);
unregister_code(KC_LSFT);
break;
}
}
SEQ_ONE_KEY(KC_O)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_2);
tap(KC_KP_4);
tap(KC_KP_6);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
register_code(KC_RSFT);
register_code(KC_SCLN);
unregister_code(KC_SCLN);
unregister_code(KC_RSFT);
unregister_code(KC_RALT);
tap(KC_O);
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_DQT);
tap(KC_O);
break;
}
}
SEQ_TWO_KEYS(KC_O, KC_O)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_2);
tap(KC_KP_1);
tap(KC_KP_4);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
register_code(KC_RSFT);
register_code(KC_SCLN);
unregister_code(KC_SCLN);
unregister_code(KC_RSFT);
unregister_code(KC_RALT);
tap(LSFT(KC_O));
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_DQT);
register_code(KC_LSFT);
register_code(KC_O);
unregister_code(KC_O);
unregister_code(KC_LSFT);
break;
}
}
SEQ_ONE_KEY(KC_U)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_2);
tap(KC_KP_5);
tap(KC_KP_2);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
register_code(KC_RSFT);
register_code(KC_SCLN);
unregister_code(KC_SCLN);
unregister_code(KC_RSFT);
unregister_code(KC_RALT);
tap(KC_U);
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_DQT);
tap(KC_U);
break;
}
}
SEQ_TWO_KEYS(KC_U, KC_U)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_2);
tap(KC_KP_2);
tap(KC_KP_0);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
register_code(KC_RSFT);
register_code(KC_SCLN);
unregister_code(KC_SCLN);
unregister_code(KC_RSFT);
unregister_code(KC_RALT);
tap(LSFT(KC_U));
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_DQT);
register_code(KC_LSFT);
register_code(KC_U);
unregister_code(KC_U);
unregister_code(KC_LSFT);
break;
}
}
SEQ_ONE_KEY(KC_S)
{
switch (os_type)
{
case OS_WIN:
tap(KC_NLCK);
register_code(KC_RALT);
tap(KC_KP_0);
tap(KC_KP_2);
tap(KC_KP_2);
tap(KC_KP_3);
unregister_code(KC_RALT);
tap(KC_NLCK);
break;
case OS_OSX:
register_code(KC_RALT);
tap(KC_S);
unregister_code(KC_RALT);
break;
case OS_LIN:
tap(KC_RALT);
tap(KC_S);
tap(KC_S);
break;
}
}
}
}
void matrix_init_user(void)
{
ergodox_led_all_on();
rgblight_init();
rgblight_enable();
rgblight_setrgb(255, 0, 0);
for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--)
{
ergodox_led_all_set(i);
wait_ms(5);
}
rgblight_setrgb(255, 255, 0);
wait_ms(1000);
for (int i = LED_BRIGHTNESS_LO; i > 0; i--)
{
ergodox_led_all_set(i);
wait_ms(10);
}
rgblight_setrgb(0, 255, 255);
ergodox_led_all_off();
wait_ms(1000);
rgblight_effect_knight(50);
}

View File

@@ -1,32 +0,0 @@
BOOTMAGIC_ENABLE=no
COMMAND_ENABLE=no
SLEEP_LED_ENABLE=no
NKRO_ENABLE = yes
FORCE_NKRO = no
DEBUG_ENABLE = no
CONSOLE_ENABLE = no
TAP_DANCE_ENABLE = yes
KEYLOGGER_ENABLE = no
UCIS_ENABLE = no
MOUSEKEY_ENABLE = no
AUTOLOG_ENABLE = no
RGBLIGHT_ENABLE = yes
RGBLIGHT_ANIMATION = yes
EXTRAKEY_ENABLE = yes
LEADER_ENABLE = yes
OPT_DEFS += -DUSER_PRINT
KEYMAP_VERSION = $(shell \
if [ -d "${KEYMAP_PATH}/.git" ]; then \
cd "${KEYMAP_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \
else echo QMK; fi)
KEYMAP_BRANCH = $(shell \
if [ -d "${KEYMAP_PATH}/.git" ]; then \
cd "${KEYMAP_PATH}"; \
fi; \
git rev-parse --abbrev-ref HEAD 2>/dev/null)
OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\"

View File

@@ -1,330 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define NPAD 2 // number pad
#define MDIA 3 // media keys
#define OTHR 4 // other keys
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | 1! | 2@ | 3# | 4$ | 5% | `~ | | \| | 6 | 7 | 8 | 9 | 0 | BkSp |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | Del | | =+ | Y | U | I | O | P | '" |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | LCtrl | A | S | D | F | G |------| |------| H | J | K | L | ; | RCtrl |
* |--------+------+------+------+------+------| Esc | | -_ |------+------+------+------+------+--------|
* | LShift | Z/L2 | X | C | V | B | | | | N | M | , | . | //L3 | RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ~L1 | LAlt | LGui | ~L1 | Space| | Left | Right| LGui | LAlt | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | (*1) | (*2) | | L2 | L1 |
* ,------|------|------| |------+--------+------.
* | | | L3 | | (*3) | | |
* | Enter| Esc |------| |------| Up | Down |
* | /LSft| /LCtr| L4 | | (*4) | | |
* `--------------------' `----------------------'
* (*1) -> Ctrl + Alt + U (Webstorm: Toggle Camel Case)
* (*2) -> Ctrl + Shift + Alt + P (Webstorm: Pritter Format)
* (*3) -> Ctrl + Shift + Alt + Up (Webstorm: Move Previous Change)
* (*4) -> Ctrl + Shift + Alt + Down (Webstorm: Move Next Change)
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DELT,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, LT(NPAD, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_ESC,
MO(SYMB), KC_LALT, KC_LGUI, MO(SYMB), KC_SPC,
LSFT(LALT(KC_U)), LCTL(LSFT(LALT(KC_P))),
TG(MDIA),
SFT_T(KC_ENT), CTL_T(KC_ESC), TG(OTHR),
// right hand
KC_BSLS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT,
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RCTL,
KC_MINS, KC_N, KC_M, KC_COMM, KC_DOT, LT(MDIA, KC_SLSH), KC_RSFT,
KC_LEFT, KC_RGHT, KC_RGUI, KC_RALT, MO(SYMB),
TG(NPAD), TG(SYMB),
LCTL(LSFT(LALT(KC_UP))),
LCTL(LSFT(LALT(KC_DOWN))), KC_UP, KC_DOWN
),
/* Keymap 1: Symbol Layer
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | | | | | | [ | ] | |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | F6 | F7 | F8 | F9 | F10 | | | | ! | @ | # | $ | % | ` |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | F11 | F12 | GUI+1| GUI+2| GUI+3|------| |------| ^ | & | * | ~ | | | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | { | } | \ | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | Home | End | | | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| PgUp | PgDn |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_GRV,
KC_CIRC, KC_AMPR, KC_ASTR, KC_TILD, KC_PIPE, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_BSLS, KC_TRNS,
KC_HOME, KC_END, KC_0, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_PGUP, KC_PGDN
),
/* Keymap 2: Number pad Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | |NumLk | * | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | + | | 7 | 8 | 9 | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------| | 4 | 5 | 6 | | |
* |--------+------+------+------+------+------| | | - |------+------+------+------+------+--------|
* | | | | | | | | | | | 1 | 2 | 3 | / | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | 0 | . | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// Number Pad
[NPAD] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_NLCK, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
KC_PPLS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_TRNS, KC_TRNS,
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_TRNS,
KC_PMNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_TRNS,
KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 3: Mouse Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | WUp | | | | | WUp | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| WDn |------| |------| | WDn | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | |MsAcl0| | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | |Brwser|Brwser|
* | Lclk | Rclk |------| |------|Back |Fwd |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_WH_U, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ACL0,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_BTN1, KC_BTN2, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_WBAK, KC_WFWD
),
/* Keymap 4:
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
//
[OTHR] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
case 1:
if (record->event.pressed) { // For resetting EEPROM
eeconfig_init();
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
}
return true;
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_3_on();
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};

View File

@@ -1,28 +0,0 @@
# ErgoDox EZ Kou Keymap Configuration
## Changelog
* Jun 22, 2018
* Update keymap.
- enable prettier format of WebStorm.
- arrange key of toggle-camel-case.
* Sep 5, 2017
* Update keymap.
* Jul 20, 2017
* Update keymap.
* May 19, 2017
* Update keymap.
* Jan 18, 2017
* Update keymap.
* Jan 10, 2017
* Update keymap.
* Jan 7, 2017:
* create kou keymap.
## How to build
```bash
# in project root
$ make git-submodule
$ make ergodox_ez:kou
```

View File

@@ -1,16 +0,0 @@
#pragma once
#define CONFIG_USER_H
#define TAPPING_TERM 200
#ifdef RGBLIGHT_ENABLE
#undef RGBLIGHT_SAT_STEP
#define RGBLIGHT_SAT_STEP 12
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 7
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 7
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
#endif // RGBLIGHT_ENABLE
#define FORCE_NKRO
#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))

View File

@@ -1,843 +0,0 @@
#include QMK_KEYBOARD_H
#include "version.h"
#include "keymap_german.h"
#include "keymap_nordic.h"
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
// Programmer's Dvorak "macros" :
// To be paired with get_mods to enable both
// Shift functionality and Programmer's Dvorak
DVP_ESC, // Grave escape basically i think
DVP_AMPR,
DVP_LBRACKET,
DVP_LCBR,
DVP_RCBR,
DVP_LPRN,
DVP_AT,
DVP_EQUAL,
DVP_ASTERISK,
DVP_RPRN,
DVP_PLUS,
DVP_RBRACKET,
DVP_EXLM,
DVP_HASH,
RU_2,
RU_3,
RU_4,
RU_6,
RU_7,
RU_DOT,
SHFT_COMMA,
SHFT_DOT,
RGB_SLD,
RGB_FF0000,
RGB_008000,
RGB_0000FF,
RGB_FFFFFF,
RGB_800080
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Programmer's Dvorak layer
[0] = LAYOUT_ergodox(
DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_AT,
KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, MO(4),
MO(3), KC_A, KC_O, KC_E, KC_U, KC_I,
KC_LSHIFT, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_HYPR,
KC_LCTL, KC_LALT, KC_LGUI, LCTL(KC_C), LCTL(KC_V),
KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, MO(4), KC_END,
DVP_EQUAL, DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH,
TT(4), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS,
KC_MEH, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(3),
KC_DELETE, KC_BSLASH, KC_RGUI, KC_RCTL, LCTL(KC_F),
KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
),
// Gaming QWERTY layer
[1] = LAYOUT_ergodox(
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F14,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F23,
MO(3), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F24,
KC_LCTL, KC_F8, KC_LALT, KC_F14, KC_F13,
KC_HOME, TO(0), KC_F15, KC_SPACE, KC_LCTL, KC_LALT,
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL,
KC_F24, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE,
KC_F17, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT,
KC_DELETE, KC_F19, KC_LGUI, KC_F21, KC_F22,
KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
),
[2] = LAYOUT_ergodox(
KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_C,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TO(0),
MO(3), KC_1, KC_2, KC_3, KC_4, KC_5,
KC_LSHIFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
KC_LCTL, KC_F8, KC_LALT, KC_I, KC_S,
KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END,
KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO, KC_NO,
TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_NO, KC_NO,
KC_KP_4, KC_KP_5, KC_KP_6, KC_EQUAL, KC_NO, KC_NO,
KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_NO, KC_NO,
KC_KP_0, KC_KP_DOT, KC_NO, KC_NO, KC_NO,
TO(0), KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
),
// Function Layer
[3] = LAYOUT_ergodox(
KC_DLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_NO, TT(4),
KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, KC_TRANSPARENT,
KC_LSHIFT, LALT(KC_Z), KC_TRANSPARENT, KC_TRANSPARENT, KC_F12, KC_TRANSPARENT, ALL_T(KC_NO),
KC_LCTL, KC_LALT, KC_LGUI, KC_CAPSLOCK, LSFT(KC_F12),
KC_PSCREEN, KC_PGUP, KC_PGDOWN, KC_SPACE, KC_LSHIFT, KC_INSERT,
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_NO, KC_HOME, KC_TRANSPARENT, KC_PSCREEN, KC_SLCK, KC_TRANSPARENT, KC_TRANSPARENT,
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT,
MEH_T(KC_NO), KC_CALCULATOR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_RSHIFT,
KC_DELETE, KC_INSERT, KC_TRANSPARENT, KC_F19, KC_RCTL,
TO(2),KC_TRANSPARENT,KC_TRANSPARENT,LALT(KC_F10),KC_ENTER,KC_BSPACE
),
// Keypad, Lighting, and Mouse emulation layer
///*
[4] = LAYOUT_ergodox(
KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO,
KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0),
KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5),
KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,
KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END,
KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, KC_NO, RGB_VAI,
TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_NO, RGB_VAD,
KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_NO, RGB_HUI,
KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, RGB_SLD, RGB_HUD,
KC_KP_0, KC_KP_DOT, KC_KP_ENTER, RGB_MOD, RGB_TOG,
KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
)
//*/
/*
// Keypad, Lighting, and Mouse emulation layer
[4] = KEYMAP(
KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO,
KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0),
KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5),
KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,
KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END,
KC_NO, KC_I, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, RGB_VAI,
TO(0), KC_G, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, RGB_VAD,
SHFT_COMMA, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, RGB_HUI,
KC_NO, SHFT_DOT, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, RGB_HUD,
KC_NO, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, RGB_TOG,
KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
)
*/
};
void led_set_keymap(uint8_t usb_led) {
}
void matrix_init_user (void) {
}
bool left_shift_down = false;
bool right_shift_down = false;
bool numlock = false;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LSHIFT:
if (record->event.pressed)
{
left_shift_down = true;
return true;
}
else
{
left_shift_down = false;
return true;
}
break;
case KC_RSHIFT:
if (record->event.pressed)
{
right_shift_down = true;
return true;
}
else
{
right_shift_down = false;
return true;
}
break;
case KC_NUMLOCK:
if (record->event.pressed)
{
numlock = !numlock;
}
break;
case DVP_ESC:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
SEND_STRING("~");
return false;
}
else
{
if(record->event.pressed)
SEND_STRING(SS_DOWN(X_ESCAPE));
else
SEND_STRING(SS_UP(X_ESCAPE));
return false;
}
break;
case DVP_AMPR:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
SEND_STRING("%");
}
}
else
{
if(record->event.pressed)
SEND_STRING("&");
}
return false;
break;
case SHFT_DOT:
if(record->event.pressed)
SEND_STRING(">");
break;
case SHFT_COMMA:
if(record->event.pressed)
SEND_STRING("<");
break;
case DVP_LBRACKET:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_7);
unregister_code(KC_7);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("[");
}
return false;
return false;
break;
case DVP_LCBR:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_5);
unregister_code(KC_5);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("{");
}
return false;
break;
case DVP_RCBR:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_3);
unregister_code(KC_3);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("}");
}
return false;
break;
case DVP_LPRN:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_1);
unregister_code(KC_1);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("(");
}
return false;
break;
case DVP_AT:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_LSHIFT);
register_code(KC_6);
unregister_code(KC_6);
unregister_code(KC_LSHIFT);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("@");
}
return false;
break;
case DVP_EQUAL:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_9);
unregister_code(KC_9);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("=");
}
return false;
break;
case DVP_ASTERISK:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_0);
unregister_code(KC_0);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("*");
}
return false;
break;
case DVP_RPRN:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_2);
unregister_code(KC_2);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING(")");
}
return false;
break;
case DVP_PLUS:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_4);
unregister_code(KC_4);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("+");
}
return false;
break;
case DVP_RBRACKET:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_6);
unregister_code(KC_6);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("]");
}
return false;
break;
case DVP_EXLM:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_8);
unregister_code(KC_8);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("!");
}
return false;
break;
case DVP_HASH:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
// Russian
case RU_2:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
case RU_3:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
case RU_4:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
case RU_6:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
case RU_7:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
case RU_DOT:
if (left_shift_down || right_shift_down)
{
if(record->event.pressed)
{
if(left_shift_down)
unregister_code(KC_LSHIFT);
if(right_shift_down)
unregister_code(KC_RSHIFT);
register_code(KC_GRAVE);
unregister_code(KC_GRAVE);
if(left_shift_down)
register_code(KC_LSHIFT);
if(right_shift_down)
register_code(KC_RSHIFT);
}
}
else
{
if(record->event.pressed)
SEND_STRING("#");
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
break;
case RGB_FF0000:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable();
rgblight_mode(1);
rgblight_setrgb(0xff,0x00,0x00);
#endif
}
return false;
break;
case RGB_008000:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable();
rgblight_mode(1);
rgblight_setrgb(0x00,0x80,0x00);
#endif
}
return false;
break;
case RGB_0000FF:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable();
rgblight_mode(1);
rgblight_setrgb(0x00,0x00,0xff);
#endif
}
return false;
break;
case RGB_FFFFFF:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable();
rgblight_mode(1);
rgblight_setrgb(0xff,0xff,0xff);
#endif
}
return false;
break;
case RGB_800080:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable();
rgblight_mode(1);
rgblight_setrgb(0x80,0x00,0x80);
#endif
}
return false;
break;
}
return true;
}
uint32_t layer_state_set_user(uint32_t state) {
uint8_t layer = biton32(state);
// ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
case 0:
break;
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_3_on();
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
break;
default:
break;
}
return state;
};

View File

@@ -1,3 +0,0 @@
# Lukaus' keymap
Programmer's Dvorak as default layer with Qwerty gaming layer and two function layers

View File

@@ -1 +0,0 @@
#UNICODE_ENABLE = yes

View File

@@ -1,208 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
// http://www.keyboard-layout-editor.com/#/gists/9be130e4c9b503317619
#define BASE 0 // default layer
#define SYMB_R 1 // symbols (activated by right hand)
#define SYMB_L 2 // symbols (activated by left hand)
#define NAV 3 // navigation
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Prose layer
*
* Layer switch keys:
* [tap/toggle]
* (momentary)
* {toggle}
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | Del | | BSPC | 6 | 7 | 8 | 9 | 0 | BSPC |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | Ctrl/| |Ctrl/ | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| Esc | | ; |------+------+------+------+------+--------|
* | Ctrl | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------|Alt/ | |Alt/ |------+------+------+------+------+--------|
* | Shift | Z | X | C | V | B |Tab | |Ins | N | M | , | . | / | Shift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Ctrl |Super | Alt |[Nav] |[Symb]| |[Symb]|[Nav] | Alt | Ctrl | Enter|
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Shift| Alt | | Alt | Shift |
* ,------|------|------| |------+--------+------.
* | | |[Nav] | |[Nav] | | |
* | Tab | Esc |------| |------| Space | Bspc |
* | | | Ctrl | | Ctrl | | |
* `--------------------' `----------------------'
*/
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
LT(NAV,KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELETE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, CTL_T(KC_ESC),
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALT_T(KC_TAB),
KC_LCTRL, KC_LGUI, KC_LALT,KC_NO, MO(NAV),
KC_LCTRL, KC_LALT,
MO(NAV),
KC_TAB, LT(SYMB_L,KC_ESC), KC_LSFT,
// right hand
KC_BSPC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
CTL_T(KC_SCLN),KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
ALT_T(KC_INS), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
MO(NAV),KC_NO, KC_RALT,KC_RGUI, CTL_T(KC_ENT),
KC_RALT, KC_RCTRL,
MO(NAV),
KC_RSFT, LT(SYMB_R,KC_SPACE), KC_BSPC
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ` | ~ | * | & | / | < | | > | \ | 7 | 8 | 9 | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | _ | ^ | % | $ | ( |------| |------| ) | 4 | 5 | 6 | - | Enter |
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
* | | = | # | @ | ! | { | | | | } | 1 | 2 | 3 | + | Enter |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | " | | | | | | 0 | . | . | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | ? | : |------| |------| ; | . |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[SYMB_L] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_GRV , KC_TILD, KC_ASTR, KC_AMPR, KC_SLSH, LSFT(KC_COMM),
KC_TRNS, KC_UNDS, KC_CIRC, KC_PERC, KC_DLR, KC_LPRN,
KC_TRNS, KC_EQL, KC_HASH, KC_AT, KC_EXLM, KC_LCBR, KC_LBRC,
LSFT(KC_QUOT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
LSFT(KC_SLSH), KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
LSFT(KC_DOT), KC_BSLS, KC_7, KC_8, KC_9, KC_PIPE, KC_TRNS,
KC_RPRN, KC_4, KC_5, KC_6, KC_MINS, KC_ENT,
KC_RBRC, KC_RCBR, KC_1, KC_2, KC_3, KC_PLUS, KC_ENT,
KC_0, KC_DOT, KC_DOT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_SCLN, KC_DOT
),
[SYMB_R] = LAYOUT_ergodox( // same as above, but avoids clash between SYMB and ;/:
// left hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_GRV , KC_TILD, KC_ASTR, KC_AMPR, KC_SLSH, LSFT(KC_COMM),
KC_TRNS, KC_UNDS, KC_CIRC, KC_PERC, KC_DLR, KC_LPRN,
KC_TRNS, KC_EQL, KC_HASH, KC_AT, KC_EXLM, KC_LCBR, KC_LBRC,
LSFT(KC_QUOT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
LSFT(KC_SLSH), KC_COLN, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
LSFT(KC_DOT), KC_BSLS, KC_7, KC_8, KC_9, KC_PIPE, KC_TRNS,
KC_RPRN, KC_4, KC_5, KC_6, KC_MINS, KC_ENT,
KC_RBRC, KC_RCBR, KC_1, KC_2, KC_3, KC_PLUS, KC_ENT,
KC_0, KC_DOT, KC_DOT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_DOT
),
/* Keymap 2: Navigation Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 |Break | |PrntSc| F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | --- |MsLeft|MsUp |MsDown|MsRght|------| |------| Left | Down | Up | Right| F11 | Enter|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | --- | Btn4 |ScrlDn|ScrlUp| Btn5 | | | | Home | PgDwn| PgUp | End | F12 | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[NAV] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PAUSE,
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS, KC_BTN1, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
KC_TRNS, KC_BTN2, KC_BTN4, KC_MS_WH_UP, KC_MS_WH_DOWN, KC_BTN5, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_PSCREEN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11, KC_ENT,
KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1:
case 2:
ergodox_right_led_1_on();
break;
case 3:
case 4:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};

View File

@@ -1,100 +0,0 @@
The Matrixman Ergodox / Split-Planck Keyboard Layout
====================================================
### The problem
These layouts were designed to give my aching pinkeys a break
### The Design
- Pinkeys do less:
- Left q, a, z, `, _, =, [Shift], [F1] [Click], [Right Click]
- Right p, ', /, |, -, +, [Shift], [F10], [F11], [F12]
- Index fingers do more:
- Left: r, f, v, t, g, b, &, $, !, /, (, {, <, [, [Ctrl], [Tab], [Alt], [PrintScr]
- Right: u, j, m, y, h, n, 7, 4, 1, \, ), }, >, ], ;, [Ctrl], [Insert], [Alt], [Pause]
- Thumbs do more:
- Left: [Esc], :, [Shift], [Tab]
- Right: [Space], ;, [Shift], [Backspace]
- Palm Presses too:
- Left: [Ctrl], "
- Right: [Ctrl, [Enter]
### The Plan
I keep an Ergodox at home and at work, and when I'm mobile, I carry a planck.
These keymaps are designed to minimize the difficulty of switching between the two.
### Other features
- 10-key at home row for right hand
- "Matching" symbols use same finger on opposite hand: <> [] {} /\ () 1! 2@ 3# 4$ 5% 6^ 7& 8* -_ +=
- Supports vim-like (hjkl) movements:
- mouse movement and scrolling
- arrow keys and nav keys (home, end, pg up, pg down)
- All non-modal keys mapped (all keys from a typical 105 key keyboard except caps, num, and scroll lock)
The Planck Layout
-----------------
For a picture, see here: http://www.keyboard-layout-editor.com/#/gists/eb0696806831fc0d93c9
### Prose Layer
qwert▓▓yuiop
asdfg▓;hjkl'
zxcvb▓▓nm,./
▓▓▓▓▓▓▓ ▓▓▓▓
### Symbol Layer
`~*&/<>\789|
_^%$([])456-
=#@!{▓▓}123+
"▓,?:▓▓;0▓.▓
### Nav Layer
FKEYF▓▓KEYFK
mouse▓▓arowE
scrol▓▓seekY
▓▓▓▓▓▓▓▓▓▓▓▓
The Ergodox Layout
------------------
For a picture, see here: http://www.keyboard-layout-editor.com/#/gists/9be130e4c9b503317619
Wherever the Ergodox has keys that the Planck doesn't, whichever key would be expected on a typical 105 key is in that place
### Prose Layer
▓▓▓▓▓▓▓ ▓▓▓▓▓▓
▓qwert▓ ▓yuiop\
▓asdfg▓ ;hjkl;'
▓zxcvb nm,./▓
▓▓▓▓▓▓ ▓▓▓▓▓▓
▓▓ ▓▓
▓▓▓ ▓ ▓
### Symbol Layer
▓▓▓▓▓▓ ▓▓▓▓▓▓
▓`~*&/< >\789|\
▓_^%$([ ])456-▓
▓=#@!{ }123+▓
"▓▓▓▓▓▓ 0▓.▓▓
▓▓ ▓▓
?:▓ ▓;.
### Nav Layer
▓▓▓▓▓▓▓ ▓▓▓▓▓▓
▓FKEYF▓ ▓KEYFK▓
▓mouse▓ arowE▓
▓scrol seekY▓
▓▓▓▓▓▓ ▓▓▓▓▓▓
▓▓ ▓▓
▓▓▓ ▓▓▓

View File

@@ -1,179 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | 1 | 2 | Home | | PgUp | 3 | 4 |
* |------|------|------| |------|--------|------|
* | Space| BkSp | End | | PgDn | Tab |Enter |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox_80( // layer 0 : default
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
KC_1, KC_2, KC_HOME,
KC_SPC,KC_BSPC,KC_END,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB),
KC_LALT, CTL_T(KC_ESC),
KC_PGUP,KC_3, KC_4,
KC_PGDN,KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* |------|------|------| |------|------|------|
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox_80(
// left hand
M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+----------.
* | | | | | | | |
* |------|------|------| |------|------|----------|
* | | | | | | |BrwserBack|
* `--------------------' `------------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox_80(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
}
return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};

View File

@@ -1,10 +0,0 @@
# ErgoDox 80 Default Configuration
This is based on the default Ergodox EZ keymap.
The difference is that this keymap supports 80 key layouts.
If you own an 80 key Ergodox, use this as an example to get your desired keymap.
**NOTE:** This layout is not physically supported by the Ergodox EZ.
![Default80](https://i.imgur.com/P2Lga9x.png)

View File

@@ -1,24 +0,0 @@
#ifndef KEYMAP_CONFIG_H
#define KEYMAP_CONFIG_H
#define RGBLIGHT_SLEEP
#ifndef QMK_KEYS_PER_SCAN
#define QMK_KEYS_PER_SCAN 4
#endif // !QMK_KEYS_PER_SCAN
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
#undef PREVENT_STUCK_MODIFIERS
#define FORCE_NKRO
#ifndef TAPPING_TOGGLE
#define TAPPING_TOGGLE 1
#endif
#endif // !USERSPACE_CONFIG_H

View File

@@ -1,271 +0,0 @@
#include QMK_KEYBOARD_H
#include "version.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD,
RGB_LYR
};
typedef union {
uint32_t raw;
struct {
bool rgb_layer_change :1;
};
} user_config_t;
user_config_t user_config;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | Home | | PgUp | | |
* | Space|Backsp|------| |------| Tab |Enter |
* | |ace | End | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
KC_HOME,
KC_SPC,KC_BSPC,KC_END,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB),
KC_LALT, CTL_T(KC_ESC),
KC_PGUP,
KC_PGDN,KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | EPRM | | | | | | | . | 0 | = | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* |Animat| LYR | |Toggle|Solid |
* ,------|------|------| |------+------+------.
* |Bright|Bright| | | |Hue- |Hue+ |
* |ness- |ness+ |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
RESET, KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
EPRM,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
RGB_MOD,RGB_LYR,
KC_TRNS,
RGB_VAD,RGB_VAI,KC_TRNS,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
RGB_TOG, RGB_SLD,
KC_TRNS,
KC_TRNS, RGB_HUD, RGB_HUI
),
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK
),
};
void eeconfig_init_user(void) {
rgblight_enable();
rgblight_sethsv_cyan();
rgblight_mode(1);
user_config.rgb_layer_change = true;
eeconfig_update_user(user_config.raw);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
case RGB_LYR: // This allows me to use underglow as layer indication, or as normal
if (record->event.pressed) {
user_config.rgb_layer_change ^= 1; // Toggles the status
eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
if (user_config.rgb_layer_change) { // if layer state indication is enabled,
layer_state_set(layer_state); // then immediately update the layer color
}
}
return false; break;
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)
if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
if (user_config.rgb_layer_change) { // only if this is enabled
user_config.rgb_layer_change = false; // disable it, and
eeconfig_update_user(user_config.raw); // write the setings to EEPROM
}
}
return true; break;
}
return true;
}
void matrix_init_user(void) {
// Call the keymap level matrix init.
// Read the user config from EEPROM
user_config.raw = eeconfig_read_user();
// Set default layer, if enabled
if (user_config.rgb_layer_change) {
rgblight_enable_noeeprom();
rgblight_sethsv_noeeprom_cyan();
rgblight_mode_noeeprom(1);
}
}
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
};
uint32_t layer_state_set_user(uint32_t state) {
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (biton32(state)) {
case SYMB:
ergodox_right_led_1_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); }
break;
case MDIA:
ergodox_right_led_2_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_green(); rgblight_mode_noeeprom(1); }
break;
case 3:
ergodox_right_led_3_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_blue(); rgblight_mode_noeeprom(1); }
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_orange(); rgblight_mode_noeeprom(1); }
break;
case 5:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_yellow(); rgblight_mode_noeeprom(1); }
break;
case 6:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_pink(); rgblight_mode_noeeprom(1); }
break;
case 7:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
break;
default: // for any other layers, or the default layer
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
break;
}
return state;
}

View File

@@ -1,254 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#define BASE 0 // Base layer - QWERTY
#define SPEC 1 // Special keys favoring programming in c-like languages
#define NUM 2 // Numeric layer with number row functional keys
#define ___ KC_TRNS
#define BSLASH LSFT(KC_SLSH)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = LAYOUT_ergodox(
// Left side
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_VOLU, /**/ KC_1, /**/ KC_2, /**/ KC_3, /**/ KC_4, /**/ KC_5, /**/ KC_F11, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_VOLD, /**/ KC_Q, /**/ KC_W, /**/ KC_E, /**/ KC_R, /**/ KC_T, /**/ KC_ESC, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*==========================================================================================*/ /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_MPLY, /**/ KC_A, /**/ KC_S, /**/ KC_D, /**/ KC_F, /**/ KC_G, /*===============*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*==========================================================================================*/ /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_MUTE, /**/ KC_Z, /**/ KC_X, /**/ KC_C, /**/ KC_V, /**/ KC_B, /**/ KC_BSPC, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ ___, /**/ ___, /**/ KC_RALT, /**/ KC_LCTRL, /**/
/**/ /**/ /**/ /**/ /**/ /**/
/*=======================================================================*/
/*==============================*/
/**/ /**/ /**/
/**/ ___, /**/ KC_DEL, /**/
/**/ /**/ /**/
/*=============================================*/
/**/ /**/ /**/ /**/
/**/ /**/ /**/ KC_LALT, /**/
/**/ /**/ /**/ /**/
/**/ /**/ /*===============*/
/**/ /**/ /**/ /**/
/**/ KC_SPACE, /**/ KC_LGUI, /**/ KC_LCTRL, /**/
/**/ /**/ /**/ /**/
/*=============================================*/
// Right side
//
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_F12, /**/ KC_1, /**/ KC_2, /**/ KC_3, /**/ KC_4, /**/ KC_5, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_Y, /**/ KC_U, /**/ KC_I, /**/ KC_O, /**/ KC_P, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ /*==========================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*===============*/ KC_H, /**/ KC_J, /**/ KC_K, /**/ KC_L, /**/ KC_SCLN, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ /*==========================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_ENT, /**/ KC_N, /**/ KC_M, /**/ KC_COMM, /**/ KC_DOT, /**/ KC_SLSH, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/
/**/ MO(NUM), /**/ ___, /**/ ___, /**/ ___, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/
/*=======================================================================*/
/*==============================*/
/**/ /**/ /**/
/**/ ___, /**/ ___, /**/
/**/ /**/ /**/
/*=============================================*/
/**/ /**/ /**/ /**/
/**/ ___, /**/ /**/ /**/
/**/ /**/ /**/ /**/
/*===============*/ /**/ /**/
/**/ /**/ /**/ /**/
/**/ ___, /**/ KC_RSFT, /**/ MO(SPEC) /**/
/**/ /**/ /**/ /**/
/*=============================================*/
),
[SPEC] = LAYOUT_ergodox(
// Left side
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_EXLM, /**/ KC_AT, /**/ KC_HASH, /**/ KC_DLR, /**/ KC_PERC, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_GRV, /**/ KC_QUOT, /**/ KC_LCBR, /**/ KC_RCBR, /**/ KC_PLUS, /**/ KC_ESC, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*==========================================================================================*/ /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_TAB, /**/ KC_ASTR, /**/ KC_LPRN, /**/ KC_RPRN, /**/ KC_EQUAL, /*===============*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*==========================================================================================*/ /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_HASH, /**/ KC_PERC, /**/ KC_LBRC, /**/ KC_RBRC, /**/ KC_MINUS, /**/ KC_BSPC, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ ___, /**/ ___, /**/ KC_LALT, /**/ KC_LCTRL, /**/
/**/ /**/ /**/ /**/ /**/ /**/
/*=======================================================================*/
/*==============================*/
/**/ /**/ /**/
/**/ ___, /**/ KC_DEL, /**/
/**/ /**/ /**/
/*=============================================*/
/**/ /**/ /**/ /**/
/**/ /**/ /**/ KC_LALT, /**/
/**/ /**/ /**/ /**/
/**/ /**/ /*===============*/
/**/ /**/ /**/ /**/
/**/ KC_SPACE, /**/ KC_LGUI, /**/ KC_LCTRL, /**/
/**/ /**/ /**/ /**/
/*=============================================*/
// Right side
//
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_CIRC, /**/ KC_AMPR, /**/ KC_ASTR, /**/ KC_LPRN, /**/ KC_RPRN, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_AMPR, /**/ KC_HOME, /**/ KC_UP, /**/ KC_END, /**/ KC_CIRC, /**/ KC_F7, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ /*==========================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*===============*/ KC_EXLM, /**/ KC_LEFT, /**/ KC_DOWN, /**/ KC_RIGHT, /**/ KC_COLN, /**/ KC_F8, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ /*==========================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_ENT, /**/ KC_PIPE, /**/ KC_UNDS, /**/ KC_LT, /**/ KC_GT, /**/ KC_BSLS, /**/ KC_F9, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ ___, /**/ ___, /**/ ___, /**/KC_F10,/**/
/**/ /**/ /**/ /**/ /**/ /**/
/*=======================================================================*/
/*==============================*/
/**/ /**/ /**/
/**/ ___, /**/ ___, /**/
/**/ /**/ /**/
/*=============================================*/
/**/ /**/ /**/ /**/
/**/ ___, /**/ /**/ /**/
/**/ /**/ /**/ /**/
/*===============*/ /**/ /**/
/**/ /**/ /**/ /**/
/**/ ___, /**/ KC_RSFT, /**/ ___ /**/
/**/ /**/ /**/ /**/
/*=============================================*/
),
[NUM] = LAYOUT_ergodox(
// Left side
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_F1, /**/ KC_F2, /**/ KC_F3, /**/ KC_F4, /**/ KC_F5, /**/ KC_F11, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_EXLM, /**/ KC_AT, /**/ KC_HASH, /**/ KC_DLR, /**/ KC_PERC, /**/ KC_ESC, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*==========================================================================================*/ /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_1, /**/ KC_2, /**/ KC_3, /**/ KC_4, /**/ KC_5, /*===============*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*==========================================================================================*/ /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_HASH, /**/ KC_PERC, /**/ KC_LBRC, /**/ KC_RBRC, /**/ KC_MINUS, /**/ KC_BSPC, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ ___, /**/ ___, /**/ KC_LALT, /**/ KC_LCTRL, /**/
/**/ /**/ /**/ /**/ /**/ /**/
/*=======================================================================*/
/*==============================*/
/**/ /**/ /**/
/**/ ___, /**/ KC_DEL, /**/
/**/ /**/ /**/
/*=============================================*/
/**/ /**/ /**/ /**/
/**/ /**/ /**/ KC_LALT, /**/
/**/ /**/ /**/ /**/
/**/ /**/ /*===============*/
/**/ /**/ /**/ /**/
/**/ KC_SPACE, /**/ KC_LGUI, /**/ KC_LCTRL, /**/
/**/ /**/ /**/ /**/
/*=============================================*/
// Right side
//
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_F12, /**/ KC_F6, /**/ KC_F7, /**/ KC_F8, /**/ KC_F9, /**/ KC_F10, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ KC_CIRC, /**/ KC_AMPR, /**/ KC_ASTR, /**/ KC_LPRN, /**/ KC_RPRN, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ /*==========================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*===============*/ KC_6, /**/ KC_7, /**/ KC_8, /**/ KC_9, /**/ KC_0, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ /*==========================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/**/ KC_ENT, /**/ KC_PIPE, /**/ KC_UNDS, /**/ KC_COMM, /**/ KC_DOT, /**/ KC_BSLS, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/
/**/ ___, /**/ ___, /**/ ___, /**/ ___, /**/ ___, /**/
/**/ /**/ /**/ /**/ /**/ /**/
/*=======================================================================*/
/*==============================*/
/**/ /**/ /**/
/**/ ___, /**/ ___, /**/
/**/ /**/ /**/
/*=============================================*/
/**/ /**/ /**/ /**/
/**/ ___, /**/ /**/ /**/
/**/ /**/ /**/ /**/
/*===============*/ /**/ /**/
/**/ /**/ /**/ /**/
/**/ ___, /**/ KC_RSFT, /**/ ___ /**/
/**/ /**/ /**/ /**/
/*=============================================*/
),
};

View File

@@ -1,8 +0,0 @@
#pragma once
#define FORCE_NKRO
#undef LSPO_KEY
#undef RSPC_KEY
#define LSPO_KEY KC_8 // Nordic Left SpaceCadet
#define RSPC_KEY KC_9 // Nordic Right SpaceCadet

View File

@@ -1,269 +0,0 @@
/* Copyright 2018 Andreas Lindhé, Christoffer Holmberg
*
* 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_swedish.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
#define ARRW 3 // arrow + soon mouse
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ½ | ! | " | # | # | % | Ins | | L1 | & | / | ( | ) | = | ? |
* | § | 1 | 2 @ | 3 £ | 4 $ | 5 | | | | 6 | 7 { | 8 [ | 9 ] | 0 } | + \ |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | L2 | | L2 | Y | U | I | O | P | Å |
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | L4 | A | S | D | F | G |------| |------| H | J | K | L |Ö / L3| Ä/L2 |
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| Back | |Forwd |------+------+------+------+------+--------|
* | LShift/| Z | X | C | V | B | | | | N | M | ; | : | _ | RShift/|
* | ( | | | | | | | | | | | , | . | - | ) |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | '/ | ` |Alt | Left | Right| | Spc | Bksp | AltGr| * | ~/ |
* | Ctrl | ' | | | | | | | | | Ctrl |
* `----------------------------------' `----------------------------------'
* ,-------------. ,---------------.
* | <>| | End | | Home | ^ |
* ,------|------|------| |------+--------+------.
* | Left | Right| PgDn | | PgUp | Up | Down |
* |------|------|------| |------|--------|------|
* | Ctrl/| Alt/ | | | | Alt/ | Ctrl/|
* | Enter| Esc | Lgui | | Lgui | Esc | Enter|
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox_80( // layer 0 : default
// left hand
NO_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_INS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_WBAK,
CTL_T(NO_APOS), NO_ACUT, KC_LALT, KC_BSPC, KC_SPC,
NO_LESS, KC_END,
KC_LEFT, KC_RIGHT, KC_PGDN,
CTL_T(KC_ENT), ALT_T(KC_ESC), KC_LGUI,
// right hand
TO(ARRW), KC_6, KC_7, KC_8, KC_9, KC_0, NO_PLUS,
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), LT(SYMB, NO_AE),
KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC,
KC_SPC, KC_BSPC, KC_ALGR, NO_ASTR, CTL_T(NO_TILD),
KC_HOME, NO_CIRC,
KC_PGUP, KC_UP, KC_DOWN,
KC_LGUI, ALT_T(KC_ESC), CTL_T(KC_ENT)
),
/* Keymap: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | - | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* |------|------|------| |------|------|------|
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox_80(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______,
_______,KC_EXLM,NO_AT, NO_LCBR,NO_RCBR,NO_PIPE,_______,
_______,KC_HASH,NO_DLR, NO_LPRN,NO_RPRN,NO_GRV,
_______,KC_PERC,NO_CIRC,NO_LBRC,NO_RBRC,NO_TILD,_______,
EPRM,_______,_______,_______,_______,
_______,_______,
_______,_______,_______,
_______,_______,_______,
// right hand
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, KC_UP, KC_7, KC_8, KC_9, NO_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, NO_PLUS, _______,
_______, NO_AMPR, KC_1, KC_2, KC_3, NO_MINS, _______,
_______,KC_DOT, KC_0, NO_EQL, _______,
_______, _______,
_______, _______, _______,
_______, _______, _______
),
/* Keymap: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | MsUp | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | |MsLeft|MsDown|MsRght| | |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | |------|------| |------|------|------|
* | | | | | | |BrBck |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox_80(
_______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_MS_U, _______, _______, _______, _______,
_______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_BTN1, KC_BTN2,
_______, _______,
_______, _______, _______,
_______, _______, _______,
// right hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, KC_MPRV, KC_MNXT, _______, _______,
KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
_______, _______,
_______, _______, _______,
_______, _______, KC_WBAK
),
// Keymap: Ducky Style arrows
[ARRW] = LAYOUT_ergodox_80(
_______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP , _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_DEL, _______,
_______, _______,
_______, _______, _______,
_______, _______, _______,
// right hand
TO(BASE), _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______, _______, _______,
_______, _______, _______
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
case 1:
if (record->event.pressed) { // For resetting EEPROM
eeconfig_init();
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
}
return true;
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// Binary: lsb at bottom
case 1:
ergodox_right_led_3_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_board_led_on();
default:
// none
break;
}
};

View File

@@ -1,4 +0,0 @@
# Nordic Qwerty layout for ErgoDox EZ, based on Andreas Lindhe's version
*NOTE:* it might still be desirable to set the software layout to sv_SE in your
OS.

View File

@@ -1,222 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#define BASE 0 // default layer
#define MDIA 1 // media keys
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD
};
bool capsOn = false;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | Bksp |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* |HyperCaps| A | S | D | F | G |------| |------| H | J | K | L |; / L1| Enter |
* |--------+------+------+------+------+------| Alt | | L1 |------+------+------+------+------+--------|
* | LShift | Z/L1 | X | C | V | B | | | | N | M | , | . | ? | RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |lCrtr | [ | ] | ` | ' | | Left | Up | Down | Right| PlayWin |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* |PRTSRN| Win | | Home | End |
* ,------|------|------| |------+--------+------.
* | | | Ins | | PgUp | | |
* | Space|Backsp|------| |------| Enter |Space |
* | |ace | Del | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LCBR,
ALL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, LT(MDIA,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT,
KC_LCTRL, KC_LBRC, KC_RBRC, KC_GRV, KC_QUOT,
KC_PSCR, KC_LGUI,
KC_INS,
KC_SPC,KC_BSPC,KC_DEL,
// right hand
KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC,
KC_RCBR, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_ENT,
TG(MDIA), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_LEFT, KC_UP,KC_DOWN,KC_RGHT, GUI_T(KC_MPLY),
KC_HOME, KC_END,
KC_PGUP,
KC_PGDN,KC_ENT, KC_SPC
),
/* Keymap 1: Media and mouse keys
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* |BootLoad | | Lclk | MsUp | Rclk | | | | | | | Up | | | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | Left | Down | Right| | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsAcl0|MsAcl1|MsAcl2| | | | | | | Mute | Mute | | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | Prev |VolUp |VolDn | Next | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// Functions
[MDIA] = LAYOUT_ergodox(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
RESET,_______,KC_BTN1,KC_MS_U,KC_BTN2,_______,_______,
_______,_______,KC_MS_L,KC_MS_D,KC_MS_R,_______,
_______,_______,KC_ACL0,KC_ACL1,KC_ACL2,_______,_______,
_______,_______,_______,_______,_______,
_______,_______,
_______,
_______,_______,_______,
// right hand
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,
_______,_______,_______, KC_UP ,_______,_______,_______,
_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,
_______,_______,_______,KC_MUTE,KC_MUTE,_______,_______,
KC_MPRV,KC_VOLU,KC_VOLD,KC_MNXT,_______,
_______, _______,
_______,
_______, _______, _______
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
case 1:
if (record->event.pressed) { // For resetting EEPROM
eeconfig_init();
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
}
return true;
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
#ifdef RGBLIGHT_COLOR_LAYER_0
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
#endif
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
if(layer == 1)
{
ergodox_right_led_2_on();
ergodox_right_led_3_on();
ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
}
if(capsOn)
{
ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
ergodox_right_led_1_on ();
}
if(keyboard_report->mods & MOD_BIT(KC_LSFT))
{
ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
ergodox_right_led_1_on ();
} else {
ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
if(!capsOn)
{
ergodox_right_led_1_off ();
}
}
if(keyboard_report->mods & MOD_BIT(KC_LALT))
{
ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
ergodox_right_led_2_on ();
} else {
ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
if(layer != 1)
{
ergodox_right_led_2_off ();
}
}
if(keyboard_report->mods & MOD_BIT(KC_LCTRL))
{
ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
ergodox_right_led_3_on ();
} else {
ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
if(layer != 1)
{
ergodox_right_led_3_off ();
}
}
};
void led_set_user(uint8_t usb_led){
if (usb_led & (1 << USB_LED_CAPS_LOCK))
{
capsOn = true;
}else {
capsOn = false;
}
}

View File

@@ -1,250 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "keymap_steno.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
#define TXBOLT 3 // TxBolt Steno Virtual Serial
#define TXBOLT2 4 // TxBolt Steno Virtual Serial Alternative Layout
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | TX | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | BOLT |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | Home | | PgUp | | |
* | Space|Backsp|------| |------| Tab |Enter |
* | |ace | End | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
KC_HOME,
KC_SPC,KC_BSPC,KC_END,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
TG(TXBOLT), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB),
KC_LALT, CTL_T(KC_ESC),
KC_PGUP,
KC_PGDN,KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | RESET | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK
),
/* Keymap 3: TxBolt (Serial)
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | BKSPC | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | S | T | P | H | * |------| |------| * | F | P | L | T | D |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | S | K | W | R | * | | | | * | R | B | G | S | Z |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | A | O |------| |------| E | U |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// TxBolt over Serial
[TXBOLT] = LAYOUT_ergodox(
KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, KC_NO,
KC_NO, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1,
KC_NO, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
STN_A, STN_O, KC_NO,
// right hand
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB,
STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
KC_NO, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
KC_NO, STN_E, STN_U
),
/* Keymap 4: TxBolt (Serial) Alternative
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | S | T | P | H | * | | | | * | F | P | L | T | D |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | S | K | W | R | * |------| |------| * | R | B | G | S | Z |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | A | O | | E | U | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// TxBolt over Serial
[TXBOLT2] = LAYOUT_ergodox(
KC_NO, STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, KC_NO,
KC_NO, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, KC_NO,
KC_NO, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, STN_A, STN_O,
KC_NO, KC_NO,
KC_NO,
KC_NO, KC_NO, KC_NO,
// right hand
KC_NO, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB,
KC_TRNS, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
STN_E, STN_U, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
KC_NO, KC_NO, KC_NO
),
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};

View File

@@ -1,92 +0,0 @@
# ErgoDox EZ Steno Configuration
This layout has a layer that uses the TxBolt Stenograph protocol over a Virtual Serial port. It requires something like Plover in order to function.
In Plover, you can select TX Bolt as the Stenotype Machine, and find the COM port that was assigned. In this way, your regular keyboard will still function normally, and you can switch back and forth between the Steno and Keyboard layers.
<pre><code>
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | TX | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | BOLT |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | Home | | PgUp | | |
* | Space|Backsp|------| |------| Tab |Enter |
* | |ace | End | | PgDn | | |
* `--------------------' `----------------------'
*/
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
/* Keymap 2: Media keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | RESET | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
/* Keymap 3: TxBolt (Serial)
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | BKSPC | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | S | T | P | H | * |------| |------| * | F | P | L | T | D |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | S | K | W | R | * | | | | * | R | B | G | S | Z |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | A | O |------| |------| E | U |
* | | | | | | | |
* `--------------------' `--------------------'
*/
</code></pre>

View File

@@ -1,3 +0,0 @@
STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER
# Not enough interupts, so something has to go
MOUSEKEY_ENABLE = no

View File

@@ -1,144 +0,0 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#include "keymap_german.h"
#include "keymap_nordic.h"
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ergodox(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,LCTL(KC_MINUS),KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_LBRACKET,KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,KC_LSPO,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,ALL_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSHIFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_UNDS,KC_END,LCTL(KC_EQUAL),KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_RBRACKET,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,ALT_T(KC_J),KC_K,KC_L,LT(2,KC_SCOLON),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),KC_RSPC,KC_UP,KC_DOWN,KC_LBRACKET,KC_RBRACKET,TT(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDOWN,LT(1,KC_TAB),KC_ENTER),
[1] = LAYOUT_ergodox(KC_TRANSPARENT,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(KC_W),KC_LBRACKET,KC_RBRACKET,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(KC_PGUP),LCTL(KC_PGDOWN),RGB_MOD,KC_TRANSPARENT,KC_TRANSPARENT,RGB_VAD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_AMPR,KC_UNDS,KC_MINUS,KC_SCOLON,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_PIPE,KC_AT,KC_EQUAL,KC_PERC,KC_BSLASH,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,RGB_TOG,RGB_SLD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,RGB_HUI),
[2] = LAYOUT_ergodox(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_BTN1,KC_MS_BTN2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_WWW_BACK),
};
// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
}
return MACRO_NONE;
};
void matrix_init_user(void) {
#ifdef RGBLIGHT_COLOR_LAYER_0
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
#endif
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
break;
}
return true;
}
uint32_t layer_state_set_user(uint32_t state) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
case 0:
#ifdef RGBLIGHT_COLOR_LAYER_0
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
#else
rgblight_init();
#endif
break;
case 1:
ergodox_right_led_1_on();
#ifdef RGBLIGHT_COLOR_LAYER_1
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1);
#endif
break;
case 2:
ergodox_right_led_2_on();
#ifdef RGBLIGHT_COLOR_LAYER_2
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2);
#endif
break;
case 3:
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_3
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3);
#endif
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
#ifdef RGBLIGHT_COLOR_LAYER_4
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4);
#endif
break;
case 5:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_5
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5);
#endif
break;
case 6:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_6
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
#endif
break;
case 7:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
#ifdef RGBLIGHT_COLOR_LAYER_7
rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
#endif
break;
default:
break;
}
return state;
};

View File

@@ -1,10 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#endif
#define NORMAL_MODE 0
#define INSERT_MODE 1
#define SYMB 2
#define MOUSE 3
#include "../../config.h"

View File

@@ -1,379 +0,0 @@
#include QMK_KEYBOARD_H
#include "quantum_keycodes.h"
#include "action_layer.h"
#include "version.h"
#include "vim.h"
#define VERSION_STRING QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION
#define X_____X KC_TRNS
#define KC_ATM LGUI(LSFT(KC_P))
#define KC_ATP LGUI(LCTL(KC_P))
#define TO_NORM TO(NORMAL_MODE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Normal mode
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | TAB | | WORD | END | | | | | | YANK | UNDO | | OPEN | PUT | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | ⎋ | | | DEL | | |------| |------| ← | ↓ | ↑ | → | | ⎋ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | SHIFT | | | |VISUAL| BACK | | | | | | | | | SHIFT |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* |SPACE |DELETE|------| |------|ENTER |BACKSP|
* | | | | | | | |
* `--------------------' `--------------------'
*/
[NORMAL_MODE] = LAYOUT_ergodox(
// Layer 2 Left Hand
X_____X,X_____X,X_____X,X_____X,X_____X,X_____X,X_____X,
KC_TAB ,X_____X,VIM_W, VIM_E ,X_____X,X_____X,X_____X,
X_____X,VIM_A ,VIM_S ,VIM_D ,X_____X,X_____X,
KC_LSFT,X_____X,VIM_X ,VIM_C ,VIM_V ,VIM_B ,X_____X,
KC_LCTL,KC_LALT,X_____X,X_____X,X_____X,
KC_HOME,KC_END ,
TO(SYMB),
GUI_T(KC_SPC), KC_ESC ,_______,
// Layer 2 Right Hand
X_____X,X_____X,X_____X,X_____X,X_____X,X_____X,X_____X,
X_____X,VIM_Y ,VIM_U ,VIM_I ,VIM_O ,VIM_P ,X_____X,
VIM_H ,VIM_J ,VIM_K ,VIM_L ,X_____X,X_____X,
X_____X,X_____X,X_____X,X_____X,X_____X,X_____X,KC_LSFT,
X_____X,X_____X,X_____X,KC_RALT,KC_RCTL,
KC_PGUP, KC_PGDN,
TO(SYMB),
KC_DEL , KC_ENT, GUI_T(KC_BSPC)
),
/* Insert mode
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | NORMAL | 1 | 2 | 3 | 4 | 5 | ⇧⌘P | | PROJ | 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | ⇥ | Q | W | E | R | T | ` | | - | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | ⎋ | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| = | | + |------+------+------+------+------+--------|
* | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / | R⇧ |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | ⌃ | ⌥ | ( | [ | { | | } | ] | ) | ⌥ | ⌃ |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | HOME | END | | PGDN | PGUP |
* ,------|------|------| |------+------+------.
* |SPACE | | | | | | BSPC |
* | |NORMAL|------| |------| ENTER| |
* | ⌘ | | | | | | ⌘ |
* `--------------------' `--------------------'
*/
[INSERT_MODE] = LAYOUT_ergodox(
// Left Hand
NOR_MOD,KC_1, KC_2, KC_3, KC_4, KC_5, KC_ATM,
KC_TAB ,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_GRV,
KC_ESC ,KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL,
KC_LCTL,KC_LALT,KC_LPRN,KC_LBRC, KC_LCBR,
KC_HOME,KC_END ,
TO(SYMB),
GUI_T(KC_SPC),KC_ESC ,TO_NORM,
// Right Hand
KC_ATP , KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
KC_PLUS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,KC_RSFT,
KC_RCBR,KC_RBRC, KC_RPRN,KC_RALT,KC_RCTL,
KC_PGUP, KC_PGDN,
TO(SYMB),
MO(MOUSE) , KC_ENT, GUI_T(KC_BSPC)
),
[SYMB] = LAYOUT_ergodox(
// Left Hand
NOR_MOD,KC_1, KC_2, KC_3, KC_4, KC_5, KC_ATM,
KC_TAB ,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_GRV,
_______,KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL,
KC_LCTL,KC_LALT,KC_LPRN,KC_LBRC, KC_LCBR,
_______,_______,
_______,
_______,_______,TO_NORM,
// Right Hand
KC_ATP , KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
KC_PLUS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,KC_RSFT,
KC_RCBR,KC_RBRC, KC_RPRN,KC_RALT,KC_RCTL,
_______,_______,
_______,
_______,_______,_______
),
[MOUSE] = LAYOUT_ergodox(
// Left Hand
_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,
_______,_______,
_______,
_______,_______,_______,
// Right Hand
_______,_______,_______,_______,_______,_______,_______,
_______,_______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______,
_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,
_______,_______,
_______,
_______,_______,_______
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
case 0:
if (record->event.pressed) { SEND_STRING (VERSION_STRING); }
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool SHIFTED = (keyboard_report->mods & MOD_BIT(KC_LSFT)) |
(keyboard_report->mods & MOD_BIT(KC_RSFT));
switch (keycode) {
case VIM_A:
if (record->event.pressed) { SHIFTED ? VIM_APPEND_LINE() : VIM_APPEND(); }
return false;
case VIM_B:
if (record->event.pressed) {
switch(VIM_QUEUE) {
case KC_NO: VIM_BACK(); break;
case VIM_C: VIM_CHANGE_BACK(); break;
case VIM_D: VIM_DELETE_BACK(); break;
case VIM_V: VIM_VISUAL_BACK(); break;
}
}
return false;
case VIM_C:
if (record->event.pressed) {
switch(VIM_QUEUE) {
case KC_NO: SHIFTED ? VIM_CHANGE_LINE() : VIM_LEADER(VIM_C); break;
case VIM_C: VIM_CHANGE_WHOLE_LINE(); break;
}
}
return false;
case VIM_D:
if (record->event.pressed) {
switch(VIM_QUEUE) {
case KC_NO: SHIFTED ? VIM_DELETE_LINE() : VIM_LEADER(VIM_D); break;
case VIM_D: VIM_DELETE_WHOLE_LINE(); break;
}
}
return false;
case VIM_E:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: VIM_END(); break;
case VIM_C: VIM_CHANGE_END(); break;
case VIM_D: VIM_DELETE_END(); break;
case VIM_V: VIM_VISUAL_END(); break;
}
}
return false;
case VIM_H:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: VIM_LEFT(); break;
case VIM_C: VIM_CHANGE_LEFT(); break;
case VIM_D: VIM_DELETE_LEFT(); break;
case VIM_V: VIM_VISUAL_LEFT(); break;
}
}
return false;
case VIM_I:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: layer_on(INSERT_MODE); break;
case VIM_C: VIM_LEADER(VIM_CI); break;
case VIM_D: VIM_LEADER(VIM_DI); break;
case VIM_V: VIM_LEADER(VIM_VI); break;
}
}
return false;
case VIM_J:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: SHIFTED ? VIM_JOIN() : VIM_DOWN(); break;
case VIM_C: VIM_CHANGE_DOWN(); break;
case VIM_D: VIM_DELETE_DOWN(); break;
case VIM_V: VIM_VISUAL_DOWN(); break;
}
}
return false;
case VIM_K:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: VIM_UP(); break;
case VIM_C: VIM_CHANGE_UP(); break;
case VIM_D: VIM_DELETE_UP(); break;
case VIM_V: VIM_VISUAL_UP(); break;
}
}
return false;
case VIM_L:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: VIM_RIGHT(); break;
case VIM_C: VIM_CHANGE_RIGHT(); break;
case VIM_D: VIM_DELETE_RIGHT(); break;
case VIM_V: VIM_VISUAL_RIGHT(); break;
}
}
return false;
case VIM_O:
if (record->event.pressed) { SHIFTED ? VIM_OPEN_ABOVE() : VIM_OPEN(); }
return false;
case VIM_P:
if (record->event.pressed) { SHIFTED ? VIM_PUT_BEFORE() : VIM_PUT(); }
return false;
case VIM_S:
if (record->event.pressed) { SHIFTED ? VIM_CHANGE_WHOLE_LINE() : VIM_SUBSTITUTE(); }
return false;
case VIM_U:
if (record->event.pressed) { VIM_UNDO(); }
return false;
case VIM_V:
if (record->event.pressed) { VIM_LEADER(VIM_V); }
return false;
case VIM_W:
if (record->event.pressed) {
switch (VIM_QUEUE) {
case KC_NO: VIM_WORD(); break;
case VIM_C: VIM_CHANGE_WORD(); break;
case VIM_CI: VIM_CHANGE_INNER_WORD(); break;
case VIM_D: VIM_DELETE_WORD(); break;
case VIM_DI: VIM_DELETE_INNER_WORD(); break;
case VIM_V: VIM_VISUAL_WORD(); break;
case VIM_VI: VIM_VISUAL_INNER_WORD(); break;
}
}
return false;
case VIM_X:
if (record->event.pressed) { VIM_CUT(); }
return false;
case VIM_Y:
if (record->event.pressed) { SHIFTED ? VIM_YANK_LINE() : VIM_YANK(); }
return false;
// dynamically generate these.
case EPRM:
if (record->event.pressed) { eeconfig_init(); }
return false;
case VRSN:
if (record->event.pressed) { SEND_STRING(VERSION_STRING); }
return false;
case RGB_SLD:
if (record->event.pressed) { rgblight_mode(1); }
return false;
}
// End by clearing the queue unless keycode is a
// if ((record->event.pressed) &&
// (keycode != VIM_I ||
// keycode != VIM_C ||
// keycode != VIM_D ||
// keycode != VIM_V)) {
// VIM_LEADER(KC_NO);
// }
return true;
};
void matrix_init_user(void) {
debug_enable = true;
VIM_LEADER(KC_NO);
};
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_3_on();
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
break;
case 5:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
break;
case 6:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
case 7:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
default:
break;
}
};

View File

@@ -1,5 +0,0 @@
# Vim-like keymap for macOS
This keymap adds vim emulation to the keyboard firmware. Layer 0 is 'normal mode', providing a number of commands like `w`, `e`, `a`, `dw`, etc.
The keymap works by using macOS text-editing shortcuts, so currently it only chooches on macOS.

View File

@@ -1 +0,0 @@
MOUSEKEY_ENABLE = yes

View File

@@ -1,755 +0,0 @@
#include "config.h"
#include "print.h"
#include "keycode.h"
#include "quantum.h"
#include "quantum_keycodes.h"
#define NOR_MOD TO(NORMAL_MODE)
#define INS_MOD TO(INSERT_MODE)
#define PRESS(keycode) register_code16(keycode)
#define RELEASE(keycode) unregister_code16(keycode)
uint16_t VIM_QUEUE = KC_NO;
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
VIM_A,
VIM_B,
VIM_C,
VIM_CI,
VIM_D,
VIM_DI,
VIM_E,
VIM_H,
VIM_I,
VIM_J,
VIM_K,
VIM_L,
VIM_O,
VIM_P,
VIM_S,
VIM_U,
VIM_V,
VIM_VI,
VIM_W,
VIM_X,
VIM_Y,
EPRM,
VRSN,
RGB_SLD,
};
void VIM_APPEND(void);
void VIM_APPEND_LINE(void);
void VIM_BACK(void);
void VIM_CHANGE_BACK(void);
void VIM_CHANGE_DOWN(void);
void VIM_CHANGE_END(void);
void VIM_CHANGE_INNER_WORD(void);
void VIM_CHANGE_LEFT(void);
void VIM_CHANGE_LINE(void);
void VIM_CHANGE_RIGHT(void);
void VIM_CHANGE_UP(void);
void VIM_CHANGE_WHOLE_LINE(void);
void VIM_CHANGE_WORD(void);
void VIM_CUT(void);
void VIM_DELETE_BACK(void);
void VIM_DELETE_DOWN(void);
void VIM_DELETE_END(void);
void VIM_DELETE_INNER_WORD(void);
void VIM_DELETE_LEFT(void);
void VIM_DELETE_LINE(void);
void VIM_DELETE_RIGHT(void);
void VIM_DELETE_UP(void);
void VIM_DELETE_WHOLE_LINE(void);
void VIM_DELETE_WORD(void);
void VIM_END(void);
void VIM_JOIN(void);
void VIM_OPEN(void);
void VIM_OPEN_ABOVE(void);
void VIM_PUT(void);
void VIM_SUBSTITUTE(void);
void VIM_UNDO(void);
void VIM_VISUAL_BACK(void);
void VIM_VISUAL_DOWN(void);
void VIM_VISUAL_END(void);
void VIM_VISUAL_INNER_WORD(void);
void VIM_VISUAL_LEFT(void);
void VIM_VISUAL_RIGHT(void);
void VIM_VISUAL_UP(void);
void VIM_VISUAL_WORD(void);
void VIM_WORD(void);
void VIM_YANK(void);
void TAP(uint16_t keycode) {
PRESS(keycode);
RELEASE(keycode);
}
void CMD(uint16_t keycode) {
PRESS(KC_LGUI);
TAP(keycode);
RELEASE(KC_LGUI);
}
void CTRL(uint16_t keycode) {
PRESS(KC_LCTRL);
TAP(keycode);
RELEASE(KC_LCTRL);
}
void SHIFT(uint16_t keycode) {
PRESS(KC_LSHIFT);
TAP(keycode);
RELEASE(KC_LSHIFT);
}
void ALT(uint16_t keycode) {
PRESS(KC_LALT);
TAP(keycode);
RELEASE(KC_LALT);
}
/**
* Sets the `VIM_QUEUE` variable to the incoming keycode.
* Pass `KC_NO` to cancel the operation.
* @param keycode
*/
void VIM_LEADER(uint16_t keycode) {
VIM_QUEUE = keycode;
switch(keycode) {
case VIM_C: print("\e[32mc\e[0m"); break;
case VIM_CI: print("\e[32mi\e[0m"); break;
case VIM_D: print("\e[32md\e[0m"); break;
case VIM_DI: print("\e[32mi\e[0m"); break;
case VIM_V: print("\e[32mv\e[0m"); break;
case VIM_VI: print("\e[32mi\e[0m"); break;
case KC_NO: print(""); break;
}
}
/***
* ####### # # ####### ##### # # ####### #######
* # # ## # # # # # # # # #
* # # # # # # # # # # # #
* # # # # # ##### ##### ####### # # #
* # # # # # # # # # # # #
* # # # ## # # # # # # # #
* ####### # # ####### ##### # # ####### #
*
*/
/**
* Vim-like `append` command.
* Works by sending →.
*/
void VIM_APPEND(void) {
print("\e[31ma\e[0m");
TAP(KC_RIGHT);
layer_on(INSERT_MODE);
}
/**
* Vim-like `back` command
* Simulates vim's `b` command by sending ⌥←
*/
void VIM_BACK(void) {
print("\e[31mb\e[0m");
ALT(KC_LEFT);
}
/**
* Vim-like `cut` command
* Simulates vim's `x` command by sending ⇧→ then ⌘X.
*/
void VIM_CUT(void) {
print("\e[31mx\e[0m");
SHIFT(KC_RIGHT);
CMD(KC_X);
}
/**
* Vim-like `down` command
* Sends ↓
*/
void VIM_DOWN(void) {
print("\e[31mj\e[0m");
TAP(KC_DOWN);
}
/**
* Vim-like `end` command
* Simulates vim's `e` command by sending ⌥→
*/
void VIM_END(void) {
print("\e[31me\e[0m");
ALT(KC_RIGHT);
}
/**
* Vim-like `left` command
* Sends ←
*/
void VIM_LEFT(void) {
print("\e[31mh\e[0m");
VIM_LEADER(KC_NO);
TAP(KC_LEFT);
}
/**
* Vim-like `open` command.
* Works by sending ⌘→ to move to the end of the line, `enter` to open a new line,
* then switching to insert mode.
*/
void VIM_OPEN(void) {
print("\e[31mo\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_RIGHT);
TAP(KC_ENTER);
layer_on(INSERT_MODE);
}
/**
* Vim-like `put` command
* Simulates vim's `p` command by sending ⌘V
*/
void VIM_PUT(void) {
print("\e[31mp\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_V);
}
/**
* Vim-like `put before` command
* Simulates vim's `P` command by sending ↑, ⌘←, then ⌘V
*/
void VIM_PUT_BEFORE(void) {
print("\e[31mP\e[0m");
VIM_LEADER(KC_NO);
TAP(KC_UP);
CMD(KC_LEFT);
CMD(KC_V);
}
/**
* Vim-like `right` command
* Sends →
*/
void VIM_RIGHT(void) {
print("\e[31ml\e[0m");
VIM_LEADER(KC_NO);
TAP(KC_RIGHT);
}
/**
* Vim-like `substitute` command
* Simulates vim's `s` command by sending ⇧→ to select the next character, then
* ⌘X to cut it, then entering insert mode.
*/
void VIM_SUBSTITUTE(void) {
print("\e[31ms\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_RIGHT);
CMD(KC_X);
layer_on(INSERT_MODE);
}
/**
* Vim-like `undo` command
* Simulates vim's `u` command by sending ⌘Z
*/
void VIM_UNDO(void) {
print("\e[31mu\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_Z);
}
/**
* Vim-like `up` command
* Sends ↑
*/
void VIM_UP(void) {
print("\e[31mk\e[0m");
VIM_LEADER(KC_NO);
TAP(KC_UP);
}
/**
* Vim-like `word` command
* Simulates vim's `w` command by moving the cursor first to the
* end of the current word, then to the end of the next word,
* then to the beginning of that word.
*/
void VIM_WORD(void) {
print("\e[31mw\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
TAP(KC_RIGHT);
TAP(KC_RIGHT);
TAP(KC_LEFT);
RELEASE(KC_LALT);
}
/**
* Vim-like `yank` command
* Simulates vim's `y` command by sending ⌘C
*/
void VIM_YANK(void) {
print("\e[31my\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_C);
}
/**
* Vim-like `yank line` command
* Simulates vim's `y` command by sending ⌘← then ⇧⌘→ then ⌘C
*/
void VIM_YANK_LINE(void) {
print("\e[31mY\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_LEFT);
PRESS(KC_LSHIFT);
CMD(KC_RIGHT);
RELEASE(KC_LSHIFT);
CMD(KC_C);
}
/***
* ##### # # ### ####### ####### ####### ######
* # # # # # # # # # #
* # # # # # # # # #
* ##### ####### # ##### # ##### # #
* # # # # # # # # #
* # # # # # # # # # #
* ##### # # ### # # ####### ######
*
*/
/**
* Vim-like `append to line` command
* Simulates vim's `A` command by sending ⌘→ then switching to insert mode.
*/
void VIM_APPEND_LINE(void) {
print("\e[31mA\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_RIGHT);
layer_on(INSERT_MODE);
}
/**
* Vim-like `change line` command
* Simulates vim's `C` command by sending ⌃K then switching to insert mode.
*/
void VIM_CHANGE_LINE(void) {
print("\e[31mC\e[0m");
VIM_LEADER(KC_NO);
VIM_DELETE_LINE();
layer_on(INSERT_MODE);
}
/**
* Vim-like 'delete line' command
* Simulates vim's `D` command by sending ⌃K to kill the line
*/
void VIM_DELETE_LINE(void) {
print("\e[31mD\e[0m");
VIM_LEADER(KC_NO);
CTRL(KC_K);
}
/**
* Vim-like 'join lines' command
* Simulates vim's `J` command by sending ⌘→ to go to the end of the line, then
* DELETE to join the lines
*/
void VIM_JOIN(void) {
print("\e[31mJ\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_RIGHT);
TAP(KC_DELETE);
VIM_LEADER(KC_NO);
}
/**
* Vim-like 'open above' command
* Simulates vim's `O` command by sending ⌘→ to go to the start of the line,
* enter to move the line down, ↑ to move up to the new line, then switching to
* insert mode.
*/
void VIM_OPEN_ABOVE(void) {
print("\e[31mO\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_LEFT);
TAP(KC_ENTER);
TAP(KC_UP);
layer_on(INSERT_MODE);
}
/**
* Vim-like 'change whole line' command
* Simulates vim's `S` `cc` or `c$` commands by sending ⌘← to go to the start of the line,
* ⌃K to kill the line, then switching to insert mode.
*/
void VIM_CHANGE_WHOLE_LINE(void) {
print("\e[31mS\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_LEFT);
VIM_CHANGE_LINE();
}
/***
* ###### ###### ###### ####### ####### ### # # ####### ######
* # # # # # # # # # # # # # #
* # # # # # # # # # # # # # #
* # # ###### ###### ##### ##### # # ##### # #
* # # # # # # # # # # # # #
* # # # # # # # # # # # # #
* ###### # # # ####### # ### # # ####### ######
*
*/
/**
* Vim-like `delete to end` command
* Simulates vim's `de` command by sending ⌥⇧→ then ⌘X.
*/
void VIM_DELETE_END(void) {
print("\e[31me\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
SHIFT(KC_RIGHT); // select to end of this word
RELEASE(KC_LALT);
CMD(KC_X);
}
/**
* Vim-like `delete whole line` command
* Simulates vim's `dd` command by sending ⌘← to move to start of line,
* selecting the whole line, then sending ⌘X to cut the line.
* alternate method: ⌘⌫, ⌃K
*/
void VIM_DELETE_WHOLE_LINE(void) {
print("\e[31md\e[0m");
VIM_LEADER(KC_NO);
CMD(KC_LEFT);
PRESS(KC_LSHIFT);
CMD(KC_RIGHT);
RELEASE(KC_LSHIFT);
CMD(KC_X);
}
/**
* Vim-like `delete word` command
* Simulates vim's `dw` command by sending ⌥⇧→→← then ⌘X to select to the start
* of the next word then cut.
*/
void VIM_DELETE_WORD(void) {
print("\e[31mw\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
SHIFT(KC_RIGHT); // select to end of this word
SHIFT(KC_RIGHT); // select to end of next word
SHIFT(KC_LEFT); // select to start of next word
RELEASE(KC_LALT);
CMD(KC_X); // delete selection
}
/**
* Vim-like `delete back` command
* Simulates vim's `db` command by selecting to the end of the word then deleting.
*/
void VIM_DELETE_BACK(void) {
print("\e[31mb\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
SHIFT(KC_LEFT); // select to start of word
SHIFT(KC_DEL); // delete selection
RELEASE(KC_LSHIFT);
}
/**
* Vim-like `delete left` command
* Simulates vim's `dh` command by sending ⇧← then ⌘X.
*/
void VIM_DELETE_LEFT(void) {
print("\e[31mh\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_LEFT);
CMD(KC_X);
}
/**
* Vim-like `delete right` command
* Simulates vim's `dl` command by sending ⇧→ then ⌘X.
*/
void VIM_DELETE_RIGHT(void) {
print("\e[31ml\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_RIGHT);
CMD(KC_X);
}
/**
* Vim-like `delete up` command
* Simulates vim's `dk` command by sending ↑ then deleting the line.
*/
void VIM_DELETE_UP(void) {
print("\e[31mk\e[0m");
VIM_LEADER(KC_NO);
TAP(KC_UP);
VIM_DELETE_LINE();
}
/**
* Vim-like `delete down` command
* Simulates vim's `dj` command by sending ↓ then deleting the line.
*/
void VIM_DELETE_DOWN(void) {
print("\e[31mj\e[0m");
VIM_LEADER(KC_NO);
TAP(KC_DOWN);
VIM_DELETE_LINE();
}
/***
* ###### ### ###### ###### ####### ####### ### # # ####### ######
* # # # # # # # # # # # # # # #
* # # # # # # # # # # # # # # #
* # # # ###### ###### ##### ##### # # ##### # #
* # # # # # # # # # # # # # #
* # # # # # # # # # # # # # #
* ###### ### # # # ####### # ### # # ####### ######
*
*/
/**
* Vim-like `delete inner word` command
* Simulates vim's `diw` command by moving back then cutting to the end of the word.
*/
void VIM_DELETE_INNER_WORD(void) {
print("\e[31mw\e[0m");
VIM_LEADER(KC_NO);
VIM_BACK();
VIM_DELETE_END();
}
/***
* ##### ###### ###### ####### ####### ### # # ####### ######
* # # # # # # # # # # # # # #
* # # # # # # # # # # # # #
* # ###### ###### ##### ##### # # ##### # #
* # # # # # # # # # # # #
* # # # # # # # # # # # # #
* ##### # # # ####### # ### # # ####### ######
*
*/
/**
* Vim-like `change back` command
* Simulates vim's `cb` command by first deleting to the start of the word,
* then switching to insert mode.
*/
void VIM_CHANGE_BACK(void) {
print("\e[31mb\e[0m");
VIM_LEADER(KC_NO);
VIM_DELETE_BACK();
layer_on(INSERT_MODE);
}
/**
* Vim-like `change down` command
* Simulates vim's `cj` command by sending ↓ then changing the line.
*/
void VIM_CHANGE_DOWN(void) {
print("\e[31mj\e[0m");
VIM_LEADER(KC_NO);
VIM_DELETE_DOWN();
layer_on(INSERT_MODE);
}
/**
* Vim-like `change to end` command
* Simulates vim's `ce` command by first deleting to the end of the word,
* then switching to insert mode.
*/
void VIM_CHANGE_END(void) {
print("\e[31mce\e[0m");
VIM_LEADER(KC_NO);
VIM_DELETE_END();
layer_on(INSERT_MODE);
}
/**
* Vim-like `change left` command
* Simulates vim's `ch` command by deleting left then switching to insert mode.
*/
void VIM_CHANGE_LEFT(void) {
print("\e[31mch\e[0m");
VIM_LEADER(KC_NO);
VIM_DELETE_LEFT();
layer_on(INSERT_MODE);
}
/**
* Vim-like `change right` command
* Simulates vim's `cl` command by deleting right then switching to insert mode.
*/
void VIM_CHANGE_RIGHT(void) {
print("\e[31mcl\e[0m");
VIM_DELETE_RIGHT();
layer_on(INSERT_MODE);
}
/**
* Vim-like `change up` command
* Simulates vim's `ck` command by deleting up then switching to insert mode.
*/
void VIM_CHANGE_UP(void) {
print("\e[31mck\e[0m");
VIM_DELETE_UP();
layer_on(INSERT_MODE);
}
/**
* Vim-like `change word` command
* Simulates vim's `cw` command by first deleting to the end of the word,
* then switching to insert mode.
*/
void VIM_CHANGE_WORD(void) {
print("\e[31mcw\e[0m");
VIM_LEADER(KC_NO);
VIM_DELETE_WORD();
layer_on(INSERT_MODE);
}
/***
* ##### ### ###### ###### ####### ####### ### # # ####### ######
* # # # # # # # # # # # # # # #
* # # # # # # # # # # # # # #
* # # ###### ###### ##### ##### # # ##### # #
* # # # # # # # # # # # # #
* # # # # # # # # # # # # # #
* ##### ### # # # ####### # ### # # ####### ######
*
*/
/**
* Vim-like `change inner word` command
* Simulates vim's `ciw` command by deleting the inner word then switching to insert mode.
*/
void VIM_CHANGE_INNER_WORD(void) {
print("\e[31mciw\e[0m");
VIM_DELETE_INNER_WORD();
layer_on(INSERT_MODE);
}
/***
* # # ###### ###### ####### ####### ### # # ####### ######
* # # # # # # # # # # # # # #
* # # # # # # # # # # # # # #
* # # ###### ###### ##### ##### # # ##### # #
* # # # # # # # # # # # # #
* # # # # # # # # # # # # #
* # # # # ####### # ### # # ####### ######
*
*/
/**
* Vim-like `visual select back` command
* Simulates vim's `vb` command by selecting to the enc of the word.
*/
void VIM_VISUAL_BACK(void) {
print("\e[31mvb\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
SHIFT(KC_LEFT); // select to start of word
RELEASE(KC_LALT);
}
/**
* Vim-like `visual select to end` command
* Simulates vim's `ve` command by selecting to the end of the word.
*/
void VIM_VISUAL_END(void) {
print("\e[31mve\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
SHIFT(KC_RIGHT); // select to end of this word
RELEASE(KC_LALT);
}
/**
* Vim-like `visual select word` command
* Simulates vim's `vw` command by selecting to the end of the word.
*/
void VIM_VISUAL_WORD(void) {
print("\e[31mvw\e[0m");
VIM_LEADER(KC_NO);
PRESS(KC_LALT);
SHIFT(KC_RIGHT); // select to end of this word
SHIFT(KC_RIGHT); // select to end of next word
SHIFT(KC_LEFT); // select to start of next word
RELEASE(KC_LALT);
}
/**
* Vim-like `visual left` command
* Simulates vim's `vh` command by sending ⇧←.
*/
void VIM_VISUAL_LEFT(void) {
print("\e[31mvh\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_LEFT);
}
/**
* Vim-like `visual right` command
* Simulates vim's `vl` command by sending ⇧→.
*/
void VIM_VISUAL_RIGHT(void) {
print("\e[31mvl\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_RIGHT);
}
/**
* Vim-like `visual up` command
* Simulates vim's `vk` command by sending ⇧↑.
*/
void VIM_VISUAL_UP(void) {
print("\e[31mvk\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_UP);
}
/**
* Vim-like `visual down` command
* Simulates vim's `vj` command by sending ⇧↓.
*/
void VIM_VISUAL_DOWN(void) {
print("\e[31mdj\e[0m");
VIM_LEADER(KC_NO);
SHIFT(KC_DOWN);
}
/***
* # # ### ###### ###### ####### ####### ### # # ####### ######
* # # # # # # # # # # # # # # #
* # # # # # # # # # # # # # # #
* # # # ###### ###### ##### ##### # # ##### # #
* # # # # # # # # # # # # # #
* # # # # # # # # # # # # # #
* # ### # # # ####### # ### # # ####### ######
*
*/
/**
* Vim-like `visual inner word` command
* Simulates vim's `viw` command by moving back then selecting to the end of the word.
*/
void VIM_VISUAL_INNER_WORD(void) {
print("\e[31mviw\e[0m");
VIM_LEADER(KC_NO);
VIM_BACK();
VIM_VISUAL_END();
}

View File

@@ -1,199 +0,0 @@
[
{
"name": "AB's Practical Keymap for Planck",
"author": "Anand Babu Periasamy"
},
[
{
"fa": [
2,
2,
0,
2
]
},
"F1\n1\n\n!\n\n\n\n\n\nTab",
"F2\n2\n\n@\n\n\n\n\n\nQ",
"F3\n3\n\n#\n\n\n\n\n\nW",
"F4\n4\n\n$\n\n\n\n\n\nE",
"F5\n5\n\n%\n\n\n\n\n\nR",
"F6\n6\n\n^\n\n\n\n\n\nT",
"F7\n7\n\n&\n\n\n\n\n\nY",
"F8\n8\n\n*\n\n\n\n\n\nU",
"F9\n9\n\n(\n\n\n\n\n\nI",
"F10\n0\n\n)\n\n\n\n\n\nO",
"F11\n-\n\n_\n\n\n\n\n\nP",
"F12\n=\n\n+\n\n\n\n\n\n<i class=\"fa fa-chevron-circle-left\" aria-hidden=\"true\"></i>"
],
[
{
"a": 7,
"f": 3
},
"Ctrl",
{
"f": 3
},
"A",
{
"f": 3
},
"S",
{
"f": 3
},
"D",
{
"c": "#c4bcbc",
"a": 4,
"f": 3
},
"\n(\n\n\n\n\n\n\n\nF",
{
"c": "#cccccc",
"f": 3
},
"\n)\n\n\n\n\n\n\n\nG",
{
"f": 3
},
"\\\n\n\n\n\n\n\n\n\nH",
{
"c": "#c4bcbc",
"f": 3
},
"|\n\n\n\n\n\n\n\n\nJ",
{
"c": "#cccccc",
"a": 7,
"f": 3
},
"K",
{
"f": 3
},
"L",
{
"a": 6,
"f": 3
},
";\n\n:",
{
"f": 3
},
"'\n\n\""
],
[
{
"a": 7,
"f": 3
},
"Shift",
{
"f": 3
},
"Z",
{
"f": 3
},
"X",
{
"f": 3
},
"C",
{
"a": 4,
"fa": [
2,
2,
0,
2,
0,
0,
0,
0,
0,
2
]
},
"\n[\n\n\n\n\n\n\n\nV",
"\n]\n\n\n\n\n\n\n\nB",
{
"fa": [
0,
2,
0,
2,
0,
0,
0,
0,
0,
2
]
},
"`\n{\n\n\n\n\n\n\n\nN",
"~\n}\n\n\n\n\n\n\n\nM",
{
"a": 6
},
",\n\n<",
".\n\n>",
"/\n\n?",
{
"a": 7
},
"Shift ↵"
],
[
{
"a": 4,
"fa": [
2,
2
]
},
"<i class='fa fa-download'></i>\n<i class='fa fa-lightbulb-o'></i>\n\n\n\n\n\n\n\nCtrl",
"\n<i class=\"fa fa-search\" aria-hidden=\"true\"></i>\n\n\n\n\n\n\n\nEsc",
"\n<i class=\"fa fa-search-minus\" aria-hidden=\"true\"></i>\n\n\n\n\n\n\n\n<i class='fa fa-linux'></i>",
"\n<i class=\"fa fa-search-plus\" aria-hidden=\"true\"></i>\n\n\n\n\n\n\n\nAlt",
{
"a": 7,
"f": 3
},
"<i class='fa fa-sort-down'></i>",
{
"a": 4,
"fa": [
1,
1
],
"w": 2
},
"PgUp\nPgDn\n\n\n\n\n\n\n\nSpace",
{
"a": 7,
"f": 3
},
"<i class='fa fa-sort-up'></i>",
{
"a": 4,
"fa": [
2
]
},
"<i class=\"fa fa-undo\" aria-hidden=\"true\"></i>\n\n\n\n\n\n\n\n\n<i class=\"fa fa-long-arrow-left\" aria-hidden=\"true\"></i>",
{
"f": 3
},
"<i class='fa fa-volume-down'></i>\n\n\n\n\n\n\n\n\n<i class=\"fa fa-long-arrow-down\" aria-hidden=\"true\"></i>",
{
"f": 3
},
"<i class='fa fa-volume-up'></i>\n\n\n\n\n\n\n\n\n<i class=\"fa fa-long-arrow-up\" aria-hidden=\"true\"></i>",
{
"f": 3
},
"<i class='fa fa-volume-off'></i>\n\n\n\n\n\n\n\n\n<i class=\"fa fa-long-arrow-right\" aria-hidden=\"true\"></i>"
]
]

View File

@@ -1,131 +0,0 @@
#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
#include "planck.h"
#include "action_layer.h"
#include "eeconfig.h"
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
extern keymap_config_t keymap_config;
// Symbolic names for macro IDs.
#define _QWERTY 0 // QUERTY layer
#define _LOWER 1 // Lower layer
#define _RAISE 2 // Raise layer
#define _CUSTOM 3 // Custom layer (LOWER + RAISE)
#define _BL 4 // Backlight
#define _MOB 5 // Mobile#
#define _CUS1 6 // Custom macro 1
#define _CUS2 7 // Custom macro 2
// Macro shortcuts.
#define QWERTY M(_LOWER)
#define LOWER M(_LOWER)
#define RAISE M(_RAISE)
#define CUSTOM M(_CUSTOM)
#define BL M(_BL)
#define MOB M(_MOB)
#define CUS1 M(_CUS1)
#define CUS2 M(_CUS2)
// Func macro definitions.
#define LWR_PGDN FUNC(0) // Tap for PgDn, hold for LOWER
#define RSE_PGUP FUNC(1) // Tap for PgUp, hold for RAISE
#define CTL_CAPS FUNC(2) // Tap for Caps, hold for Ctrl (DOESN'T SEEM TO WORK)
#define SFT_ENT FUNC(3) // Tap for Enter, hold for Shift
#define ZM_NRM FUNC(4) // Zoom normal
#define ZM_IN FUNC(5) // Zoom out
#define ZM_OUT FUNC(6) // Zoom in
#define EM_UNDO FUNC(7) // Emacs Undo
// Enable these functions using FUNC(n) macro.
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_PGDN),
[1] = ACTION_LAYER_TAP_KEY(_RAISE, KC_PGUP),
[2] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_CAPS),
[3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
[4] = ACTION_MODS_KEY(MOD_LCTL, KC_0),
[5] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS),
[6] = ACTION_MODS_KEY(MOD_LCTL, KC_PLUS),
[7] = ACTION_MODS_KEY(MOD_LCTL, KC_UNDS),
};
// This config can be found at Keyboard layout editor site: http://goo.gl/zjXL2l
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = { /* QWERTY */
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
{KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT},
{KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
[_LOWER] = { /* LOWER */
{KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{BL, ZM_NRM, ZM_IN, ZM_OUT, KC_TRNS, KC_PGDN, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
[_RAISE] = { /* RAISE */
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE}
},
[_CUSTOM] = { /* CUSTOM */
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MOB, KC_TRNS, CUS1, CUS2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
}
};
// Set a layer persistently.
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
// Macro actions for each corresponding ID.
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case _RAISE: // Raised layer.
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _CUSTOM);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _CUSTOM);
}
break;
case _LOWER: // Lowered layer.
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _CUSTOM);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _CUSTOM);
}
break;
case _BL: // Backlight
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
} else {
unregister_code(KC_RSFT);
}
break;
case _MOB: // Your mobile# here.
return MACRODOWN(T(1), T(2), T(3), T(MINS),
T(1), T(2), T(3), T(MINS),
T(1), T(2), T(3), T(4),
END);
case _CUS1: // Your custom macro 1
return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(SPC), END);
case _CUS2: // Your custom macro 2
return MACRODOWN(T(L), T(S), T(SPC), T(MINS), T(L), T(ENT), END);
};
return MACRO_NONE;
}

View File

@@ -1,18 +0,0 @@
# Practical keymap for Planck Ortholinear 40% Mechanical Keyboard
A practical keymap that emulates standard QWERTY keyboard for Planck. Once you get comfortable with this keymap, you may fork and customize it for your own needs.
![Layout](https://i.imgur.com/xnlaiZd.png "Practical Keymap")
![Photo](https://i.imgur.com/1kQPbLv.jpg "Planck Keyboard")
* Online keyboard layout editor: http://www.keyboard-layout-editor.com/#/gists/bda299020baaafe6a2a4a82e615e3cfc
# Programming Instructions:
Enter into programming mode and run the following command.
```
$ sudo KEYMAP=ab make dfu
```
# Notes
* Simultaneous RAISE+LOWER enters CUSTOM layer. You may add your own macros and custom keys here.
* RAISE and LOWER also acts as PgUp and PgDn when tapped.
* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users.
* Bracket keys are placed in the center of the keyboard for programmer's convenience.

View File

@@ -1,60 +0,0 @@
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device.
# Please customize your programmer settings(PROGRAM_CMD)
#
# make teensy = Download the hex file to the device, using teensy_loader_cli.
# (must have teensy_loader_cli installed).
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Build Options
# change to "no" to disable the options, or define them in the makefile.mk in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

View File

@@ -1,344 +0,0 @@
#include "planck.h"
#include "action_layer.h"
#include "eeconfig.h"
#include "keymap_uk.h"
extern keymap_config_t keymap_config;
enum planck_layers {
_QWERTY,
_MAC,
_LOWER,
_MLWR,
_RAISE,
_MRSE,
_FUNC,
_MFNC,
_FUNC2,
_MFNC2,
_ADJUST,
_MOUSE
};
enum planck_keycodes {
QWERTY = SAFE_RANGE,
MAC,
FUNC,
MFNC,
FUNC2,
MFNC2,
LOWER,
MLWR,
RAISE,
MRSE,
MOUSE,
DYNAMIC_MACRO_RANGE
};
#include "dynamic_macro.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ;: | Enter|
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_planck_grid(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT),
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT,
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
),
/* Function
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn |
* `-----------------------------------------------------------------------------------'
*/
[_FUNC] = LAYOUT_planck_grid(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT,
KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT),
_______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_planck_grid(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC,
LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC),
KC_LSPO, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT),
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
* ,-----------------------------------------------------------------------------------.
* | ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ` | | | ( | ) | | | HOME | UP | END | |ZOOM +|
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | { | } | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -|
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Mouse| | | | | Alt | Enter|Raise | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_planck_grid(
KC_GRV, XXXXXXX, M(1), KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN,
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)),
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS),
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______
),
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
* | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
M(0), RESET, QWERTY, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL,
KC_CAPS, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______,
TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Mouse
* ,-----------------------------------------------------------------------------------.
* | ESC | | | | | | | | | | | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN |RIGHT | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_MOUSE] = LAYOUT_planck_grid(
KC_ESC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Function 2 (Right hand side)
* ,-----------------------------------------------------------------------------------.
* | | |WRDSEL| | | | LNDEL| | | | | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | LNSEL| DUP | | | | |LNJOIN| | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | UNDO | CUT | COPY | PASTE| | | | | | | MODE |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FUNC2] = LAYOUT_planck_grid(
_______, _______, M(1), _______, _______, _______, M(5), _______, _______, _______, _______, _______,
_______, _______, M(3), M(7), _______, _______, _______, M(10), _______, _______, _______, _______,
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M(98) ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_MAC] = LAYOUT_planck_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2
),
[_MLWR] = LAYOUT_planck_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_MRSE] = LAYOUT_planck_grid(
_______, _______, M(2), _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL),
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS),
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_MFNC]= LAYOUT_planck_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT),
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_MFNC2] = LAYOUT_planck_grid(
_______, _______, M(2), _______, _______, _______, M(6), _______, _______, _______, _______, _______,
_______, _______, M(4), M(8), _______, _______, _______, M(10), _______, _______, _______, _______,
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M(99) ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
void persistant_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
persistant_default_layer_set(1UL<<_QWERTY);
}
return false;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case MLWR:
if (record->event.pressed) {
layer_on(_LOWER);
layer_on(_MLWR);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
layer_off(_MLWR);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case MRSE:
if (record->event.pressed) {
layer_on(_RAISE);
layer_on(_MRSE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
layer_off(_MRSE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case MFNC:
if (record->event.pressed) {
layer_on(_FUNC);
layer_on(_MFNC);
} else {
layer_off(_FUNC);
layer_off(_MFNC);
}
return false;
case MFNC2:
if (record->event.pressed) {
layer_on(_FUNC2);
layer_on(_MFNC2);
} else {
layer_off(_FUNC2);
layer_off(_MFNC2);
}
return false;
}
return true;
}
const macro_t *action_get_macro(keyrecord_t *record, uint8_t keycode, uint8_t opt) {
// These would trigger when you hit a key mapped as M(0)
if (record->event.pressed) {
switch(keycode) {
case 0: // Some custom string here
SEND_STRING("");
return false;
case 1: // Word Select
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LCTRL));
return false;
case 2: // Word Select Mac
SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LALT));
return false;
case 3: // Line Select
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
return false;
case 4: // Line Select Mac
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
return false;
case 5: // Line Delete
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
SEND_STRING(SS_TAP(X_BSPACE));
return false;
case 6: // Line Delete Mac
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
SEND_STRING(SS_TAP(X_BSPACE));
return false;
case 7: // Duplicate Selection
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v"));
return false;
case 8: // Duplicate Selection Mac
SEND_STRING(SS_LGUI("c") SS_TAP(X_RIGHT) SS_LGUI("v"));
return false;
case 9: // Join line
SEND_STRING(SS_TAP(X_END) SS_TAP(X_DELETE));
return false;
case 10: // Join line Mac
SEND_STRING(SS_LCTRL("e") SS_TAP(X_DELETE));
return false;
case 98: // Print mode
SEND_STRING("PC");
return false;
case 99: // Print mode
SEND_STRING("OSX");
return false;
}
}
return MACRO_NONE;
};

View File

@@ -1,108 +0,0 @@
# AJP10304 Custom Planck Layout
# Also available for the Atreus50 and JJ40
**Note:** In the tables below where there are two characters on a key,
the second is the output when shift is applied.
**Note:** The below tables assume a UK layout.
####Flashing
Rev <=5: sudo make planck:ajp10304:dfu
Rev 6: sudo make planck/rev6:ajp10304:dfu-util
##### Main Qwerty Layer
* Tab: when held, operates as shift.
* Enter: when held, operates as shift.
* MENU: perform right-click
| | | | | | | | | | | | |
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:|
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter|
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
| | | | | | | | | | | | |
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 |
##### Lower Layer
Activated when `Lower` is held in the above `qwerty` layer.
* Numbers are along the top row, their shifted counterparts are on row 2.
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word.
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word.
| | | | | | | | | | | | |
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
##### Raise Layer
Activated when `Raise` is held in the above `qwerty` layer.
* Preferred layer for typing brackets.
* Allows for cursor navigation to be used solely with the right hand.
* WRDSEL: Select the word where the cursor is.
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
| | | | | | | | | | | | |
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +|
| | | | { | } | |&#124;<| LEFT | DOWN |RIGHT |>&#124;|ZOOM -|
| Mouse | | | | | Alt | Enter |Raise | | | | |
##### Lower + Raise
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer.
* Audio controls in the same position as cursor keys from the `Raise` layer.
* ????: Runs a macro for outputting a text string. Do not use this store passwords.
* Reset: Enter bootloader for flashing firmware to the keyboard.
* CAPS: Toggle caps lock.
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2.
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2.
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
| | | | | | | | | | | | |
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
* WRDSEL: Select the word where the cursor is.
* LNDEL: Delete the line where the cursor is.
* LNSEL: Select the line where the cursor is.
* DUP: Duplicate the selected text.
* LNJOIN: Join the line where the cursor is with the following line.
* MODE: Print either `PC` or `OSX` depending on what layer mode is active.
| | | | | | | | | | | | |
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
| | |WRDSEL| | | | LNDEL| | | | | |
| | | LNSEL| DUP | | | | |LNJOIN| | | |
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE |
| | | | | | | | | | | | |
##### Mouse Layer
Activated when `fn` and `raise` held together.
| | | | | | | | | | | | |
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
| ESC | | | | | | | | | | | |
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
| | | | | | | | | | | | |

View File

@@ -1,3 +0,0 @@
AUDIO_ENABLE = no
MOUSEKEY_ENABLE = yes

View File

@@ -1,48 +0,0 @@
#include "keymap.h"
#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
#include "planck.h"
#include "backlight.h"
#define _QW 0
#define _LW 1
#define _RS 2
// This layout tries to imitate the Atreus keyboard
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = { /* Qwerty */
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_LW)},
{KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS},
{M(0), KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_SPC, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT, KC_TRNS}
},
[_RS] = { /* RAISE */
{KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS},
{KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS},
{KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_EQL, KC_TRNS}
},
[_LW] = { /* LOWER */
{KC_TRNS, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
{KC_TRNS, KC_DELETE, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_F4, KC_F5, KC_F6, KC_F11, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_TRNS}
}
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
backlight_step();
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};

View File

@@ -1,22 +0,0 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

View File

@@ -1,612 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// .................................................................... BEAKL EZ
#ifdef BEAKLEZ
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | ; | , | J | . | X | Caps |^Shift| B | D | M | P | Z |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_K, CNTR_TL, CNTR_TR, KC_F, KC_G, KC_R, KC_C, KC_V },
{KC_H, KC_I, KC_E, HOME_A, TD_QUOT, CNTR_HL, CNTR_HR, KC_L, KC_S, KC_T, KC_N, KC_W },
{KC_SCLN, KC_COMM, KC_J, KC_DOT, KC_X, CNTR_BL, CNTR_BR, KC_B, KC_D, KC_M, KC_P, KC_Z },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
{S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_QUOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
{KC_SCLN, KC_COMM, S(KC_J), KC_DOT, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | : | ~ | J | ` | X | Caps |^Shift| B | D | M | P | Z |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
{S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_DQOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
{TD_COLN, TD_TILD, S(KC_J), TD_GRV, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | K | ^Alt | ^GUI | F | G | R | C | V |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | H | I | E | A | " | ↑Alt | ↑GUI | L | S | T | N | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | : | / | J | ? | X | Caps |^Shift| B | D | M | P | Z |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_K), CNTR_TL, CNTR_TR, S(KC_F), S(KC_G), S(KC_R), S(KC_C), S(KC_V)},
{S(KC_H), S(KC_I), S(KC_E), S(KC_A), TD_DQOT, CNTR_HL, CNTR_HR, S(KC_L), S(KC_S), S(KC_T), S(KC_N), S(KC_W)},
{TD_COLN, KC_SLSH, S(KC_J), KC_QUES, S(KC_X), CNTR_BL, CNTR_BR, S(KC_B), S(KC_D), S(KC_M), S(KC_P), S(KC_Z)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// ..................................................................... BEAKL 8
#ifdef BEAKL8
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . | ↑Alt | ↑GUI | D | S | T | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_X, CNTR_TL, CNTR_TR, KC_G, KC_C, KC_R, KC_F, KC_Z },
{KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_D, KC_S, KC_T, KC_N, KC_B },
{KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
{S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ~ | ↑Alt | ↑GUI | D | S | T | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | ` | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), TD_TILD, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | X | ^Alt | ^GUI | G | C | R | F | Z |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? | ↑Alt | ↑GUI | D | S | T | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | / | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_C), S(KC_R), S(KC_F), S(KC_Z)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_D), S(KC_S), S(KC_T), S(KC_N), S(KC_B)},
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// .................................................................... BEAKL 8P
#ifdef BEAKL8P
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | ^Alt | ^GUI | G | D | R | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . | ↑Alt | ↑GUI | C | T | S | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
{KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_T, KC_S, KC_N, KC_B },
{KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
{S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | { | } | $ | ^Alt | ^GUI | G | D | R | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | < | > | ~ | ↑Alt | ↑GUI | C | T | S | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | ! | = | ` | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_Y), KC_LCBR, KC_RCBR, KC_DLR, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
{S(KC_K), S(KC_H), TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
{S(KC_J), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | ^Alt | ^GUI | ^ | [ | ] | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | / | Caps |^Shift| \ | $ | * | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, KC_CIRC, KC_LBRC, KC_RBRC, S(KC_F), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, S(KC_N), S(KC_B)},
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_DLR, KC_ASTR, S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// ................................................................... BEAKL 8TX
#ifdef BEAKL8TX
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | J | ^Alt | ^GUI | G | D | R | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . | ↑Alt | ↑GUI | C | T | S | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | ; | " | I | , | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_J, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
{HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_S, HOME_N, HOME_B },
{KC_Z, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
{S(KC_Z), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | $ | { | } | J | ^Alt | ^GUI | G | D | R | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | / | < | > | ~ | ↑Alt | ↑GUI | C | T | S | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | : | ! | = | ` | Caps |^Shift| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
{S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
{S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | J | ^Alt | ^GUI | G | [ | ] | ^ | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | $ | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | : | " | I | / | Caps |^Shift| \ | * | . | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_B)},
{S(KC_Z), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// ................................................................... BEAKL 8TT
#ifdef BEAKL8TT
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | J | Fn | Caps | G | D | R | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . |Cursor| Mouse| C | T | S | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | ; | " | I | , | Num | Regex| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_J, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_R, KC_F, KC_X },
{HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_S, HOME_N, HOME_B },
{KC_Z, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_W, KC_M, KC_L, KC_P, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
{S(KC_Z), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | $ | { | } | J | Fn | Caps | G | D | R | F | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | / | < | > | ~ |Cursor| Mouse| C | T | S | N | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | : | ! | = | ` | Num | Regex| W | M | L | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_R), S(KC_F), S(KC_X)},
{S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_S), S(KC_N), S(KC_B)},
{S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_W), S(KC_M), S(KC_L), S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | J | Fn | Caps | G | [ | ] | ^ | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | B |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | : | " | I | / | Num | Regex| \ | * | . | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_J), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_B)},
{S(KC_Z), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// .................................................................... BEAKL 10
#ifdef BEAKL10
// ,-----------------------------------------------------------------------------------.
// | Q | H | O | U | X | ^Alt | ^GUI | G | D | N | M | V |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | Y | I | E | A | . | ↑Alt | ↑GUI | C | S | R | T | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | , | Z | Caps |^Shift| B | P | L | F | K |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_H, KC_O, KC_U, KC_X, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_V },
{KC_Y, KC_I, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_S, KC_R, KC_T, KC_W },
{KC_J, KC_SCLN, TD_QUOT, KC_COMM, KC_Z, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_K },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_H), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_V)},
{S(KC_Y), S(KC_I), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_S), S(KC_R), S(KC_T), S(KC_W)},
{S(KC_J), KC_SCLN, TD_QUOT, KC_COMM, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | [ | ! | ] | X | ^Alt | ^GUI | G | D | N | M | V |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | Y | < | = | > | ~ | ↑Alt | ↑GUI | C | S | R | T | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | ` | Z | Caps |^Shift| B | P | L | F | K |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), TD_LBRC, KC_EXLM, TD_RBRC, S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_V)},
{S(KC_Y), TD_LT, KC_EQL, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_S), S(KC_R), S(KC_T), S(KC_W)},
{S(KC_J), KC_COLN, TD_DQOT, TD_GRV, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | H | O | U | X | ^Alt | ^GUI | G | { | + | } | V |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | Y | I | E | A | ? | ↑Alt | ↑GUI | C | ( | * | ) | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | / | Z | Caps |^Shift| B | P | L | F | K |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_H), S(KC_O), S(KC_U), S(KC_X), CNTR_TL, CNTR_TR, S(KC_G), TD_LCBR, KC_PLUS, TD_RCBR, S(KC_V)},
{S(KC_Y), S(KC_I), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, S(KC_C), TD_LPRN, KC_ASTR, TD_RPRN, S(KC_W)},
{S(KC_J), TD_COLN, TD_DQOT, KC_SLSH, S(KC_Z), CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_K)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// ............................................................... BEAKL Mash Up
#ifdef BEAKL810
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | ^Alt | ^GUI | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . | ↑Alt | ↑GUI | C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | I | , | Caps |^Shift| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
{KC_K, KC_H, KC_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, KC_T, KC_R, KC_S, KC_W },
{KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | { | } | $ | ^Alt | ^GUI | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | < | > | ~ | ↑Alt | ↑GUI | C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | ! | = | ` | Caps |^Shift| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_Y), KC_LCBR, KC_RCBR, KC_DLR, CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_J), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | ^Alt | ^GUI | ^ | [ | ] | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? | ↑Alt | ↑GUI | | | ( | ) | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | / | Caps |^Shift| \ | $ | * | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, KC_CIRC, KC_LBRC, KC_RBRC, S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, S(KC_S), S(KC_W)},
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_DLR, KC_ASTR, S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// .................................................................... BEAKL MU
#ifdef BEAKLMU
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | Fn | Caps | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
{HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
{KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | $ | { | } | Z | Fn | Caps | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | / | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | _ | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), KC_DLR, KC_LCBR, KC_RCBR, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), KC_SLSH, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_UNDS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | Fn | Caps | G | [ | ] | ^ | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | - | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LBRC, KC_RBRC, KC_CIRC, S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_MINS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// .................................................................... BEAKL SP
#ifdef BEAKLSP
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
{HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
{KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | [ | ] | Z | Shift| Caps | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | ^ | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_Y), KC_LBRC, KC_RBRC, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), KC_CIRC, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | Shift| Caps | G | { | } | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LCBR, KC_RCBR, S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, S(KC_W)},
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
},
#endif
// .................................................................... BEAKL GR
#ifdef BEAKLGR
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | Shift| Caps | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | . |Cursor| Mouse| C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | ; | " | I | , | Num | Regex| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Ins | Left | Ent | Bksp | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_Y, KC_O, KC_U, KC_Z, CNTR_TL, CNTR_TR, KC_G, KC_D, KC_N, KC_M, KC_X },
{HOME_K, HOME_H, HOME_E, HOME_A, KC_DOT, CNTR_HL, CNTR_HR, KC_C, HOME_T, HOME_R, HOME_S, HOME_W },
{KC_J, KC_SCLN, TD_QUOT, KC_I, KC_COMM, CNTR_BL, CNTR_BR, KC_B, KC_P, KC_L, KC_F, KC_V },
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_DOT, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_J), KC_SCLN, TD_QUOT, S(KC_I), KC_COMM, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_INS, SP_LEFT, TD_ENT, SP_BSPC, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | [ | ] | Z | Shift| Caps | G | D | N | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | ^ | < | > | ~ |Cursor| Mouse| C | T | R | S | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | ! | = | ` | Num | Regex| B | P | L | F | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | ↑Tab | f() | Ins | Left | _ | Del | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_Y), KC_LBRC, KC_RBRC, S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), S(KC_D), S(KC_N), S(KC_M), S(KC_X)},
{SM_K, KC_CIRC, TD_LT, TD_GT, TD_TILD, CNTR_HL, CNTR_HR, S(KC_C), S(KC_T), S(KC_R), S(KC_S), S(KC_W)},
{S(KC_Z), KC_COLN, KC_EXLM, KC_EQL, TD_GRV, CNTR_BL, CNTR_BR, S(KC_B), S(KC_P), S(KC_L), S(KC_F), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, S_TAB, ___fn__, LT_INS, S_LEFT, KC_UNDS, SP_DEL, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | Y | O | U | Z | Shift| Caps | G | { | } | M | X |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | K | H | E | A | ? |Cursor| Mouse| | | ( | ) | $ | W |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | J | : | " | I | / | Num | Regex| \ | * | . | P | V |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Tab | - | Ins | Left | f() | Bksp | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_Y), S(KC_O), S(KC_U), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_G), KC_LCBR, KC_RCBR, S(KC_M), S(KC_X)},
{S(KC_K), S(KC_H), S(KC_E), S(KC_A), KC_QUES, CNTR_HL, CNTR_HR, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, SM_W },
{S(KC_J), TD_COLN, TD_DQOT, S(KC_I), KC_SLSH, CNTR_BL, CNTR_BR, KC_BSLS, KC_ASTR, KC_DOT, S(KC_P), S(KC_V)},
{OS_CTL, OS_GUI, OS_ALT, KC_TAB, KC_MINS, LT_INS, S_LEFT, ___fn__, SP_BSPC, S_DOWN, S_UP, S_RGHT },
},
#endif

View File

@@ -1,124 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// .............................................................. Colemak Mod-DH
#ifdef COLEMAK
// ,-----------------------------------------------------------------------------------.
// | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | ; |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | X | C | D | V | Caps |^Shift| K | H | , | . | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_W, KC_F, KC_P, KC_B, CNTR_TL, CNTR_TR, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
{KC_A, KC_R, KC_S, KC_T, KC_G, CNTR_HL, CNTR_HR, KC_M, KC_N, KC_E, KC_I, KC_O },
{KC_Z, KC_X, KC_C, KC_D, KC_V, CNTR_BL, CNTR_BR, KC_K, KC_H, KC_COMM, KC_DOT, TD_QUOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_SCLN},
{S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
{S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), KC_COMM, KC_DOT, TD_QUOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | : |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | X | C | D | V | Caps |^Shift| K | H | / | ? | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
{S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
{S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), KC_SLSH, KC_QUES, TD_DQOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | W | F | P | B | ^Alt | ^GUI | J | L | U | Y | : |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | R | S | T | G | ↑Alt | ↑GUI | M | N | E | I | O |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | X | C | D | V | Caps |^Shift| K | H | ~ | ` | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_W), S(KC_F), S(KC_P), S(KC_B), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
{S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_G), CNTR_HL, CNTR_HR, S(KC_M), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
{S(KC_Z), S(KC_X), S(KC_C), S(KC_D), S(KC_V), CNTR_BL, CNTR_BR, S(KC_K), S(KC_H), TD_TILD, TD_GRV, TD_DQOT},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif
// ..................................................................... ColemaX
#ifdef COLEMAX
// ,-----------------------------------------------------------------------------------.
// | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | ; |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | X | V | F | D | P | Caps |^Shift| M | H | , | . | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_W, KC_C, KC_G, KC_Z, CNTR_TL, CNTR_TR, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
{KC_A, KC_R, KC_S, KC_T, KC_B, CNTR_HL, CNTR_HR, KC_K, KC_N, KC_E, KC_I, KC_O },
{KC_X, KC_V, KC_F, KC_D, KC_P, CNTR_BL, CNTR_BR, KC_M, KC_H, KC_COMM, KC_DOT, TD_QUOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), KC_SCLN},
{S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
{S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), KC_COMM, KC_DOT, TD_QUOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | : |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | X | V | F | D | P | Caps |^Shift| M | H | / | ? | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
{S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
{S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), KC_SLSH, KC_QUES, TD_DQOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | W | C | G | Z | ^Alt | ^GUI | J | L | U | Y | : |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | R | S | T | B | ↑Alt | ↑GUI | K | N | E | I | O |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | X | V | F | D | P | Caps |^Shift| M | H | ~ | ` | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_W), S(KC_C), S(KC_G), S(KC_Z), CNTR_TL, CNTR_TR, S(KC_J), S(KC_L), S(KC_U), S(KC_Y), TD_COLN},
{S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_B), CNTR_HL, CNTR_HR, S(KC_K), S(KC_N), S(KC_E), S(KC_I), S(KC_O)},
{S(KC_X), S(KC_V), S(KC_F), S(KC_D), S(KC_P), CNTR_BL, CNTR_BR, S(KC_M), S(KC_H), TD_TILD, TD_GRV, TD_DQOT},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif

View File

@@ -1,41 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// .................................................................. Short Cuts
// .-----------------------------------------------------------------------------------.
// | | | Copy | Paste| | | | | | | | |
// |--------------------------------------------------------------+------+------+------|
// | Undo | Cut | Copy | Paste| | | | | PRIV | PUB | | |
// |-----------------------------------------------------------------------------------|
// | | | Nak | Eot | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | | | | | | f() | | | | | |
// | | | | | | | | f() | | | | | see _PLOVER
// '-----------------------------------------------------------------------------------'
[_EDIT] = {
{_______, _______, TMCOPY, TMPASTE, _______, _______, _______, _______, _______, _______, _______, _______},
{UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, TD_PRIV, TD_SEND, _______, _______},
{_______, _______, NAK, EOT, _______, _______, _______, _______, _______, _______, _______, _______},
{_______, _______, _______, _______, _______, _______, ___fn__, ___fn__, _______, _______, _______, _______},
},
// ................................................................ Adjust Layer
// ,-----------------------------------------------------------------------------------.
// |Plover| | | | | | | | | | | |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// |Aud on| | | | | | | | | | | |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Reset| | | | | | | | | | | |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | | | | f() | | | | | f() | | | |
// `-----------------------------------------------------------------------------------'
[_ADJUST] = {
{PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______},
},

View File

@@ -1,56 +0,0 @@
// ....................................................................... Audio
void matrix_init_user(void)
{
#ifdef STENO_ENABLE
steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
#endif
#ifdef AUDIO_ENABLE
startup_user();
#endif
}
#ifdef AUDIO_ENABLE
#ifdef BACKLIGHT_ENABLE
void led_set_user(uint8_t usb_led)
{
static uint8_t old_usb_led = 0;
_delay_ms(10); // gets rid of tick
if (!is_playing_notes()) {
if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
// if capslock LED is turning on
PLAY_SONG(song_caps_on);
}
else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
// if capslock LED is turning off
PLAY_SONG(song_caps_off);
}
}
old_usb_led = usb_led;
}
#endif
void startup_user(void)
{
_delay_ms(20); // gets rid of tick
PLAY_SONG(song_startup);
}
void shutdown_user(void)
{
PLAY_SONG(song_goodbye);
_delay_ms(150);
stop_all_notes();
}
void music_on_user(void)
{
music_scale_user();
}
void music_scale_user(void)
{
PLAY_SONG(music_scale);
}
#endif

View File

@@ -1,657 +0,0 @@
// .......................................................... Keycode Primitives
// register simple key press
void tap_key(uint16_t keycode)
{
register_code (keycode);
unregister_code(keycode);
}
void shift_key(uint16_t keycode)
{
register_code (KC_LSFT);
tap_key (keycode);
unregister_code(KC_LSFT);
}
#define SHIFT 1
#define NOSHIFT 0
static uint16_t key_timer = 0;
// key press for thumb_layer() and lt_shift() macros
bool key_press(uint8_t shift, uint16_t keycode)
{
if (keycode) {
if (timer_elapsed(key_timer) < TAPPING_TERM) {
if (shift) {
shift_key(keycode);
}
else {
tap_key(keycode);
}
return true;
}
}
return false;
}
// ALT_T, CTL_T, GUI_T, SFT_T for shifted keycodes
void mt_shift(keyrecord_t *record, uint16_t modifier, uint16_t modifier2, uint16_t keycode)
{
if (record->event.pressed) {
key_timer = timer_read();
register_code(modifier);
if (modifier2) {
register_code(modifier2);
}
}
else {
unregister_code(modifier);
if (modifier2) {
unregister_code(modifier2);
}
if (timer_elapsed(key_timer) < TAPPING_TERM) {
shift_key(keycode);
}
key_timer = 0;
}
}
// ................................................................... Mod Masks
// tap dance persistant mods, see process_record_user()
// keyboard_report->mods (?) appears to be cleared by tap dance
static uint8_t mods = 0;
void tap_mods(keyrecord_t *record, uint16_t keycode)
{
if (record->event.pressed) {
mods |= MOD_BIT(keycode);
}
else {
mods &= ~(MOD_BIT(keycode));
}
}
// (un)register modifiers
void modifier(void (*f)(uint8_t))
{
if (mods & MOD_BIT(KC_LCTL)) {
(*f)(KC_LCTL);
}
if (mods & MOD_BIT(KC_LGUI)) {
(*f)(KC_LGUI);
}
if (mods & MOD_BIT(KC_LALT)) {
(*f)(KC_LALT);
}
}
// .................................................... Triple Dance Shift/Layer
static uint8_t dt_shift = 0;
void double_shift(uint16_t keycode, uint8_t layer)
{
tap_key (keycode);
if (DT_SHIFT) {
// set_oneshot_mods(MOD_LSFT);
// layer_on(layer);
layer_on (_SHIFT);
set_oneshot_layer(_SHIFT, ONESHOT_START);
dt_shift = 1;
}
else {
layer_on(layer);
}
}
// tap dance LT (LAYER, KEY) emulation with <KEY><DOWN> -> <KEY><SHIFT> and auto-repeat extensions!
void tap_shift(qk_tap_dance_state_t *state, uint16_t keycode, uint8_t layer)
{
// double tap plus down
if (state->count > 2) {
// double enter shift
if (keycode == KC_ENT) {
tap_key (keycode);
double_shift(keycode, layer);
}
// repeating keycode
else {
register_code(keycode);
}
}
// tap plus down (or double tap): keycode (one shot) shift
else if (state->count > 1) {
double_shift(keycode, layer);
}
// down: shift
else if (state->pressed) {
layer_on(layer);
}
// tap: keycode
else {
modifier(register_code);
tap_key (keycode);
modifier(unregister_code);
}
}
void tap_reset(uint16_t keycode, uint8_t layer)
{
unregister_code(keycode);
if (DT_SHIFT && dt_shift) {
clear_oneshot_layer_state(ONESHOT_PRESSED);
dt_shift = 0;
}
else {
layer_off(layer);
}
}
// augment pseudo LT (_RSHIFT, KC_ENT) handling below for rapid <ENTER><SHIFT> sequences
void enter(qk_tap_dance_state_t *state, void *user_data)
{
tap_shift(state, KC_ENT, _RSHIFT);
}
void enter_reset(qk_tap_dance_state_t *state, void *user_data)
{
tap_reset(KC_ENT, _RSHIFT);
}
// augment pseudo LT (_LSHIFT, KC_SPC) handling below for rapid <SPACE><SHIFT> sequences
void space(qk_tap_dance_state_t *state, void *user_data)
{
tap_shift(state, KC_SPC, _LSHIFT);
}
void space_reset(qk_tap_dance_state_t *state, void *user_data)
{
tap_reset(KC_SPC, _LSHIFT);
}
// ......................................................... Triple Dance Insert
void double_max(uint8_t count, uint8_t shift, uint16_t keycode)
{
if (shift) {
shift_key(keycode);
if (count > 1) {
shift_key(keycode);
}
}
else {
tap_key(keycode);
if (count > 1) {
tap_key(keycode);
}
}
}
void colon(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 2) {
tap_key (KC_SPC);
shift_key(KC_SCLN);
shift_key(KC_SCLN);
tap_key (KC_SPC);
}
else {
double_max(state->count, SHIFT, KC_SCLN);
}
reset_tap_dance(state);
}
void eql(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 2) {
tap_key(KC_SPC);
tap_key(KC_SLSH);
tap_key(KC_EQL);
tap_key(KC_SPC);
}
else {
double_max(state->count, NOSHIFT, KC_EQL);
}
reset_tap_dance(state);
}
void greater(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 2) {
tap_key (KC_SPC);
tap_key (KC_MINS);
shift_key(KC_DOT);
tap_key (KC_SPC);
}
else {
double_max(state->count, SHIFT, KC_DOT);
}
reset_tap_dance(state);
}
void lesser(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 2) {
tap_key (KC_SPC);
shift_key(KC_COMM);
tap_key (KC_MINS);
tap_key (KC_SPC);
}
else {
double_max(state->count, SHIFT, KC_COMM);
}
reset_tap_dance(state);
}
void tilde(qk_tap_dance_state_t *state, void *user_data)
{
// double tap plus down: repeating keycode
if (state->count > 2) {
register_code(KC_LSFT);
register_code(KC_GRV);
}
// tap: keycode
else {
shift_key(KC_GRV);
// double tap: unix home directory
if (state->count > 1) {
tap_key(KC_SLSH);
}
}
}
void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
{
unregister_code(KC_GRV);
unregister_code(KC_LSFT);
}
// ............................................................. Tap Dance Pairs
// tap dance shift rules
#define S_NEVER 0
#define S_SINGLE 1
#define S_DOUBLE 2
#define S_ALWAYS S_SINGLE | S_DOUBLE
void symbol_pair(uint8_t shift, uint16_t left, uint16_t right)
{
if (shift & S_DOUBLE) {
shift_key(left);
shift_key(right);
}
else {
tap_key(left);
tap_key(right);
}
}
#define CLOSE 1
// tap dance symbol pairs
void tap_pair(qk_tap_dance_state_t *state, uint8_t shift, uint16_t left, uint16_t right, uint16_t modifier, uint8_t close)
{
// triple tap: left right with cursor between symbol pair a la vim :-)
if (state->count > 2) {
symbol_pair(shift, left, right);
tap_key (KC_LEFT);
}
// double tap: left right
else if (state->count > 1) {
symbol_pair(shift, left, right);
}
// down: modifier
else if (state->pressed) {
if (modifier) {
register_code(modifier);
}
}
// tap: left (close: right)
else {
if (shift & S_SINGLE) {
shift_key(close ? right : left);
}
else {
tap_key(close ? right : left);
}
}
if (!modifier) {
reset_tap_dance(state);
}
}
void doublequote(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_ALWAYS, KC_QUOT, KC_QUOT, 0, 0);
}
void grave(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_NEVER, KC_GRV, KC_GRV, 0, 0);
}
void lbrace(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, 0);
}
void lcurly(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, 0);
}
void lparen(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_ALWAYS, KC_9, KC_0, KC_LCTL, 0);
}
void lparen_reset(qk_tap_dance_state_t *state, void *user_data)
{
unregister_code(KC_LCTL);
}
void quote(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_NEVER, KC_QUOT, KC_QUOT, 0, 0);
}
void rangle(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_ALWAYS, KC_COMM, KC_DOT, 0, CLOSE);
}
void rbrace(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, CLOSE);
}
void rcurly(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, CLOSE);
}
void rparen(qk_tap_dance_state_t *state, void *user_data)
{
tap_pair(state, S_ALWAYS, KC_9, KC_0, 0, CLOSE);
}
void rparen_reset(qk_tap_dance_state_t *state, void *user_data)
{
unregister_code(KC_LCTL);
}
// ............................................................ Tap Dance Insert
void comma(qk_tap_dance_state_t *state, void *user_data)
{
tap_key(KC_COMM);
if (state->count > 1) {
tap_key(KC_SPC);
}
reset_tap_dance(state);
}
void dot(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1) {
shift_key(KC_COLN);
}
else {
tap_key(KC_DOT);
}
reset_tap_dance(state);
}
// compile time macro string, see functions/hardware planck script
void private(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1) {
#ifdef PRIVATE_STRING
#include "private_string.h"
#endif
}
reset_tap_dance(state);
}
// config.h defined string
void send(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1) {
SEND_STRING(PUBLIC_STRING);
}
reset_tap_dance(state);
}
// .......................................................... Tap Dance One Shot
void caps(qk_tap_dance_state_t *state, void *user_data)
{
if (state->count > 1) {
tap_key(KC_CAPS);
}
else {
set_oneshot_mods(MOD_LSFT);
register_code (KC_LSFT); // on hold down
}
}
void caps_reset(qk_tap_dance_state_t *state, void *user_data)
{
unregister_code(KC_LSFT);
}
// ................................................................... Tap Dance
qk_tap_dance_action_t tap_dance_actions[] = {
[_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, caps_reset)
,[_COLN] = ACTION_TAP_DANCE_FN (colon)
,[_COMM] = ACTION_TAP_DANCE_FN (comma)
,[_DOT] = ACTION_TAP_DANCE_FN (dot)
,[_DQOT] = ACTION_TAP_DANCE_FN (doublequote)
,[_ENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, enter, enter_reset)
,[_EQL] = ACTION_TAP_DANCE_FN (eql)
,[_GRV] = ACTION_TAP_DANCE_FN (grave)
,[_GT] = ACTION_TAP_DANCE_FN (greater)
,[_LBRC] = ACTION_TAP_DANCE_FN (lbrace)
,[_LCBR] = ACTION_TAP_DANCE_FN (lcurly)
,[_LPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lparen, lparen_reset)
,[_LT] = ACTION_TAP_DANCE_FN (lesser)
,[_PRIV] = ACTION_TAP_DANCE_FN (private)
,[_QUOT] = ACTION_TAP_DANCE_FN (quote)
,[_RBRC] = ACTION_TAP_DANCE_FN (rbrace)
,[_RCBR] = ACTION_TAP_DANCE_FN (rcurly)
,[_RNGL] = ACTION_TAP_DANCE_FN (rangle)
,[_RPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rparen, rparen_reset)
,[_SEND] = ACTION_TAP_DANCE_FN (send)
,[_SPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, space, space_reset)
,[_TILD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tilde, tilde_reset)
};
// .............................................................. Dynamic Layers
#define LEFT 1
#define RIGHT 2
static uint8_t thumb = 0;
// LEFT (KC_SPC, S(KC_BSLS)), RIGHT (KC_LEFT, S(KC_LEFT)) opposite thumb combinations, see process_record_user()
// up, up -> _BASE
// up, down -> _SYMBOL
// down, up -> _NUMBER
// down, down -> _MOUSE // see layer keycodes that raise mouse layer
#define THUMBS_DOWN _MOUSE // layer
static uint8_t overlayer = 0;
// left right thumb layer combinations
void thumb_layer(keyrecord_t *record, uint8_t side, uint8_t shift, uint16_t keycode, uint8_t thumb_dn_layer, uint8_t thumb_up_layer)
{
if (record->event.pressed) {
// layer_on via tap_layer(), see process_record_user()
key_timer = timer_read();
thumb = thumb | side;
}
else {
layer_off(thumb_dn_layer);
// opposite thumb_layer() thumb may have switched effective layer!
if (overlayer) {
layer_off(overlayer);
overlayer = 0;
}
if (!key_press(shift, keycode)) {
layer_off(THUMBS_DOWN); // both thumbs needed
// opposite thumb down? see left right combination layer table above
if (thumb & (side == LEFT ? RIGHT : LEFT)) {
layer_on(thumb_up_layer);
overlayer = thumb_up_layer;
}
}
clear_mods();
thumb = thumb & ~side;
key_timer = 0;
}
}
// #ifdef STENO_ENABLE
// // LT for steno keycode
// void stn_layer(keyrecord_t *record, uint16_t keycode, uint8_t layer)
// {
// if (record->event.pressed) {
// key_timer = timer_read();
// if (keycode) {
// process_steno(keycode, record);
// }
// layer_on(layer);
// }
// else {
// layer_off(layer);
// if (keycode) {
// if (timer_elapsed(key_timer) < TAPPING_TERM) {
// process_steno(keycode, record);
// }
// else {
// // clear pressed state (request push of updated) process_steno.c and .h
// // steno_clear_state();
// }
// }
// key_timer = 0;
// }
// }
// #endif
// LT for S(keycode)
void lt_shift(keyrecord_t *record, uint16_t keycode, uint8_t layer)
{
if (record->event.pressed) {
key_timer = timer_read();
layer_on(layer);
}
else {
layer_off(layer);
// for shifted keycodes, hence, LT_SHIFT
key_press(SHIFT, keycode);
clear_mods();
key_timer = 0;
}
}
// set layer asap to overcome macro latency errors, notably tap dance and LT usage
// this routine inexplicably (?) sets layer_on() faster than can be done in thumb_layer()
void tap_layer(keyrecord_t *record, uint8_t layer)
{
if (record->event.pressed) {
layer_on(layer);
}
else {
layer_off(layer);
}
}
// ..................................................................... Keymaps
// void persistant_default_layer_set(uint16_t default_layer)
// {
// eeconfig_update_default_layer(default_layer);
// default_layer_set (default_layer);
// }
void clear_layers(void)
{
uint8_t layer;
for (layer = 0; layer < _END_LAYERS; layer++) {
layer_off(layer);
}
}
#ifdef CENTER_TT
static uint16_t tt_keycode = 0; // current TT keycode
void clear_tt(void)
{
if (tt_keycode == KC_CAPS) {
tap_key(KC_CAPS); // clear capslock
}
tt_keycode = 0;
clear_layers();
set_single_persistent_default_layer(_BASE);
}
#endif
// txbolt plover run state
static uint8_t plover = 0;
void toggle_plover(uint8_t state)
{
if (plover != state) {
#ifdef PLOVER_KEYBIND
#include "plover_keybind.h"
#endif
plover = state;
}
}
void base_layer(void)
{
#ifdef AUDIO_ENABLE
if (plover) {
PLAY_SONG(song_plover_gb);
}
else {
PLAY_SONG(song_qwerty);
}
#endif
clear_layers();
set_single_persistent_default_layer(_BASE);
toggle_plover(0);
}
void steno(keyrecord_t *record)
{
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_SONG(song_plover);
#endif
clear_layers();
layer_on(_PLOVER);
if (!eeconfig_is_enabled()) {
eeconfig_init();
}
keymap_config.raw = eeconfig_read_keymap();
keymap_config.nkro = 1;
eeconfig_update_keymap(keymap_config.raw);
if (!plover) {
toggle_plover(1);
}
}
}
void steno_exit(keyrecord_t *record)
{
if (record->event.pressed) {
base_layer();
toggle_plover(0);
}
}

View File

@@ -1,86 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ......................................................... Number Keypad Layer
#ifdef SHIFT_SYMBOLS
// .-----------------------------------------------------------------------------------.
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
// |-----------------------------------------------------------------------------------|
// | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
// |-----------------------------------------------------------------------------------|
// | | # | G | \ | | | | , | 1 | 2 | 3 | + |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | 0 | = | | | |
// | | | | f() | | | | = | 0 | | | |
// '-----------------------------------------------------------------------------------'
[_NUMBER] = {
{_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
{OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
{_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
#ifdef THUMB_0
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
#else
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
#endif
},
#else
// .-----------------------------------------------------------------------------------.
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
// |-----------------------------------------------------------------------------------|
// | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
// |-----------------------------------------------------------------------------------|
// | | # | X | G | | | | , | 1 | 2 | 3 | + |
// |-----------------------------------------------------------------------------------|
// | | f() | | 0 | = | |
// | | f() | | = | 0 | |
// '-----------------------------------------------------------------------------------'
[_NUMBER] = {
{_______, KC_F, MT_E, KC_D, _______, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
{OS_GUI, GT_C, AT_B, LT_A, _______, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_MINS},
{_______, KC_HASH, MT_X, S(KC_G), _______, _______, _______, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
#ifdef THUMB_0
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
#else
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
#endif
},
// .-----------------------------------------------------------------------------------.
// | | | | | | | | { | & | ? | : | } |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | ( | $ | % | ^ | ) |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | [ | < | ~ | > | ] |
// |-----------------------------------------------------------------------------------|
// | | f() | | \ | | | |
// '-----------------------------------------------------------------------------------'
[_NUMSYM] = {
{_______, _______, _______, ___x___, _______, _______, _______, TD_LCBR, KC_AMPR, KC_QUES, KC_COLN, KC_RCBR},
{___x___, ___x___, ___x___, ___fn__, _______, _______, _______, TD_LPRN, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN},
{_______, _______, _______, ___x___, _______, _______, _______, TD_LBRC, KC_LT, KC_TILD, KC_GT, KC_RBRC},
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_BSLS, KC_PIPE, ___x___, ___x___, ___x___},
},
#endif
// ............ .................................................. Function Keys
// .-----------------------------------------------------------------------------------.
// | | | | | | | | | F7 | F8 | F9 | F12 |
// |-----------------------------------------------------------------------------------|
// | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | | F1 | F2 | F3 | F10 |
// |-----------------------------------------------------------------------------------|
// | | | | | | f() | | + | | | | |
// | | | | | f() | | | + | | | | | see _PLOVER
// '-----------------------------------------------------------------------------------'
[_FNCKEY] = {
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
{OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
{_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
},

View File

@@ -1,86 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ......................................................... Number Keypad Layer
#ifdef SHIFT_SYMBOLS
// .-----------------------------------------------------------------------------------.
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
// |-----------------------------------------------------------------------------------|
// | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
// |-----------------------------------------------------------------------------------|
// | | # | G | \ | | | | , | 1 | 2 | 3 | + |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | 0 | = | | | |
// | | | | f() | | | | = | 0 | | | |
// '-----------------------------------------------------------------------------------'
[_NUMBER] = {
{_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
{OS_CTL, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
{_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
#ifdef THUMB_0
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
#else
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
#endif
},
#else
// .-----------------------------------------------------------------------------------.
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
// |-----------------------------------------------------------------------------------|
// | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
// |-----------------------------------------------------------------------------------|
// | | # | X | G | | | | , | 1 | 2 | 3 | + |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | 0 | = | | | |
// | | | | f() | | | | = | 0 | | | |
// '-----------------------------------------------------------------------------------'
[_NUMBER] = {
{_______, KC_F, MT_E, KC_D, _______, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
{OS_CTL, GT_C, AT_B, LT_A, _______, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_MINS},
{_______, KC_HASH, MT_X, S(KC_G), _______, _______, _______, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
#ifdef THUMB_0
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
#else
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
#endif
},
// .-----------------------------------------------------------------------------------.
// | | | | | | | | { | & | ? | : | } |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | ( | $ | % | ^ | ) |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | [ | < | ~ | > | ] |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | \ | | | | | |
// '-----------------------------------------------------------------------------------'
[_NUMSYM] = {
{_______, _______, _______, ___x___, _______, _______, _______, TD_LCBR, KC_AMPR, KC_QUES, KC_COLN, KC_RCBR},
{___x___, ___x___, ___x___, ___fn__, _______, _______, _______, TD_LPRN, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN},
{_______, _______, _______, ___x___, _______, _______, _______, TD_LBRC, KC_LT, KC_TILD, KC_GT, KC_RBRC},
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_BSLS, KC_PIPE, ___x___, ___x___, ___x___},
},
#endif
// ............ .................................................. Function Keys
// .-----------------------------------------------------------------------------------.
// | | | | | | | | | F7 | F8 | F9 | F12 |
// |-----------------------------------------------------------------------------------|
// | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | | F1 | F2 | F3 | F10 |
// |-----------------------------------------------------------------------------------|
// | | | | | | f() | | + | | | | |
// | | | | | f() | | | + | | | | | see _PLOVER
// '-----------------------------------------------------------------------------------'
[_FNCKEY] = {
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
{OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
{_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
},

View File

@@ -1,9 +0,0 @@
// simple window manager specific plover keybind hook
// toggle plover application, see herbstluftwm/config/appbinds
register_code (KC_LGUI);
register_code (KC_LCTL);
tap_key (KC_EQL);
unregister_code(KC_LCTL);
unregister_code(KC_LGUI);

View File

@@ -1,14 +0,0 @@
// ................................................................ Audio Sounds
#ifdef AUDIO_ENABLE
float song_startup [][2] = SONG(STARTUP_SOUND);
float song_colemak [][2] = SONG(COLEMAK_SOUND);
float song_qwerty [][2] = SONG(QWERTY_SOUND);
float song_plover [][2] = SONG(PLOVER_SOUND);
float song_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
float song_caps_on [][2] = SONG(CAPS_LOCK_ON_SOUND);
float song_caps_off [][2] = SONG(CAPS_LOCK_OFF_SOUND);
float music_scale [][2] = SONG(MUSIC_SCALE_SOUND);
float song_goodbye [][2] = SONG(GOODBYE_SOUND);
#endif

View File

@@ -1,39 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ...................................................................... Plover
#ifdef STENO_ENABLE
// ,-----------------------------------------------------------------------------------.
// | # | # | # | # | # | # | # | # | # | # | # | # |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | Base | S | T | P | H | * | * | F | P | L | T | D |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Base | S | K | W | R | * | * | R | B | G | S | Z |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | | A | O | E | U | |
// `-----------------------------------------------------------------------------------'
[_PLOVER] = {
{STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC },
{BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR },
{BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR },
{_______, _______, _______, PS_STNA, PS_STNO, _______, _______, PS_STNE, PS_STNU, _______, _______, _______},
},
#else
// ,-----------------------------------------------------------------------------------.
// | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | Base | S | T | P | H | * | * | F | P | L | T | D |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Base | S | K | W | R | * | * | R | B | G | S | Z |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | | A | O | E | U | |
// `-----------------------------------------------------------------------------------'
[_PLOVER] = {
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
{BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
{BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{_______, _______, _______, LT_C, LT_V, _______, _______, LT_N, LT_M, _______, _______, _______},
},
#endif

View File

@@ -1,75 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ..................................................... Symbol Navigation Layer
#ifdef SHIFT_SYMBOLS
// .-----------------------------------------------------------------------------------.
// | | ~ | * | & | | | | | Home | Up | End | PgUp |
// |-----------------------------------------------------------------------------------|
// | GUI | ^ | % | $ | | | | | Left | Down | Right| PgDn |
// |-----------------------------------------------------------------------------------|
// | | # | @ | ! | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | |Adjust| \ | | f() | |
// '-----------------------------------------------------------------------------------'
[_SYMBOL] = {
{_______, KC_TILD, KC_ASTR, KC_AMPR, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
{OS_GUI, SM_CIRC, SM_PERC, SM_DLR, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
{_______, KC_HASH, KC_AT, KC_EXLM, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
{___x___, ___x___, ___x___, ADJUST, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
},
#else
// .-----------------------------------------------------------------------------------.
// | { | . | * | & | } | | | | Home | Up | End | PgUp |
// |-----------------------------------------------------------------------------------|
// | ( | ^ | % | $ | ) | | | | Left | Down | Right| PgDn |
// |-----------------------------------------------------------------------------------|
// | [ | # | @ | ! | ] | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | | | \ | | f() | |
// '-----------------------------------------------------------------------------------'
[_SYMBOL] = {
{KC_LCBR, KC_DOT, KC_ASTR, KC_AMPR, TD_RCBR, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
{SM_LPRN, SM_CIRC, SM_PERC, SM_DLR, TD_RPRN, _______, _______, _______, LT_LFTX, KC_DOWN, KC_RGHT, KC_PGDN},
{KC_LBRC, KC_HASH, KC_AT, KC_EXLM, TD_RBRC, _______, _______, _______, _______, _______, _______, _______},
{___x___, ___x___, ___x___, SL_PIPE, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
},
// .-----------------------------------------------------------------------------------.
// | | ? | + | ~ | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | < | = | > | | | | | f() | | | |
// |-----------------------------------------------------------------------------------|
// | | 3 | 2 | 1 | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | | | | f() | |
// '-----------------------------------------------------------------------------------'
[_SYMREG] = {
{___x___, KC_QUES, KC_PLUS, KC_TILD, ___x___, _______, _______, _______, ___x___, ___x___, ___x___, ___x___},
{___x___, KC_LT, KC_EQL, TD_RNGL, ___x___, _______, _______, _______, ___fn__, ___x___, ___x___, ___x___},
{___x___, KC_3, KC_2, KC_1, ___x___, _______, _______, _______, _______, _______, _______, _______},
{___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
},
#endif
// ............................................................... Mouse Actions
// .-----------------------------------------------------------------------------------.
// | | | | | | | | | Left | Up | Right| Up |
// |-----------------------------------------------------------------------------------|
// | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | | f() | | f() | |
// '-----------------------------------------------------------------------------------'
[_MOUSE] = {
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
{_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
{_______, _______, _______, _______, ___fn__, _______, _______, _______, ___fn__, _______, _______, _______},
},

View File

@@ -1,49 +0,0 @@
// tap dance keys
enum tap_dance {
_CAPS = 0
,_COLN
,_COMM
,_DOT
,_DQOT
,_ENT
,_EQL
,_GRV
,_GT
,_LBRC
,_LCBR
,_LPRN
,_LT
,_PRIV
,_QUOT
,_RBRC
,_RCBR
,_RNGL
,_RPRN
,_SEND
,_SPC
,_TILD
};
#define TD_CAPS TD(_CAPS)
#define TD_COLN TD(_COLN)
#define TD_COMM TD(_COMM)
#define TD_DOT TD(_DOT)
#define TD_DQOT TD(_DQOT)
#define TD_ENT TD(_ENT)
#define TD_EQL TD(_EQL)
#define TD_GRV TD(_GRV)
#define TD_GT TD(_GT)
#define TD_LBRC TD(_LBRC)
#define TD_LCBR TD(_LCBR)
#define TD_LPRN TD(_LPRN)
#define TD_LT TD(_LT)
#define TD_PRIV TD(_PRIV) // compile time macro string, provided in private_string.h
#define TD_QUOT TD(_QUOT)
#define TD_RBRC TD(_RBRC)
#define TD_RCBR TD(_RCBR)
#define TD_RNGL TD(_RNGL)
#define TD_RPRN TD(_RPRN)
#define TD_SEND TD(_SEND) // config.h defined macro string
#define TD_SPC TD(_SPC) // see process_record_user() for extended handling of Spc
#define TD_TILD TD(_TILD)

View File

@@ -1,102 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ......................................................... Number Keypad Layer
// .-----------------------------------------------------------------------------------.
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
// |-----------------------------------------------------------------------------------|
// | GUI | C | B | A | | | | . | 4 | 5 | 6 | - |
// |-----------------------------------------------------------------------------------|
// | | # | G | \ | | | | , | 1 | 2 | 3 | + |
// |-----------------------------------------------------------------------------------|
// | | | | f() | Space| | | 0 | = | | | |
// | | | | f() | Space| | | = | 0 | | | |
// '-----------------------------------------------------------------------------------'
[_TTNUMBER] = {
{_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
{OS_GUI, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
{_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
#ifdef THUMB_0
{_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_0, LT_EQL, _______, _______, _______},
#else
{_______, _______, _______, TT_ESC, KC_SPC, _______, _______, KC_EQL, LT_0, _______, _______, _______},
#endif
},
// ............ .................................................. Function Keys
// .-----------------------------------------------------------------------------------.
// | | | | | | | | | F7 | F8 | F9 | F12 |
// |-----------------------------------------------------------------------------------|
// | GUI | Ctrl | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | | F1 | F2 | F3 | F10 |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | + | | | | |
// '-----------------------------------------------------------------------------------'
[_TTFNCKEY] = {
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
{OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
{_______, _______, _______, TT_ESC, _______, _______, _______, KC_PLUS, _______, _______, _______, _______},
},
// ....................................................................... Regex
// ,-----------------------------------------------------------------------------------.
// | | ~ | { | } | & | | | % | [ | ] | @ | |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | | ^ | < | > | ? | | | | | ( | ) | $ | |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | | : | ! | = | / | | | \ | * | . | # | |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | | | | f() | - | | | + | Space| | | |
// `-----------------------------------------------------------------------------------'
[_TTREGEX] = {
{___x___, KC_TILD, KC_LCBR, KC_RCBR, KC_AMPR, ___x___, ___x___, KC_PERC, KC_LBRC, KC_RBRC, KC_AT, ___x___},
{___x___, KC_CIRC, KC_LT, KC_GT, KC_QUES, ___x___, ___x___, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, ___x___},
{___x___, KC_COLN, KC_EXLM, KC_EQL, KC_SLSH, ___x___, ___x___, KC_BSLS, KC_ASTR, KC_DOT, KC_HASH, ___x___},
{_______, _______, _______, TT_ESC, KC_MINS, _______, _______, KC_PLUS, KC_SPC, _______, _______, _______},
},
// ............................................................ Navigation Layer
// .-----------------------------------------------------------------------------------.
// | | | | | | | | | Home | Up | End | PgUp |
// |-----------------------------------------------------------------------------------|
// | GUI | Ctrl | Alt | Shift| | | | | Left | Down | Right| PgDn |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | | | | | |
// '-----------------------------------------------------------------------------------'
[_TTCURSOR] = {
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
{OS_GUI, OS_CTL, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
{_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
},
// ............................................................... Mouse Actions
// .-----------------------------------------------------------------------------------.
// | | | | | | | | | Left | Up | Right| Up |
// |-----------------------------------------------------------------------------------|
// | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
// |-----------------------------------------------------------------------------------|
// | | | | | | | | | | | | |
// |-----------------------------------------------------------------------------------|
// | | | | f() | | | | | | | | |
// '-----------------------------------------------------------------------------------'
[_TTMOUSE] = {
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
{_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
{_______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______, _______},
},

View File

@@ -1,47 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// tap dance key press termination interval
#define TAPPING_TERM 250
// smooth mouse motion
// #define MOUSEKEY_INTERVAL 20
// #define MOUSEKEY_DELAY 0
// #define MOUSEKEY_TIME_TO_MAX 60
// #define MOUSEKEY_MAX_SPEED 7
// #define MOUSEKEY_WHEEL_DELAY 0
// compile time macro string, see functions/hardware planck script (undefine otherwise)
#define PRIVATE_STRING
// compile time macro string, must be in quotes
#define PUBLIC_STRING ":%s/arch=(.*)/arch=('any')\n"
// thumb key tap-shift() double tap: one shot shift (0) off (1) on
#define DT_SHIFT 1
// number layer 0 position KEYPAD_0, THUMB_0
#define THUMB_0
// home block shift symbol clustes defined (no overlays required for extended symbols, undefine otherwise)
#define SHIFT_SYMBOLS
// center column TT assignments (undefine for OSM chords)
#define CENTER_TT
#define TAPPING_TOGGLE 1
// home row modifiers
#define HOME_MODS
// fix dual function timing
#define PERMISSIVE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT
// layout ADNW*, BEAKL*, COLEKA*, QWERTY (default)
#define BEAKLGR
// sync app with window manager keybind hook defined in plover_keybind.h
#define PLOVER_KEYBIND
#endif

View File

@@ -1,489 +0,0 @@
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
// this is the style you want to emulate.
//
// To flash planck firmware
// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
// Reset keyboard or press hw reset button on base (hole)
//
// cd qmk_firmware/keyboards/planck
// sudo make KEYMAP=sdothum dfu
//
// sudo make clean (good practice before flashing)
// sudo make KEYMAP=sdothum (to compile check)
//
// Package requirements (for arch linux)
// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
// avr-gcc-atmel
// avr-libc-atmel
// dfu-programmer
//
// Notes
// ▔▔▔▔▔
// ** E R G O W I D E S P L I T ** Layout
//
// Autocompletion tap dance key pairs (),[],{} are available from the
// number/symbol layer, as well as, numerous (un)shift key values
//
// The navigation pad provides a single hand right thumb activated cluster
// with left hand modifiers
//
// #define PRIVATE_STRING includes private_string.h, a user defined code
// block for the PRIV tap dance e.g. SEND_STRING("secret messape"),
// see function private()
//
// Modifier clusters
// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
// The num and sym keys together access the navigation pad layer
//
// ,-----------------------------------------------------------------------------------.
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
//
// Hint
// ▔▔▔▔
// For sculpted keycaps such as Cherry or OEM profile, reverse the Alt, Num,
// Shift, Shift, Nav, Sym keycaps for more ergonomic thumb orientation and
// actuation
//
// Code
// ▔▔▔▔
// This source is shamelessly based on the "default" planck layout
//
// #ifdef/#endif block structures are not indented, as syntax highlighting
// in vim is sufficient for identification
//
// c++ commenting style is used throughout
//
// Change history
// ▔▔▔▔▔▔▔▔▔▔▔▔▔▔
// See http://thedarnedestthing.com/planck%20constant
// See http://thedarnedestthing.com/planck%20done
// === N O T E ===
//
// sudo CPATH=<keymap.c directory>/common make ...
#include "config.h"
#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
#include "planck.h"
#include "action_layer.h"
#ifdef STENO_ENABLE
#include "keymap_steno.h"
#endif
#ifdef AUDIO_ENABLE
#include "audio.h"
#endif
#include "eeconfig.h"
extern keymap_config_t keymap_config;
enum planck_layers {
_BASE = 0
,_SHIFT
,_LSHIFT
,_RSHIFT
,_PLOVER
,_NUMBER
,_SYMBOL
,_FNCKEY
,_MOUSE
#ifdef CENTER_TT
,_TTNUMBER
,_TTREGEX
,_TTFNCKEY
,_TTCURSOR
,_TTMOUSE
#endif
#ifndef SHIFT_SYMBOLS
,_NUMSYM
,_SYMREG
#endif
,_EDIT
,_QWERTY
,_ADJUST
,_END_LAYERS
};
enum planck_keycodes {
BASE = SAFE_RANGE
,BASE1
,BASE2
,PLOVER
,PLOEXIT
,SM_CIRC // pseudo GUI_T(S(KC_6)) for shifted key-codes, see process_record_user()
,SM_DLR // pseudo SFT_T(S(KC_4)) for shifted key-codes, see process_record_user()
,SM_G // pseudo MT (MOD_LALT | MOD_LSFT, S(KC_G)) for shifted key-codes, see process_record_user()
,SM_K // pseudo MT (MOD_LGUI | MOD_LSFT, S(KC_K)) for shifted key-codes, see process_record_user()
,SM_PERC // pseudo ALT_T(S(KC_5)) for shifted key-codes, see process_record_user()
,SM_LPRN // pseudo CTL_T(S(KC_9)) for shifted key-codes, see process_record_user()
,SM_W // pseudo MT (MOD_LGUI | MOD_LSFT, S(KC_W)) for shifted key-codes, see process_record_user()
,SL_LEFT // pseudo LT (_MOUSE, S(KC_LEFT)) for shifted key-codes, see process_record_user()
,SP_DEL // pseudo LT (_MOUSE, KC_DEL) for shifted key-codes, see process_record_user()
,SL_PIPE // pseudo LT (_ADJUST, S(KC_BSLS)) for shifted key-codes, see process_record_user()
,SL_TAB // pseudo LT (_FNCKEY, S(KC_TAB)) for shifted key-codes, see process_record_user()
#ifdef CENTER_TT
,TT_ESC
#endif
#ifdef STENO_ENABLE
,PS_STNA = STN_A
,PS_STNO = STN_O
,PS_STNE = STN_E
,PS_STNU = STN_U
#else
,LT_C = LT (_NUMBER, KC_C)
,LT_V = LT (_FNCKEY, KC_V)
,LT_N = LT (_EDIT, KC_N)
,LT_M = LT (_SYMBOL, KC_M)
#endif
,PS_BASE
};
// modifier keys
#define AT_B ALT_T(KC_B)
#define AT_DOWN ALT_T(KC_DOWN)
#define CT_RGHT CTL_T(KC_RGHT)
#define GT_C GUI_T(KC_C)
#define GT_UP GUI_T(KC_UP)
#define MT_E MT (MOD_LCTL | MOD_LALT, KC_E)
#define MT_X MT (MOD_LALT | MOD_LSFT, KC_X)
#define ST_A SFT_T(KC_A)
#ifdef HOME_MODS
#define HOME_K GUI_T(KC_K)
#define HOME_H CTL_T(KC_H)
#define HOME_E ALT_T(KC_E)
#define HOME_A SFT_T(KC_A)
#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
#define HOME_T SFT_T(KC_T)
#define HOME_R ALT_T(KC_R)
#define HOME_S CTL_T(KC_S)
#define HOME_W GUI_T(KC_W)
#else
#define HOME_T SFT_T(KC_T)
#define HOME_S ALT_T(KC_S)
#define HOME_N GUI_T(KC_N)
#define HOME_B CTL_T(KC_B)
#endif
#else
#define HOME_K KC_K
#define HOME_H KC_H
#define HOME_E KC_E
#define HOME_A KC_A
#define HOME_T KC_T
#define HOME_S KC_S
#define HOME_N KC_N
#define HOME_B KC_B
#endif
#define S_DOWN S (KC_DOWN)
#define S_LEFT S (KC_LEFT)
#define S_RGHT S (KC_RGHT)
#define S_TAB S (KC_TAB)
#define S_UP S (KC_UP)
#include "tapdance.h"
// keycodes
#define ___x___ KC_TRNS
#define ___fn__ KC_TRNS
#undef _______
#define _______ KC_NO
#define COPY LCTL(KC_C)
#define CUT LCTL(KC_X)
#define EOT LCTL(KC_D)
#define NAK LCTL(KC_U)
#define PASTE LCTL(KC_V)
#define UNDO LCTL(KC_Z)
#define TMCOPY LALT(LCTL(KC_C))
#define TMPASTE LALT(LCTL(KC_V))
#define LT_BSLS LT (_MOUSE, KC_BSLS) // see process_record_user() for extended handling
#define LT_BSPC LT (_EDIT, KC_BSPC)
#define SP_LEFT LT (_EDIT, KC_LEFT)
#define LT_ESC LT (_NUMBER, KC_ESC)
#define LT_LEFT LT (_SYMBOL, KC_LEFT) // see process_record_user() for extended handling
#define SP_BSPC LT (_SYMBOL, KC_BSPC) // see process_record_user() for extended handling
#define LT_TAB LT (_FNCKEY, KC_TAB)
#define LT_INS LT (_FNCKEY, KC_INS)
#define LT_ALTG LT (_FNCKEY, KC_RALT)
#define ADJUST MO (_ADJUST)
#define OS_ALT OSM (MOD_LALT)
#define OS_CTL OSM (MOD_LCTL)
#define OS_GUI OSM (MOD_LGUI)
#define OS_SFT OSM (MOD_LSFT)
#define OS_CALT OSM (MOD_LALT | MOD_LCTL)
#define OS_CGUI OSM (MOD_LGUI | MOD_LCTL)
#define OS_CSFT OSM (MOD_LSFT | MOD_LCTL)
#define OS_SALT OSM (MOD_LALT | MOD_LSFT)
#define OS_SGUI OSM (MOD_LGUI | MOD_LSFT)
#ifdef CENTER_TT
#ifdef BEAKLSP
#define CNTR_TL OSM (MOD_LSFT)
#else
#define CNTR_TL TT (_TTFNCKEY)
#endif
#define CNTR_TR KC_CAPS
#define CNTR_HL TT (_TTCURSOR)
#define CNTR_HR TT (_TTMOUSE)
#define CNTR_BL TT (_TTNUMBER)
#define CNTR_BR TT (_TTREGEX)
#else
#define CNTR_TL OSM (MOD_LALT | MOD_LCTL)
#define CNTR_TR OSM (MOD_LGUI | MOD_LCTL)
#define CNTR_HL OSM (MOD_LALT | MOD_LSFT)
#define CNTR_HR OSM (MOD_LGUI | MOD_LSFT)
#define CNTR_BL TD (_CAPS)
#define CNTR_BR OSM (MOD_LSFT | MOD_LCTL)
#endif
#ifdef THUMB_0
#define LT_EQL LT (_ADJUST, KC_EQL)
#else
#define LT_0 LT (_ADJUST, KC_0)
#endif
#ifndef SHIFT_SYMBOLS
#define LT_A LT (_NUMSYM, KC_A)
#define LT_LFTX LT (_SYMREG, KC_LEFT)
#endif
// ........................................................ Default Alpha Layout
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#include "beakl.h"
#include "colemak.h"
#include "qwerty.h"
#include "steno_layout.h"
// ...................................................... Number / Function Keys
#include "number_fkey_layout.h"
// ......................................................... Symbol / Navigation
#include "symbol_guifn_layout.h"
// ............................................................... Toggle Layers
#ifdef CENTER_TT
#include "toggle_layout.h"
#endif
// ......................................................... Short Cuts / Adjust
#include "chord_layout.h"
};
// ...................................................................... Sounds
#include "sounds.h"
// ........................................................... User Keycode Trap
#include "keycode_functions.h"
#define BASE_1 1
#define BASE_2 2
#define BASE_12 3
static uint8_t base_n = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
switch (keycode) {
case BASE1:
if (record->event.pressed) {
base_n = base_n | BASE_1;
if (base_n == BASE_12) {
base_layer();
}
}
else {
base_n = base_n & ~BASE_1;
}
return false;
case BASE2:
if (record->event.pressed) {
base_n = base_n | BASE_2;
if (base_n == BASE_12) {
base_layer();
}
}
else {
base_n = base_n & ~BASE_2;
}
return false;
case AT_DOWN:
#ifdef HOME_MODS
case HOME_E:
#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
case HOME_R:
#else
case HOME_S:
#endif
#endif
tap_mods(record, KC_LALT);
break;
case CT_RGHT:
#ifdef HOME_MODS
case HOME_K:
#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
case HOME_W:
#else
case HOME_B:
#endif
#endif
tap_mods(record, KC_LGUI);
break;
case GT_UP:
#ifdef HOME_MODS
case HOME_H:
#if defined(BEAKLMU) || defined(BEAKLSP) || defined(BEAKLGR)
case HOME_S:
#else
case HOME_N:
#endif
#endif
tap_mods(record, KC_LCTL);
break;
#ifdef HOME_MODS
case HOME_A:
case HOME_T:
tap_mods(record, KC_LSFT);
break;
#endif
#ifdef CENTER_TT
case TT_ESC:
clear_tt(); // exit TT layer
return false;
#endif
case LT_ESC:
#ifdef CENTER_TT
if (tt_keycode != 0) {
clear_tt(); // exit TT layer
return false;
}
#endif
tap_layer(record, _NUMBER);
break;
case LT_LEFT:
case SP_BSPC:
tap_layer(record, _SYMBOL);
// LT (_SYMBOL, KC_LEFT) left right combination layer
thumb_layer(record, RIGHT, 0, 0, _SYMBOL, _LSHIFT);
break;
case OS_ALT:
tap_mods(record, KC_LALT);
break;
case OS_CTL:
tap_mods(record, KC_LCTL);
break;
case OS_GUI:
tap_mods(record, KC_LGUI);
break;
case SM_CIRC:
// GUI_T(S(KC_6))
mt_shift(record, KC_LGUI, 0, KC_6);
break;
case SM_DLR:
// SFT_T(S(KC_4))
mt_shift(record, KC_LSFT, 0, KC_4);
break;
case SM_G:
// MT(MOD_LALT | MOD_LSFT, S(KC_G))
mt_shift(record, KC_LALT, KC_LSFT, KC_G);
break;
case SM_K:
// MT(MOD_LGUI | MOD_LSFT, S(KC_K))
mt_shift(record, KC_LGUI, KC_LSFT, KC_K);
break;
case SM_W:
// MT(MOD_LGUI | MOD_LSFT, S(KC_W))
mt_shift(record, KC_LGUI, KC_LSFT, KC_W);
break;
case SM_LPRN:
// CTL_T(S(KC_9))
mt_shift(record, KC_LCTL, 0, KC_9);
break;
case SM_PERC:
// ALT_T(S(KC_5))
mt_shift(record, KC_LALT, 0, KC_5);
break;
case LT_BSLS:
tap_layer(record, _MOUSE);
// LT (_MOUSE, KC_BSLS) left right combination layer, see #define LT_BSLS
thumb_layer(record, LEFT, 0, 0, _MOUSE, _SYMBOL);
break;
case SL_LEFT:
tap_layer(record, _MOUSE);
// LT (_MOUSE, S(KC_LEFT)) left right combination layer
thumb_layer(record, RIGHT, SHIFT, KC_LEFT, _MOUSE, _LSHIFT);
break;
case SP_DEL:
tap_layer(record, _MOUSE);
// LT (_MOUSE, S(KC_LEFT)) left right combination layer
thumb_layer(record, RIGHT, NOSHIFT, KC_DEL, _MOUSE, _LSHIFT);
break;
case SL_PIPE:
// LT (_ADJUST, S(KC_BSLS)) emulation
lt_shift(record, KC_BSLS, _ADJUST);
break;
case SL_TAB:
// LT (_FNCKEY, S(KC_TAB)) emulation
lt_shift(record, KC_TAB, _FNCKEY);
break;
case TD_ENT:
tap_layer(record, _RSHIFT);
// LT (_RSHIFT, KC_ENT) emulation, see tap dance enter
break;
case TD_SPC:
tap_layer(record, _LSHIFT);
// LT (_LSHIFT, KC_SPC) left right combination layer, see tap dance TD_SPC
thumb_layer(record, LEFT, 0, 0, _LSHIFT, _SYMBOL);
break;
#ifdef CENTER_TT
case CNTR_TL:
case CNTR_TR:
case CNTR_HL:
case CNTR_HR:
case CNTR_BL:
case CNTR_BR:
if (tt_keycode != keycode && tt_keycode != 0) {
clear_tt(); // return to base layer first if different TT layer selected
}
tt_keycode = keycode;
break;
#endif
// #ifdef STENO_ENABLE
// case PS_STNA:
// stn_layer(record, STN_A, _NUMBER);
// break;
// case PS_STNO:
// stn_layer(record, STN_O, _FNCKEY);
// break;
// case PS_STNE:
// stn_layer(record, STN_E, _EDIT);
// break;
// case PS_STNU:
// stn_layer(record, STN_U, _SYMBOL);
// break;
// #endif
case PS_BASE:
if (record->event.pressed) {
base_layer();
}
return false;
case PLOVER:
steno(record);
return false;
case PLOEXIT:
steno_exit(record);
return false;
}
return true;
}
#include "init.h"

View File

@@ -1 +0,0 @@
SEND_STRING("the keys of enoch");

View File

@@ -1,64 +0,0 @@
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ...................................................................... Qwerty
#ifdef QWERTY
// ,-----------------------------------------------------------------------------------.
// | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | ; |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | X | C | V | B | Caps |^Shift| N | M | , | . | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | Space| Tab | Bksp | Ent | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_BASE] = {
{KC_Q, KC_W, KC_E, KC_R, KC_T, CNTR_TL, CNTR_TR, KC_Y, KC_U, KC_I, KC_O, KC_P },
{KC_A, KC_S, KC_D, KC_F, KC_G, CNTR_HL, CNTR_HR, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
{KC_Z, KC_X, KC_C, KC_V, KC_B, CNTR_BL, CNTR_BR, KC_N, KC_M, KC_COMM, KC_DOT, TD_QUOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
[_SHIFT] = {
{S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
{S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), KC_SCLN},
{S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_COMM, KC_DOT, TD_QUOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, TD_SPC, LT_TAB, LT_BSPC, TD_ENT, LT_LEFT, AT_DOWN, GT_UP, CT_RGHT},
},
// ,-----------------------------------------------------------------------------------.
// | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | X | C | V | B | Caps |^Shift| N | M | / | ? | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Esc | f() | Tab | Del | - | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_LSHIFT] = {
{S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
{S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
{S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), KC_SLSH, KC_QUES, TD_DQOT},
{OS_CTL, OS_GUI, OS_ALT, LT_ESC, ___fn__, LT_TAB, KC_DEL, KC_MINS, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
// ,-----------------------------------------------------------------------------------.
// | Q | W | E | R | T | ^Alt | ^GUI | Y | U | I | O | P |
// |------+------+------+------+------+-------------+------+------+------+------+------|
// | A | S | D | F | G | ↑Alt | ↑GUI | H | J | K | L | : |
// |------+------+------+------+------+------|------+------+------+------+------+------|
// | Z | X | C | V | B | Caps |^Shift| N | M | ~ | ` | " |
// |------+------+------+------+------+------+------+------+------+------+------+------|
// | Ctrl | GUI | Alt | Caps | _ | ↑Tab | Bksp | f() | Left | Down | Up | Right|
// `-----------------------------------------------------------------------------------'
[_RSHIFT] = {
{S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), CNTR_TL, CNTR_TR, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P)},
{S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), CNTR_HL, CNTR_HR, S(KC_H), S(KC_J), S(KC_K), S(KC_L), TD_COLN},
{S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), CNTR_BL, CNTR_BR, S(KC_N), S(KC_M), TD_TILD, TD_GRV, TD_DQOT},
{OS_CTL, OS_GUI, OS_ALT, KC_CAPS, KC_UNDS, SL_TAB, LT_BSPC, ___fn__, SL_LEFT, S_DOWN, S_UP, S_RGHT },
},
#endif

View File

@@ -1,10 +0,0 @@
# The sdothum extended Default Planck Layout
- Colemak-DH layout layer with shift/tab key overlays
- Number and symbol/function key layer
- Hexadecimal keypad layer
- Navigation keypad layer
- Dynamic macro layer
- Autocompletion tap key pairs (),[],{}
- Normalized enter and esc key position across keyboard layers
- Extensive use of tap keys

View File

@@ -1,23 +0,0 @@
# Build Options:
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # mouse keys(+4700)
EXTRAKEY_ENABLE = no # audio control and System control(+450)
CONSOLE_ENABLE = no # console for debug(+400)
COMMAND_ENABLE = no # commands for debug and configuration
NKRO_ENABLE = yes # nkey rollover
BACKLIGHT_ENABLE = no # enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # audio output on port C6
UNICODE_ENABLE = no # unicode
BLUETOOTH_ENABLE = no # enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # enable WS2812 RGB underlight, do not enable this with audio at the same time.
STENO_ENABLE = yes # enable TX Bolt protocol, requires VIRTSER and may not work with mouse keys
# do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}

View File

@@ -1,38 +0,0 @@
#pragma once
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(PLANCK_SOUND)
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
SONG(COLEMAK_SOUND) \
}
#endif
#define MUSIC_MASK (keycode != KC_NO)
/*
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/
#define MIDI_BASIC
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
//#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
// Most tactile encoders have detents every 4 stages
#define ENCODER_RESOLUTION 4

Some files were not shown because too many files have changed in this diff Show More