aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/planck/keymaps
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/planck/keymaps')
-rw-r--r--keyboards/planck/keymaps/basic/keymap.c23
-rw-r--r--keyboards/planck/keymaps/default/keymap.c28
-rw-r--r--keyboards/planck/keymaps/dodger/rules.mk1
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/config.h36
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/keymap.c16
-rw-r--r--keyboards/planck/keymaps/dvorak2space/config.h3
-rw-r--r--keyboards/planck/keymaps/dvorak2space/keymap.c242
-rw-r--r--keyboards/planck/keymaps/dvorak2space/passwords.c28
-rw-r--r--keyboards/planck/keymaps/dvorak2space/readme.md5
-rw-r--r--keyboards/planck/keymaps/dvorak2space/rules.mk20
-rw-r--r--keyboards/planck/keymaps/handwired_binaryplease/rules.mk1
-rw-r--r--keyboards/planck/keymaps/kloki/rules.mk1
-rw-r--r--keyboards/planck/keymaps/mattly/keymap.c164
-rw-r--r--keyboards/planck/keymaps/mattly/readme.md29
-rw-r--r--keyboards/planck/keymaps/snowkuma/config.h46
-rw-r--r--keyboards/planck/keymaps/snowkuma/custom_keycodes.h60
-rw-r--r--keyboards/planck/keymaps/snowkuma/keymap.c373
-rw-r--r--keyboards/planck/keymaps/snowkuma/my_strings.h4
-rw-r--r--keyboards/planck/keymaps/snowkuma/readme.md14
-rw-r--r--keyboards/planck/keymaps/snowkuma/rules.mk19
-rw-r--r--keyboards/planck/keymaps/vaire/rules.mk1
-rw-r--r--keyboards/planck/keymaps/yttyx/config.h5
-rw-r--r--keyboards/planck/keymaps/yttyx/keymap.c146
-rw-r--r--keyboards/planck/keymaps/yttyx/readme.md68
-rw-r--r--keyboards/planck/keymaps/yttyx/rules.mk11
25 files changed, 1077 insertions, 267 deletions
diff --git a/keyboards/planck/keymaps/basic/keymap.c b/keyboards/planck/keymaps/basic/keymap.c
index 748d9acbe..4458c32a7 100644
--- a/keyboards/planck/keymaps/basic/keymap.c
+++ b/keyboards/planck/keymaps/basic/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{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, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI, M(1), KC_SPC, KC_SPC, M(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Lower
@@ -64,24 +64,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch(id) {
- case 1:
- if (record->event.pressed) {
- layer_on(1);
- } else {
- layer_off(1);
- }
- break;
- case 2:
- if (record->event.pressed) {
- layer_on(2);
- } else {
- layer_off(2);
- }
- break;
- }
- return MACRO_NONE;
-};
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index cc090200b..280249a9c 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -46,9 +46,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
@@ -64,9 +64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Colemak
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
@@ -82,9 +82,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Dvorak
* ,-----------------------------------------------------------------------------------.
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
@@ -100,9 +100,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Lower
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
@@ -118,9 +118,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Raise
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
@@ -136,9 +136,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Plover layer (http://opensteno.org)
* ,-----------------------------------------------------------------------------------.
* | # | # | # | # | # | # | # | # | # | # | # | # |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | | S | T | P | H | * | * | F | P | L | T | D |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | | S | K | W | R | * | * | R | B | G | S | Z |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Exit | | | A | O | | E | U | | | |
@@ -154,9 +154,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
* | | Reset| | | | | | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
diff --git a/keyboards/planck/keymaps/dodger/rules.mk b/keyboards/planck/keymaps/dodger/rules.mk
index 981a3e82b..032f5af68 100644
--- a/keyboards/planck/keymaps/dodger/rules.mk
+++ b/keyboards/planck/keymaps/dodger/rules.mk
@@ -1,5 +1,4 @@
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
diff --git a/keyboards/planck/keymaps/dsanchezseco/config.h b/keyboards/planck/keymaps/dsanchezseco/config.h
index 6fa31cc8a..3ed041f3b 100644
--- a/keyboards/planck/keymaps/dsanchezseco/config.h
+++ b/keyboards/planck/keymaps/dsanchezseco/config.h
@@ -1,39 +1,5 @@
#pragma once
#ifdef AUDIO_ENABLE
- #define STARTUP_SONG SONG(PLANCK_SOUND)
- // #define STARTUP_SONG SONG(NO_SOUND)
-
- #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
- SONG(COLEMAK_SOUND), \
- SONG(DVORAK_SOUND) \
- }
+ #define STARTUP_SONG SONG(DVORAK_SOUND)
#endif
-
-/*
- * 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
-
diff --git a/keyboards/planck/keymaps/dsanchezseco/keymap.c b/keyboards/planck/keymaps/dsanchezseco/keymap.c
index 90ad2bc59..df560b46c 100644
--- a/keyboards/planck/keymaps/dsanchezseco/keymap.c
+++ b/keyboards/planck/keymaps/dsanchezseco/keymap.c
@@ -1,19 +1,3 @@
-/* Copyright 2015-2017 Jack Humbert
- *
- * 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 "muse.h"
diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h
new file mode 100644
index 000000000..0927fa016
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/config.h
@@ -0,0 +1,3 @@
+#pragma once
+#define TAPPING_TOGGLE 1
+#define PERMISSIVE_HOLD
diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c
new file mode 100644
index 000000000..4b0775945
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/keymap.c
@@ -0,0 +1,242 @@
+#include QMK_KEYBOARD_H
+#include "passwords.c" //Instead of extern just to cut down on compile time. Holds a single array.
+#define MOUSEL KC_BTN1
+#define MOUSER KC_BTN2
+#define CTRLL LCTL(KC_LEFT)
+#define CTRLR LCTL(KC_RGHT)
+#define CAD LCTL(LALT(KC_DEL))
+
+#define BASE_L 0
+#define SHFT_L 1
+#define MOD_L 2
+#define NAV_L 3
+#define AHK_L 4
+#define LOCK_L 5
+#define PASS_L 6
+
+static host_driver_t *host_driver = 0;
+
+enum {
+ HK_SLP = SAFE_RANGE,
+ HK_IF,
+ HK_ELSE,
+ HK_COSL
+};
+
+enum {
+ FB = 0,
+ LPN,
+ RPN,
+ BCK,
+ DSH
+};
+
+enum {
+ SINGLE_TAP = 1,
+ SINGLE_HOLD = 2,
+ DOUBLE_TAP = 3,
+ DOUBLE_HOLD = 4,
+ DOUBLE_SINGLE_TAP = 5, //Distinguishes between double tapping and typing, "tapping", for example. Not sure how accurate it is, and I have no need, so avoiding it at the moment.
+ TRIPLE_TAP = 6,
+ TRIPLE_HOLD = 7
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Base
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | ' | , | . | p | y | f | g | c | r | l | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Nav | a | o | e | u | i | d | h | t | n | s | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shft | ; | q | j | k | x | b | m | w | v | z | Shft |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | RClk | LClk | Ctrl | Space | Modifier | GUI | VolD | VolU |Macros|
+ * `-----------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_planck_2x2u(
+ KC_TAB, KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK),
+ MO(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT,
+ KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
+ KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, MO(MOD_L), KC_LGUI, KC_VOLD, KC_VOLU, OSL(AHK_L)
+ ),
+/* Custom Shifts
+ * ,-----------------------------------------------------------------------------------.
+ * | | | ? | ! | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_planck_2x2u(
+ KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
+ ),
+/* Modifier
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | + | - | * | / \ | if | else | ( [ | ) ] | { | } | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | ` | < | > | & | | | _ | $ | @ | # | % | ^ | ~ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | Space | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_planck_2x2u(
+ KC_TRNS,KC_PLUS,TD(DSH),KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_TRNS,
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_GRV, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,LSFT(KC_GRV),
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+//Nav
+ [3] = LAYOUT_planck_2x2u(
+ KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, KC_TRNS,
+ KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT, CTRLR, KC_TRNS,
+ KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+//AHK-Bindable Macros
+ [4] = LAYOUT_planck_2x2u(
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
+ LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24),
+ LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24),
+ RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, HK_COSL
+ ),
+//Locked Screen
+ [5] = LAYOUT_planck_2x2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO
+ ),
+//Passwords (by first letter of service name, at least better than just one)
+ [6] = LAYOUT_planck_2x2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO,
+ KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO,
+ KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO,
+ KC_NO, KC_NO, KC_NO, HK_COSL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn't support aliases
+ switch(keycode) {
+ //if shift pressed and not shift layer or released and other shift not pressed
+ //in separate things because MOD_BIT (probably?) isn't toggled until after this returns true and shift is actually toggled
+ case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed
+ if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) { layer_invert(SHFT_L); }
+ break;
+ case KC_RSFT:
+ if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) { layer_invert(SHFT_L); }
+ break;
+ case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter
+ if(record->event.pressed) {
+ (IS_LAYER_ON(SHFT_L)) //if shifted release correct shift, send, and press same shift, else send shift enter
+ ? (get_mods() & MOD_BIT(KC_LSFT))
+ ? SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT))
+ : SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT))
+ : SEND_STRING(SS_LSFT(SS_TAP(X_ENTER)));
+ }
+ return false;
+ case HK_IF:
+ if(record->event.pressed) { SEND_STRING("if"); }
+ break;
+ case HK_ELSE:
+ if(record->event.pressed) { SEND_STRING("else"); }
+ break;
+ case HK_COSL:
+ clear_keyboard();
+ break;
+ case HK_SLP:
+ if(record->event.pressed) {
+ if(IS_LAYER_OFF(LOCK_L)) {
+ host_driver = host_get_driver();
+ SEND_STRING(SS_LALT(SS_TAP(X_F23)));
+ host_set_driver(0);
+ }
+ else {
+ host_set_driver(host_driver);
+ SEND_STRING(SS_LALT(SS_TAP(X_F24)));
+ }
+ return false;
+ }
+ layer_invert(LOCK_L);
+ if(IS_LAYER_ON(AHK_L))
+ layer_invert(AHK_L);
+ break;
+ default:
+ if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) {
+ SEND_STRING(passwords[keycode - KC_A]);
+ layer_invert(PASS_L);
+ return false;
+ }
+ }
+ return true;
+};
+
+//tapdance state evaluation
+int cur_dance(qk_tap_dance_state_t *state) {
+ int press = 0;
+ switch(state->count) {
+ case 1:
+ press = (state->interrupted || !state->pressed)
+ ? SINGLE_TAP
+ : SINGLE_HOLD;
+ break;
+ case 2:
+ press = DOUBLE_TAP;
+ break;
+ case 3:
+ press = TRIPLE_TAP;
+ }
+ return press;
+}
+
+void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); }
+
+void back_finished(qk_tap_dance_state_t *state, void *user_data) { if(!(state->interrupted || !state->pressed)) tap_code16(LCTL(KC_BSPACE)); }
+
+void slash_finished(qk_tap_dance_state_t *state, void *user_data) {
+ int td_state = cur_dance(state);
+ switch(td_state) {
+ case SINGLE_TAP:
+ clear_mods();
+ clear_weak_mods();
+ tap_code(KC_SLSH);
+ break;
+ case DOUBLE_TAP:
+ tap_code(KC_NUBS);
+ }
+}
+
+void dash_finished(qk_tap_dance_state_t *state, void *user_data) {
+ int td_state = cur_dance(state);
+ switch(td_state) {
+ case SINGLE_TAP:
+ tap_code(KC_PMNS);
+ break;
+ case SINGLE_HOLD:
+ register_mods(MOD_BIT(KC_LALT));
+ tap_code(KC_KP_0);
+ tap_code(KC_KP_1);
+ tap_code(KC_KP_5);
+ tap_code(KC_KP_1);
+ unregister_mods(MOD_BIT(KC_LALT));
+ break;
+ case DOUBLE_TAP:
+ tap_code(KC_PMNS);
+ tap_code(KC_PMNS);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC),
+ [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
+ [FB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, slash_finished, NULL),
+ [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys can be held down.
+ [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL)
+};
diff --git a/keyboards/planck/keymaps/dvorak2space/passwords.c b/keyboards/planck/keymaps/dvorak2space/passwords.c
new file mode 100644
index 000000000..161c564dd
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/passwords.c
@@ -0,0 +1,28 @@
+char *passwords[26] = {
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+};
diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md
new file mode 100644
index 000000000..1844a57f3
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/readme.md
@@ -0,0 +1,5 @@
+![Keyboard Layout](https://i.imgur.com/9jYjllM.png)
+
+# IsaacElenbaas's Planck Layout
+
+Split spacebar, Dvorak. Bottom right button leads to layer with lots of things to be mapped in AutoHotkey. The ones I use (of which the best are sleep, which turns off the monitors and locks all inputs, rebinding keyboard-only mouse inputs, and redirecting media keys to a specific player) can be found [here.](https://github.com/IsaacElenbaas/personal_scripts/blob/master/Keyboard.ahk) Capslock goes to a right-hand navigation layer, there is a custom layer when holding shift, holding dash gives an em dash, holding backspace deletes a word, and I have a obfuscation-based password system you probably shouldn't use, but the rest is pretty standard.
diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk
new file mode 100644
index 000000000..59f9f1dff
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/rules.mk
@@ -0,0 +1,20 @@
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+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 = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work. Can make windows not recognize device.
+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.
+API_SYSEX_ENABLE = no
+TAP_DANCE_ENABLE = yes
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/keymaps/handwired_binaryplease/rules.mk b/keyboards/planck/keymaps/handwired_binaryplease/rules.mk
index efe0c7a5d..cf37fa6f3 100644
--- a/keyboards/planck/keymaps/handwired_binaryplease/rules.mk
+++ b/keyboards/planck/keymaps/handwired_binaryplease/rules.mk
@@ -1,5 +1,4 @@
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
diff --git a/keyboards/planck/keymaps/kloki/rules.mk b/keyboards/planck/keymaps/kloki/rules.mk
index 195ad328b..02926bffa 100644
--- a/keyboards/planck/keymaps/kloki/rules.mk
+++ b/keyboards/planck/keymaps/kloki/rules.mk
@@ -1,5 +1,4 @@
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
diff --git a/keyboards/planck/keymaps/mattly/keymap.c b/keyboards/planck/keymaps/mattly/keymap.c
index baa7d9fbf..52ade8643 100644
--- a/keyboards/planck/keymaps/mattly/keymap.c
+++ b/keyboards/planck/keymaps/mattly/keymap.c
@@ -1,166 +1,34 @@
-/* Copyright 2015-2017 Jack Humbert
- *
- * 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 "muse.h"
-
-extern keymap_config_t keymap_config;
-
-enum planck_layers {
- _QWERTY,
- _NUMBER,
- _SYMBOL,
- _FUNC,
-};
-
-enum planck_keycodes {
- QWERTY = SAFE_RANGE
-};
-
-#define SPC_SHF MT(MOD_LSFT, KC_SPC)
-
-#define ESC_HYP MT(MOD_HYPR, KC_ESC)
-#define TAB_NUM LT(_NUMBER, KC_TAB)
-#define BSP_SYM LT(_SYMBOL, KC_BSPC)
-#define DEL_WRP MT(MOD_LCTL | MOD_LALT | MOD_LGUI, KC_DEL)
-
-#define SYMLOCK TG(_SYMBOL)
-#define NUMLOCK TG(_NUMBER)
-
-#define ONE_CTL OSM(MOD_LCTL)
-#define ONE_ALT OSM(MOD_LALT)
-#define ONE_GUI OSM(MOD_LGUI)
-#define ONE_HYP OSM(MOD_HYPR)
-#define ONE_MEH OSM(MOD_MEH)
-#define ONE_WRP OSM(MOD_LCTL | MOD_LALT | MOD_LGUI)
-#define ONE_WOA OSM(MOD_LCTL | MOD_LGUI | MOD_LSFT)
-#define ONE_DER OSM(MOD_LALT | MOD_LGUI | MOD_LSFT)
-
-#define A_CTRL MT(MOD_LCTL, KC_A)
-#define S_ALT MT(MOD_LALT, KC_S)
-#define D_GUI MT(MOD_LGUI, KC_D)
-#define F_SHFT MT(MOD_LSFT, KC_F)
-#define J_SHFT MT(MOD_RSFT, KC_J)
-#define K_GUI MT(MOD_RGUI, KC_K)
-#define L_ALT MT(MOD_RALT, KC_L)
-#define MINSCTL MT(MOD_RCTL, KC_MINS)
-
-#define ENT_CTL MT(MOD_LCTL, KC_ENT)
-#define LT_ALT MT(MOD_LALT, KC_LEFT)
-#define DN_GUI MT(MOD_LGUI, KC_DOWN)
-#define RT_SHFT MT(MOD_LSFT, KC_RGHT)
-#define N4_SHFT MT(MOD_RSFT, KC_4)
-#define N5_GUI MT(MOD_RGUI, KC_5)
-#define N6_ALT MT(MOD_RALT, KC_6)
-
-#define BWORD LALT(KC_LEFT)
-#define FWORD LALT(KC_RIGHT)
-
-#define NWIN LGUI(KC_GRV)
-#define PWIN LGUI(LSFT(KC_GRV))
-#define NTAB LGUI(LSFT(KC_RBRC))
-#define PTAB LGUI(LSFT(KC_LBRC))
-#define NAVBACK LGUI(KC_LBRC)
-#define NAVFWD LGUI(KC_RBRC)
-
-#define XMSNCTL HYPR(KC_F14)
-#define XDSKTOP HYPR(KC_F15)
-#define XNXTSPC HYPR(KC_F16)
-#define XPRVSPC HYPR(KC_F17)
-#define XNOTIFY HYPR(KC_F18)
+#include "mattly.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Querty
- | # | q | w | e | r | t | y | u | i | o | p | - |
- | | | | | | | | | | | | |
- |------|------|------|------|------|------|------|------|------|------|------|------|
- | ( | a | s | d | f | g | h | j | k | l | ; | ' |
- | | CTRL | ALT | GUI | SHIFT| | | SHIFT| GUI | ALT | CTRL | |
- |------|------|------|------|------|------|------|------|------|------|------|------|
- | [ | z | x | c | v | b | n | m | , | . | / | > |
- | | | | | | | | | | | | |
- |------|------|------|------|------|------|------|------|------|------|------|------|
- | ctrl | alt | gui | Esc | Tab | space | Bksp | Del | hyper| meh | warp |
- | | | | FUNC |NUMBER| SHIFT |SYMBOL| | | | |
- */
[_QWERTY] = LAYOUT_planck_grid(
- KC_HASH, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN,
- KC_LPRN, A_CTRL, S_ALT, D_GUI, F_SHFT, KC_G, KC_H, J_SHFT, K_GUI, L_ALT, MINSCTL, KC_QUOT,
- KC_LBRC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RABK,
- NUMLOCK, MO(_FUNC), ONE_MEH, ESC_HYP, TAB_NUM, SPC_SHF, SPC_SHF, BSP_SYM, DEL_WRP, ONE_WRP, ONE_DER, SYMLOCK
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN,
+ KC_CAPS, A_CTRL, S_ALT, D_GUI, F_SHFT, KC_G, KC_H, J_SHFT, K_GUI, L_ALT, MINSCTL, KC_QUOT,
+ XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ XXXXXXX, NAVLOCK, XXXXXXX, ESC_HYP, BSP_NUM, ENT_SFT, SPC_SFT, TAB_SYM, DEL_WRP, XXXXXXX, SYMLOCK, XXXXXXX
),
-/* Symbol
- | | & | ` | ~ | [ | ] | < | > | + | | | | |
- | | $ | % | = | ( | ) | ; | : | ! | @ | _ | |
- | | | ^ | # | { | } | ' | " | | | \ | ? | |
- | | | | | | | .... | | | | |
- */
[_SYMBOL] = LAYOUT_planck_grid(
- KC_ESC, KC_AMPR, KC_GRV, KC_TILD, KC_LBRC, KC_RBRC, KC_LABK, KC_RABK, KC_PLUS, KC_ASTR, XXXXXXX, KC_DEL,
- KC_ENT, KC_DLR, KC_PERC, KC_EQL, KC_LPRN, KC_RPRN, KC_SCLN, KC_COLN, KC_EXLM, KC_AT, KC_UNDS, KC_BSPC,
+ _______, KC_AMPR, KC_GRV, KC_TILD, KC_LBRC, KC_RBRC, KC_LABK, KC_RABK, KC_PLUS, KC_ASTR, XXXXXXX, _______,
+ _______, KC_DLR, KC_PERC, KC_EQL, KC_LPRN, KC_RPRN, KC_SCLN, KC_COLN, KC_EXLM, KC_AT, KC_UNDS, _______,
_______, XXXXXXX, KC_CIRC, KC_HASH, KC_LCBR, KC_RCBR, KC_QUOT, KC_DQUO, KC_PIPE, KC_BSLS, KC_QUES, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
-/* Number
- | | |<-word| up |word->| PgUp | . | 7 | 8 | 9 | + | * |
- | | Enter| left | down | right| PgDn | 0 | 4 | 5 | 6 | - | / |
- | | Bksp | Home | tab | End | Del | , | 1 | 2 | 3 | = | % |
- | | | | | .... | | | | : | $ | |
- */
-[_NUMBER] = LAYOUT_planck_grid(
- XXXXXXX, XXXXXXX, BWORD, KC_UP, FWORD, KC_PGUP, KC_DOT, KC_7, KC_8, KC_9, KC_PLUS, KC_ASTR,
- KC_CAPS, ENT_CTL, LT_ALT, DN_GUI, RT_SHFT, KC_PGDN, KC_0, N4_SHFT, N5_GUI, N6_ALT, MINSCTL, KC_SLSH,
- XXXXXXX, KC_BSPC, KC_HOME, KC_TAB, KC_END, KC_DEL, KC_COMM, KC_1, KC_2, KC_3, KC_EQL, KC_PERC,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, KC_DLR, _______
+
+[_NAVNUM] = LAYOUT_planck_grid(
+ _______, XXXXXXX, BWORD, KC_UP, FWORD, KC_PGUP, KC_DOT, KC_7, KC_8, KC_9, KC_PLUS, KC_ASTR,
+ _______, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_0, KC_4, KC_5, KC_6, KC_MINS, KC_SLSH,
+ _______, KC_BSPC, KC_HOME, KC_TAB, KC_END, KC_DEL, KC_COMM, KC_1, KC_2, KC_3, KC_EQL, KC_PERC,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_0, KC_COLN, KC_DLR, _______
),
-/* Function
- * | Reset| Mctl | Pspc | Nwin | Nspc | Desk | | F7 | F8 | F9 | F10 | F13 |
- * | Debug| Nctr | Ptab | Pwin | Ntab | Back | Fwd | F4 | F5 | F6 | F11 | F14 |
- * | Mute | Vol- | Vol+ | Trk- | Trk+ | Play | | F1 | F2 | F3 | F12 | F15 |
- * | | | | | | | | | | | | |
- */
-[_FUNC] = LAYOUT_planck_grid(
- RESET, XMSNCTL, XPRVSPC, NWIN, XNXTSPC, XDSKTOP, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F13,
+
+[_FUNCT] = LAYOUT_planck_grid(
+ RESET, XALLWIN, XPRVSPC, NWIN, XNXTSPC, XDESKTP, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F13,
DEBUG, XNOTIFY, PTAB, PWIN, NTAB, NAVBACK, NAVFWD, KC_F4, KC_F5, KC_F6, KC_F11, KC_F14,
KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F12, KC_F15,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-#ifdef AUDIO_ENABLE
-#endif
-
-uint32_t layer_state_set_user(uint32_t state) {
- state = update_tri_layer_state(state, _SYMBOL, _NUMBER, _FUNC);
- return state;
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- print("mode just switched to qwerty and this is a huge string\n");
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- }
- return true;
-}
-
diff --git a/keyboards/planck/keymaps/mattly/readme.md b/keyboards/planck/keymaps/mattly/readme.md
index 58f2b979c..4e8c7f17c 100644
--- a/keyboards/planck/keymaps/mattly/readme.md
+++ b/keyboards/planck/keymaps/mattly/readme.md
@@ -1,28 +1 @@
-# Mattly's Planck layout
-
-This planck layout is optimized for, in order:
-
-- moving work from my pinkies to my thumbs
-- writing lisp/clojure code in my evil-mode based emacs setup
-- tapping out messages in chat applications such as slack
-- writing english in markdown files in said emacs
-- navigating mac applications
-- writing english in a web browser on a macintosh
-- writing other programming languages' code in said emacs
-- writing english in other contexts
-- literally anything else
-
-## oddities:
-
-You may notice that `enter` is on a layer. This is an experiment and I kind of
-like it so far, since many programs interpret that keystroke as a "commit"
-of some kind.
-
-## works in progress
-
-I'm trying to figure out how to make some things easier to do with the mouse or
-one-handed. Right now the combo of entering numbers and using a mouse with my
-right hand is kind of annoying. I want to be able to toggle layers on, but only
-from within that layer.
-
-![mattly's keymap](https://lyonheart.us/etc/mattly-keymap.png)
+See my readme in [users/mattly](../../../../../users/mattly/readme.md) \ No newline at end of file
diff --git a/keyboards/planck/keymaps/snowkuma/config.h b/keyboards/planck/keymaps/snowkuma/config.h
new file mode 100644
index 000000000..b41ead838
--- /dev/null
+++ b/keyboards/planck/keymaps/snowkuma/config.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * 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
+
+// Settings for homerow mods
+#define TAPPING_TERM 250
+#define IGNORE_MOD_TAP_INTERRUPT
+
+
+// Add the leader key feature
+#define LEADER_TIMEOUT 300
diff --git a/keyboards/planck/keymaps/snowkuma/custom_keycodes.h b/keyboards/planck/keymaps/snowkuma/custom_keycodes.h
new file mode 100644
index 000000000..5e4353c04
--- /dev/null
+++ b/keyboards/planck/keymaps/snowkuma/custom_keycodes.h
@@ -0,0 +1,60 @@
+// These definitions are for convenience.
+// It is not wise to put sensitive information here such as passwords
+// as anyone with access to your keyboard will be able to use them!
+
+// magnet keycodes
+#define M_LEFT LCA(KC_LEFT)
+#define M_TOP LCA(KC_UP)
+#define M_BOTT LCA(KC_DOWN)
+#define M_RGHT LCA(KC_RGHT)
+
+#define M_TOPL LCA(KC_U)
+#define M_TOPR LCA(KC_I)
+#define M_BOTL LCA(KC_J)
+#define M_BOTR LCA(KC_K)
+
+#define M_L13 LCA(KC_D)
+#define M_L23 LCA(KC_E)
+#define M_C13 LCA(KC_F)
+#define M_R23 LCA(KC_T)
+#define M_R13 LCA(KC_G)
+
+#define M_NEXT LCAG(KC_RGHT)
+#define M_PREV LCAG(KC_LEFT)
+
+#define M_MAX LCA(KC_ENT)
+#define M_CEN LCA(KC_C)
+#define M_REST LCA(KC_BSPC)
+
+// Shortcuts
+#define INPUT_L LCAG(KC_SPC)
+#define TXT_PLS LGUI(KC_PLUS)
+#define TXT_MIN LGUI(KC_MINS)
+#define SC_CAPF LGUI(LSFT(KC_3)) // Capture the full screen to file
+#define SC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen to file
+
+// Special Layer keycodes
+#define ESC_NUM LT(_NUMBER, KC_ESC)
+#define BSP_REG LT(_REGEX, KC_BSPC)
+#define DEL_REG LT(_REGEX, KC_DEL)
+#define MIN_ARR LT(_ARRANGE, KC_MINS)
+#define TAB_SFT LSFT_T(KC_TAB)
+#define SPC_SYM LT(_SYMBOL, KC_SPC)
+#define ENT_THU LT(_THUMB, KC_ENT)
+#define FUN_L MO(_FUNCTION)
+
+// HOMEROW SHIFT
+#define T_SFT LSFT_T(KC_T)
+#define N_SFT RSFT_T(KC_N)
+
+// Special Characters
+#define GBP LALT(KC_3)
+#define EURO LALT(S(KC_2))
+
+// Modifier tap holds
+#define Q_CTL LCTL_T(KC_Q)
+#define W_ALT LALT_T(KC_W)
+#define F_GUI LGUI_T(KC_F)
+#define U_GUI LGUI_T(KC_U)
+#define Y_ALT LALT_T(KC_Y)
+#define SCL_CTL LCTL_T(KC_SCLN)
diff --git a/keyboards/planck/keymaps/snowkuma/keymap.c b/keyboards/planck/keymaps/snowkuma/keymap.c
new file mode 100644
index 000000000..eee8e1170
--- /dev/null
+++ b/keyboards/planck/keymaps/snowkuma/keymap.c
@@ -0,0 +1,373 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * 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/>.
+ */
+
+/* _
+ * ___ _ __ ___ __ __ | | __ _ _ _ __ ___ __ _
+ * / __| | '_ \ / _ \ \ \ /\ / / | |/ / | | | | | '_ ` _ \ / _` |
+ * \__ \ | | | | | (_) | \ V V / | < | |_| | | | | | | | | (_| |
+ * |___/ |_| |_| \___/ \_/\_/ |_|\_\ \__,_| |_| |_| |_| \__,_|
+ *
+ * https://github.com/snowkuma
+ *
+ * version 0.1
+*/
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+#include "custom_keycodes.h"
+#include "my_strings.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _COLEMAK = 0,
+ _SYMBOL,
+ _SFT_NAV,
+ _REGEX,
+ _NUMBER,
+ _ARRANGE,
+ _FUNCTION,
+ _MOUSE,
+ _THUMB
+};
+
+enum planck_keycodes {
+ EMAIL = SAFE_RANGE,
+ EMOJI,
+ EXT_PLV,
+ ITERM,
+ LESSON,
+ TYPE_FU,
+ VS_CODE,
+ VIM
+};
+
+
+// Tap Dance Declarations
+enum {
+ TD_RESET = 0,
+ TD_TILD
+};
+
+// Tap Dance Definitions
+void safe_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count >=3) {
+ // Reset the keyboard if you tap the key more than three times
+ reset_keyboard();
+ reset_tap_dance(state);
+ }
+}; void tilde_home(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count > 2) {
+ register_code(KC_LSFT);
+ register_code(KC_GRV);
+ }
+ else {
+ register_code(KC_LSFT);
+ register_code(KC_GRV);
+ if (state->count > 1) {
+ // Outputs ~/ if tilde tapped twice
+ unregister_code(KC_GRV);
+ unregister_code(KC_LSFT);
+ register_code(KC_SLSH);
+ }
+ }
+}
+
+void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
+{
+ if (state->count == 2) {
+ unregister_code(KC_SLSH);
+ } else {
+ unregister_code(KC_GRV);
+ unregister_code(KC_LSFT);
+ }
+}
+
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_RESET] = ACTION_TAP_DANCE_FN (safe_reset),
+ [TD_TILD] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, tilde_home, tilde_reset)
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* COLEMAK
+ *
+ * Base layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | q | w | f | p | g | | | j | l | u | y | ; |
+ * | CTRL | ALT | GUI | | | | | | | GUI | ALT | CTRL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | a | r | s | t | d | | | h | n | e | i | o |
+ * | | | | Shift | | | | | Shift | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | z | x | c | v | b | | | k | m | , | . | ' |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | Esc | BkSp | - | Tab | Space | Enter | | |
+ * | | | | Num | Regex | Arrange| Shift | Sym | Thumb | | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+ */
+[_COLEMAK] = LAYOUT_planck_grid(
+ Q_CTL, W_ALT, F_GUI, KC_P, KC_G, _______, _______, KC_J, KC_L, U_GUI, Y_ALT, SCL_CTL,
+ KC_A, KC_R, KC_S, T_SFT, KC_D, _______, _______, KC_H, N_SFT, KC_E, KC_I, KC_O,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_QUOT,
+ _______, _______, _______, ESC_NUM, BSP_REG, MIN_ARR, TAB_SFT, SPC_SYM, ENT_THU, _______, _______, _______
+),
+
+/* Symbol & Cursor Nav layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | ! | @ | € | & | | | | | | Home | Up | End | PgUp |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ~ | < | % | > | + | | | | Left | Down | Right | PgDn |
+ * | 2x ~/ | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ` | | £ | = | - | | | | | | | |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | _ | Del | - | | f() | | | | |
+ * | | | | | Mouse | | | Sym |Function| | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+ */
+[_SYMBOL] = LAYOUT_planck_grid(
+ KC_EXLM, KC_AT, EURO, KC_AMPR, KC_PIPE, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP,
+ TD(TD_TILD), KC_LT, KC_PERC, KC_GT, KC_PLUS, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN,
+ KC_GRV, _______, GBP, KC_EQL, KC_MINS, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_UNDS, DEL_REG, KC_MINS, _______, _______, _______, _______, _______, _______
+),
+
+/* Regex layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | * | [ | ^ | ] | : |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | ? | ( | $ | ) | / |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | { | # | } | \ |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | f() | | | Space | | | |
+ * | | | | | Regex | | | Mouse | Enter | | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+ */
+[_REGEX] = LAYOUT_planck_grid(
+ _______, _______, _______, _______, _______, _______, _______, KC_ASTR, KC_LBRC, KC_CIRC, KC_RBRC, KC_COLN,
+ _______, _______, _______, _______, _______, _______, _______, KC_QUES, KC_LPRN, KC_DLR, KC_RPRN, KC_SLSH,
+ _______, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_LCBR, KC_HASH, KC_RCBR, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, _______, _______, _______
+),
+
+/* Number Layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | : | F | E | D | G | | | * | 7 | 8 | 9 | 0 |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | # | C | B | A | + | | | . | 4 | 5 | 6 | / |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | € | x | £ | = | - | | | , | 1 | 2 | 3 | \ |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | f() | | | | | | | | |
+ * | | | | Number | | | | Space | Enter | | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+*
+*/
+[_NUMBER] = LAYOUT_planck_grid(
+ KC_COLN, S(KC_F), S(KC_E), S(KC_D), S(KC_G), _______, _______, KC_ASTR, KC_7, KC_8, KC_9, KC_0,
+ KC_HASH, S(KC_C), S(KC_B), S(KC_A), KC_PLUS, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_SLSH,
+ EURO, KC_X, GBP, KC_EQL, KC_MINS, _______, _______, KC_COMM, KC_1, KC_2, KC_3, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Mouse Layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | Ctrl | Alt | GUI | | | | | | | Up | | wUp |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | Btn3 | Btn2 | Btn1 | Shift | | | | | Left | Down | Right | wDn |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | | |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | f() | | | f() | | | |
+ * | | | | | Mouse | | | Mouse | | | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+*/
+[_MOUSE] = LAYOUT_planck_grid(
+ KC_LCTL, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, KC_WH_U,
+ KC_BTN3, KC_BTN2, KC_BTN1, KC_LSFT, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Thumb Layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | Reset | | SC_CAPF| SC_CAPP| | | | |Input L | | | |
+ * | (3x) | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | TypeFu | CMD + | | | | Caps | emoji | iterm | |
+ * | | | | | | | | | Lock | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | VS_Code| Vim | CMD - | | | | | | | |
+ * | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | f() | | | |
+ * | | | | | | | | | Thumb | | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+ */
+[_THUMB] = LAYOUT_planck_grid(
+ TD(TD_RESET), _______, SC_CAPF, SC_CAPP, _______, _______, _______, _______, INPUT_L, _______, _______, _______,
+ _______, _______, _______, TYPE_FU, TXT_PLS, _______, _______, _______, KC_CAPS, EMOJI, ITERM, _______,
+ _______, _______, VS_CODE, VIM, TXT_MIN, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Arrange Layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | | | Full | | | | | | Top L | Top | Top R | |
+ * | | | Screen | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | L 1/3 | L 2/3 | C 1/3 | R 2/3 | R 1/3 | | | Prev | Left | Bottom | Right | Next |
+ * | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | Restore| | Center | | | | | | Bottom | | Bottom | |
+ * | | | | | | | | | Left | | Right |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | f() | | | | | |
+ * | | | | | | Arrange| | | | | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+*/
+[_ARRANGE] = LAYOUT_planck_grid(
+ _______, _______, M_MAX, _______, _______, _______, _______, _______, M_TOPL, M_TOP, M_TOPR, _______,
+ M_L13, M_L23, M_C13, M_R23, M_R13, _______, _______, M_PREV, M_LEFT, M_BOTT, M_RGHT, M_NEXT,
+ M_REST, _______, M_CEN, _______, _______, _______, _______, _______, M_BOTL, _______, M_BOTR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Function Layer
+ * ,-----------------------------------------------------------------------------------------------------------.
+ * | Ctrl | Alt | GUI | | | | | | F7 | F8 | F9 | F10 |
+ * | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | Shift | | | | | F4 | F5 | F6 | F11 |
+ * | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | F1 | F2 | F3 | F12 |
+ * | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | f() | f() | | | |
+ * | | | | | | | |Function|Function| | | |
+ * `--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+*/
+[_FUNCTION] = LAYOUT_planck_grid(
+ KC_LCTL, KC_LALT, KC_LGUI, _______, _______, _______, _______, KC_F13, KC_F7, KC_F8, KC_F9, KC_F10,
+ _______, _______, _______, KC_LSFT, _______, _______, _______, KC_F14, KC_F4, KC_F5, KC_F6, KC_F11,
+ _______, _______, _______, _______, _______, _______, _______, KC_F15, KC_F1, KC_F2, KC_F3, KC_F12,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+ state = update_tri_layer_state(state, _SYMBOL, _THUMB, _FUNCTION);
+ state = update_tri_layer_state(state, _SYMBOL, _REGEX, _MOUSE);
+ return state;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case EMAIL:
+ if (record->event.pressed) {
+ SEND_STRING(MY_EMAIL);
+ }
+ return false;
+ break;
+ case ITERM:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LGUI(" "));
+ SEND_STRING("iterm" SS_TAP(X_ENTER));
+ }
+ return false;
+ break;
+ case TYPE_FU:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LGUI(" "));
+ SEND_STRING("type fu" SS_TAP(X_ENTER));
+ }
+ return false;
+ break;
+ case VIM:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LGUI(" "));
+ SEND_STRING("macvim.app" SS_TAP(X_ENTER));
+ }
+ return false;
+ break;
+ case VS_CODE:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LGUI(" "));
+ SEND_STRING("visual studio code" SS_TAP(X_ENTER));
+ }
+ return false;
+ break;
+ case EMOJI:
+ if (record->event.pressed) {
+ register_code(KC_LGUI);
+ register_code(KC_LCTL);
+ register_code(KC_SPC);
+ unregister_code(KC_LGUI);
+ unregister_code(KC_LCTL);
+ unregister_code(KC_SPC);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+void matrix_init_user(void) {
+ set_unicode_input_mode(UC_OSX);
+}
diff --git a/keyboards/planck/keymaps/snowkuma/my_strings.h b/keyboards/planck/keymaps/snowkuma/my_strings.h
new file mode 100644
index 000000000..4e2ee6f77
--- /dev/null
+++ b/keyboards/planck/keymaps/snowkuma/my_strings.h
@@ -0,0 +1,4 @@
+// Email address
+#define MY_EMAIL "myname@email.com"
+// Canned responses
+#define CANNED_1 "A canned response / template for emails."
diff --git a/keyboards/planck/keymaps/snowkuma/readme.md b/keyboards/planck/keymaps/snowkuma/readme.md
new file mode 100644
index 000000000..b1d5ff9c9
--- /dev/null
+++ b/keyboards/planck/keymaps/snowkuma/readme.md
@@ -0,0 +1,14 @@
+# Snowkuma's Planck Layout v.0.1
+
+Wide colemak planck layout. Heavily influenced by the ideas of sdothum and his blog.
+
+Aims to minimize key usage to minimal set and have hands in a comfortable position.
+
+![Colemak](https://i.imgur.com/4B3HdCE.png)
+![Symbol](https://i.imgur.com/WYxIJqv.png)
+![Regex](https://i.imgur.com/PxTCT6P.png)
+![Number](https://i.imgur.com/NzhW26R.png)
+![Arrange](https://i.imgur.com/BlTJjyW.png)
+![Shortcuts](https://i.imgur.com/p2ooSrC.png)
+![Function](https://i.imgur.com/U1F5J3R.png)
+![Mouse](https://i.imgur.com/nCHabXV.png)
diff --git a/keyboards/planck/keymaps/snowkuma/rules.mk b/keyboards/planck/keymaps/snowkuma/rules.mk
new file mode 100644
index 000000000..4a172d286
--- /dev/null
+++ b/keyboards/planck/keymaps/snowkuma/rules.mk
@@ -0,0 +1,19 @@
+SRC += muse.c
+
+AUDIO_ENABLE = yes
+BACKLIGHT_ENABLE = no
+BLUETOOTH_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMBO_ENABLE = no
+COMMAND_ENABLE = no
+CONSOLE_ENABLE = no
+EXTRAKEY_ENABLE = yes
+LEADER_ENABLE = yes
+MIDI_ENABLE = no
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes # nkey rollover
+RGBLIGHT_ENABLE = no
+SLEEP_LED_ENABLE = no
+STENO_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+UNICODE_ENABLE = yes
diff --git a/keyboards/planck/keymaps/vaire/rules.mk b/keyboards/planck/keymaps/vaire/rules.mk
index 22e4bd934..f9dfeb726 100644
--- a/keyboards/planck/keymaps/vaire/rules.mk
+++ b/keyboards/planck/keymaps/vaire/rules.mk
@@ -1,5 +1,4 @@
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
diff --git a/keyboards/planck/keymaps/yttyx/config.h b/keyboards/planck/keymaps/yttyx/config.h
new file mode 100644
index 000000000..88d0c07e9
--- /dev/null
+++ b/keyboards/planck/keymaps/yttyx/config.h
@@ -0,0 +1,5 @@
+#pragma once
+#define NO_ACTION_ONESHOT
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/planck/keymaps/yttyx/keymap.c b/keyboards/planck/keymaps/yttyx/keymap.c
new file mode 100644
index 000000000..0fcbae892
--- /dev/null
+++ b/keyboards/planck/keymaps/yttyx/keymap.c
@@ -0,0 +1,146 @@
+
+#include QMK_KEYBOARD_H
+#include <keymap_steno.h>
+
+enum planck_layers {
+ _BA, // Base (Balance Twelve mirror variant)
+ _PL, // Plover (http://opensteno.org)
+ _NP, // Numeric/punctuation
+ _FC // Function/cursor
+};
+
+enum planck_keycodes {
+ BA = SAFE_RANGE,
+ PL
+};
+
+
+// Abbreviations
+#define KX_SFT_Z MT(MOD_LSFT, KC_Z)
+#define KX_SFT_X MT(MOD_RSFT, KC_X)
+#define LT_ESC_FC LT(_FC, KC_ESC)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BA
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | P | L | C | D | W | | | U | O | Y | K | Q |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | N | R | S | T | M | | BS | A | E | I | H | V |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Z Sft | J | F | G | B | | Ent | ' @ | , < | . > | X Sft | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Ctl | Alt | Sup | NP | Spc | Esc/FC | Sft | Sft | Sup | Alt | Ctl | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+ */
+ [_BA] = LAYOUT_planck_grid(
+ KC_P, KC_L, KC_C, KC_D, KC_W, XXXXXXX, XXXXXXX, KC_U, KC_O, KC_Y, KC_K, KC_Q,
+ KC_N, KC_R, KC_S, KC_T, KC_M, XXXXXXX, KC_BSPC, KC_A, KC_E, KC_I, KC_H, KC_V,
+ KX_SFT_Z, KC_J, KC_F, KC_G, KC_B, XXXXXXX, KC_ENT, KC_QUOT, KC_COMM, KC_DOT, KX_SFT_X, XXXXXXX,
+ KC_LCTL, KC_LALT, KC_LGUI, MO(_NP), KC_SPC, LT_ESC_FC, KC_LSFT, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, XXXXXXX
+ ),
+
+ /* Plover
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | # | # | # | # | # | BA | # | # | # | # | # | # |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | S | T | P | H | * | | * | F | P | L | T | D |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | S | K | W | R | * | | * | R | B | G | S | Z |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | | | | A | O | | E | U | | | | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+ */
+ [_PL] = LAYOUT_planck_grid(
+ STN_NUM, STN_NUM, STN_NUM, STN_NUM, STN_NUM, BA, STN_NUM, STN_NUM, STN_NUM, STN_NUM, STN_NUM, STN_NUM,
+ STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, XXXXXXX, STN_ST1, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
+ STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, XXXXXXX, STN_ST2, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
+ XXXXXXX, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, STN_E, STN_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+
+ /* Numeric/punctuation
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | 1 ! | 2 " | 3 £ | 4 $ | 5 % | PL | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Tab | Ctl-X | Ctl-C | Ctl-V | Ctl-Z | | BS | [ { | ] } | - _ | ; : | \ | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Sft | | | Del | Ins | | | / ? | = + | # ~ | ` | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Ctl | Alt | Sup | NP | Spc | | Sft | Sft | Sup | Alt | Ctl | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+ */
+ [_NP] = LAYOUT_planck_grid(
+ KC_1, KC_2, KC_3, KC_4, KC_5, PL, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, C(KC_X), C(KC_C), C(KC_V), C(KC_Z), XXXXXXX, _______, KC_LBRC, KC_RBRC, KC_MINS, KC_SCLN, KC_NUBS,
+ KC_LSFT, XXXXXXX, XXXXXXX, KC_DEL, KC_INS, XXXXXXX, XXXXXXX, KC_SLSH, KC_EQL, KC_NUHS, KC_GRV, XXXXXXX,
+ _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, XXXXXXX
+ ),
+
+ /* Function/cursor
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | F1 | F2 | F3 | F4 | F5 | | | Home | Up | End | PgUp | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | F6 | F7 | F8 | F9 | F10 | | | Left | Down | Right | PgDn | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Sft | | | F11 | F12 | | | PScr | Break | ScLk | Caps | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Ctl | Alt | Sup | | Spc | | Sft | Sft | Sup | Alt | Ctl | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+ */
+ [_FC] = LAYOUT_planck_grid(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX,
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_PSCR, KC_BRK, KC_SLCK, KC_CAPS, XXXXXXX,
+ _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, XXXXXXX
+ )
+
+};
+
+
+#ifdef AUDIO_ENABLE
+ float plover_on[][2] = SONG(PLOVER_SOUND);
+ float plover_off[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case PL:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_on);
+ #endif
+
+ layer_off(_NP);
+ layer_off(_FC);
+ layer_on(_PL);
+
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return false;
+ case BA:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_off);
+ #endif
+
+ layer_off(_NP);
+ layer_off(_PL);
+ layer_off(_FC);
+ }
+ return false;
+ }
+ return true;
+}
+
+void matrix_init_user() {
+ steno_set_mode(STENO_MODE_GEMINI);
+}
+
diff --git a/keyboards/planck/keymaps/yttyx/readme.md b/keyboards/planck/keymaps/yttyx/readme.md
new file mode 100644
index 000000000..6661c3170
--- /dev/null
+++ b/keyboards/planck/keymaps/yttyx/readme.md
@@ -0,0 +1,68 @@
+# Overview
+
+* Base layer uses the Balance Twelve layout ([reference](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/))
+* Plover layer uses the same home position as the base layer ([reference](http://www.openstenoproject.org/))
+
+## To build
+
+```
+make planck/rev6:yttyx
+```
+
+## To build and flash
+
+```
+make planck/rev6:yttyx:dfu-util
+```
+
+## Layers
+
+### Base
+
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | P | L | C | D | W | | | U | O | Y | K | Q |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | N | R | S | T | M | | BS | A | E | I | H | V |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Z Sft | J | F | G | B | | Ent | ' @ | , < | . > | X Sft | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Ctl | Alt | Sup | NP | Spc | Esc/FC | Sft | Sft | Sup | Alt | Ctl | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+
+### Plover
+
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | # | # | # | # | # | BA | # | # | # | # | # | # |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | S | T | P | H | * | | * | F | P | L | T | D |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | S | K | W | R | * | | * | R | B | G | S | Z |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | | | | A | O | | E | U | | | | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+
+### Numeric/Punctuation
+
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | 1 ! | 2 " | 3 £ | 4 $ | 5 % | PL | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Tab | Ctl-X | Ctl-C | Ctl-V | Ctl-Z | | BS | [ { | ] } | - _ | ; : | \ | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Sft | | | Del | Ins | | | / ? | = + | # ~ | ` | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Ctl | Alt | Sup | NP | Spc | | Sft | Sft | Sup | Alt | Ctl | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+
+### Function
+
+ .--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.--------.
+ | F1 | F2 | F3 | F4 | F5 | | | Home | Up | End | PgUp | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | F6 | F7 | F8 | F9 | F10 | | | Left | Down | Right | PgDn | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Sft | | | F11 | F12 | | | PScr | Break | ScLk | Caps | |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | Ctl | Alt | Sup | | Spc | | Sft | Sft | Sup | Alt | Ctl | |
+ '--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'--------'
+
+
diff --git a/keyboards/planck/keymaps/yttyx/rules.mk b/keyboards/planck/keymaps/yttyx/rules.mk
new file mode 100644
index 000000000..27dac6d4d
--- /dev/null
+++ b/keyboards/planck/keymaps/yttyx/rules.mk
@@ -0,0 +1,11 @@
+# Build Options
+AUDIO_ENABLE = yes
+CONSOLE_ENABLE = no
+EXTRAKEY_ENABLE = no
+MIDI_ENABLE = no
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+RGBLIGHT_ENABLE = no
+STENO_ENABLE = yes
+VIRTSER_ENABLE = yes
+