From 27d24faf396367d9f8fadd86324e584b5403d261 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Thu, 28 Apr 2016 23:10:40 -0400
Subject: adds condition to one last audio ref in planck default

---
 keyboard/planck/keymaps/default/keymap.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index fa9c3915a8..e120d358a4 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -325,7 +325,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             layer_off(_LOWER);
             layer_off(_ADJUST);
             layer_off(_MUSIC);
-            stop_all_notes();
+            #ifdef AUDIO_ENABLE
+              stop_all_notes();
+            #endif
             layer_on(_PLOVER);
             if (!eeconfig_is_enabled()) {
                 eeconfig_init();
-- 
cgit v1.2.3


From 66e0323881a5a3da65e14daeec41a1e9cfbda431 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Fri, 29 Apr 2016 12:42:55 -0400
Subject: removes extra voices, updates .hex files

---
 keyboard/planck/keymaps/default/keymap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index e120d358a4..e7a9ea9e4c 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -365,7 +365,7 @@ void play_goodbye_tone()
 }
 
 uint8_t starting_note = 0x0C;
-int offset = 7;
+int offset = 0;
 
 void process_action_user(keyrecord_t *record) {
 
-- 
cgit v1.2.3


From 9ab7098c834ffe601ad5c39759acfddabbd6373f Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Fri, 29 Apr 2016 21:21:08 -0400
Subject: fixes plover start sound

---
 keyboard/planck/keymaps/default/keymap.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index e7a9ea9e4c..ac4937b69e 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -319,15 +319,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
         case 12:
           if (record->event.pressed) {
             #ifdef AUDIO_ENABLE
+              stop_all_notes();
               PLAY_NOTE_ARRAY(tone_plover, false, 0);
             #endif
             layer_off(_RAISE);
             layer_off(_LOWER);
             layer_off(_ADJUST);
             layer_off(_MUSIC);
-            #ifdef AUDIO_ENABLE
-              stop_all_notes();
-            #endif
             layer_on(_PLOVER);
             if (!eeconfig_is_enabled()) {
                 eeconfig_init();
-- 
cgit v1.2.3


From 83e1cc241e3aabd69f6cdcd2581477d4b85bb8d3 Mon Sep 17 00:00:00 2001
From: IBNobody <IBNobody@users.noreply.github.com>
Date: Tue, 3 May 2016 12:56:40 -0500
Subject: Clarified audio.c (#302)

* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs
---
 keyboard/planck/keymaps/pvc/config.h    | 2 +-
 keyboard/planck/keymaps/pvc/keymap.c    | 4 ++--
 keyboard/planck/keymaps/pvc/makefile.mk | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/pvc/config.h b/keyboard/planck/keymaps/pvc/config.h
index 7d64f09773..d435cc795c 100644
--- a/keyboard/planck/keymaps/pvc/config.h
+++ b/keyboard/planck/keymaps/pvc/config.h
@@ -73,7 +73,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* disable debug print */
-//#define NO_DEBUG
+#define NO_DEBUG
 
 /* disable print */
 //#define NO_PRINT
diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c
index 27850b2154..830b00a4c4 100644
--- a/keyboard/planck/keymaps/pvc/keymap.c
+++ b/keyboard/planck/keymaps/pvc/keymap.c
@@ -96,7 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
  [LAYER_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_BSPC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT  },
+  { 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_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  KC_SPC,  M_LOWER, KC_UP,   KC_DOWN, KC_LEFT, KC_RGHT  },
  },
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
  [LAYER_COLEMAK]      = { /* COLEMAK */
   { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_ESC   },
-  { KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT  },
+  { KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT  },
   { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT   },
   { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  KC_SPC,  M_LOWER, KC_UP,   KC_DOWN, KC_LEFT, KC_RGHT  },
  },
diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk
index 4b9e34c53f..b3f1b9e51c 100644
--- a/keyboard/planck/keymaps/pvc/makefile.mk
+++ b/keyboard/planck/keymaps/pvc/makefile.mk
@@ -4,6 +4,7 @@ EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
 CONSOLE_ENABLE   = yes # 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 = no  # Enable keyboard backlight functionality
 MIDI_ENABLE      = no  # MIDI controls
 AUDIO_ENABLE     = no  # Audio output on port C6
 UNICODE_ENABLE   = no  # Unicode
@@ -13,4 +14,4 @@ RGBLIGHT_ENABLE  = no  # Enable WS2812 RGB underlight.  Do not enable this with
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
 
-CONFIG_H = keymaps/$(KEYMAP)/config.h
+CONFIG_H = keymaps/$(KEYMAP)/config.h
\ No newline at end of file
-- 
cgit v1.2.3


From 3f02637f4dd765803671c2611191beb096d60b36 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Mon, 9 May 2016 13:17:15 -0400
Subject: Backlight Breathing for Planck and Atomic

* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs

* Usability tweaks

* TWEAE

* nightly

added extra kcs to keymap common

* turned on Plank audio

* Added backlight breathing to atomic

* reverted accidental merge

* adds backlight pulse to planck
---
 keyboard/planck/keymaps/experimental/README.md   |   2 +
 keyboard/planck/keymaps/experimental/keymap.c    | 383 +++++++++++++++++++++++
 keyboard/planck/keymaps/experimental/makefile.mk |   2 +
 keyboard/planck/keymaps/pvc/keymap.c             |  13 +-
 keyboard/planck/keymaps/pvc/makefile.mk          |   6 +-
 5 files changed, 402 insertions(+), 4 deletions(-)
 create mode 100644 keyboard/planck/keymaps/experimental/README.md
 create mode 100644 keyboard/planck/keymaps/experimental/keymap.c
 create mode 100644 keyboard/planck/keymaps/experimental/makefile.mk

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/experimental/README.md b/keyboard/planck/keymaps/experimental/README.md
new file mode 100644
index 0000000000..de9680b498
--- /dev/null
+++ b/keyboard/planck/keymaps/experimental/README.md
@@ -0,0 +1,2 @@
+# The Default Planck Layout
+
diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c
new file mode 100644
index 0000000000..fc3ac4a97e
--- /dev/null
+++ b/keyboard/planck/keymaps/experimental/keymap.c
@@ -0,0 +1,383 @@
+// 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.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _MUSIC 5
+#define _PLOVER 6
+#define _ADJUST 16
+
+// Macro name shortcuts
+#define QWERTY M(_QWERTY)
+#define COLEMAK M(_COLEMAK)
+#define DVORAK M(_DVORAK)
+#define LOWER M(_LOWER)
+#define RAISE M(_RAISE)
+#define M_BL 5
+#define AUD_OFF M(6)
+#define AUD_ON M(7)
+#define MUS_OFF M(8)
+#define MUS_ON M(9)
+#define VC_IN M(10)
+#define VC_DE M(11)
+#define PLOVER M(12)
+#define EXT_PLV M(13)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+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 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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, 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 },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* 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 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* 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 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = {
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* 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 |      |      |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Music (reserved for process_action_user)
+ *
+ */
+[_MUSIC] = {
+  {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, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER,   XXXXXXX, XXXXXXX, RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* 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  |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_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   },
+  {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
+  {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover|      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Mus on|Musoff|      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+  {_______, _______, _______, AUD_ON,  AUD_OFF, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
+  {_______, VC_DE,   VC_IN,   MUS_ON,  MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = {
+  {440.0*pow(2.0,(31)/12.0), 12},
+  {440.0*pow(2.0,(28)/12.0), 8},
+  {440.0*pow(2.0,(19)/12.0), 8},
+  {440.0*pow(2.0,(24)/12.0), 8},
+  {440.0*pow(2.0,(28)/12.0), 20}
+};
+
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+float tone_plover[][2]     = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
+
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+float goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _QWERTY:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_QWERTY);
+          }
+          break;
+        case _COLEMAK:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_COLEMAK);
+          }
+          break;
+        case _DVORAK:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_DVORAK);
+          }
+          break;
+        case _LOWER:
+          if (record->event.pressed) {
+            layer_on(_LOWER);
+                breathing_speed_set(2);
+                breathing_pulse();
+            update_tri_layer(_LOWER, _RAISE, _ADJUST);
+          } else {
+            layer_off(_LOWER);
+            update_tri_layer(_LOWER, _RAISE, _ADJUST);
+          }
+          break;
+        case _RAISE:
+          if (record->event.pressed) {
+            layer_on(_RAISE);
+                breathing_speed_set(2);
+                breathing_pulse();
+            update_tri_layer(_LOWER, _RAISE, _ADJUST);
+          } else {
+            layer_off(_RAISE);
+            update_tri_layer(_LOWER, _RAISE, _ADJUST);
+          }
+          break;
+        case M_BL:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+        case 6:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              audio_off();
+            #endif
+          }
+        break;
+        case 7:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              audio_on();
+              PLAY_NOTE_ARRAY(tone_startup, false, 0);
+            #endif
+          }
+        break;
+        case 8:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              layer_off(_MUSIC);
+              stop_all_notes();
+            #endif
+          }
+        break;
+        case 9:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(music_scale, false, 0);
+              layer_on(_MUSIC);
+            #endif
+          }
+        break;
+        case 10:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              voice_iterate();
+              PLAY_NOTE_ARRAY(music_scale, false, 0);
+            #endif
+          }
+        break;
+        case 11:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              voice_deiterate();
+              PLAY_NOTE_ARRAY(music_scale, false, 0);
+            #endif
+          }
+        break;
+        case 12:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              stop_all_notes();
+              PLAY_NOTE_ARRAY(tone_plover, false, 0);
+            #endif
+            layer_off(_RAISE);
+            layer_off(_LOWER);
+            layer_off(_ADJUST);
+            layer_off(_MUSIC);
+            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);
+          }
+        break;
+        case 13:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
+            #endif
+            layer_off(_PLOVER);
+          }
+        break;
+
+      }
+    return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+  #ifdef AUDIO_ENABLE
+    _delay_ms(20); // stops the tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+  #endif
+}
+
+#ifdef AUDIO_ENABLE
+void play_goodbye_tone()
+{
+  PLAY_NOTE_ARRAY(goodbye, false, 0);
+  _delay_ms(150);
+}
+
+uint8_t starting_note = 0x0C;
+int offset = 0;
+
+void process_action_user(keyrecord_t *record) {
+
+  if (IS_LAYER_ON(_MUSIC)) {
+    if (record->event.pressed) {
+        play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
+    } else {
+        stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+    }
+  }
+
+}
+#endif
diff --git a/keyboard/planck/keymaps/experimental/makefile.mk b/keyboard/planck/keymaps/experimental/makefile.mk
new file mode 100644
index 0000000000..99fbfbd0bb
--- /dev/null
+++ b/keyboard/planck/keymaps/experimental/makefile.mk
@@ -0,0 +1,2 @@
+AUDIO_ENABLE = yes
+NKRO_ENABLE = yes
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c
index 830b00a4c4..177f04484d 100644
--- a/keyboard/planck/keymaps/pvc/keymap.c
+++ b/keyboard/planck/keymaps/pvc/keymap.c
@@ -38,6 +38,7 @@
 #define MACRO_AUDIO_OFF     17
 #define MACRO_INC_VOICE     18
 #define MACRO_DEC_VOICE     19
+#define MACRO_BACKLIGHT     20
 
 #define M_QWRTY             M(MACRO_QWERTY)
 #define M_COLMK             M(MACRO_COLEMAK)
@@ -53,6 +54,7 @@
 #define TMPO_UP             M(MACRO_TEMPO_U)
 #define TMPO_DN             M(MACRO_TEMPO_D)
 #define TMPO_DF             M(MACRO_TONE_DEFAULT)
+#define M_BACKL             M(MACRO_BACKLIGHT)
 
 
 #define MUS_ON              M(MACRO_MUSIC_ON)
@@ -217,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [LAYER_ADJUST]       = { /* ADJUST */
   { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON,  MUS_OFF, AUD_ON,  AUD_OFF  },
   { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______  },
-  { _______, _______, _______, _______, _______, RESET,   _______, M_MOUSE, _______, _______, _______, _______  },
+  { _______, _______, _______, _______, M_BACKL, RESET,   _______, M_MOUSE, _______, _______, _______, _______  },
   { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP,   VC_DOWN, _______, _______  },
  },
 
@@ -337,6 +339,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             }
             break;
 
+
+#ifdef BACKLIGHT_ENABLE
+		case MACRO_BACKLIGHT:
+			if (record->event.pressed)
+			{
+				backlight_step();
+			}
+#endif
+
 #ifdef MOUSEKEY_ENABLE
 
         case MACRO_MOUSE:
diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk
index b3f1b9e51c..f7798b09d5 100644
--- a/keyboard/planck/keymaps/pvc/makefile.mk
+++ b/keyboard/planck/keymaps/pvc/makefile.mk
@@ -1,12 +1,12 @@
 BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
 MOUSEKEY_ENABLE  = yes # Mouse keys(+4700)
 EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
-CONSOLE_ENABLE   = yes # Console for debug(+400)
+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 = no  # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
 MIDI_ENABLE      = no  # MIDI controls
-AUDIO_ENABLE     = no  # Audio output on port C6
+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 this with audio at the same time.
-- 
cgit v1.2.3


From 69f05e1afd2e046938209e00db62d18efead4932 Mon Sep 17 00:00:00 2001
From: cwhits <cwhits@users.noreply.github.com>
Date: Thu, 12 May 2016 15:08:53 -0400
Subject: [planck] adds button for toggling output in plover app (#323)

* [planck] toggle plover output in app when toggling plover layer on keyboard

* [planck] moved plover toggle to separate key

* [planck] renamed toggle button
---
 keyboard/planck/keymaps/default/keymap.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index ac4937b69e..56f20a3b99 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -38,6 +38,7 @@ extern keymap_config_t keymap_config;
 #define VC_DE M(11)
 #define PLOVER M(12)
 #define EXT_PLV M(13)
+#define TOG_OUT M(14)
 
 // Fillers to make layering more clear
 #define _______ KC_TRNS
@@ -151,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
+ * |TogOut|   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
  * `-----------------------------------------------------------------------------------'
@@ -160,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_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   },
   {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
-  {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {TOG_OUT, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
   {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
 },
 
@@ -343,7 +344,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             layer_off(_PLOVER);
           }
         break;
-
+        case 14:
+          if (record->event.pressed) {
+            return MACRO( D(E), D(R), D(F), D(V), D(O), D(L), U(E), U(R), U(F), U(V), U(O), U(L), END );
+          }
+        break;
       }
     return MACRO_NONE;
 };
-- 
cgit v1.2.3


From c7d2c79d34501480147f8aa6221e1d46ce473af6 Mon Sep 17 00:00:00 2001
From: Jacob Bilger <bilger.jacob@gmail.com>
Date: Sat, 14 May 2016 21:11:33 -0400
Subject: adds Bilger321's planck keymap

---
 keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG |  Bin 0 -> 17292 bytes
 keyboard/planck/keymaps/Jacob/keymap.c            |   56 +
 keyboard/planck/keymaps/Jacob/planck.hex          | 1151 +++++++++++++++++++++
 keyboard/planck/keymaps/Jacob/readme.md           |    1 +
 4 files changed, 1208 insertions(+)
 create mode 100644 keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG
 create mode 100644 keyboard/planck/keymaps/Jacob/keymap.c
 create mode 100644 keyboard/planck/keymaps/Jacob/planck.hex
 create mode 100644 keyboard/planck/keymaps/Jacob/readme.md

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG b/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG
new file mode 100644
index 0000000000..40f0b89429
Binary files /dev/null and b/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG differ
diff --git a/keyboard/planck/keymaps/Jacob/keymap.c b/keyboard/planck/keymaps/Jacob/keymap.c
new file mode 100644
index 0000000000..5e6e8498e2
--- /dev/null
+++ b/keyboard/planck/keymaps/Jacob/keymap.c
@@ -0,0 +1,56 @@
+#include "planck.h"
+#include "action_layer.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+//Simple Keymap where CTRL, WINKEY, and ALT keys are placed in a more familiar location for Windows users. 
+//Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck.
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+#define _QW 0
+#define _LW 1
+#define _RS 2
+
+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, KC_QUOT},
+    {KC_LSFT, KC_Z,    KC_X,    KC_C,   KC_V,    KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, MT(MOD_RSFT, KC_ENT)},
+    {KC_LCTL, KC_LGUI, KC_LALT, M(0),   MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  },
+  [_RS] = { /* RAISE */
+    {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL },
+    {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+    {KC_TRNS, 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}
+  },
+  [_LW] = { /* LOWER */
+    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS},
+    {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 uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+        #ifdef BACKLIGHT_ENABLE
+          backlight_step();
+        #endif
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/Jacob/planck.hex b/keyboard/planck/keymaps/Jacob/planck.hex
new file mode 100644
index 0000000000..3ea701202c
--- /dev/null
+++ b/keyboard/planck/keymaps/Jacob/planck.hex
@@ -0,0 +1,1151 @@
+:100000000C94A8010C94EC010C94EC010C94EC0100
+:100010000C94EC010C94EC010C94EC010C94EC01AC
+:100020000C94EC010C94EC010C94410D0C94050D16
+:100030000C94C11B0C94EC010C94EC010C94EC019D
+:100040000C94EC010C94EC010C94EC010C94EC017C
+:100050000C94EC010C94841C0C94EC010C94EC01B9
+:100060000C94EC010C94EC010C94EC010C94EC015C
+:100070000C94EC010C94EC010C94EC010C94EC014C
+:100080000C94EC010C94EC010C94EC010C94EC013C
+:100090000C94EC010C94EC010C94EC010C94EC012C
+:1000A0000C94EC010C94EC010C94EC012B0014006A
+:1000B0001A000800150017001C0018000C001200A0
+:1000C00013002A00290004001600070009000A0096
+:1000D0000B000D000E000F0033003400E1001D0086
+:1000E0001B00060019000500110010003600370043
+:1000F00038002872E000E300E200003001522C00DA
+:100100002C0002525000510052004F0035021E02D6
+:100110001F022002210222022302240225022602BB
+:1001200027024C0001000100010001000100010054
+:1001300001002D022E022F023002310201000100C7
+:1001400001000100010001000100010001002F0079
+:100150003000010001000100010001000100010068
+:1001600001000100010001000100010035001E0036
+:100170001F0020002100220023002400250026006B
+:1001800027004C0001003A003B003C003D003E00CF
+:100190003F002D002E002F003000310001004000F4
+:1001A00041004200430044004500010001000100FD
+:1001B0000100010001000100010001000100010037
+:1001C0000100010001000100010001000501090614
+:1001D000A101050719E029E715002501950875011A
+:1001E0008102950175088101050819012905950508
+:1001F000750191029501750391010507190029FF09
+:10020000150025FF950675088100C005010902A1AA
+:10021000010901A10005091901290515002501950C
+:1002200005750181029501750381010501093009F8
+:10023000311581257F9502750881060938158125BC
+:100240007F950175088106050C0A38021581257F06
+:10025000950175088106C0C005010980A1018502CC
+:1002600016010026B7001A01002AB7007510950183
+:100270008100C0050C0901A1018503160100269C1F
+:10028000021A01002A9C02751095018100C012011A
+:10029000100100000008EDFE606001000102000195
+:1002A00009025400030100A0FA090400000103013F
+:1002B0000100092111010001223F00070581030807
+:1002C000000A0904010001030102000921110100D3
+:1002D00001224D000705820308000A0904020001FB
+:1002E00003000000092111010001223600070583E7
+:1002F0000308000A040309042C034F007200740071
+:1003000068006F006C0069006E006500610072009B
+:1003100020004B006500790062006F0061007200F0
+:10032000640073000000280354006800650020008A
+:1003300050006C0061006E0063006B0020004B00F9
+:100340006500790062006F006100720064000000C7
+:1003500011241FBECFEFDAE0DEBFCDBF04B603FE2F
+:1003600024C08091ED019091EE01A091EF01B09138
+:10037000F0018750904BA740B04BB9F41092ED01BB
+:100380001092EE011092EF011092F00114BE84B7AA
+:10039000877F84BF88E10FB6F89480936000109245
+:1003A00060000FBEE0E0F8E3099511E0A0E0B1E0E5
+:1003B000EAE7F7E402C005900D92A435B107D9F73A
+:1003C00011E0A4E5B1E001C01D92AD3EB107E1F737
+:1003D0000E9441090C94BB230C940000FC0166238D
+:1003E00061F48281882331F085EE0E947D110E94A4
+:1003F000BC2103C085EE0E942A1180E090E00895A0
+:1004000008950895089508950E94010208950E9494
+:10041000020208950E940302089584E0809355012A
+:1004200008950E949C2123E030E0281B3109220F0F
+:10043000331F2093540108950E9411020E940D025F
+:10044000109256010895982F2F98882351F4809187
+:100450008000877F8093800010928D0010928C0026
+:1004600020C0833041F480918000886080938000B8
+:100470008FEF9FEF12C08091800088608093800092
+:1004800023E030E0291B3109220F331F8FEF9FEF4C
+:1004900002C0969587952A95E2F790938D008093F8
+:1004A0008C000E9411020895279A2F988FEF9FEFDA
+:1004B00090938700809386008AE08093800089E192
+:1004C000809381000E942A220E941C0208950E94AB
+:1004D00054026E9A769A0E94000208950895E62FBB
+:1004E000F0E0EE0FFF1F98E1799F90011124E20FD9
+:1004F000F31F90E6899FC0011124E80FF91FE4550E
+:10050000FF4F25913491C9010895FC01EE0FFF1FA3
+:10051000E45BFF4F25913491C9010895FC01EE0F72
+:10052000FF1FE453FE4F25913491C9010895CF93E5
+:10053000DF93EC0180E4C030D807A0F590E3C03031
+:10054000D90708F005C1C83ED105E8F4C03ED10581
+:1005500008F069C0C83AD10588F4C53AD10508F059
+:1005600064C0C130D10509F4E8C0C130D10508F438
+:1005700014C2C430D10508F410C255C0CB3BD1051C
+:1005800008F00BC261C080E2C030D80708F0DBC0C1
+:1005900091E0C030D90708F0D3C0C03FD10508F4BE
+:1005A000FCC1C8C080E5C130D80709F4F4C090E5AB
+:1005B000C230D907F0F480E4C131D80709F4D4C0BF
+:1005C00090E4C231D90730F480E4C031D80708F490
+:1005D000C3C0C7C090E4C331D90709F4CBC080E4DD
+:1005E000C331D80708F4C3C0C050D04509F0D5C105
+:1005F000C4C080E6C030D80730F491E5C030D907D8
+:1006000008F05EC1CEC080E7C030D80708F4C5C18D
+:1006100090E8C030D90708F4B8C180E9C030D807E5
+:1006200008F0BBC1B6C19E01BAC1C53AD10519F4E3
+:1006300081E890E47DC0C63AD10519F083E890E4E2
+:1006400077C082E890E474C0C83AD10519F482EE0C
+:1006500094E46EC0C93AD10519F489EE94E468C0F7
+:10066000CA3AD10519F48AEE94E462C0CB3AD105B6
+:1006700019F485EB94E45CC0CC3AD10519F486EB0F
+:1006800094E456C0CD3AD10519F487EB94E450C0F8
+:10069000C03BD10519F48CEC94E44AC0CE3AD105A4
+:1006A00019F48DEC94E444C0CF3AD10519F483E8F1
+:1006B00095E43EC0C13BD10519F48AE895E438C001
+:1006C000C23BD10519F482E995E432C0C33BD105A0
+:1006D00019F484E995E42CC0C43BD10519F481E2F6
+:1006E00096E426C0C53BD10519F483E296E420C008
+:1006F000C63BD10519F484E296E41AC0C73BD10584
+:1007000019F485E296E414C0C83BD10519F486E2D9
+:1007100096E40EC0C93BD10519F487E296E408C0FF
+:10072000CA3BD10519F080E094E402C08AE296E465
+:100730009C0135C19E01306532C121E030E02FC1FE
+:100740009E013F712CC1CE019F700E948E0228C174
+:100750009E013070306C23C19E012F703070346D5B
+:100760001EC120E031ED1BC120E030ED18C120E0BA
+:1007700032ED15C120E033ED12C10E94171184EC57
+:1007800099E020E931E0F9013197F1F70197D9F7C4
+:100790000E94A91C04C18091CD0181608093CD018C
+:1007A000FEC00E94051D882311F40E94101D0E94A6
+:1007B000F61C8093EB011092EC0190E5C230D90752
+:1007C00011F4816076C090E5C430D90711F48260DD
+:1007D00070C090E5C630D90711F484606AC090E516
+:1007E000C830D90711F4886064C090E5CA30D907D1
+:1007F00011F480615EC090E5CC30D90711F48062BD
+:1008000058C090E5CE30D90711F4806452C090E50D
+:10081000C031D90711F480684CC090E5C231D907C6
+:1008200011F48C6046C080E5C330D80721F4809174
+:10083000EB018E7F3EC090E5C530D90721F4809151
+:10084000EB018D7F36C080E5C730D80721F4809159
+:10085000EB018B7F2EC090E5C930D90721F4809140
+:10086000EB01877F26C080E5CB30D80721F480914B
+:10087000EB018F7E1EC090E5CD30D90721F4809129
+:10088000EB018F7D16C080E5CF30D80721F4809131
+:10089000EB018F7B0EC090E5C131D90721F4809127
+:1008A000EB018F7706C0C351D04529F48091EB014D
+:1008B000837F8093EB018091EB010E94EB1C6FC062
+:1008C0004D2F55274F70507041305105F9F49E015E
+:1008D000A4E0220F331FAA95E1F720703370CE01F8
+:1008E000F3E0880F991FFA95E1F780769070282B36
+:1008F000392B3C68C370D07002C0440F551FCA9595
+:10090000E2F74F715070242B352B49C0423051050E
+:1009100029F43C2F2227216F306A41C04330510512
+:1009200051F49E0173E0220F331F7A95E1F7207E88
+:1009300037703C680CC044305105B9F49E0163E047
+:10094000220F331F6A95E1F7207E37703A68C37033
+:10095000D07081E090E002C0880F991FCA95E2F73D
+:100960008F719070282B392B1AC04530510529F40E
+:100970003C2F2227246F306A12C04630510579F48B
+:10098000CF71D0703C2F222702C09E013F70306291
+:1009900006C09E013F70306A02C020E030E0C9010D
+:1009A000DF91CF9108950E946F02803E9105F0F48F
+:1009B000803C910588F58133910509F475C0823337
+:1009C000910548F48932910509F464C08A32910591
+:1009D00009F07BC06EC08933910509F18238910519
+:1009E000F1F08533910509F070C04FC0833E910549
+:1009F00061F1843E910540F4803E9105B9F0823E5C
+:100A0000910509F062C01CC0863E910551F1873EF8
+:100A1000910509F05AC02AC00E94850208952091CC
+:100A2000EB0120FD0AC021FD08C04CC08091EB0104
+:100A300080FF03C089E390E045C080EE90E042C0B3
+:100A40008091EB0182FD08C004C08091EB0182FF20
+:100A500003C082EE90E036C084FD11C083EE90E0CA
+:100A600031C08091EB0183FD08C004C08091EB018F
+:100A700083FF03C086EE90E025C084FF03C080E0C2
+:100A800090E020C087EE90E01DC08091EB0185FFD3
+:100A900005C007C08091EB0185FF03C085E390E0AE
+:100AA00011C089E290E00EC08091EB0186FF05C085
+:100AB00007C08091EB0186FF03C081E390E002C094
+:100AC0008AE290E00E94970208950E94970208959A
+:100AD0000E940A020895E82FF0E0EE0FFF1FE95A86
+:100AE000FE4F80819181089508954F925F926F9299
+:100AF0007F928F929F92AF92BF92CF92DF92EF92AE
+:100B0000FF920F931F93DF93CF93CDB7DEB7289754
+:100B10000FB6F894DEBF0FBECDBFAE014F5F5F4F83
+:100B200060E070E0EE24FF24CC24DD24AA24BB2462
+:100B3000882499242A0101E010E029E0622E712C1A
+:100B40006C0E7D1ED201E4E3F1E088E001900D928D
+:100B50008150E1F7FA01808191819C01207F307002
+:100B60002032310559F48F709070980102C0220F25
+:100B7000331F8A95E2F7622B732B37C02033310580
+:100B800059F48F709070F80102C0EE0FFF1F8A9524
+:100B9000E2F7EE2AFF2A29C02034310559F48F707C
+:100BA0009070980102C0220F331F8A95E2F7C22A83
+:100BB000D32A1BC02035310559F48F709070F8018D
+:100BC00002C0EE0FFF1F8A95E2F7AE2ABF2A0DC0C2
+:100BD0002036310551F48F709070980102C0220FB9
+:100BE000331F8A95E2F7822A932A4E5F5F4F46159C
+:100BF000570509F0A7CF24B1962F862F8095822321
+:100C000084B985B1982B95B927B19E2D8E2D8095ED
+:100C1000822387B988B1982B98B92AB19C2D8C2D45
+:100C2000809582238AB98BB1982B9BB92DB19A2DCF
+:100C30008A2D809582238DB98EB1982B9EB920B3D1
+:100C4000982D882D8095822380BB81B3982B91BBF2
+:100C500028960FB6F894DEBF0FBECDBFCF91DF91BF
+:100C60001F910F91FF90EF90DF90CF90BF90AF90CA
+:100C70009F908F907F906F905F904F9008954F92CC
+:100C80005F926F927F928F929F92AF92BF92CF921C
+:100C9000DF92EF92FF920F931F93DF93CF93CDB725
+:100CA000DEB768970FB6F894DEBF0FBECDBF85B72D
+:100CB000806885BF85B7806885BF0E947505AE01D5
+:100CC0004F5F5F4F60E070E0EE24FF24CC24DD2412
+:100CD000AA24BB24882499242A0101E010E039E1E8
+:100CE000632E712C6C0E7D1ED201ECE3F1E088E1E5
+:100CF00001900D928150E1F7FA01808191819C0170
+:100D0000207F30702032310559F48F709070980137
+:100D100002C0220F331F8A95E2F7622B732B37C074
+:100D20002033310559F48F709070F80102C0EE0F36
+:100D3000FF1F8A95E2F7EE2AFF2A29C020343105E9
+:100D400059F48F709070980102C0220F331F8A955A
+:100D5000E2F7C22AD32A1BC02035310559F48F701F
+:100D60009070F80102C0EE0FFF1F8A95E2F7AE2ADD
+:100D7000BF2A0DC02036310551F48F709070980154
+:100D800002C0220F331F8A95E2F7822A932A4E5F10
+:100D90005F4F4615570509F0A7CF24B1962F862F30
+:100DA0008095822384B985B1982B95B927B19E2D62
+:100DB0008E2D8095822387B988B1982B98B92AB156
+:100DC0009C2D8C2D809582238AB98BB1982B9BB951
+:100DD0002DB19A2D8A2D809582238DB98EB1982BB5
+:100DE0009EB920B3982D882D8095822380BB81B336
+:100DF000982B91BB80E090E0FC01E95AFE4F1182F4
+:100E00001082FC01E15AFE4F118210820296883056
+:100E1000910591F70E94670268960FB6F894DEBFBD
+:100E20000FBECDBFCF91DF911F910F91FF90EF903B
+:100E3000DF90CF90BF90AF909F908F907F906F90FA
+:100E40005F904F9008954F925F926F927F928F9232
+:100E50009F92AF92BF92CF92DF92EF92FF920F9349
+:100E60001F93DF93CF93CDB7DEB7A0970FB6F8945B
+:100E7000DEBF0FBECDBF909000016E010894C11C73
+:100E8000D11CEFE5AE2EE1E0BE2EC6015C2C892E12
+:100E900071E0E72EF12C60EA462E59E0652E712CA8
+:100EA0006C0E7D1E852D982DDC01E4E1F1E088E0DB
+:100EB00001900D928150E1F7F60120813181C90145
+:100EC000807F90708032910589F484B12F703070EA
+:100ED000A70102C0440F551F2A95E2F79A01842BFF
+:100EE00084B985B12095282325B94FC08033910559
+:100EF00089F487B12F703070F70102C0EE0FFF1F29
+:100F00002A95E2F79F018E2B87B988B12095282377
+:100F100028B93BC08034910589F48AB12F703070B4
+:100F2000A70102C0440F551F2A95E2F79A01842BAE
+:100F30008AB98BB1209528232BB927C0803591051C
+:100F400089F48DB12F703070F70102C0EE0FFF1FD2
+:100F50002A95E2F79F018E2B8DB98EB1209528231B
+:100F60002EB913C08036910581F480B32F70307094
+:100F7000A70102C0440F551F2A95E2F79A01842B5E
+:100F800080BB81B32095282321BB842D8A95F1F75E
+:100F9000830160E070E040E050E0D301ECE1F1E07B
+:100FA00088E101900D928150E1F7F80120813181B3
+:100FB000C901807F90708032910511F483B113C014
+:100FC0008033910511F486B10EC08034910511F47F
+:100FD00089B109C08035910511F48CB104C0803607
+:100FE0009105B9F48FB190E02F70307002C09595E3
+:100FF00087952A95E2F780FF03C080E090E007C064
+:10100000C701062E02C0880F991F0A94E2F7482BE9
+:10101000592B6F5F7F4F0E5F1F4F6C30710509F0CA
+:10102000BCCFF501808191818417950721F0518310
+:10103000408345E0942E0E94750542E050E0C40EC6
+:10104000D51EA40EB51EC614D70409F02BCF90925E
+:101050000001992059F1892D815080930001882346
+:1010600029F080EA9FE00197F1F720C080915F01AD
+:101070009091600190935801809357018091610194
+:101080009091620190935A0180935901809163017C
+:101090009091640190935C0180935B018091650164
+:1010A0009091660190935E0180935D010E9404021D
+:1010B00081E0A0960FB6F894DEBF0FBECDBFCF91F2
+:1010C000DF911F910F91FF90EF90DF90CF90BF9035
+:1010D000AF909F908F907F906F905F904F9008950A
+:1010E0001092E1010895089508958091680108958E
+:1010F000DF93CF9300D00F92CDB7DEB7AC018091D4
+:10110000E201843029F583E08093E9002FEF95ED2B
+:1011100005C0892F8A95F1F7222329F08091E800F4
+:10112000215085FFF6CF8091E80085FF11C05B83D9
+:101130004A8383E08983CE01019663E070E040E05A
+:1011400050E00E94A70B8091E8008E778093E80022
+:101150000F900F900F90CF91DF910895DF93CF9371
+:1011600000D00F92CDB7DEB7AC018091E2018430A0
+:1011700029F583E08093E9002FEF95ED05C0892FD5
+:101180008A95F1F7222329F08091E800215085FF0C
+:10119000F6CF8091E80085FF11C05B834A8382E02F
+:1011A0008983CE01019663E070E040E050E00E9448
+:1011B000A70B8091E8008E778093E8000F900F9046
+:1011C0000F90CF91DF910895AC018091E2018430BE
+:1011D00001F582E08093E9002FEF95ED05C0892F9E
+:1011E0008A95F1F7222329F08091E800215085FFAC
+:1011F000F6CF8091E80085FF0CC0CA0165E070E081
+:1012000040E050E00E94A70B8091E8008E77809329
+:10121000E80008950F931F93182F092F8091E20182
+:10122000843061F581E08093E9009FEF25ED05C0F2
+:10123000822F8A95F1F7992329F08091E800915047
+:1012400085FFF6CF8091E80085FF18C0812F902F91
+:1012500068E070E040E050E00E94A70B8091E80059
+:101260008E778093E800A9E6B1E0212F302FC901E5
+:10127000FC0188E001900D928150E1F71F910F91E0
+:10128000089584B7877F84BF88E10FB6F894809370
+:101290006000109260000FBE80E090E020E80FB682
+:1012A000F89420936100809361000FBE0E94F30FB9
+:1012B0000E94850C0E94E60C8091E200846080937D
+:1012C000E20078940E94840F0E94A81082E091E0CE
+:1012D0000E949A0F0CC00E94F61B8091E0018823A7
+:1012E00031F00E94221C882311F00E94BC0A8091D8
+:1012F000E201853081F30E94F90FF9CF8091E1017D
+:10130000882349F40E94850C0E94E60C8091E2003B
+:1013100084608093E20008958091E401833009F4B1
+:1013200055C0843030F4813071F0823009F0AFC0A4
+:1013300096C08A3009F483C08B3009F468C08930C4
+:1013400009F0A5C020C08091E301813A09F09FC057
+:101350008091E800877F8093E8008091E701909179
+:10136000E801892B21F489E691E068E003C080E080
+:1013700090E060E070E00E94D20A8091E8008B77F4
+:101380008093E80008958091E301813209F07FC0E5
+:101390008091E7019091E801892B09F078C0809154
+:1013A000E800877F8093E80005C08091E2018823F0
+:1013B00009F46DC08091E80082FFF7CF8091F100C1
+:1013C000809368018091E8008B771CC08091E301D5
+:1013D000813A09F05CC08091E7019091E801892B86
+:1013E00009F055C08091E800877F8093E8008091E4
+:1013F000E80080FFFCCF809101018093F100809193
+:10140000E8008E778093E8000E94320C0895809166
+:10141000E3018132E1F58091E7019091E801892BA8
+:10142000B1F58091E800877F8093E8000E94320C3C
+:101430008091E501809301010E9417110895809128
+:10144000E301813221F58091E800877F8093E800F5
+:101450000E94320C8091E60180936701089580918B
+:10146000E301813AA1F48091E800877F8093E8004E
+:101470008091E80080FFFCCF809167018093F100AC
+:101480008091E8008E778093E8000E94320C0895E6
+:1014900081E061EC42E00E94FA0B82E061EC42E004
+:1014A0000E94FA0B83E061EC42E00E94FA0B08957F
+:1014B0000E94EA1B0895DA019330C1F0943030F4B1
+:1014C000913051F0923009F04FC00BC0913221F1B0
+:1014D000923209F049C032C0EEE8F2E022E130E099
+:1014E00047C0E0EAF2E024E530E042C0813051F04C
+:1014F000813020F0823009F037C008C0E4EFF2E01C
+:10150000849107C0E8EFF2E0849103C0E6E2F3E0E3
+:101510008491282F30E02CC0613041F0613018F008
+:10152000623011F508C0E2EBF2E002C0EBECF2E051
+:1015300029E030E01DC0E4EEF2E0FACF613051F076
+:10154000613018F0623081F40AC0ECECF1E02FE376
+:1015500030E00EC0EBE0F2E02DE430E009C0E8E559
+:10156000F2E026E330E004C0E0E0F0E020E030E02C
+:10157000ED93FC93C901089580E189BD82E189BDA5
+:1015800009B400FEFDCF8091D8008F7D8093D800F4
+:101590008091E00082608093E0008091E00081FD16
+:1015A000FCCF08959C014091E9015091EA01461752
+:1015B000570718F4F90190E043C06115710511F067
+:1015C000AB01F8CF8091E8008E778093E80040E08F
+:1015D00050E0F0CF8091E201882309F447C08530C4
+:1015E00009F446C08091E80083FD44C08091E80082
+:1015F00082FD36C08091E80080FF22C08091F30018
+:101600009091F200782F60E0292F30E0262B372BC5
+:1016100007C081918093F100415050402F5F3F4FB0
+:101620004115510519F02830310598F390E0283024
+:10163000310509F491E08091E8008E778093E8000D
+:101640004115510539F6992329F60AC08091E20126
+:10165000882361F0853061F08091E80083FD0AC045
+:101660008091E80082FFF2CF80E0089582E0089543
+:1016700083E0089581E008959C014091E901509133
+:10168000EA014617570718F4F90190E044C06115C4
+:10169000710511F0AB01F8CF8091E8008E7780934F
+:1016A000E80040E050E0F0CF8091E201882309F4A7
+:1016B00048C0853009F447C08091E80083FD45C0EB
+:1016C0008091E80082FD37C08091E80080FF23C050
+:1016D0008091F3009091F200782F60E0292F30E0A4
+:1016E000262B372B08C084918093F100319641500E
+:1016F00050402F5F3F4F4115510519F028303105FB
+:1017000090F390E02830310509F491E08091E800F1
+:101710008E778093E8004115510531F6992321F623
+:101720000AC08091E201882361F0853061F08091E8
+:10173000E80083FD0AC08091E80082FFF2CF80E0DC
+:10174000089582E0089583E0089581E00895BF92AE
+:10175000CF92DF92EF92FF920F931F93CF93DF937D
+:10176000182F092F7B016A010E94530CB82E882381
+:10177000B1F5812F902F9C01E901C114D10439F0FA
+:10178000F60180819181E81AF90AC80FD91F00E09B
+:1017900010E022C08091E80085FD16C08091E8002D
+:1017A0008E778093E800C114D10449F0F60180815E
+:1017B0009181800F911F9183808385E011C00E94E9
+:1017C000530C882349F00CC089918093F100089450
+:1017D000E108F1080F5F1F4FE114F104D9F68B2DDA
+:1017E000DF91CF911F910F91FF90EF90DF90CF90FD
+:1017F000BF900895382F282F2EC0822F8F7080938E
+:10180000E900231721F4762F942F50E006C0709141
+:10181000EC009091ED005091F00091FF1BC0809181
+:10182000EB008E7F8093EB008091ED008D7F8093A5
+:10183000ED008091EB0081608093EB007093EC00F1
+:101840009093ED005093F0008091EE0087FD02C070
+:1018500080E008952F5F273080F23F703093E900D9
+:1018600081E008958091E30188239CF404C0809175
+:10187000E2018823B9F08091E80082FFF8CF8091DF
+:10188000E8008B778093E80008958091E201882337
+:1018900049F08091E80080FFF8CF8091E8008E77D2
+:1018A0008093E80008954091E4005091E50024E61B
+:1018B0008091EC0080FF24C08091E80080FD1EC074
+:1018C0008091E201882311F482E00895853011F4BB
+:1018D00083E008958091EB0085FF02C081E00895C8
+:1018E0008091E4009091E5008417950709F3222385
+:1018F00011F484E008952150AC01DACF80E008951E
+:101900008091E80082FFDCCFF9CF0E94F80C0E94A2
+:10191000000DE0EEF0E0808181608083A8EDB0E012
+:101920008C918F778C9319BCE7EDF0E080818E7FEE
+:1019300080838C918F7E8C931092E1010895EF92B9
+:10194000FF920F931F930E94F80C0E94000D08ED68
+:1019500010E0F80180818F778083808180688083A8
+:1019600080818F7D808319BC1092E2011092DE018C
+:101970001092E0011092DF0180EEE82EF12CF701C9
+:1019800080818B7F8083F80180818160808380E00B
+:1019900060E042E00E94FA0BE1EEF0E080818E7F91
+:1019A0008083E2EEF0E080818160808380818860C6
+:1019B0008083F70180818E7F8083F8018081806140
+:1019C00080831F910F91FF90EF900895E8EDF0E074
+:1019D00080818F7E8083E7EDF0E08081816080836D
+:1019E00084E082BF81E08093E1010E949F0C089512
+:1019F000E8EDF0E080818E7F80831092E200089510
+:101A00001092DA001092E10008951F920F920FB623
+:101A10000F9211241F932F933F934F935F936F93D4
+:101A20007F938F939F93AF93BF93EF93FF93109107
+:101A3000E9008091EC001092E9008091F000877F2E
+:101A40008093F00078940E94130E1092E900809128
+:101A5000F00088608093F0001F701093E900FF9100
+:101A6000EF91BF91AF919F918F917F916F915F9116
+:101A70004F913F912F911F910F900FBE0F901F908C
+:101A800018951F920F920FB60F9211242F933F9328
+:101A90004F935F936F937F938F939F93AF93BF9376
+:101AA000EF93FF938091E10082FF0BC08091E200F1
+:101AB00082FF07C08091E1008B7F8093E1000E944C
+:101AC000830F8091DA0080FF1FC08091D80080FFD3
+:101AD0001BC08091DA008E7F8093DA008091D9005C
+:101AE00080FF0DC080E189BD82E189BD09B400FE9F
+:101AF000FDCF81E08093E2010E947E0905C019BC00
+:101B00001092E2010E9470088091E10080FF19C0EC
+:101B10008091E20080FF15C08091E2008E7F80936B
+:101B2000E2008091E20080618093E2008091D80021
+:101B300080628093D80019BC85E08093E2010E9406
+:101B400074088091E10084FF30C08091E20084FF3E
+:101B50002CC080E189BD82E189BD09B400FEFDCFC2
+:101B60008091D8008F7D8093D8008091E1008F7E96
+:101B70008093E1008091E2008F7E8093E20080916B
+:101B8000E20081608093E2008091DE01882311F001
+:101B900084E007C08091E30087FD02C081E001C0BE
+:101BA00083E08093E2010E94580A8091E10083FF64
+:101BB00029C08091E20083FF25C08091E100877FEA
+:101BC0008093E10082E08093E2011092DE01809137
+:101BD000E1008E7F8093E1008091E2008E7F809310
+:101BE000E2008091E20080618093E20080E060E0AA
+:101BF00042E00E94FA0B8091F00088608093F00030
+:101C00000E947308FF91EF91BF91AF919F918F91C7
+:101C10007F916F915F914F913F912F910F900FBEE8
+:101C20000F901F9018951F93DF93CF93CDB7DEB71A
+:101C3000AC970FB6F894DEBF0FBECDBFE3EEF1E078
+:101C40008091F100819321E0EB3EF207C9F70E94F9
+:101C50008C098091E80083FF3EC18091E3013091BF
+:101C6000E401353009F487C0363040F43130C9F131
+:101C7000313070F0333009F02EC133C0383009F400
+:101C8000F9C0393009F409C1363009F024C197C0D0
+:101C9000803821F0823809F01EC108C09091DF0120
+:101CA0008091E001882399F0926011C08091E70152
+:101CB0008F708093E9008091EB0090E025E096958D
+:101CC00087952A95E1F7982F91701092E9008091FD
+:101CD000E800877F8093E8009093F1001092F10074
+:101CE000D4C0882319F0823009F0F5C090E08F71DC
+:101CF0009070009721F0029709F0EDC00CC0809120
+:101D0000E501813009F0E7C01092E001333069F558
+:101D10008093E0012AC08091E501882331F520916C
+:101D2000E7012F7009F4D7C02093E9008091EB0000
+:101D300080FF1BC0333021F48091EB00806213C020
+:101D40008091EB0080618093EB0081E090E002C025
+:101D5000880F991F2A95E2F78093EA001092EA0013
+:101D60008091EB0088608093EB001092E9008091F5
+:101D7000E800877F8DC0882309F0ADC01091E50190
+:101D80001F778091E3008078812B8093E30080911E
+:101D9000E800877F8093E8000E94320C8091E80081
+:101DA00080FFFCCF8091E30080688093E3001123E3
+:101DB00011F482E001C083E08093E2018CC080587E
+:101DC000823008F088C08091E5019091E60123E01F
+:101DD0008C3D920709F034C083E08C838AE28B83C8
+:101DE0007FB7F894DE0115966EE040E050E011E216
+:101DF000E62FF0E010935700849140FF03C08295D6
+:101E00008F706F5F8F70282F30E08A3018F0C90113
+:101E1000C79602C0C901C0968D939D934F5F5F4FD7
+:101E20004431510529F77FBF8091E800877F809377
+:101E3000E800CE0103966AE270E00E94D20A14C064
+:101E40006091E701AE014F5F5F4F0E945B0ABC01EA
+:101E5000009709F440C08091E800877F8093E800F4
+:101E600089819A810E943C0B8091E8008B77809356
+:101E7000E80031C0803879F58091E800877F809351
+:101E8000E8008091DE018093F1008091E8008E7778
+:101E90008093E8000E94320C1EC08823E1F49091E8
+:101EA000E5019230C0F48091E800877F8093E800DC
+:101EB0009093DE010E94320C8091DE01882331F480
+:101EC0008091E30087FD02C081E001C084E080933F
+:101ED000E2010E94480A8091E80083FF0AC08091D5
+:101EE000E800877F8093E8008091EB008062809318
+:101EF000EB00AC960FB6F894DEBF0FBECDBFCF910E
+:101F0000DF911F91089508951F938091E201882326
+:101F100079F01091E9008091EC001092E900809135
+:101F2000E80083FF02C00E94130E1F701093E900A7
+:101F30001F91089590937601809375010895E09123
+:101F40007501F0917601309711F480E008950190C9
+:101F5000F081E02D09950895E0917501F0917601E9
+:101F6000309721F00280F381E02D09950895E091EA
+:101F70007501F0917601309721F00480F581E02D14
+:101F8000099508959C01809173019091740128171F
+:101F9000390779F03093740120937301E091750152
+:101FA000F0917601309729F00680F781E02DC90184
+:101FB000099508959C0180917101909172012817F3
+:101FC000390779F03093720120937101E091750126
+:101FD000F0917601309729F00084F185E02DC90158
+:101FE0000995089508950E94F20F08950E946805CA
+:101FF00008952F923F925F926F927F928F929F925D
+:10200000AF92BF92CF92DF92EF92FF920F931F9306
+:10201000DF93CF93CDB7DEB72A970FB6F894DEBF24
+:102020000FBECDBF0E94230728E7822E21E0922E0B
+:10203000AA24BB2491E0292E312C5A2C8A2D0E94EF
+:102040006B056C01F401E080F180E826F926E114CB
+:10205000F104E1F18091CD0181FF02C00E9474057D
+:1020600000E010E03101002E02C0660C771C0A94DB
+:10207000E2F7C3018E219F21892B19F10E944C1C8C
+:102080009C0109835A821B82C620D720CD2811F0DB
+:1020900081E08B83C9018160782F9D838C83498186
+:1020A0005A816B818D810E941C15F501EE0FFF1F77
+:1020B000E858FE4F80819181862597259183808302
+:1020C00021C00F5F1F4F0C30110561F60894A11C51
+:1020D000B11C82E090E0880E991E94E0A916B1042C
+:1020E00009F0ABCF0E944C1C2FEF2E832F83188654
+:1020F0008160782F9A8789874FEF5FEF60E08A854C
+:102100000E941C150E94B41E109177010E949F0F1F
+:10211000181731F00E949F0F809377010E94F60FED
+:102120002A960FB6F894DEBF0FBECDBFCF91DF91D8
+:102130001F910F91FF90EF90DF90CF90BF90AF90E5
+:102140009F908F907F906F905F903F902F90089519
+:102150000E94431C0E943F060E94CD1C0E942A221E
+:102160000895DF93CF9300D000D00F92CDB7DEB7A4
+:102170000F900F900F900F900F90CF91DF910895D7
+:10218000DF93CF9300D000D000D0CDB7DEB7269636
+:102190000FB6F894DEBF0FBECDBFCF91DF9108958B
+:1021A0000E94DA19482F892F82958F70282F30E0EE
+:1021B0002C3031054CF42A3031056CF4225030407B
+:1021C00022303105E8F407C02C30310579F02F308A
+:1021D0003105B1F40BC0403F39F0413F18F4403EA7
+:1021E00078F402C0443F61F481E008959F70892F24
+:1021F00090E023E0969587952A95E1F78170089500
+:1022000080E008950E94431B0E94531B0E94181BEC
+:102210000E946B1B0E949D1E0E94A91E80E090E000
+:102220000E94C20F80E090E00E94DA0F08950E94A1
+:10223000331B0E9402110895882321F00E942C1B59
+:102240000E946B1B0895882321F00E94261B0E9488
+:102250006B1B0895282F882309F44EC0823859F447
+:102260000E949F0F81FF48C089E30E94E71A0E94E5
+:102270006B1B89E30CC0833869F40E949F0F80FFB9
+:102280003BC083E50E94E71A0E946B1B83E50E9416
+:10229000051B1FC0843859F40E949F0F82FF2CC079
+:1022A00087E40E94E71A0E946B1B87E4F0CF8450FA
+:1022B000813A10F4822FEBCF822F805E883060F459
+:1022C000277081E090E001C0880F2A95EAF70E940C
+:1022D0002C1B0E946B1B0895822F855A833028F493
+:1022E00080E090E00E94C20F0895285A233120F424
+:1022F00080E090E00E94DA0F08951F93182F882342
+:1023000009F4D0C0823859F40E949F0F81FDCAC0E1
+:1023100089E30E94E71A0E946B1B89E30CC0833893
+:1023200079F40E949F0F80FDBDC083E50E94E71AEB
+:102330000E946B1B83E50E94051B0E946B1BB2C0B1
+:10234000843859F40E949F0F82FDACC087E40E943C
+:10235000E71A0E946B1B87E4EECF8450813A50F459
+:10236000812F0E94D020882309F09CC0812F0E94D9
+:10237000E71AE3CF812F805E883050F4177081E038
+:1023800090E001C0880F1A95EAF70E94261BD5CF6E
+:10239000812F855A8330A0F4153A19F481E890E032
+:1023A0000CC0163A19F482E890E007C0173A19F009
+:1023B00080E090E002C083E890E00E94C20F72C00B
+:1023C000812F885A833108F06DC0183A19F482EED3
+:1023D00090E066C0193A19F489EE90E061C01A3AAB
+:1023E00019F48AEE90E05CC01B3A19F485EB90E09A
+:1023F00057C01C3A19F486EB90E052C01B3B19F40D
+:1024000083EB90E04DC01C3B19F484EB90E048C096
+:102410001D3A19F487EB90E043C0103B19F48CECA3
+:1024200090E03EC01E3A19F48DEC90E039C01F3A9E
+:1024300019F483E891E034C0113B19F48AE891E083
+:102440002FC0123B19F482E991E02AC0133B19F422
+:1024500084E991E025C0143B19F481E292E020C0A8
+:10246000153B19F483E292E01BC0163B19F484E299
+:1024700092E016C0173B19F485E292E011C0183BB8
+:1024800019F486E292E00CC0193B19F487E292E05D
+:1024900007C01A3B19F080E090E002C08AE292E0A7
+:1024A0000E94DA0F1F9108959F92AF92BF92CF9230
+:1024B000DF92EF92FF920F931F93DF93CF93CDB7ED
+:1024C000DEB72A970FB6F894DEBF0FBECDBF5C0112
+:1024D000DE011196FC0185E001900D928150E1F73B
+:1024E0000B81F501F580F2944FE0F422DE0116969F
+:1024F000FE01319685E001900D928150E1F73E8119
+:102500002F8189859A85892B09F484C22F3F09F090
+:1025100070C23F3F09F06DC27DC20E94431B0E9402
+:10252000E11A882379F0002369F08C2D805E8830D1
+:1025300048F082E00E949C1B0E94E11A9924939427
+:10254000982601C099248D2D82958F7090E085305A
+:10255000910509F4B5C08630910554F48430910595
+:102560000CF08FC02D2D207F02970CF049C017C0B2
+:102570008C30910544F48A3091050CF072C10897B3
+:1025800009F023C2A9C08D30910509F4EDC18D3049
+:1025900091050CF4DFC10F9709F017C20FC28D2D02
+:1025A0008F70222311F4182F03C0182F1295107F5B
+:1025B000002389F0112309F4B9C18C2D805E883085
+:1025C00020F4812F0E94261B03C0812F0E94361BFE
+:1025D0000E946B1BABC18C2D0E942A11112309F4A0
+:1025E000F4C1F0E2CF0E27E02C1520F0812F0E94DD
+:1025F0002C1B03C0812F0E943C1B0E946B1BE5C15A
+:102600008D2D8F70203211F4182F03C0182F1295C2
+:10261000107FCC2021F081E0C81609F514C00023FA
+:1026200049F0FF2031F1E1E0FE1619F5812F0E94FB
+:10263000561BCBC1FF2021F0F1E0FF1609F4C5C104
+:102640000E94591B30C1002329F025E02F1508F402
+:10265000BCC10FC084E08F1508F4B7C124C10023AA
+:1026600061F0FF2031F0F501858180FF5FC18F703F
+:102670008583812F0E942311A8C1FF2009F413C173
+:1026800060C18D2D86958695837090E0009721F02E
+:10269000019709F09AC10AC0002319F0C60193708E
+:1026A00002C080E090E00E94C20F8FC1002319F0A9
+:1026B000C601937002C080E090E00E94DA0F85C1ED
+:1026C000002321F08C2D0E94AB1D03C08C2D0E9495
+:1026D000151E0E94A91E79C18D2D837009F05EC060
+:1026E000002309F072C12C2D229526952770220F08
+:1026F000220F8C2D8F70E82EFF2400E010E0022EB8
+:1027000004C0EE0CFF1C001F111F0A94D2F7C4FC7A
+:1027100005C060E070E080E090E00FC06FE070E026
+:1027200080E090E004C0660F771F881F991F2A95EC
+:10273000D2F76095709580959095D694D694F3E0F5
+:10274000DF224D2D50E041305105A9F042305105B6
+:102750001CF4452B49F039C14230510589F0433012
+:10276000510509F032C113C06E297F29802B912BAE
+:102770000E94B21A2AC16E297F29802B912B0BC08F
+:102780006E297F29802B912B0E94A11A1EC10E94C5
+:10279000B21AC801B7010E94C31A17C190E0002302
+:1027A00011F496958795817009F40FC12C2D22950F
+:1027B00026952770220F220F8C2D8F70E82EFF2474
+:1027C00000E010E0022E04C0EE0CFF1C001F111FE1
+:1027D0000A94D2F7C4FC05C060E070E080E090E0AD
+:1027E0000FC06FE070E080E090E004C0660F771FDC
+:1027F000881F991F2A95D2F76095709580959095BE
+:10280000D694D69423E0D2224D2D50E0413051058C
+:10281000A9F0423051051CF4452B49F0D6C0423096
+:10282000510589F04330510509F0CFC013C06E291E
+:102830007F29802B912B0E94051AC7C06E297F2902
+:10284000802B912B0BC06E297F29802B912B0E940E
+:10285000F419BBC00E94051AC801B7010E94161ADC
+:10286000B4C081EFC81699F18C1540F0E0EECE1699
+:1028700008F458C0FFEEFC1558F419C023EFC21637
+:1028800081F1C21648F184EFC81609F04BC033C07D
+:102890001C2D1F708D2D8F71002319F00E94631A5B
+:1028A000E8CE0E94431A812F0E941C118EC0002383
+:1028B00029F0E4E0EF1508F488C004C0F5E0FF1546
+:1028C00008F483C08D2D8F710E94271A7EC08D2D34
+:1028D0008F710023E1F130C08D2D8F71002361F1E4
+:1028E00036C0002329F08D2D8F710E947F1A6DC094
+:1028F0000E948F1A6AC0002351F01D2D1F71812F75
+:102900000E94631A812F63E00E94B51B5EC081E0C4
+:102910000E949C1B21E02F1508F057C082E00E9406
+:102920009C1B53C0002359F0FF2021F08C2D0E94E6
+:102930007D114BC08D2D8F710E94631A46C0FF2000
+:1029400021F08C2D0E942A1140C08D2D8F710E9484
+:10295000431A3BC08FE0D822C5016C2D4D2D0E943B
+:10296000EE010E94181931C0002379F5EFE0DE2254
+:102970004D2D50E042305105B9F0433051053CF443
+:102980004115510559F041305105F9F40AC0433061
+:10299000510569F044305105C1F40CC00E94152264
+:1029A00014C00E94F82111C00E94E3210EC00E94B1
+:1029B000BC210BC08C2D0E94A02107C0FFE0DF22AC
+:1029C000C5016C2D4D2D0E946E02992019F10E94B7
+:1029D000DD1A80FD1FC0F50112820E94D71A0E94E5
+:1029E000631AC5010E9454120E94D71A0E94431A0A
+:1029F00011C0C5010E94070269817A81802F0E945F
+:102A0000E5196C010E9492190E949119002309F4A2
+:102A100086CD83CD2A960FB6F894DEBF0FBECDBF0C
+:102A2000CF91DF911F910F91FF90EF90DF90CF90AA
+:102A3000BF90AF909F900895DF93CF93CDB7DEB74F
+:102A40002B970FB6F894DEBF0FBECDBF342F4F8348
+:102A5000252F588769877A878B87472F582FFE0144
+:102A6000319686E0DF011D928A95E9F76B83398301
+:102A70002A834C835D83432F522F8D819E810E9438
+:102A800059182B960FB6F894DEBF0FBECDBFCF916D
+:102A9000DF9108950F931F930091870115C010E0F7
+:102AA000F801EE0FFF1FE00FF11FEE0FFF1FE857B9
+:102AB000FE4F4081518162817381848195810E94A2
+:102AC000C0100F5F1F4F077080918601081739F7FC
+:102AD0001F910F9108954091800150918101609163
+:102AE00082017091830180918401909185010E94FF
+:102AF000C01008950F931F93CF93DF9380918501AA
+:102B000082958F7009F06DC080918201882309F44D
+:102B100068C06091870100918601409183015091C6
+:102B200084011091810170918001EA01C095D095D6
+:102B300055C04115510509F44FC01F3F49F480E0CD
+:102B400090E07F3F11F481E090E0882309F044C0D9
+:102B5000262F30E0F901EE0FFF1FE20FF31FDF0118
+:102B6000AA0FBB1FA857BE4F11968C91119718172B
+:102B700099F58C91781781F5EE0FFF1FE657FE4F00
+:102B80008081882349F513968D919C911497841721
+:102B9000950718F0841B950B02C08C0F9D1F883C75
+:102BA0009105D0F4809185018F70806180938501BB
+:102BB000F901EE0FFF1FE20FF31FEE0FFF1FE357A8
+:102BC000FE4F80818F708061808380E891E00E9459
+:102BD00054120E944A1505C06F5F6770601709F0B4
+:102BE000A8CFDF91CF911F910F910895DF92EF92BF
+:102BF000FF920F931F93DF93CF93CDB7DEB76B9701
+:102C00000FB6F894DEBF0FBECDBF8C01DC0112966B
+:102C1000DC9012974C9111965C9111971396ED9060
+:102C2000FC9014972091830130918401609181017F
+:102C3000709180012115310509F4DBC16F3F09F066
+:102C400003C27F3F09F000C2D4C1E216F30640F090
+:102C5000C701821B930B883C910508F0EEC008C0A9
+:102C6000209530952E0D3F1D283C310508F0E5C01C
+:102C700080918501807F09F095C06F3F09F0EAC11E
+:102C80007F3F09F0E7C115C0741799F4DD2089F47E
+:102C9000809185018F708061809385010E946B1502
+:102CA00080E891E00E94541280918501F8018583AB
+:102CB000BCC1FD82EC825A834983DB82DE01169619
+:102CC000FE01319685E001900D928150E1F7688513
+:102CD000DE011B96FE01369685E001900D92815033
+:102CE000E1F72C853B858E859F85892B09F451C0A2
+:102CF0002F3F09F0B3C13F3F09F0B0C14AC0FD8288
+:102D0000EC825A834983DB82DE011B96FE013196F9
+:102D100085E001900D928150E1F7FC847B856D8503
+:102D200080918701909186011FC0282F30E0F90122
+:102D3000EE0FFF1FE20FF31FDF01AA0FBB1FA85703
+:102D4000BE4F11968C911197F81651F48C9178170B
+:102D500039F4EE0FFF1FE657FE4F80816817C9F464
+:102D60002F5F3F4F822F87708917F9F68DC19F70B3
+:102D700059F0442349F459C19F7031F0D801159698
+:102D80008C91807F09F451C1405E483008F44DC1F8
+:102D900048C1DD2009F449C180918501816080939B
+:102DA000850143C16F3F09F05DC17F3F09F05AC102
+:102DB00014C0741791F4DD2081F480918501F8012D
+:102DC0008583C8010E945412A0E8B1E0F80186E0B2
+:102DD00001900D928150E1F720C15A834983898186
+:102DE0009A810E94D010882309F41BC1DD2009F4C8
+:102DF00018C130918501832F82958F7090E00297E2
+:102E00009CF09091810120918001FE01709686E0F6
+:102E1000DF011D928A95E9F7998B288BFC8AEB8A52
+:102E20003D8BCF010E945412A0E8B1E0F80186E08A
+:102E300001900D928150E1F7EEC080918501807F75
+:102E4000A9F47E2DFD82EC825A834983DB826D2DAD
+:102E50008D810E94B11000E811E0C8010E94541257
+:102E600086E0F80111928A95E9F7C0C06F3F09F03A
+:102E7000FDC07F3F09F0FAC014C0741791F4DD2043
+:102E800081F480918501D80115968C93C8010E9428
+:102E90005412E0E8F1E086E0DF011D928A95E9F73F
+:102EA000BEC05A83498389819A810E94D0108823A9
+:102EB00009F4B7C0DD2009F4B4C030918501832F37
+:102EC00082958F7090E002979CF090918101209103
+:102ED0008001FE01769686E0DF011D928A95E9F772
+:102EE0009F8B2E8BFA8EE98E3B8FCF010E9454125E
+:102EF000A0E8B1E0F80186E001900D928150E1F781
+:102F00008AC06F3F09F0B6C07F3F09F0B3C071C0FF
+:102F1000E216F30640F0C701821B930B883C910533
+:102F200008F053C008C0209530952E0D3F1D283C59
+:102F3000310508F04AC0DD2009F473C06F3F09F085
+:102F40009FC07F3F09F09CC029C0741739F590914C
+:102F5000850190FD1AC0892F82958F70B1F0F8011C
+:102F600095838F3031F08F5F8295807F9F70982B93
+:102F70009583C8010E945412A0E8B1E0F80186E0F0
+:102F800001900D928150E1F748C0A0E8B1E0F8014E
+:102F900086E001900D928150E1F741C05A83498348
+:102FA00089819A810E94D010882349F0A0E8B1E07D
+:102FB000F80186E001900D928150E1F72CC08091DC
+:102FC00085018160809385012CC07E2DFD82EC827D
+:102FD0005A834983DB826D2D8D810E94B110E0E818
+:102FE000F1E086E0DF011D928A95E9F70E946B15FA
+:102FF0001CC0DD20B1F05A83498389819A810E94E7
+:10300000D010882371F0A0E8B1E0F80186E00190CB
+:103010000D928150E1F70E947A150E946B1581E0B4
+:1030200005C0C8010E945412FACF80E06B960FB61B
+:10303000F894DEBF0FBECDBFCF91DF911F910F91EE
+:10304000FF90EF90DF90089580918201882309F42A
+:1030500058CFFBCD651709F02CCE16CE613009F4A0
+:1030600098CE4DCE651709F0B8CEA3CE651709F0FE
+:1030700018CF03CF80918201882309F0BACF48CFBF
+:10308000651709F08BCF61CF5A83498389819A8173
+:103090000E94DA19482F892F82958F70282F30E0EF
+:1030A000223031050CF463CE243031050CF0B9CF59
+:1030B00063CE0F931F93DF93CF93CDB7DEB72C97DB
+:1030C0000FB6F894DEBF0FBECDBF4F835887698718
+:1030D0007A878B879C878E01095F1F4FC8010E94EA
+:1030E000F6158823D9F028853F818A859B85892B11
+:1030F00009F46BC02F3F49F480E090E03F3F11F4AA
+:1031000081E090E0882309F060C04F81588569858F
+:103110007A858B859C850E94C01057C0DE01119670
+:10312000F80186E001900D928150E1F7F981EA8182
+:103130004C815D814115510509F447C0EF3F09F00D
+:103140004CC0FF3F09F049C040C0F983EA835D836A
+:103150004C83F901EE0FFF1FE20FF31FEE0FFF1F6D
+:10316000E857FE4FDE01119686E00D9001928150E6
+:10317000E1F7609386010E944A1527C0919FC00124
+:10318000112488579E4F0E94F615882309F445C0E4
+:103190008091870190E0FC01EE0FFF1FE80FF91FFF
+:1031A000EE0FFF1FE857FE4F40815181628173810E
+:1031B000848195810E94C0108091870190E00196E2
+:1031C000877090708093870101C016E0909187010D
+:1031D00080918601981791F620C080918601282F52
+:1031E00030E02F5F3F4FB901677070702150304061
+:1031F0008091870190E06817790709F0A6CF0E94B7
+:1032000017111092860110928701E0E8F1E086E044
+:10321000DF011D928A95E9F7D8CF2C960FB6F89466
+:10322000DEBF0FBECDBFCF91DF911F910F910895EB
+:10323000CF92DF92EF92FF921F93CF93DF93EC0137
+:10324000009709F466C010E090EAC92E9FE0D92EDD
+:1032500081E0E82EF12CFE0121969491943748F4F8
+:10326000943008F044C0913079F0923009F051C0A8
+:103270001BC0953709F437C0953750F1892F845812
+:10328000803708F046C037C0FE0121969491892FFF
+:10329000805E883060F597708E2D01C0880F9A95FA
+:1032A000EAF70E94461B0FC0FE0121969491892FD8
+:1032B000805E883058F497708E2D01C0880F9A95E3
+:1032C000EAF70E944C1B0E946B1B19C0892F15C086
+:1032D000FE01249104C0C6010197F1F72150222379
+:1032E000D1F721960CC0FE012196149108C0892FB8
+:1032F0000E947D1104C0892F8F770E942A11212FEF
+:1033000004C0C6010197F1F72150222309F4A3CF8D
+:10331000F8CFDF91CF911F91FF90EF90DF90CF908A
+:10332000089508950895AF92BF92DF92EF92FF92B1
+:103330000F931F93CF93DF935C01E090B801F0905F
+:10334000B9010091BA011091BB018091BC0190912B
+:10335000BD01A091BE01B091BF01E82AF92A0A2B54
+:103360001B2BCFE1D0E0DC2ED801C7010C2E04C00E
+:10337000B695A795979587950A94D2F78170907026
+:10338000892B39F08C2FB5010E94D304813091052F
+:1033900031F421978FEFCF3FD80729F7DD248D2D0A
+:1033A000DF91CF911F910F91FF90EF90DF90BF9031
+:1033B000AF9008950F931F938C010E949319B80149
+:1033C0000E94D3041F910F910895CB010E94DA1936
+:1033D00008956093BC017093BD018093BE019093EA
+:1033E000BF010E94021108959B01AC016091BC01D4
+:1033F0007091BD018091BE019091BF01622773273A
+:10340000842795270E94E91908959B01AC016091DA
+:10341000BC017091BD018091BE019091BF016223FA
+:103420007323842395230E94E91908959B01AC011D
+:103430006091BC017091BD018091BE019091BF016E
+:10344000622B732B842B952B0E94E919089521E0A0
+:1034500030E040E050E004C0220F331F441F551FEE
+:103460008A95D2F78091BC019091BD01A091BE01D7
+:10347000B091BF01282739274A275B27CA01B90124
+:103480000E94E919089521E030E040E050E004C0D6
+:10349000220F331F441F551F8A95D2F72095309570
+:1034A000409550958091BC019091BD01A091BE01C5
+:1034B000B091BF01282339234A235B23CA01B901F4
+:1034C0000E94E919089521E030E040E050E004C096
+:1034D000220F331F441F551F8A95D2F78091BC01DC
+:1034E0009091BD01A091BE01B091BF01282B392B55
+:1034F0004A2B5B2BCA01B9010E94E919089521E00A
+:1035000030E040E050E004C0220F331F441F551F3D
+:103510008A95D2F7CA01B9010E94E919089560E0BD
+:1035200070E080E090E00E94E91908956093B8018E
+:103530007093B9018093BA019093BB010E9402116C
+:1035400008959B01AC016091B8017091B90180911F
+:10355000BA019091BB0162277327842795270E94A7
+:10356000961A08959B01AC016091B8017091B90160
+:103570008091BA019091BB01622373238423952328
+:103580000E94961A08959B01AC016091B801709158
+:10359000B9018091BA019091BB01622B732B842BEE
+:1035A000952B0E94961A08950E94961A089580916C
+:1035B000CC0185958595859508958091CC0187707E
+:1035C00008958091CC01877009F081E00895382F2B
+:1035D000A0910C01B0910D01FD0120E08FEF9281CF
+:1035E000931791F08F3F19F4992309F4822F2F5FDD
+:1035F00031962630A1F78F3F39F0992787FD9095B6
+:10360000A80FB91F12963C930895982F20E030E040
+:10361000E0910C01F0910D01E20FF31F82818917F7
+:1036200009F412822F5F3F4F2630310589F7089544
+:1036300081E090E0E0910C01F0910D01E80FF91F9D
+:103640001082019688309105A9F708959091C801DC
+:10365000982B9093C801089580959091C801982364
+:103660009093C80108951092C80108959091CB01DC
+:10367000982B9093CB01089580959091CB0198233E
+:103680009093CB0108951092CB0108959091CA01B7
+:10369000982B9093CA01089580959091CA01982320
+:1036A0009093CA0108951092CA0108958093C901A8
+:1036B00008951092C9010895E0910C01F0910D0157
+:1036C00020E091E0818181112F5F9F5F31969830DA
+:1036D000C9F7822F0895E0910C01F0910D018091BE
+:1036E000C8018083E0910C01F0910D0180819091DF
+:1036F000CB01892B8083E0910C01F0910D01808139
+:103700009091CA01892B80839091C901992369F016
+:10371000E0910C01F0910D018081892B80830E9442
+:103720005C1B882311F00E94591B80910C01909121
+:103730000D010E94AC0F08952091CC01482F4095B7
+:1037400042234093CC01842F877071F430E0842FA2
+:10375000992787FD90952817390731F0842F859593
+:10376000859585950E94431A0895982F990F990F72
+:10377000990F962B9093CC010E94631A0895089597
+:1037800008951F920F920FB60F9211248F939F935B
+:10379000AF93BF938091CE01882399F48091CF019C
+:1037A0009091D001A091D101B091D2014196A11D7B
+:1037B000B11D8093CF019093D001A093D101B0931C
+:1037C000D201BF91AF919F918F910F900FBE0F903B
+:1037D0001F9018950E94171180E00E9423020E94FA
+:1037E0002A220E949F0F0E94680508958091E2019D
+:1037F000843039F11092CE0120E488E190E00FB6D8
+:10380000F894A895809360000FBE2093600080E03C
+:103810000E94230280E00E94680583B7817F846054
+:1038200083BF83B7816083BF7894889583B78E7F89
+:1038300083BF88E10FB6F894809360001092600017
+:103840000FBE089580E00E9423020E94BF1B0E94C9
+:1038500023070E94C01B80E00E946B05892B81F426
+:1038600081E00E946B05892B59F482E00E946B0570
+:10387000892B31F483E00E946B0520E0892B09F04D
+:1038800021E0822F089582E084BD93E095BD9AEFF8
+:1038900097BD80936E0008958FB7F8942091CF0163
+:1038A0003091D0014091D1015091D2018FBFC90117
+:1038B0000895EF92FF920F931F93BC018FB7F89476
+:1038C000E090CF01F090D0010091D1011091D20190
+:1038D0008FBFA801970140705070CB01A0E0B0E00D
+:1038E000281739074A075B0720F09701261B370B7B
+:1038F00005C09B01209530952E0D3F1DC9011F91DC
+:103900000F91FF90EF9008951F920F920FB60F92B4
+:1039100011248F939F93AF93BF938091CF01909188
+:10392000D001A091D101B091D2010196A11DB11D8C
+:103930008093CF019093D001A093D101B093D20195
+:10394000BF91AF919F918F910F900FBE0F901F90DD
+:1039500018950E94850CF89480E29EE420E931E0FD
+:10396000F9013197F1F70197D9F787E090EBA7E0DC
+:10397000B0EB8093ED019093EE01A093EF01B09333
+:10398000F0012CE088E190E00FB6F894A8958093C0
+:1039900060000FBE20936000FFCF0E94051D8823AA
+:1039A00011F40E94101D0E94001D8093CD010E9401
+:1039B000F61C8093EB010E94FB1C90E0A0E0B0E0BD
+:1039C000BC01CD010E94D41A0895682F86E090E0D2
+:1039D0000E9493230895682F84E090E00E9493232F
+:1039E000089586E090E00E948523089584E090E0A9
+:1039F0000E948523089583E090E00E948523089526
+:103A000082E090E00E948523089580E090E00E948B
+:103A10008D2320E08D5E9E4F09F421E0822F0895D2
+:103A200080E090E06DEE7EEF0E94A52382E090E0C2
+:103A300060E00E94932383E090E060E00E94932383
+:103A400084E090E060E00E94932385E090E060E0F5
+:103A50000E94932386E090E060E00E949323089503
+:103A60008091D90180FF0BC09091100185E0989F53
+:103A7000C0011124959587959595879530C081FF54
+:103A800009C09091100185E0989FC001112495957F
+:103A9000879525C082FF03C0909110010DC08091D1
+:103AA000D801882319F485E090E008956091110110
+:103AB00090911001861728F085E0989FC00111248D
+:103AC0000EC0899F90011124C901880F991F880F8A
+:103AD000991F820F931F70E00E945E23CB018038F4
+:103AE000910510F08FE70895009709F481E008959B
+:103AF0008091D90180FF05C080911201869586953D
+:103B000018C081FF04C080911201869512C082FF07
+:103B100003C0809112010DC02091D801222319F415
+:103B200081E090E0089560911301809112012617C1
+:103B300010F090E007C0289FC001112470E00E949F
+:103B40005E23CB018038910510F08FE70895009730
+:103B500009F481E00895803F21F40E94301D819591
+:103B600004C0813F29F40E94301D8093D50108953F
+:103B7000823F21F40E94301D819504C0833F29F4C7
+:103B80000E94301D8093D4010895893F19F40E944A
+:103B9000781D05C08A3F31F40E94781D819580937D
+:103BA000D60108958B3F21F40E94781D819504C0B1
+:103BB0008C3F29F40E94781D8093D7010895843F9B
+:103BC00021F48091D301816017C0853F21F4809159
+:103BD000D301826011C0863F21F48091D3018460BB
+:103BE0000BC0873F21F48091D301886005C0883FD6
+:103BF00031F48091D30180618093D30108958D3F8A
+:103C000021F48091D901816005C08E3F31F480910B
+:103C1000D90182608093D90108958F3F29F4809162
+:103C2000D90184608093D9010895803F29F480915F
+:103C3000D50187FF6FC007C0813F41F48091D50156
+:103C400018160CF067C01092D50164C0823F29F4A9
+:103C50008091D40187FF5EC007C0833F41F480910B
+:103C6000D40118160CF056C01092D40153C0893FED
+:103C700029F48091D60118163CF04CC08A3F39F4E3
+:103C80008091D60187FF46C01092D60143C08B3F7A
+:103C900029F48091D70187FF3DC006C08C3F39F4DD
+:103CA0008091D7011816B4F51092D70133C0843F24
+:103CB00021F48091D3018E7F05C0853F31F480913E
+:103CC000D3018D7F8093D30125C0863F21F480915D
+:103CD000D3018B7FF7CF873F21F48091D301877F7A
+:103CE000F1CF883F21F48091D3018F7EEBCF8D3FC0
+:103CF00021F48091D9018E7F0BC08E3F21F48091F9
+:103D0000D9018D7F05C08F3F29F48091D9018B7F28
+:103D10008093D9018091D401882371F48091D501D9
+:103D2000882351F48091D601882331F48091D70102
+:103D3000882311F41092D8010895E3EDF1E085E0B5
+:103D4000DF011D928A95E9F71092D8011092D901EE
+:103D5000089583ED91E00E94B70F0E944C1C909350
+:103D6000DB018093DA0108951F938091DA0190912D
+:103D7000DB010E94591CAC012091D801222321F0C3
+:103D800080910F0190E006C090910E018AE0989F0B
+:103D9000C00111244817590708F485C09091D40137
+:103DA000992369F48091D501882349F48091D60143
+:103DB000882329F48091D701882309F474C02F3F08
+:103DC00019F02F5F2093D801191624F40E94301D9A
+:103DD0008093D4018091D40187FF05C00E94301DDB
+:103DE00081958093D4018091D501181624F40E9406
+:103DF000301D8093D5018091D50187FF05C00E94B9
+:103E0000301D81958093D5016091D401662339F1ED
+:103E10001091D501112319F1772767FD7095872F30
+:103E2000972F0E946F2223E333E343E35FE30E9473
+:103E3000D3220E943C226093D401612F772767FD33
+:103E40007095872F972F0E946F2223E333E343E37C
+:103E50005FE30E94D3220E943C226093D5018091AF
+:103E6000D601181624F40E94781D8093D601809103
+:103E7000D60187FF05C00E94781D81958093D601E9
+:103E80008091D701181624F40E94781D8093D701E1
+:103E90008091D70187FF05C00E94781D819580938E
+:103EA000D7010E94A91E1F91089580E0089580E027
+:103EB0000895833099F1843030F4813069F0823094
+:103EC00009F06FC01AC0853009F44AC08530B8F1D6
+:103ED000863009F066C055C020910E01822F90E017
+:103EE000860F911D8F3F910520F4260F20930E0120
+:103EF00008958FEF80930E01089520910F01822F76
+:103F000090E0860F911D8F3F910520F4260F20939E
+:103F10000F0108958FEF80930F01089520911001F4
+:103F2000822F90E0860F911D8F3F910520F4260F80
+:103F30002093100108958FEF809310010895209130
+:103F40001101822F90E0860F911D8F3F910520F483
+:103F5000260F2093110108958FEF8093110108958A
+:103F600020911201822F90E0860F911D8F3F9105C5
+:103F700020F4260F2093120108958FEF80931201F1
+:103F8000089520911301822F90E0860F911D8F3F9D
+:103F9000910520F4260F2093130108958FEF80934D
+:103FA00013010895833031F1843030F4813061F0B1
+:103FB000823009F04AC013C0853091F1853028F174
+:103FC000863009F042C037C080910E01681720F496
+:103FD000861B80930E01089510920E010895809122
+:103FE0000F01681720F4861B80930F01089510922B
+:103FF0000F01089580911001681720F4861B8093AB
+:104000001001089510921001089580911101681710
+:1040100020F4861B809311010895109211010895D8
+:1040200080911201681720F4861B80931201089575
+:1040300010921201089580911301681720F4861BD5
+:1040400080931301089510921301089521E030E048
+:1040500040E050E004C0220F331F441F551F8A95D3
+:10406000D2F7CA01B9010E94D41A0E94171108950B
+:104070008732F8F48E3108F08AC08E3009F463C0BC
+:104080008F3048F4873009F445C08B3009F486C07E
+:10409000863039F528C0863109F480C0873118F49C
+:1040A0008031F9F45CC0893109F478C08B31C9F4EE
+:1040B00040C0883309F472C0893348F4893209F466
+:1040C00068C0853309F465C0873259F462C083340F
+:1040D00009F45FC0843418F48A3318F056C0883469
+:1040E00059F080E008958091CD01807F8093CD01CB
+:1040F00081E08093DC0108950E94171180E197E22E
+:1041000020E931E0F9013197F1F70197D9F70E94E1
+:10411000A91C42C09091CD01892F809581709E7F0E
+:10412000982B882311F09E6001C0917F9093CD0160
+:1041300033C08091CD01982F969590959170292F3D
+:10414000220F8D7F19C08091CD01982F969596955D
+:1041500090959170292F220F220F8B7F0DC0809197
+:10416000CD01982F96959695969590959170292FBB
+:10417000220F220F220F877F822B8093CD0199235C
+:1041800069F081608093CD0107C0895303C08D51D0
+:1041900001C080E00E94262081E0089581E008951A
+:1041A0001F93182F8091DC01813079F0813020F04D
+:1041B000823009F0BCC037C0E0910C01F0910D01D4
+:1041C0008081823209F0B5C007C0E0910C01F09106
+:1041D0000D018081823249F4812F0E94551F88236E
+:1041E000F9F4812F0E943820A5C0812F0E94571F0B
+:1041F0008823B1F4143161F0153128F41B3081F0BB
+:10420000103141F40AC0193219F0183319F408C0FA
+:104210001092DC0180E090E08DC082E08093DC01B0
+:1042200081E090E087C0193201F11A3270F4143144
+:10423000E1F0153120F4173009F064C065C0812F1A
+:104240008E51863008F05EC01BC01E3409F455C084
+:104250001F3420F41B3409F055C049C0113509F44E
+:1042600042C0123509F04EC03AC08091DD0188236A
+:1042700019F01092DD0146C081E08093DC015AC044
+:104280001232F9F0133260F41F3199F0103218F441
+:104290001E3109F510C0103281F01132E1F40FC067
+:1042A000143299F0143278F0153289F0163299F4FC
+:1042B00010C082E011C081E00FC083E00DC084E037
+:1042C0000BC085E009C086E007C087E005C088E034
+:1042D00003C089E001C080E08093DD0113C08091BC
+:1042E000DD0161E007C08091DD0161E009C08091DE
+:1042F000DD016AE00E94591F05C08091DD016AE07E
+:104300000E94D21F81E016C08EE180930E0182E3ED
+:1043100080930F018AE08093100184E18093110162
+:1043200088E08093120188E280931301EBCF109212
+:10433000DC0180E01F9108958091EC01869508953D
+:104340009091EC01292F26952827220F9170922B0E
+:104350009093EC0120E09E7F09F021E08091EC0138
+:104360008E7F822B8093EC010E94E51C8091EC01F2
+:1043700086950E94230208958091EC01282F2695AE
+:104380002F5F2F77922F990F8170892B8093EC01EB
+:1043900030E0243031051CF081708093EC0190E016
+:1043A0008091EC018E7F09F091E08091EC018E7F8D
+:1043B000892B8093EC010E94E51C8091EC0186958D
+:1043C0000E94230208958091EC01982F909591709E
+:1043D0008E7F892B8093EC010E94E51C8091EC017B
+:1043E00080FD02C080E001C086950E9423020895EE
+:1043F0008091EC01982F969591F09158990F8170CA
+:10440000892B8093EC0190E08E7F09F091E0809100
+:10441000EC018E7F892B8093EC010E94E51C80913A
+:10442000EC0186950E94230208952091EC012695C7
+:10443000822F90E0039744F4822F8F5F880F816072
+:104440008093EC010E94E51C8091EC0186950E940E
+:10445000230208950E94051D882311F40E94101D57
+:104460000E94F11C8093EC0180FD02C080E001C03D
+:1044700086950E942302089504D06894B1118DC0DE
+:10448000089570D088F09F5790F0B92F9927B751B1
+:10449000A0F0D1F0660F771F881F991F1AF0BA9508
+:1044A000C9F712C0B13081F077D0B1E0089574C07F
+:1044B000672F782F8827B85F39F0B93FCCF38695FE
+:1044C00077956795B395D9F73EF49095809570955B
+:1044D00061957F4F8F4F9F4F0895E89409C097FBD8
+:1044E0003EF490958095709561957F4F8F4F9F4FCB
+:1044F0009923A9F0F92F96E9BB279395F69587950F
+:1045000077956795B795F111F8CFFAF4BB0F11F4D1
+:1045100060FF1BC06F5F7F4F8F4F9F4F16C0882378
+:1045200011F096E911C0772321F09EE8872F762FAE
+:1045300005C0662371F096E8862F70E060E02AF0EF
+:104540009A95660F771F881FDAF7880F96958795DB
+:1045500097F9089557FD9058440F551F59F05F3F44
+:1045600071F04795880F97FB991F61F09F3F79F095
+:1045700087950895121613061406551FF2CF469517
+:10458000F1DF08C0161617061806991FF1CF869599
+:104590007105610508940895E894BB27662777277D
+:1045A000CB0197F908950BD078C069D028F06ED070
+:1045B00018F0952309F05AC05FC01124EECFCADF6E
+:1045C000A0F3959FD1F3950F50E0551F629FF00126
+:1045D000729FBB27F00DB11D639FAA27F00DB11D7F
+:1045E000AA1F649F6627B00DA11D661F829F222708
+:1045F000B00DA11D621F739FB00DA11D621F839F8F
+:10460000A00D611D221F749F3327A00D611D231F64
+:10461000849F600D211D822F762F6A2F11249F57B2
+:1046200050408AF0E1F088234AF0EE0FFF1FBB1FD5
+:10463000661F771F881F91505040A9F79E3F510574
+:1046400070F014C0AACF5F3FECF3983EDCF3869580
+:1046500077956795B795F795E7959F5FC1F7FE2B1F
+:10466000880F911D9695879597F9089597F99F67FB
+:1046700080E870E060E008959FEF80EC08950024EA
+:104680000A941616170618060906089500240A94B7
+:1046900012161306140605060895092E0394000C3D
+:1046A00011F4882352F0BB0F40F4BF2B11F460FFCC
+:1046B00004C06F5F7F4F8F4F9F4F089597FB092E68
+:1046C00007260AD077FD04D00CD006D000201AF4BB
+:1046D000709561957F4F0895F6F7909581959F4F5E
+:1046E0000895AA1BBB1B51E107C0AA1FBB1FA61739
+:1046F000B70710F0A61BB70B881F991F5A95A9F78B
+:1047000080959095BC01CD010895F999FECF92BD99
+:1047100081BDF89A992780B50895A8E1B0E042E0FC
+:1047200050E00C94AD23262FF999FECF92BD81BDA8
+:10473000F89A019700B4021639F01FBA20BD0FB6DF
+:10474000F894FA9AF99A0FBE08950196272F0E94BD
+:1047500094230C949323DC01CB01FC01F999FECF47
+:1047600006C0F2BDE1BDF89A319600B40D924150F9
+:0A4770005040B8F70895F894FFCF09
+:10477A00050175080A09E408AE087808C0011E3266
+:10478A000A14082840004500250026006100600040
+:10479A002000370064006500660067004400460098
+:1047AA002400470040004500250026006100600003
+:1047BA002000370064006500660067004400460078
+:0447CA002400470080
+:00000001FF
diff --git a/keyboard/planck/keymaps/Jacob/readme.md b/keyboard/planck/keymaps/Jacob/readme.md
new file mode 100644
index 0000000000..2a4be4ebce
--- /dev/null
+++ b/keyboard/planck/keymaps/Jacob/readme.md
@@ -0,0 +1 @@
+Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck.
\ No newline at end of file
-- 
cgit v1.2.3


From 1a8c0dd22d6a2255511d0db6a456315541b5815b Mon Sep 17 00:00:00 2001
From: Erez Zukerman <bulk@ezuk.org>
Date: Sun, 15 May 2016 00:27:32 -0400
Subject: Leader key implementation (#326)

* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* updates process_action functions to return bool
---
 keyboard/planck/keymaps/experimental/keymap.c | 48 +++++++++++++++++----------
 1 file changed, 30 insertions(+), 18 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c
index fc3ac4a97e..8dc158c73f 100644
--- a/keyboard/planck/keymaps/experimental/keymap.c
+++ b/keyboard/planck/keymaps/experimental/keymap.c
@@ -6,6 +6,7 @@
 #ifdef AUDIO_ENABLE
   #include "audio.h"
 #endif
+
 #include "eeconfig.h"
 
 extern keymap_config_t keymap_config;
@@ -78,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
   {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
-  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 },
 
 /* Dvorak
@@ -291,7 +292,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
         case 8:
           if (record->event.pressed) {
             #ifdef AUDIO_ENABLE
-              layer_off(_MUSIC);
+              music_activated = false;
               stop_all_notes();
             #endif
           }
@@ -300,7 +301,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
           if (record->event.pressed) {
             #ifdef AUDIO_ENABLE
               PLAY_NOTE_ARRAY(music_scale, false, 0);
-              layer_on(_MUSIC);
+              music_activated = true;
             #endif
           }
         break;
@@ -360,24 +361,35 @@ void matrix_init_user(void) {
 }
 
 #ifdef AUDIO_ENABLE
-void play_goodbye_tone()
-{
-  PLAY_NOTE_ARRAY(goodbye, false, 0);
-  _delay_ms(150);
-}
+  void play_goodbye_tone(void)
+  {
+    PLAY_NOTE_ARRAY(goodbye, false, 0);
+    _delay_ms(150);
+  }
+#endif
 
-uint8_t starting_note = 0x0C;
-int offset = 0;
+LEADER_EXTERNS();
 
-void process_action_user(keyrecord_t *record) {
+#define LEADER_TIMEOUT 300
 
-  if (IS_LAYER_ON(_MUSIC)) {
-    if (record->event.pressed) {
-        play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
-    } else {
-        stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+void matrix_scan_user(void) {
+  LEADER_DICTIONARY() { 
+    leading = false;
+    leader_end(); 
+
+    SEQ_ONE_KEY(KC_F) {
+      register_code(KC_S);
+      unregister_code(KC_S);
+    }
+    SEQ_TWO_KEYS(KC_A, KC_S) {
+      register_code(KC_H);
+      unregister_code(KC_H);
+    }
+    SEQ_THREE_KEYS(KC_A, KC_S, KC_D) {
+      register_code(KC_LGUI);
+      register_code(KC_S);
+      unregister_code(KC_S);
+      unregister_code(KC_LGUI);
     }
   }
-
 }
-#endif
-- 
cgit v1.2.3


From 15719f3574c6274ee0f3ec87431927c5a523aa3e Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Sun, 15 May 2016 00:40:59 -0400
Subject: adds a sequencer to the music mode (#330)

* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* adds music sequencer functionality

* implements audio/music functions in quantum.c

* Merge branch 'master' into process-record
---
 keyboard/planck/keymaps/experimental/keymap.c | 72 ++-------------------------
 1 file changed, 3 insertions(+), 69 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c
index 8dc158c73f..8bc7334c9a 100644
--- a/keyboard/planck/keymaps/experimental/keymap.c
+++ b/keyboard/planck/keymaps/experimental/keymap.c
@@ -20,8 +20,7 @@ extern keymap_config_t keymap_config;
 #define _DVORAK 2
 #define _LOWER 3
 #define _RAISE 4
-#define _MUSIC 5
-#define _PLOVER 6
+#define _PLOVER 5
 #define _ADJUST 16
 
 // Macro name shortcuts
@@ -31,12 +30,6 @@ extern keymap_config_t keymap_config;
 #define LOWER M(_LOWER)
 #define RAISE M(_RAISE)
 #define M_BL 5
-#define AUD_OFF M(6)
-#define AUD_ON M(7)
-#define MUS_OFF M(8)
-#define MUS_ON M(9)
-#define VC_IN M(10)
-#define VC_DE M(11)
 #define PLOVER M(12)
 #define EXT_PLV M(13)
 
@@ -136,16 +129,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
-/* Music (reserved for process_action_user)
- *
- */
-[_MUSIC] = {
-  {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, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER,   XXXXXXX, XXXXXXX, RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
-},
-
 /* Plover layer (http://opensteno.org)
  * ,-----------------------------------------------------------------------------------.
  * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
@@ -178,8 +161,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_ADJUST] = {
   {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
-  {_______, _______, _______, AUD_ON,  AUD_OFF, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
-  {_______, VC_DE,   VC_IN,   MUS_ON,  MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
+  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  _______, _______, _______, _______, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 }
 
@@ -205,7 +188,6 @@ float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
 float tone_plover[][2]     = SONG(PLOVER_SOUND);
 float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
 
-float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
 float goodbye[][2] = SONG(GOODBYE_SOUND);
 #endif
 
@@ -274,53 +256,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             unregister_code(KC_RSFT);
           }
         break;
-        case 6:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              audio_off();
-            #endif
-          }
-        break;
-        case 7:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              audio_on();
-              PLAY_NOTE_ARRAY(tone_startup, false, 0);
-            #endif
-          }
-        break;
-        case 8:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              music_activated = false;
-              stop_all_notes();
-            #endif
-          }
-        break;
-        case 9:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-              music_activated = true;
-            #endif
-          }
-        break;
-        case 10:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              voice_iterate();
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-            #endif
-          }
-        break;
-        case 11:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              voice_deiterate();
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-            #endif
-          }
-        break;
         case 12:
           if (record->event.pressed) {
             #ifdef AUDIO_ENABLE
@@ -330,7 +265,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             layer_off(_RAISE);
             layer_off(_LOWER);
             layer_off(_ADJUST);
-            layer_off(_MUSIC);
             layer_on(_PLOVER);
             if (!eeconfig_is_enabled()) {
                 eeconfig_init();
-- 
cgit v1.2.3


From fde477a927edc6b4207a6968d44aeed021e8b300 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Sun, 15 May 2016 00:51:06 -0400
Subject: updates midi functionality (#331)

* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* adds music sequencer functionality

* implements audio/music functions in quantum.c

* splits up process_action to allow independent processing of actions

* moves midi stuff to quantum.c

* adds additional scales for midi
---
 keyboard/planck/keymaps/experimental/keymap.c    | 6 +++++-
 keyboard/planck/keymaps/experimental/makefile.mk | 5 ++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c
index 8bc7334c9a..2f8a0510a8 100644
--- a/keyboard/planck/keymaps/experimental/keymap.c
+++ b/keyboard/planck/keymaps/experimental/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_ADJUST] = {
   {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
   {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
-  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  _______, _______, _______, _______, _______, _______, _______},
+  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 }
 
@@ -227,8 +227,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
         case _LOWER:
           if (record->event.pressed) {
             layer_on(_LOWER);
+            #ifdef BACKLIGHT_ENABLE
                 breathing_speed_set(2);
                 breathing_pulse();
+            #endif
             update_tri_layer(_LOWER, _RAISE, _ADJUST);
           } else {
             layer_off(_LOWER);
@@ -238,8 +240,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
         case _RAISE:
           if (record->event.pressed) {
             layer_on(_RAISE);
+            #ifdef BACKLIGHT_ENABLE
                 breathing_speed_set(2);
                 breathing_pulse();
+            #endif
             update_tri_layer(_LOWER, _RAISE, _ADJUST);
           } else {
             layer_off(_RAISE);
diff --git a/keyboard/planck/keymaps/experimental/makefile.mk b/keyboard/planck/keymaps/experimental/makefile.mk
index 99fbfbd0bb..6c1e05b65a 100644
--- a/keyboard/planck/keymaps/experimental/makefile.mk
+++ b/keyboard/planck/keymaps/experimental/makefile.mk
@@ -1,2 +1,5 @@
 AUDIO_ENABLE = yes
-NKRO_ENABLE = yes
\ No newline at end of file
+NKRO_ENABLE = yes
+MIDI_ENABLE = yes
+BACKLIGHT_ENABLE = no
+COMMAND_ENABLE = no
\ No newline at end of file
-- 
cgit v1.2.3


From e2aa980ad5d92f76dadf1de9dbadb9eacbddd5df Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Sun, 15 May 2016 01:07:48 -0400
Subject: cleans up default keymaps (olkb)

---
 keyboard/planck/keymaps/default/keymap.c | 86 ++------------------------------
 1 file changed, 3 insertions(+), 83 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index 56f20a3b99..79bf62436a 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -19,8 +19,7 @@ extern keymap_config_t keymap_config;
 #define _DVORAK 2
 #define _LOWER 3
 #define _RAISE 4
-#define _MUSIC 5
-#define _PLOVER 6
+#define _PLOVER 5
 #define _ADJUST 16
 
 // Macro name shortcuts
@@ -30,12 +29,6 @@ extern keymap_config_t keymap_config;
 #define LOWER M(_LOWER)
 #define RAISE M(_RAISE)
 #define M_BL 5
-#define AUD_OFF M(6)
-#define AUD_ON M(7)
-#define MUS_OFF M(8)
-#define MUS_ON M(9)
-#define VC_IN M(10)
-#define VC_DE M(11)
 #define PLOVER M(12)
 #define EXT_PLV M(13)
 #define TOG_OUT M(14)
@@ -136,16 +129,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
-/* Music (reserved for process_action_user)
- *
- */
-[_MUSIC] = {
-  {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, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER,   XXXXXXX, XXXXXXX, RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
-},
-
 /* Plover layer (http://opensteno.org)
  * ,-----------------------------------------------------------------------------------.
  * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
@@ -178,8 +161,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_ADJUST] = {
   {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
-  {_______, _______, _______, AUD_ON,  AUD_OFF, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
-  {_______, VC_DE,   VC_IN,   MUS_ON,  MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
+  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 }
 
@@ -205,7 +188,6 @@ float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
 float tone_plover[][2]     = SONG(PLOVER_SOUND);
 float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
 
-float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
 float goodbye[][2] = SONG(GOODBYE_SOUND);
 #endif
 
@@ -270,53 +252,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             unregister_code(KC_RSFT);
           }
         break;
-        case 6:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              audio_off();
-            #endif
-          }
-        break;
-        case 7:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              audio_on();
-              PLAY_NOTE_ARRAY(tone_startup, false, 0);
-            #endif
-          }
-        break;
-        case 8:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              layer_off(_MUSIC);
-              stop_all_notes();
-            #endif
-          }
-        break;
-        case 9:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-              layer_on(_MUSIC);
-            #endif
-          }
-        break;
-        case 10:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              voice_iterate();
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-            #endif
-          }
-        break;
-        case 11:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              voice_deiterate();
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-            #endif
-          }
-        break;
         case 12:
           if (record->event.pressed) {
             #ifdef AUDIO_ENABLE
@@ -366,19 +301,4 @@ void play_goodbye_tone()
   PLAY_NOTE_ARRAY(goodbye, false, 0);
   _delay_ms(150);
 }
-
-uint8_t starting_note = 0x0C;
-int offset = 0;
-
-void process_action_user(keyrecord_t *record) {
-
-  if (IS_LAYER_ON(_MUSIC)) {
-    if (record->event.pressed) {
-        play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
-    } else {
-        stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
-    }
-  }
-
-}
 #endif
-- 
cgit v1.2.3


From b79400e0e9080112fbdcf9ae1672297286b7938a Mon Sep 17 00:00:00 2001
From: Jacob Bilger <bilger.jacob@gmail.com>
Date: Sun, 15 May 2016 01:22:51 -0400
Subject: Folders for each keymap.c file (#332)

* Add folders to keymaps

* test

* test
---
 keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG  |  Bin 17292 -> 0 bytes
 keyboard/planck/keymaps/Jacob/keymap.c             |   56 -
 keyboard/planck/keymaps/Jacob/planck.hex           | 1151 --------------------
 keyboard/planck/keymaps/Jacob/readme.md            |    1 -
 keyboard/planck/keymaps/alexey.c                   |   51 -
 keyboard/planck/keymaps/alexey/alexey.c            |   51 +
 keyboard/planck/keymaps/angerthosenear.c           |   50 -
 .../planck/keymaps/angerthosenear/angerthosenear.c |   50 +
 keyboard/planck/keymaps/austin.c                   |   50 -
 keyboard/planck/keymaps/austin/austin.c            |   50 +
 keyboard/planck/keymaps/bone2planck.c              |  112 --
 keyboard/planck/keymaps/bone2planck/bone2planck.c  |  112 ++
 keyboard/planck/keymaps/brandon.c                  |  134 ---
 keyboard/planck/keymaps/brandon/brandon.c          |  134 +++
 keyboard/planck/keymaps/charlie.c                  |   54 -
 keyboard/planck/keymaps/charlie/charlie.c          |   54 +
 keyboard/planck/keymaps/daniel.c                   |   48 -
 keyboard/planck/keymaps/daniel/daniel.c            |   48 +
 keyboard/planck/keymaps/david.c                    |   76 --
 keyboard/planck/keymaps/david/david.c              |   76 ++
 keyboard/planck/keymaps/dzobert.c                  |   49 -
 keyboard/planck/keymaps/dzobert/dzobert.c          |   49 +
 keyboard/planck/keymaps/gabriel.c                  |  108 --
 keyboard/planck/keymaps/gabriel/gabriel.c          |  108 ++
 keyboard/planck/keymaps/jacob/Keyboard Layout.PNG  |  Bin 0 -> 17292 bytes
 keyboard/planck/keymaps/jacob/keymap.c             |   56 +
 keyboard/planck/keymaps/jacob/readme.md            |    1 +
 keyboard/planck/keymaps/joe.c                      |   88 --
 keyboard/planck/keymaps/joe/joe.c                  |   88 ++
 keyboard/planck/keymaps/kyle.c                     |   49 -
 keyboard/planck/keymaps/kyle/kyle.c                |   49 +
 keyboard/planck/keymaps/leo.c                      |   46 -
 keyboard/planck/keymaps/leo/leo.c                  |   46 +
 keyboard/planck/keymaps/lucas.c                    |  163 ---
 keyboard/planck/keymaps/lucas/lucas.c              |  163 +++
 keyboard/planck/keymaps/lukas.c                    |   64 --
 keyboard/planck/keymaps/lukas/lukas.c              |   64 ++
 keyboard/planck/keymaps/max.c                      |   49 -
 keyboard/planck/keymaps/max/max.c                  |   49 +
 keyboard/planck/keymaps/mollat.c                   |  149 ---
 keyboard/planck/keymaps/mollat/mollat.c            |  149 +++
 keyboard/planck/keymaps/monkey.c                   |   76 --
 keyboard/planck/keymaps/monkey/monkey.c            |   76 ++
 keyboard/planck/keymaps/nico.c                     |   69 --
 keyboard/planck/keymaps/nico/nico.c                |   69 ++
 keyboard/planck/keymaps/numpad.c                   |   26 -
 keyboard/planck/keymaps/numpad/numpad.c            |   26 +
 keyboard/planck/keymaps/tak3over.c                 |  130 ---
 keyboard/planck/keymaps/tak3over/tak3over.c        |  130 +++
 49 files changed, 1698 insertions(+), 2849 deletions(-)
 delete mode 100644 keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG
 delete mode 100644 keyboard/planck/keymaps/Jacob/keymap.c
 delete mode 100644 keyboard/planck/keymaps/Jacob/planck.hex
 delete mode 100644 keyboard/planck/keymaps/Jacob/readme.md
 delete mode 100644 keyboard/planck/keymaps/alexey.c
 create mode 100644 keyboard/planck/keymaps/alexey/alexey.c
 delete mode 100644 keyboard/planck/keymaps/angerthosenear.c
 create mode 100644 keyboard/planck/keymaps/angerthosenear/angerthosenear.c
 delete mode 100644 keyboard/planck/keymaps/austin.c
 create mode 100644 keyboard/planck/keymaps/austin/austin.c
 delete mode 100644 keyboard/planck/keymaps/bone2planck.c
 create mode 100644 keyboard/planck/keymaps/bone2planck/bone2planck.c
 delete mode 100644 keyboard/planck/keymaps/brandon.c
 create mode 100644 keyboard/planck/keymaps/brandon/brandon.c
 delete mode 100644 keyboard/planck/keymaps/charlie.c
 create mode 100644 keyboard/planck/keymaps/charlie/charlie.c
 delete mode 100644 keyboard/planck/keymaps/daniel.c
 create mode 100644 keyboard/planck/keymaps/daniel/daniel.c
 delete mode 100644 keyboard/planck/keymaps/david.c
 create mode 100644 keyboard/planck/keymaps/david/david.c
 delete mode 100644 keyboard/planck/keymaps/dzobert.c
 create mode 100644 keyboard/planck/keymaps/dzobert/dzobert.c
 delete mode 100644 keyboard/planck/keymaps/gabriel.c
 create mode 100644 keyboard/planck/keymaps/gabriel/gabriel.c
 create mode 100644 keyboard/planck/keymaps/jacob/Keyboard Layout.PNG
 create mode 100644 keyboard/planck/keymaps/jacob/keymap.c
 create mode 100644 keyboard/planck/keymaps/jacob/readme.md
 delete mode 100644 keyboard/planck/keymaps/joe.c
 create mode 100644 keyboard/planck/keymaps/joe/joe.c
 delete mode 100644 keyboard/planck/keymaps/kyle.c
 create mode 100644 keyboard/planck/keymaps/kyle/kyle.c
 delete mode 100644 keyboard/planck/keymaps/leo.c
 create mode 100644 keyboard/planck/keymaps/leo/leo.c
 delete mode 100644 keyboard/planck/keymaps/lucas.c
 create mode 100644 keyboard/planck/keymaps/lucas/lucas.c
 delete mode 100644 keyboard/planck/keymaps/lukas.c
 create mode 100644 keyboard/planck/keymaps/lukas/lukas.c
 delete mode 100644 keyboard/planck/keymaps/max.c
 create mode 100644 keyboard/planck/keymaps/max/max.c
 delete mode 100644 keyboard/planck/keymaps/mollat.c
 create mode 100644 keyboard/planck/keymaps/mollat/mollat.c
 delete mode 100644 keyboard/planck/keymaps/monkey.c
 create mode 100644 keyboard/planck/keymaps/monkey/monkey.c
 delete mode 100644 keyboard/planck/keymaps/nico.c
 create mode 100644 keyboard/planck/keymaps/nico/nico.c
 delete mode 100644 keyboard/planck/keymaps/numpad.c
 create mode 100644 keyboard/planck/keymaps/numpad/numpad.c
 delete mode 100644 keyboard/planck/keymaps/tak3over.c
 create mode 100644 keyboard/planck/keymaps/tak3over/tak3over.c

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG b/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG
deleted file mode 100644
index 40f0b89429..0000000000
Binary files a/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG and /dev/null differ
diff --git a/keyboard/planck/keymaps/Jacob/keymap.c b/keyboard/planck/keymaps/Jacob/keymap.c
deleted file mode 100644
index 5e6e8498e2..0000000000
--- a/keyboard/planck/keymaps/Jacob/keymap.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "planck.h"
-#include "action_layer.h"
-#ifdef BACKLIGHT_ENABLE
-  #include "backlight.h"
-#endif
-
-//Simple Keymap where CTRL, WINKEY, and ALT keys are placed in a more familiar location for Windows users. 
-//Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck.
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-#define _QW 0
-#define _LW 1
-#define _RS 2
-
-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, KC_QUOT},
-    {KC_LSFT, KC_Z,    KC_X,    KC_C,   KC_V,    KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, MT(MOD_RSFT, KC_ENT)},
-    {KC_LCTL, KC_LGUI, KC_LALT, M(0),   MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-  },
-  [_RS] = { /* RAISE */
-    {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL },
-    {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-    {KC_TRNS, 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}
-  },
-  [_LW] = { /* LOWER */
-    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS},
-    {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 uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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);
-        #ifdef BACKLIGHT_ENABLE
-          backlight_step();
-        #endif
-      } else {
-        unregister_code(KC_RSFT);
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/Jacob/planck.hex b/keyboard/planck/keymaps/Jacob/planck.hex
deleted file mode 100644
index 3ea701202c..0000000000
--- a/keyboard/planck/keymaps/Jacob/planck.hex
+++ /dev/null
@@ -1,1151 +0,0 @@
-:100000000C94A8010C94EC010C94EC010C94EC0100
-:100010000C94EC010C94EC010C94EC010C94EC01AC
-:100020000C94EC010C94EC010C94410D0C94050D16
-:100030000C94C11B0C94EC010C94EC010C94EC019D
-:100040000C94EC010C94EC010C94EC010C94EC017C
-:100050000C94EC010C94841C0C94EC010C94EC01B9
-:100060000C94EC010C94EC010C94EC010C94EC015C
-:100070000C94EC010C94EC010C94EC010C94EC014C
-:100080000C94EC010C94EC010C94EC010C94EC013C
-:100090000C94EC010C94EC010C94EC010C94EC012C
-:1000A0000C94EC010C94EC010C94EC012B0014006A
-:1000B0001A000800150017001C0018000C001200A0
-:1000C00013002A00290004001600070009000A0096
-:1000D0000B000D000E000F0033003400E1001D0086
-:1000E0001B00060019000500110010003600370043
-:1000F00038002872E000E300E200003001522C00DA
-:100100002C0002525000510052004F0035021E02D6
-:100110001F022002210222022302240225022602BB
-:1001200027024C0001000100010001000100010054
-:1001300001002D022E022F023002310201000100C7
-:1001400001000100010001000100010001002F0079
-:100150003000010001000100010001000100010068
-:1001600001000100010001000100010035001E0036
-:100170001F0020002100220023002400250026006B
-:1001800027004C0001003A003B003C003D003E00CF
-:100190003F002D002E002F003000310001004000F4
-:1001A00041004200430044004500010001000100FD
-:1001B0000100010001000100010001000100010037
-:1001C0000100010001000100010001000501090614
-:1001D000A101050719E029E715002501950875011A
-:1001E0008102950175088101050819012905950508
-:1001F000750191029501750391010507190029FF09
-:10020000150025FF950675088100C005010902A1AA
-:10021000010901A10005091901290515002501950C
-:1002200005750181029501750381010501093009F8
-:10023000311581257F9502750881060938158125BC
-:100240007F950175088106050C0A38021581257F06
-:10025000950175088106C0C005010980A1018502CC
-:1002600016010026B7001A01002AB7007510950183
-:100270008100C0050C0901A1018503160100269C1F
-:10028000021A01002A9C02751095018100C012011A
-:10029000100100000008EDFE606001000102000195
-:1002A00009025400030100A0FA090400000103013F
-:1002B0000100092111010001223F00070581030807
-:1002C000000A0904010001030102000921110100D3
-:1002D00001224D000705820308000A0904020001FB
-:1002E00003000000092111010001223600070583E7
-:1002F0000308000A040309042C034F007200740071
-:1003000068006F006C0069006E006500610072009B
-:1003100020004B006500790062006F0061007200F0
-:10032000640073000000280354006800650020008A
-:1003300050006C0061006E0063006B0020004B00F9
-:100340006500790062006F006100720064000000C7
-:1003500011241FBECFEFDAE0DEBFCDBF04B603FE2F
-:1003600024C08091ED019091EE01A091EF01B09138
-:10037000F0018750904BA740B04BB9F41092ED01BB
-:100380001092EE011092EF011092F00114BE84B7AA
-:10039000877F84BF88E10FB6F89480936000109245
-:1003A00060000FBEE0E0F8E3099511E0A0E0B1E0E5
-:1003B000EAE7F7E402C005900D92A435B107D9F73A
-:1003C00011E0A4E5B1E001C01D92AD3EB107E1F737
-:1003D0000E9441090C94BB230C940000FC0166238D
-:1003E00061F48281882331F085EE0E947D110E94A4
-:1003F000BC2103C085EE0E942A1180E090E00895A0
-:1004000008950895089508950E94010208950E9494
-:10041000020208950E940302089584E0809355012A
-:1004200008950E949C2123E030E0281B3109220F0F
-:10043000331F2093540108950E9411020E940D025F
-:10044000109256010895982F2F98882351F4809187
-:100450008000877F8093800010928D0010928C0026
-:1004600020C0833041F480918000886080938000B8
-:100470008FEF9FEF12C08091800088608093800092
-:1004800023E030E0291B3109220F331F8FEF9FEF4C
-:1004900002C0969587952A95E2F790938D008093F8
-:1004A0008C000E9411020895279A2F988FEF9FEFDA
-:1004B00090938700809386008AE08093800089E192
-:1004C000809381000E942A220E941C0208950E94AB
-:1004D00054026E9A769A0E94000208950895E62FBB
-:1004E000F0E0EE0FFF1F98E1799F90011124E20FD9
-:1004F000F31F90E6899FC0011124E80FF91FE4550E
-:10050000FF4F25913491C9010895FC01EE0FFF1FA3
-:10051000E45BFF4F25913491C9010895FC01EE0F72
-:10052000FF1FE453FE4F25913491C9010895CF93E5
-:10053000DF93EC0180E4C030D807A0F590E3C03031
-:10054000D90708F005C1C83ED105E8F4C03ED10581
-:1005500008F069C0C83AD10588F4C53AD10508F059
-:1005600064C0C130D10509F4E8C0C130D10508F438
-:1005700014C2C430D10508F410C255C0CB3BD1051C
-:1005800008F00BC261C080E2C030D80708F0DBC0C1
-:1005900091E0C030D90708F0D3C0C03FD10508F4BE
-:1005A000FCC1C8C080E5C130D80709F4F4C090E5AB
-:1005B000C230D907F0F480E4C131D80709F4D4C0BF
-:1005C00090E4C231D90730F480E4C031D80708F490
-:1005D000C3C0C7C090E4C331D90709F4CBC080E4DD
-:1005E000C331D80708F4C3C0C050D04509F0D5C105
-:1005F000C4C080E6C030D80730F491E5C030D907D8
-:1006000008F05EC1CEC080E7C030D80708F4C5C18D
-:1006100090E8C030D90708F4B8C180E9C030D807E5
-:1006200008F0BBC1B6C19E01BAC1C53AD10519F4E3
-:1006300081E890E47DC0C63AD10519F083E890E4E2
-:1006400077C082E890E474C0C83AD10519F482EE0C
-:1006500094E46EC0C93AD10519F489EE94E468C0F7
-:10066000CA3AD10519F48AEE94E462C0CB3AD105B6
-:1006700019F485EB94E45CC0CC3AD10519F486EB0F
-:1006800094E456C0CD3AD10519F487EB94E450C0F8
-:10069000C03BD10519F48CEC94E44AC0CE3AD105A4
-:1006A00019F48DEC94E444C0CF3AD10519F483E8F1
-:1006B00095E43EC0C13BD10519F48AE895E438C001
-:1006C000C23BD10519F482E995E432C0C33BD105A0
-:1006D00019F484E995E42CC0C43BD10519F481E2F6
-:1006E00096E426C0C53BD10519F483E296E420C008
-:1006F000C63BD10519F484E296E41AC0C73BD10584
-:1007000019F485E296E414C0C83BD10519F486E2D9
-:1007100096E40EC0C93BD10519F487E296E408C0FF
-:10072000CA3BD10519F080E094E402C08AE296E465
-:100730009C0135C19E01306532C121E030E02FC1FE
-:100740009E013F712CC1CE019F700E948E0228C174
-:100750009E013070306C23C19E012F703070346D5B
-:100760001EC120E031ED1BC120E030ED18C120E0BA
-:1007700032ED15C120E033ED12C10E94171184EC57
-:1007800099E020E931E0F9013197F1F70197D9F7C4
-:100790000E94A91C04C18091CD0181608093CD018C
-:1007A000FEC00E94051D882311F40E94101D0E94A6
-:1007B000F61C8093EB011092EC0190E5C230D90752
-:1007C00011F4816076C090E5C430D90711F48260DD
-:1007D00070C090E5C630D90711F484606AC090E516
-:1007E000C830D90711F4886064C090E5CA30D907D1
-:1007F00011F480615EC090E5CC30D90711F48062BD
-:1008000058C090E5CE30D90711F4806452C090E50D
-:10081000C031D90711F480684CC090E5C231D907C6
-:1008200011F48C6046C080E5C330D80721F4809174
-:10083000EB018E7F3EC090E5C530D90721F4809151
-:10084000EB018D7F36C080E5C730D80721F4809159
-:10085000EB018B7F2EC090E5C930D90721F4809140
-:10086000EB01877F26C080E5CB30D80721F480914B
-:10087000EB018F7E1EC090E5CD30D90721F4809129
-:10088000EB018F7D16C080E5CF30D80721F4809131
-:10089000EB018F7B0EC090E5C131D90721F4809127
-:1008A000EB018F7706C0C351D04529F48091EB014D
-:1008B000837F8093EB018091EB010E94EB1C6FC062
-:1008C0004D2F55274F70507041305105F9F49E015E
-:1008D000A4E0220F331FAA95E1F720703370CE01F8
-:1008E000F3E0880F991FFA95E1F780769070282B36
-:1008F000392B3C68C370D07002C0440F551FCA9595
-:10090000E2F74F715070242B352B49C0423051050E
-:1009100029F43C2F2227216F306A41C04330510512
-:1009200051F49E0173E0220F331F7A95E1F7207E88
-:1009300037703C680CC044305105B9F49E0163E047
-:10094000220F331F6A95E1F7207E37703A68C37033
-:10095000D07081E090E002C0880F991FCA95E2F73D
-:100960008F719070282B392B1AC04530510529F40E
-:100970003C2F2227246F306A12C04630510579F48B
-:10098000CF71D0703C2F222702C09E013F70306291
-:1009900006C09E013F70306A02C020E030E0C9010D
-:1009A000DF91CF9108950E946F02803E9105F0F48F
-:1009B000803C910588F58133910509F475C0823337
-:1009C000910548F48932910509F464C08A32910591
-:1009D00009F07BC06EC08933910509F18238910519
-:1009E000F1F08533910509F070C04FC0833E910549
-:1009F00061F1843E910540F4803E9105B9F0823E5C
-:100A0000910509F062C01CC0863E910551F1873EF8
-:100A1000910509F05AC02AC00E94850208952091CC
-:100A2000EB0120FD0AC021FD08C04CC08091EB0104
-:100A300080FF03C089E390E045C080EE90E042C0B3
-:100A40008091EB0182FD08C004C08091EB0182FF20
-:100A500003C082EE90E036C084FD11C083EE90E0CA
-:100A600031C08091EB0183FD08C004C08091EB018F
-:100A700083FF03C086EE90E025C084FF03C080E0C2
-:100A800090E020C087EE90E01DC08091EB0185FFD3
-:100A900005C007C08091EB0185FF03C085E390E0AE
-:100AA00011C089E290E00EC08091EB0186FF05C085
-:100AB00007C08091EB0186FF03C081E390E002C094
-:100AC0008AE290E00E94970208950E94970208959A
-:100AD0000E940A020895E82FF0E0EE0FFF1FE95A86
-:100AE000FE4F80819181089508954F925F926F9299
-:100AF0007F928F929F92AF92BF92CF92DF92EF92AE
-:100B0000FF920F931F93DF93CF93CDB7DEB7289754
-:100B10000FB6F894DEBF0FBECDBFAE014F5F5F4F83
-:100B200060E070E0EE24FF24CC24DD24AA24BB2462
-:100B3000882499242A0101E010E029E0622E712C1A
-:100B40006C0E7D1ED201E4E3F1E088E001900D928D
-:100B50008150E1F7FA01808191819C01207F307002
-:100B60002032310559F48F709070980102C0220F25
-:100B7000331F8A95E2F7622B732B37C02033310580
-:100B800059F48F709070F80102C0EE0FFF1F8A9524
-:100B9000E2F7EE2AFF2A29C02034310559F48F707C
-:100BA0009070980102C0220F331F8A95E2F7C22A83
-:100BB000D32A1BC02035310559F48F709070F8018D
-:100BC00002C0EE0FFF1F8A95E2F7AE2ABF2A0DC0C2
-:100BD0002036310551F48F709070980102C0220FB9
-:100BE000331F8A95E2F7822A932A4E5F5F4F46159C
-:100BF000570509F0A7CF24B1962F862F8095822321
-:100C000084B985B1982B95B927B19E2D8E2D8095ED
-:100C1000822387B988B1982B98B92AB19C2D8C2D45
-:100C2000809582238AB98BB1982B9BB92DB19A2DCF
-:100C30008A2D809582238DB98EB1982B9EB920B3D1
-:100C4000982D882D8095822380BB81B3982B91BBF2
-:100C500028960FB6F894DEBF0FBECDBFCF91DF91BF
-:100C60001F910F91FF90EF90DF90CF90BF90AF90CA
-:100C70009F908F907F906F905F904F9008954F92CC
-:100C80005F926F927F928F929F92AF92BF92CF921C
-:100C9000DF92EF92FF920F931F93DF93CF93CDB725
-:100CA000DEB768970FB6F894DEBF0FBECDBF85B72D
-:100CB000806885BF85B7806885BF0E947505AE01D5
-:100CC0004F5F5F4F60E070E0EE24FF24CC24DD2412
-:100CD000AA24BB24882499242A0101E010E039E1E8
-:100CE000632E712C6C0E7D1ED201ECE3F1E088E1E5
-:100CF00001900D928150E1F7FA01808191819C0170
-:100D0000207F30702032310559F48F709070980137
-:100D100002C0220F331F8A95E2F7622B732B37C074
-:100D20002033310559F48F709070F80102C0EE0F36
-:100D3000FF1F8A95E2F7EE2AFF2A29C020343105E9
-:100D400059F48F709070980102C0220F331F8A955A
-:100D5000E2F7C22AD32A1BC02035310559F48F701F
-:100D60009070F80102C0EE0FFF1F8A95E2F7AE2ADD
-:100D7000BF2A0DC02036310551F48F709070980154
-:100D800002C0220F331F8A95E2F7822A932A4E5F10
-:100D90005F4F4615570509F0A7CF24B1962F862F30
-:100DA0008095822384B985B1982B95B927B19E2D62
-:100DB0008E2D8095822387B988B1982B98B92AB156
-:100DC0009C2D8C2D809582238AB98BB1982B9BB951
-:100DD0002DB19A2D8A2D809582238DB98EB1982BB5
-:100DE0009EB920B3982D882D8095822380BB81B336
-:100DF000982B91BB80E090E0FC01E95AFE4F1182F4
-:100E00001082FC01E15AFE4F118210820296883056
-:100E1000910591F70E94670268960FB6F894DEBFBD
-:100E20000FBECDBFCF91DF911F910F91FF90EF903B
-:100E3000DF90CF90BF90AF909F908F907F906F90FA
-:100E40005F904F9008954F925F926F927F928F9232
-:100E50009F92AF92BF92CF92DF92EF92FF920F9349
-:100E60001F93DF93CF93CDB7DEB7A0970FB6F8945B
-:100E7000DEBF0FBECDBF909000016E010894C11C73
-:100E8000D11CEFE5AE2EE1E0BE2EC6015C2C892E12
-:100E900071E0E72EF12C60EA462E59E0652E712CA8
-:100EA0006C0E7D1E852D982DDC01E4E1F1E088E0DB
-:100EB00001900D928150E1F7F60120813181C90145
-:100EC000807F90708032910589F484B12F703070EA
-:100ED000A70102C0440F551F2A95E2F79A01842BFF
-:100EE00084B985B12095282325B94FC08033910559
-:100EF00089F487B12F703070F70102C0EE0FFF1F29
-:100F00002A95E2F79F018E2B87B988B12095282377
-:100F100028B93BC08034910589F48AB12F703070B4
-:100F2000A70102C0440F551F2A95E2F79A01842BAE
-:100F30008AB98BB1209528232BB927C0803591051C
-:100F400089F48DB12F703070F70102C0EE0FFF1FD2
-:100F50002A95E2F79F018E2B8DB98EB1209528231B
-:100F60002EB913C08036910581F480B32F70307094
-:100F7000A70102C0440F551F2A95E2F79A01842B5E
-:100F800080BB81B32095282321BB842D8A95F1F75E
-:100F9000830160E070E040E050E0D301ECE1F1E07B
-:100FA00088E101900D928150E1F7F80120813181B3
-:100FB000C901807F90708032910511F483B113C014
-:100FC0008033910511F486B10EC08034910511F47F
-:100FD00089B109C08035910511F48CB104C0803607
-:100FE0009105B9F48FB190E02F70307002C09595E3
-:100FF00087952A95E2F780FF03C080E090E007C064
-:10100000C701062E02C0880F991F0A94E2F7482BE9
-:10101000592B6F5F7F4F0E5F1F4F6C30710509F0CA
-:10102000BCCFF501808191818417950721F0518310
-:10103000408345E0942E0E94750542E050E0C40EC6
-:10104000D51EA40EB51EC614D70409F02BCF90925E
-:101050000001992059F1892D815080930001882346
-:1010600029F080EA9FE00197F1F720C080915F01AD
-:101070009091600190935801809357018091610194
-:101080009091620190935A0180935901809163017C
-:101090009091640190935C0180935B018091650164
-:1010A0009091660190935E0180935D010E9404021D
-:1010B00081E0A0960FB6F894DEBF0FBECDBFCF91F2
-:1010C000DF911F910F91FF90EF90DF90CF90BF9035
-:1010D000AF909F908F907F906F905F904F9008950A
-:1010E0001092E1010895089508958091680108958E
-:1010F000DF93CF9300D00F92CDB7DEB7AC018091D4
-:10110000E201843029F583E08093E9002FEF95ED2B
-:1011100005C0892F8A95F1F7222329F08091E800F4
-:10112000215085FFF6CF8091E80085FF11C05B83D9
-:101130004A8383E08983CE01019663E070E040E05A
-:1011400050E00E94A70B8091E8008E778093E80022
-:101150000F900F900F90CF91DF910895DF93CF9371
-:1011600000D00F92CDB7DEB7AC018091E2018430A0
-:1011700029F583E08093E9002FEF95ED05C0892FD5
-:101180008A95F1F7222329F08091E800215085FF0C
-:10119000F6CF8091E80085FF11C05B834A8382E02F
-:1011A0008983CE01019663E070E040E050E00E9448
-:1011B000A70B8091E8008E778093E8000F900F9046
-:1011C0000F90CF91DF910895AC018091E2018430BE
-:1011D00001F582E08093E9002FEF95ED05C0892F9E
-:1011E0008A95F1F7222329F08091E800215085FFAC
-:1011F000F6CF8091E80085FF0CC0CA0165E070E081
-:1012000040E050E00E94A70B8091E8008E77809329
-:10121000E80008950F931F93182F092F8091E20182
-:10122000843061F581E08093E9009FEF25ED05C0F2
-:10123000822F8A95F1F7992329F08091E800915047
-:1012400085FFF6CF8091E80085FF18C0812F902F91
-:1012500068E070E040E050E00E94A70B8091E80059
-:101260008E778093E800A9E6B1E0212F302FC901E5
-:10127000FC0188E001900D928150E1F71F910F91E0
-:10128000089584B7877F84BF88E10FB6F894809370
-:101290006000109260000FBE80E090E020E80FB682
-:1012A000F89420936100809361000FBE0E94F30FB9
-:1012B0000E94850C0E94E60C8091E200846080937D
-:1012C000E20078940E94840F0E94A81082E091E0CE
-:1012D0000E949A0F0CC00E94F61B8091E0018823A7
-:1012E00031F00E94221C882311F00E94BC0A8091D8
-:1012F000E201853081F30E94F90FF9CF8091E1017D
-:10130000882349F40E94850C0E94E60C8091E2003B
-:1013100084608093E20008958091E401833009F4B1
-:1013200055C0843030F4813071F0823009F0AFC0A4
-:1013300096C08A3009F483C08B3009F468C08930C4
-:1013400009F0A5C020C08091E301813A09F09FC057
-:101350008091E800877F8093E8008091E701909179
-:10136000E801892B21F489E691E068E003C080E080
-:1013700090E060E070E00E94D20A8091E8008B77F4
-:101380008093E80008958091E301813209F07FC0E5
-:101390008091E7019091E801892B09F078C0809154
-:1013A000E800877F8093E80005C08091E2018823F0
-:1013B00009F46DC08091E80082FFF7CF8091F100C1
-:1013C000809368018091E8008B771CC08091E301D5
-:1013D000813A09F05CC08091E7019091E801892B86
-:1013E00009F055C08091E800877F8093E8008091E4
-:1013F000E80080FFFCCF809101018093F100809193
-:10140000E8008E778093E8000E94320C0895809166
-:10141000E3018132E1F58091E7019091E801892BA8
-:10142000B1F58091E800877F8093E8000E94320C3C
-:101430008091E501809301010E9417110895809128
-:10144000E301813221F58091E800877F8093E800F5
-:101450000E94320C8091E60180936701089580918B
-:10146000E301813AA1F48091E800877F8093E8004E
-:101470008091E80080FFFCCF809167018093F100AC
-:101480008091E8008E778093E8000E94320C0895E6
-:1014900081E061EC42E00E94FA0B82E061EC42E004
-:1014A0000E94FA0B83E061EC42E00E94FA0B08957F
-:1014B0000E94EA1B0895DA019330C1F0943030F4B1
-:1014C000913051F0923009F04FC00BC0913221F1B0
-:1014D000923209F049C032C0EEE8F2E022E130E099
-:1014E00047C0E0EAF2E024E530E042C0813051F04C
-:1014F000813020F0823009F037C008C0E4EFF2E01C
-:10150000849107C0E8EFF2E0849103C0E6E2F3E0E3
-:101510008491282F30E02CC0613041F0613018F008
-:10152000623011F508C0E2EBF2E002C0EBECF2E051
-:1015300029E030E01DC0E4EEF2E0FACF613051F076
-:10154000613018F0623081F40AC0ECECF1E02FE376
-:1015500030E00EC0EBE0F2E02DE430E009C0E8E559
-:10156000F2E026E330E004C0E0E0F0E020E030E02C
-:10157000ED93FC93C901089580E189BD82E189BDA5
-:1015800009B400FEFDCF8091D8008F7D8093D800F4
-:101590008091E00082608093E0008091E00081FD16
-:1015A000FCCF08959C014091E9015091EA01461752
-:1015B000570718F4F90190E043C06115710511F067
-:1015C000AB01F8CF8091E8008E778093E80040E08F
-:1015D00050E0F0CF8091E201882309F447C08530C4
-:1015E00009F446C08091E80083FD44C08091E80082
-:1015F00082FD36C08091E80080FF22C08091F30018
-:101600009091F200782F60E0292F30E0262B372BC5
-:1016100007C081918093F100415050402F5F3F4FB0
-:101620004115510519F02830310598F390E0283024
-:10163000310509F491E08091E8008E778093E8000D
-:101640004115510539F6992329F60AC08091E20126
-:10165000882361F0853061F08091E80083FD0AC045
-:101660008091E80082FFF2CF80E0089582E0089543
-:1016700083E0089581E008959C014091E901509133
-:10168000EA014617570718F4F90190E044C06115C4
-:10169000710511F0AB01F8CF8091E8008E7780934F
-:1016A000E80040E050E0F0CF8091E201882309F4A7
-:1016B00048C0853009F447C08091E80083FD45C0EB
-:1016C0008091E80082FD37C08091E80080FF23C050
-:1016D0008091F3009091F200782F60E0292F30E0A4
-:1016E000262B372B08C084918093F100319641500E
-:1016F00050402F5F3F4F4115510519F028303105FB
-:1017000090F390E02830310509F491E08091E800F1
-:101710008E778093E8004115510531F6992321F623
-:101720000AC08091E201882361F0853061F08091E8
-:10173000E80083FD0AC08091E80082FFF2CF80E0DC
-:10174000089582E0089583E0089581E00895BF92AE
-:10175000CF92DF92EF92FF920F931F93CF93DF937D
-:10176000182F092F7B016A010E94530CB82E882381
-:10177000B1F5812F902F9C01E901C114D10439F0FA
-:10178000F60180819181E81AF90AC80FD91F00E09B
-:1017900010E022C08091E80085FD16C08091E8002D
-:1017A0008E778093E800C114D10449F0F60180815E
-:1017B0009181800F911F9183808385E011C00E94E9
-:1017C000530C882349F00CC089918093F100089450
-:1017D000E108F1080F5F1F4FE114F104D9F68B2DDA
-:1017E000DF91CF911F910F91FF90EF90DF90CF90FD
-:1017F000BF900895382F282F2EC0822F8F7080938E
-:10180000E900231721F4762F942F50E006C0709141
-:10181000EC009091ED005091F00091FF1BC0809181
-:10182000EB008E7F8093EB008091ED008D7F8093A5
-:10183000ED008091EB0081608093EB007093EC00F1
-:101840009093ED005093F0008091EE0087FD02C070
-:1018500080E008952F5F273080F23F703093E900D9
-:1018600081E008958091E30188239CF404C0809175
-:10187000E2018823B9F08091E80082FFF8CF8091DF
-:10188000E8008B778093E80008958091E201882337
-:1018900049F08091E80080FFF8CF8091E8008E77D2
-:1018A0008093E80008954091E4005091E50024E61B
-:1018B0008091EC0080FF24C08091E80080FD1EC074
-:1018C0008091E201882311F482E00895853011F4BB
-:1018D00083E008958091EB0085FF02C081E00895C8
-:1018E0008091E4009091E5008417950709F3222385
-:1018F00011F484E008952150AC01DACF80E008951E
-:101900008091E80082FFDCCFF9CF0E94F80C0E94A2
-:10191000000DE0EEF0E0808181608083A8EDB0E012
-:101920008C918F778C9319BCE7EDF0E080818E7FEE
-:1019300080838C918F7E8C931092E1010895EF92B9
-:10194000FF920F931F930E94F80C0E94000D08ED68
-:1019500010E0F80180818F778083808180688083A8
-:1019600080818F7D808319BC1092E2011092DE018C
-:101970001092E0011092DF0180EEE82EF12CF701C9
-:1019800080818B7F8083F80180818160808380E00B
-:1019900060E042E00E94FA0BE1EEF0E080818E7F91
-:1019A0008083E2EEF0E080818160808380818860C6
-:1019B0008083F70180818E7F8083F8018081806140
-:1019C00080831F910F91FF90EF900895E8EDF0E074
-:1019D00080818F7E8083E7EDF0E08081816080836D
-:1019E00084E082BF81E08093E1010E949F0C089512
-:1019F000E8EDF0E080818E7F80831092E200089510
-:101A00001092DA001092E10008951F920F920FB623
-:101A10000F9211241F932F933F934F935F936F93D4
-:101A20007F938F939F93AF93BF93EF93FF93109107
-:101A3000E9008091EC001092E9008091F000877F2E
-:101A40008093F00078940E94130E1092E900809128
-:101A5000F00088608093F0001F701093E900FF9100
-:101A6000EF91BF91AF919F918F917F916F915F9116
-:101A70004F913F912F911F910F900FBE0F901F908C
-:101A800018951F920F920FB60F9211242F933F9328
-:101A90004F935F936F937F938F939F93AF93BF9376
-:101AA000EF93FF938091E10082FF0BC08091E200F1
-:101AB00082FF07C08091E1008B7F8093E1000E944C
-:101AC000830F8091DA0080FF1FC08091D80080FFD3
-:101AD0001BC08091DA008E7F8093DA008091D9005C
-:101AE00080FF0DC080E189BD82E189BD09B400FE9F
-:101AF000FDCF81E08093E2010E947E0905C019BC00
-:101B00001092E2010E9470088091E10080FF19C0EC
-:101B10008091E20080FF15C08091E2008E7F80936B
-:101B2000E2008091E20080618093E2008091D80021
-:101B300080628093D80019BC85E08093E2010E9406
-:101B400074088091E10084FF30C08091E20084FF3E
-:101B50002CC080E189BD82E189BD09B400FEFDCFC2
-:101B60008091D8008F7D8093D8008091E1008F7E96
-:101B70008093E1008091E2008F7E8093E20080916B
-:101B8000E20081608093E2008091DE01882311F001
-:101B900084E007C08091E30087FD02C081E001C0BE
-:101BA00083E08093E2010E94580A8091E10083FF64
-:101BB00029C08091E20083FF25C08091E100877FEA
-:101BC0008093E10082E08093E2011092DE01809137
-:101BD000E1008E7F8093E1008091E2008E7F809310
-:101BE000E2008091E20080618093E20080E060E0AA
-:101BF00042E00E94FA0B8091F00088608093F00030
-:101C00000E947308FF91EF91BF91AF919F918F91C7
-:101C10007F916F915F914F913F912F910F900FBEE8
-:101C20000F901F9018951F93DF93CF93CDB7DEB71A
-:101C3000AC970FB6F894DEBF0FBECDBFE3EEF1E078
-:101C40008091F100819321E0EB3EF207C9F70E94F9
-:101C50008C098091E80083FF3EC18091E3013091BF
-:101C6000E401353009F487C0363040F43130C9F131
-:101C7000313070F0333009F02EC133C0383009F400
-:101C8000F9C0393009F409C1363009F024C197C0D0
-:101C9000803821F0823809F01EC108C09091DF0120
-:101CA0008091E001882399F0926011C08091E70152
-:101CB0008F708093E9008091EB0090E025E096958D
-:101CC00087952A95E1F7982F91701092E9008091FD
-:101CD000E800877F8093E8009093F1001092F10074
-:101CE000D4C0882319F0823009F0F5C090E08F71DC
-:101CF0009070009721F0029709F0EDC00CC0809120
-:101D0000E501813009F0E7C01092E001333069F558
-:101D10008093E0012AC08091E501882331F520916C
-:101D2000E7012F7009F4D7C02093E9008091EB0000
-:101D300080FF1BC0333021F48091EB00806213C020
-:101D40008091EB0080618093EB0081E090E002C025
-:101D5000880F991F2A95E2F78093EA001092EA0013
-:101D60008091EB0088608093EB001092E9008091F5
-:101D7000E800877F8DC0882309F0ADC01091E50190
-:101D80001F778091E3008078812B8093E30080911E
-:101D9000E800877F8093E8000E94320C8091E80081
-:101DA00080FFFCCF8091E30080688093E3001123E3
-:101DB00011F482E001C083E08093E2018CC080587E
-:101DC000823008F088C08091E5019091E60123E01F
-:101DD0008C3D920709F034C083E08C838AE28B83C8
-:101DE0007FB7F894DE0115966EE040E050E011E216
-:101DF000E62FF0E010935700849140FF03C08295D6
-:101E00008F706F5F8F70282F30E08A3018F0C90113
-:101E1000C79602C0C901C0968D939D934F5F5F4FD7
-:101E20004431510529F77FBF8091E800877F809377
-:101E3000E800CE0103966AE270E00E94D20A14C064
-:101E40006091E701AE014F5F5F4F0E945B0ABC01EA
-:101E5000009709F440C08091E800877F8093E800F4
-:101E600089819A810E943C0B8091E8008B77809356
-:101E7000E80031C0803879F58091E800877F809351
-:101E8000E8008091DE018093F1008091E8008E7778
-:101E90008093E8000E94320C1EC08823E1F49091E8
-:101EA000E5019230C0F48091E800877F8093E800DC
-:101EB0009093DE010E94320C8091DE01882331F480
-:101EC0008091E30087FD02C081E001C084E080933F
-:101ED000E2010E94480A8091E80083FF0AC08091D5
-:101EE000E800877F8093E8008091EB008062809318
-:101EF000EB00AC960FB6F894DEBF0FBECDBFCF910E
-:101F0000DF911F91089508951F938091E201882326
-:101F100079F01091E9008091EC001092E900809135
-:101F2000E80083FF02C00E94130E1F701093E900A7
-:101F30001F91089590937601809375010895E09123
-:101F40007501F0917601309711F480E008950190C9
-:101F5000F081E02D09950895E0917501F0917601E9
-:101F6000309721F00280F381E02D09950895E091EA
-:101F70007501F0917601309721F00480F581E02D14
-:101F8000099508959C01809173019091740128171F
-:101F9000390779F03093740120937301E091750152
-:101FA000F0917601309729F00680F781E02DC90184
-:101FB000099508959C0180917101909172012817F3
-:101FC000390779F03093720120937101E091750126
-:101FD000F0917601309729F00084F185E02DC90158
-:101FE0000995089508950E94F20F08950E946805CA
-:101FF00008952F923F925F926F927F928F929F925D
-:10200000AF92BF92CF92DF92EF92FF920F931F9306
-:10201000DF93CF93CDB7DEB72A970FB6F894DEBF24
-:102020000FBECDBF0E94230728E7822E21E0922E0B
-:10203000AA24BB2491E0292E312C5A2C8A2D0E94EF
-:102040006B056C01F401E080F180E826F926E114CB
-:10205000F104E1F18091CD0181FF02C00E9474057D
-:1020600000E010E03101002E02C0660C771C0A94DB
-:10207000E2F7C3018E219F21892B19F10E944C1C8C
-:102080009C0109835A821B82C620D720CD2811F0DB
-:1020900081E08B83C9018160782F9D838C83498186
-:1020A0005A816B818D810E941C15F501EE0FFF1F77
-:1020B000E858FE4F80819181862597259183808302
-:1020C00021C00F5F1F4F0C30110561F60894A11C51
-:1020D000B11C82E090E0880E991E94E0A916B1042C
-:1020E00009F0ABCF0E944C1C2FEF2E832F83188654
-:1020F0008160782F9A8789874FEF5FEF60E08A854C
-:102100000E941C150E94B41E109177010E949F0F1F
-:10211000181731F00E949F0F809377010E94F60FED
-:102120002A960FB6F894DEBF0FBECDBFCF91DF91D8
-:102130001F910F91FF90EF90DF90CF90BF90AF90E5
-:102140009F908F907F906F905F903F902F90089519
-:102150000E94431C0E943F060E94CD1C0E942A221E
-:102160000895DF93CF9300D000D00F92CDB7DEB7A4
-:102170000F900F900F900F900F90CF91DF910895D7
-:10218000DF93CF9300D000D000D0CDB7DEB7269636
-:102190000FB6F894DEBF0FBECDBFCF91DF9108958B
-:1021A0000E94DA19482F892F82958F70282F30E0EE
-:1021B0002C3031054CF42A3031056CF4225030407B
-:1021C00022303105E8F407C02C30310579F02F308A
-:1021D0003105B1F40BC0403F39F0413F18F4403EA7
-:1021E00078F402C0443F61F481E008959F70892F24
-:1021F00090E023E0969587952A95E1F78170089500
-:1022000080E008950E94431B0E94531B0E94181BEC
-:102210000E946B1B0E949D1E0E94A91E80E090E000
-:102220000E94C20F80E090E00E94DA0F08950E94A1
-:10223000331B0E9402110895882321F00E942C1B59
-:102240000E946B1B0895882321F00E94261B0E9488
-:102250006B1B0895282F882309F44EC0823859F447
-:102260000E949F0F81FF48C089E30E94E71A0E94E5
-:102270006B1B89E30CC0833869F40E949F0F80FFB9
-:102280003BC083E50E94E71A0E946B1B83E50E9416
-:10229000051B1FC0843859F40E949F0F82FF2CC079
-:1022A00087E40E94E71A0E946B1B87E4F0CF8450FA
-:1022B000813A10F4822FEBCF822F805E883060F459
-:1022C000277081E090E001C0880F2A95EAF70E940C
-:1022D0002C1B0E946B1B0895822F855A833028F493
-:1022E00080E090E00E94C20F0895285A233120F424
-:1022F00080E090E00E94DA0F08951F93182F882342
-:1023000009F4D0C0823859F40E949F0F81FDCAC0E1
-:1023100089E30E94E71A0E946B1B89E30CC0833893
-:1023200079F40E949F0F80FDBDC083E50E94E71AEB
-:102330000E946B1B83E50E94051B0E946B1BB2C0B1
-:10234000843859F40E949F0F82FDACC087E40E943C
-:10235000E71A0E946B1B87E4EECF8450813A50F459
-:10236000812F0E94D020882309F09CC0812F0E94D9
-:10237000E71AE3CF812F805E883050F4177081E038
-:1023800090E001C0880F1A95EAF70E94261BD5CF6E
-:10239000812F855A8330A0F4153A19F481E890E032
-:1023A0000CC0163A19F482E890E007C0173A19F009
-:1023B00080E090E002C083E890E00E94C20F72C00B
-:1023C000812F885A833108F06DC0183A19F482EED3
-:1023D00090E066C0193A19F489EE90E061C01A3AAB
-:1023E00019F48AEE90E05CC01B3A19F485EB90E09A
-:1023F00057C01C3A19F486EB90E052C01B3B19F40D
-:1024000083EB90E04DC01C3B19F484EB90E048C096
-:102410001D3A19F487EB90E043C0103B19F48CECA3
-:1024200090E03EC01E3A19F48DEC90E039C01F3A9E
-:1024300019F483E891E034C0113B19F48AE891E083
-:102440002FC0123B19F482E991E02AC0133B19F422
-:1024500084E991E025C0143B19F481E292E020C0A8
-:10246000153B19F483E292E01BC0163B19F484E299
-:1024700092E016C0173B19F485E292E011C0183BB8
-:1024800019F486E292E00CC0193B19F487E292E05D
-:1024900007C01A3B19F080E090E002C08AE292E0A7
-:1024A0000E94DA0F1F9108959F92AF92BF92CF9230
-:1024B000DF92EF92FF920F931F93DF93CF93CDB7ED
-:1024C000DEB72A970FB6F894DEBF0FBECDBF5C0112
-:1024D000DE011196FC0185E001900D928150E1F73B
-:1024E0000B81F501F580F2944FE0F422DE0116969F
-:1024F000FE01319685E001900D928150E1F73E8119
-:102500002F8189859A85892B09F484C22F3F09F090
-:1025100070C23F3F09F06DC27DC20E94431B0E9402
-:10252000E11A882379F0002369F08C2D805E8830D1
-:1025300048F082E00E949C1B0E94E11A9924939427
-:10254000982601C099248D2D82958F7090E085305A
-:10255000910509F4B5C08630910554F48430910595
-:102560000CF08FC02D2D207F02970CF049C017C0B2
-:102570008C30910544F48A3091050CF072C10897B3
-:1025800009F023C2A9C08D30910509F4EDC18D3049
-:1025900091050CF4DFC10F9709F017C20FC28D2D02
-:1025A0008F70222311F4182F03C0182F1295107F5B
-:1025B000002389F0112309F4B9C18C2D805E883085
-:1025C00020F4812F0E94261B03C0812F0E94361BFE
-:1025D0000E946B1BABC18C2D0E942A11112309F4A0
-:1025E000F4C1F0E2CF0E27E02C1520F0812F0E94DD
-:1025F0002C1B03C0812F0E943C1B0E946B1BE5C15A
-:102600008D2D8F70203211F4182F03C0182F1295C2
-:10261000107FCC2021F081E0C81609F514C00023FA
-:1026200049F0FF2031F1E1E0FE1619F5812F0E94FB
-:10263000561BCBC1FF2021F0F1E0FF1609F4C5C104
-:102640000E94591B30C1002329F025E02F1508F402
-:10265000BCC10FC084E08F1508F4B7C124C10023AA
-:1026600061F0FF2031F0F501858180FF5FC18F703F
-:102670008583812F0E942311A8C1FF2009F413C173
-:1026800060C18D2D86958695837090E0009721F02E
-:10269000019709F09AC10AC0002319F0C60193708E
-:1026A00002C080E090E00E94C20F8FC1002319F0A9
-:1026B000C601937002C080E090E00E94DA0F85C1ED
-:1026C000002321F08C2D0E94AB1D03C08C2D0E9495
-:1026D000151E0E94A91E79C18D2D837009F05EC060
-:1026E000002309F072C12C2D229526952770220F08
-:1026F000220F8C2D8F70E82EFF2400E010E0022EB8
-:1027000004C0EE0CFF1C001F111F0A94D2F7C4FC7A
-:1027100005C060E070E080E090E00FC06FE070E026
-:1027200080E090E004C0660F771F881F991F2A95EC
-:10273000D2F76095709580959095D694D694F3E0F5
-:10274000DF224D2D50E041305105A9F042305105B6
-:102750001CF4452B49F039C14230510589F0433012
-:10276000510509F032C113C06E297F29802B912BAE
-:102770000E94B21A2AC16E297F29802B912B0BC08F
-:102780006E297F29802B912B0E94A11A1EC10E94C5
-:10279000B21AC801B7010E94C31A17C190E0002302
-:1027A00011F496958795817009F40FC12C2D22950F
-:1027B00026952770220F220F8C2D8F70E82EFF2474
-:1027C00000E010E0022E04C0EE0CFF1C001F111FE1
-:1027D0000A94D2F7C4FC05C060E070E080E090E0AD
-:1027E0000FC06FE070E080E090E004C0660F771FDC
-:1027F000881F991F2A95D2F76095709580959095BE
-:10280000D694D69423E0D2224D2D50E0413051058C
-:10281000A9F0423051051CF4452B49F0D6C0423096
-:10282000510589F04330510509F0CFC013C06E291E
-:102830007F29802B912B0E94051AC7C06E297F2902
-:10284000802B912B0BC06E297F29802B912B0E940E
-:10285000F419BBC00E94051AC801B7010E94161ADC
-:10286000B4C081EFC81699F18C1540F0E0EECE1699
-:1028700008F458C0FFEEFC1558F419C023EFC21637
-:1028800081F1C21648F184EFC81609F04BC033C07D
-:102890001C2D1F708D2D8F71002319F00E94631A5B
-:1028A000E8CE0E94431A812F0E941C118EC0002383
-:1028B00029F0E4E0EF1508F488C004C0F5E0FF1546
-:1028C00008F483C08D2D8F710E94271A7EC08D2D34
-:1028D0008F710023E1F130C08D2D8F71002361F1E4
-:1028E00036C0002329F08D2D8F710E947F1A6DC094
-:1028F0000E948F1A6AC0002351F01D2D1F71812F75
-:102900000E94631A812F63E00E94B51B5EC081E0C4
-:102910000E949C1B21E02F1508F057C082E00E9406
-:102920009C1B53C0002359F0FF2021F08C2D0E94E6
-:102930007D114BC08D2D8F710E94631A46C0FF2000
-:1029400021F08C2D0E942A1140C08D2D8F710E9484
-:10295000431A3BC08FE0D822C5016C2D4D2D0E943B
-:10296000EE010E94181931C0002379F5EFE0DE2254
-:102970004D2D50E042305105B9F0433051053CF443
-:102980004115510559F041305105F9F40AC0433061
-:10299000510569F044305105C1F40CC00E94152264
-:1029A00014C00E94F82111C00E94E3210EC00E94B1
-:1029B000BC210BC08C2D0E94A02107C0FFE0DF22AC
-:1029C000C5016C2D4D2D0E946E02992019F10E94B7
-:1029D000DD1A80FD1FC0F50112820E94D71A0E94E5
-:1029E000631AC5010E9454120E94D71A0E94431A0A
-:1029F00011C0C5010E94070269817A81802F0E945F
-:102A0000E5196C010E9492190E949119002309F4A2
-:102A100086CD83CD2A960FB6F894DEBF0FBECDBF0C
-:102A2000CF91DF911F910F91FF90EF90DF90CF90AA
-:102A3000BF90AF909F900895DF93CF93CDB7DEB74F
-:102A40002B970FB6F894DEBF0FBECDBF342F4F8348
-:102A5000252F588769877A878B87472F582FFE0144
-:102A6000319686E0DF011D928A95E9F76B83398301
-:102A70002A834C835D83432F522F8D819E810E9438
-:102A800059182B960FB6F894DEBF0FBECDBFCF916D
-:102A9000DF9108950F931F930091870115C010E0F7
-:102AA000F801EE0FFF1FE00FF11FEE0FFF1FE857B9
-:102AB000FE4F4081518162817381848195810E94A2
-:102AC000C0100F5F1F4F077080918601081739F7FC
-:102AD0001F910F9108954091800150918101609163
-:102AE00082017091830180918401909185010E94FF
-:102AF000C01008950F931F93CF93DF9380918501AA
-:102B000082958F7009F06DC080918201882309F44D
-:102B100068C06091870100918601409183015091C6
-:102B200084011091810170918001EA01C095D095D6
-:102B300055C04115510509F44FC01F3F49F480E0CD
-:102B400090E07F3F11F481E090E0882309F044C0D9
-:102B5000262F30E0F901EE0FFF1FE20FF31FDF0118
-:102B6000AA0FBB1FA857BE4F11968C91119718172B
-:102B700099F58C91781781F5EE0FFF1FE657FE4F00
-:102B80008081882349F513968D919C911497841721
-:102B9000950718F0841B950B02C08C0F9D1F883C75
-:102BA0009105D0F4809185018F70806180938501BB
-:102BB000F901EE0FFF1FE20FF31FEE0FFF1FE357A8
-:102BC000FE4F80818F708061808380E891E00E9459
-:102BD00054120E944A1505C06F5F6770601709F0B4
-:102BE000A8CFDF91CF911F910F910895DF92EF92BF
-:102BF000FF920F931F93DF93CF93CDB7DEB76B9701
-:102C00000FB6F894DEBF0FBECDBF8C01DC0112966B
-:102C1000DC9012974C9111965C9111971396ED9060
-:102C2000FC9014972091830130918401609181017F
-:102C3000709180012115310509F4DBC16F3F09F066
-:102C400003C27F3F09F000C2D4C1E216F30640F090
-:102C5000C701821B930B883C910508F0EEC008C0A9
-:102C6000209530952E0D3F1D283C310508F0E5C01C
-:102C700080918501807F09F095C06F3F09F0EAC11E
-:102C80007F3F09F0E7C115C0741799F4DD2089F47E
-:102C9000809185018F708061809385010E946B1502
-:102CA00080E891E00E94541280918501F8018583AB
-:102CB000BCC1FD82EC825A834983DB82DE01169619
-:102CC000FE01319685E001900D928150E1F7688513
-:102CD000DE011B96FE01369685E001900D92815033
-:102CE000E1F72C853B858E859F85892B09F451C0A2
-:102CF0002F3F09F0B3C13F3F09F0B0C14AC0FD8288
-:102D0000EC825A834983DB82DE011B96FE013196F9
-:102D100085E001900D928150E1F7FC847B856D8503
-:102D200080918701909186011FC0282F30E0F90122
-:102D3000EE0FFF1FE20FF31FDF01AA0FBB1FA85703
-:102D4000BE4F11968C911197F81651F48C9178170B
-:102D500039F4EE0FFF1FE657FE4F80816817C9F464
-:102D60002F5F3F4F822F87708917F9F68DC19F70B3
-:102D700059F0442349F459C19F7031F0D801159698
-:102D80008C91807F09F451C1405E483008F44DC1F8
-:102D900048C1DD2009F449C180918501816080939B
-:102DA000850143C16F3F09F05DC17F3F09F05AC102
-:102DB00014C0741791F4DD2081F480918501F8012D
-:102DC0008583C8010E945412A0E8B1E0F80186E0B2
-:102DD00001900D928150E1F720C15A834983898186
-:102DE0009A810E94D010882309F41BC1DD2009F4C8
-:102DF00018C130918501832F82958F7090E00297E2
-:102E00009CF09091810120918001FE01709686E0F6
-:102E1000DF011D928A95E9F7998B288BFC8AEB8A52
-:102E20003D8BCF010E945412A0E8B1E0F80186E08A
-:102E300001900D928150E1F7EEC080918501807F75
-:102E4000A9F47E2DFD82EC825A834983DB826D2DAD
-:102E50008D810E94B11000E811E0C8010E94541257
-:102E600086E0F80111928A95E9F7C0C06F3F09F03A
-:102E7000FDC07F3F09F0FAC014C0741791F4DD2043
-:102E800081F480918501D80115968C93C8010E9428
-:102E90005412E0E8F1E086E0DF011D928A95E9F73F
-:102EA000BEC05A83498389819A810E94D0108823A9
-:102EB00009F4B7C0DD2009F4B4C030918501832F37
-:102EC00082958F7090E002979CF090918101209103
-:102ED0008001FE01769686E0DF011D928A95E9F772
-:102EE0009F8B2E8BFA8EE98E3B8FCF010E9454125E
-:102EF000A0E8B1E0F80186E001900D928150E1F781
-:102F00008AC06F3F09F0B6C07F3F09F0B3C071C0FF
-:102F1000E216F30640F0C701821B930B883C910533
-:102F200008F053C008C0209530952E0D3F1D283C59
-:102F3000310508F04AC0DD2009F473C06F3F09F085
-:102F40009FC07F3F09F09CC029C0741739F590914C
-:102F5000850190FD1AC0892F82958F70B1F0F8011C
-:102F600095838F3031F08F5F8295807F9F70982B93
-:102F70009583C8010E945412A0E8B1E0F80186E0F0
-:102F800001900D928150E1F748C0A0E8B1E0F8014E
-:102F900086E001900D928150E1F741C05A83498348
-:102FA00089819A810E94D010882349F0A0E8B1E07D
-:102FB000F80186E001900D928150E1F72CC08091DC
-:102FC00085018160809385012CC07E2DFD82EC827D
-:102FD0005A834983DB826D2D8D810E94B110E0E818
-:102FE000F1E086E0DF011D928A95E9F70E946B15FA
-:102FF0001CC0DD20B1F05A83498389819A810E94E7
-:10300000D010882371F0A0E8B1E0F80186E00190CB
-:103010000D928150E1F70E947A150E946B1581E0B4
-:1030200005C0C8010E945412FACF80E06B960FB61B
-:10303000F894DEBF0FBECDBFCF91DF911F910F91EE
-:10304000FF90EF90DF90089580918201882309F42A
-:1030500058CFFBCD651709F02CCE16CE613009F4A0
-:1030600098CE4DCE651709F0B8CEA3CE651709F0FE
-:1030700018CF03CF80918201882309F0BACF48CFBF
-:10308000651709F08BCF61CF5A83498389819A8173
-:103090000E94DA19482F892F82958F70282F30E0EF
-:1030A000223031050CF463CE243031050CF0B9CF59
-:1030B00063CE0F931F93DF93CF93CDB7DEB72C97DB
-:1030C0000FB6F894DEBF0FBECDBF4F835887698718
-:1030D0007A878B879C878E01095F1F4FC8010E94EA
-:1030E000F6158823D9F028853F818A859B85892B11
-:1030F00009F46BC02F3F49F480E090E03F3F11F4AA
-:1031000081E090E0882309F060C04F81588569858F
-:103110007A858B859C850E94C01057C0DE01119670
-:10312000F80186E001900D928150E1F7F981EA8182
-:103130004C815D814115510509F447C0EF3F09F00D
-:103140004CC0FF3F09F049C040C0F983EA835D836A
-:103150004C83F901EE0FFF1FE20FF31FEE0FFF1F6D
-:10316000E857FE4FDE01119686E00D9001928150E6
-:10317000E1F7609386010E944A1527C0919FC00124
-:10318000112488579E4F0E94F615882309F445C0E4
-:103190008091870190E0FC01EE0FFF1FE80FF91FFF
-:1031A000EE0FFF1FE857FE4F40815181628173810E
-:1031B000848195810E94C0108091870190E00196E2
-:1031C000877090708093870101C016E0909187010D
-:1031D00080918601981791F620C080918601282F52
-:1031E00030E02F5F3F4FB901677070702150304061
-:1031F0008091870190E06817790709F0A6CF0E94B7
-:1032000017111092860110928701E0E8F1E086E044
-:10321000DF011D928A95E9F7D8CF2C960FB6F89466
-:10322000DEBF0FBECDBFCF91DF911F910F910895EB
-:10323000CF92DF92EF92FF921F93CF93DF93EC0137
-:10324000009709F466C010E090EAC92E9FE0D92EDD
-:1032500081E0E82EF12CFE0121969491943748F4F8
-:10326000943008F044C0913079F0923009F051C0A8
-:103270001BC0953709F437C0953750F1892F845812
-:10328000803708F046C037C0FE0121969491892FFF
-:10329000805E883060F597708E2D01C0880F9A95FA
-:1032A000EAF70E94461B0FC0FE0121969491892FD8
-:1032B000805E883058F497708E2D01C0880F9A95E3
-:1032C000EAF70E944C1B0E946B1B19C0892F15C086
-:1032D000FE01249104C0C6010197F1F72150222379
-:1032E000D1F721960CC0FE012196149108C0892FB8
-:1032F0000E947D1104C0892F8F770E942A11212FEF
-:1033000004C0C6010197F1F72150222309F4A3CF8D
-:10331000F8CFDF91CF911F91FF90EF90DF90CF908A
-:10332000089508950895AF92BF92DF92EF92FF92B1
-:103330000F931F93CF93DF935C01E090B801F0905F
-:10334000B9010091BA011091BB018091BC0190912B
-:10335000BD01A091BE01B091BF01E82AF92A0A2B54
-:103360001B2BCFE1D0E0DC2ED801C7010C2E04C00E
-:10337000B695A795979587950A94D2F78170907026
-:10338000892B39F08C2FB5010E94D304813091052F
-:1033900031F421978FEFCF3FD80729F7DD248D2D0A
-:1033A000DF91CF911F910F91FF90EF90DF90BF9031
-:1033B000AF9008950F931F938C010E949319B80149
-:1033C0000E94D3041F910F910895CB010E94DA1936
-:1033D00008956093BC017093BD018093BE019093EA
-:1033E000BF010E94021108959B01AC016091BC01D4
-:1033F0007091BD018091BE019091BF01622773273A
-:10340000842795270E94E91908959B01AC016091DA
-:10341000BC017091BD018091BE019091BF016223FA
-:103420007323842395230E94E91908959B01AC011D
-:103430006091BC017091BD018091BE019091BF016E
-:10344000622B732B842B952B0E94E919089521E0A0
-:1034500030E040E050E004C0220F331F441F551FEE
-:103460008A95D2F78091BC019091BD01A091BE01D7
-:10347000B091BF01282739274A275B27CA01B90124
-:103480000E94E919089521E030E040E050E004C0D6
-:10349000220F331F441F551F8A95D2F72095309570
-:1034A000409550958091BC019091BD01A091BE01C5
-:1034B000B091BF01282339234A235B23CA01B901F4
-:1034C0000E94E919089521E030E040E050E004C096
-:1034D000220F331F441F551F8A95D2F78091BC01DC
-:1034E0009091BD01A091BE01B091BF01282B392B55
-:1034F0004A2B5B2BCA01B9010E94E919089521E00A
-:1035000030E040E050E004C0220F331F441F551F3D
-:103510008A95D2F7CA01B9010E94E919089560E0BD
-:1035200070E080E090E00E94E91908956093B8018E
-:103530007093B9018093BA019093BB010E9402116C
-:1035400008959B01AC016091B8017091B90180911F
-:10355000BA019091BB0162277327842795270E94A7
-:10356000961A08959B01AC016091B8017091B90160
-:103570008091BA019091BB01622373238423952328
-:103580000E94961A08959B01AC016091B801709158
-:10359000B9018091BA019091BB01622B732B842BEE
-:1035A000952B0E94961A08950E94961A089580916C
-:1035B000CC0185958595859508958091CC0187707E
-:1035C00008958091CC01877009F081E00895382F2B
-:1035D000A0910C01B0910D01FD0120E08FEF9281CF
-:1035E000931791F08F3F19F4992309F4822F2F5FDD
-:1035F00031962630A1F78F3F39F0992787FD9095B6
-:10360000A80FB91F12963C930895982F20E030E040
-:10361000E0910C01F0910D01E20FF31F82818917F7
-:1036200009F412822F5F3F4F2630310589F7089544
-:1036300081E090E0E0910C01F0910D01E80FF91F9D
-:103640001082019688309105A9F708959091C801DC
-:10365000982B9093C801089580959091C801982364
-:103660009093C80108951092C80108959091CB01DC
-:10367000982B9093CB01089580959091CB0198233E
-:103680009093CB0108951092CB0108959091CA01B7
-:10369000982B9093CA01089580959091CA01982320
-:1036A0009093CA0108951092CA0108958093C901A8
-:1036B00008951092C9010895E0910C01F0910D0157
-:1036C00020E091E0818181112F5F9F5F31969830DA
-:1036D000C9F7822F0895E0910C01F0910D018091BE
-:1036E000C8018083E0910C01F0910D0180819091DF
-:1036F000CB01892B8083E0910C01F0910D01808139
-:103700009091CA01892B80839091C901992369F016
-:10371000E0910C01F0910D018081892B80830E9442
-:103720005C1B882311F00E94591B80910C01909121
-:103730000D010E94AC0F08952091CC01482F4095B7
-:1037400042234093CC01842F877071F430E0842FA2
-:10375000992787FD90952817390731F0842F859593
-:10376000859585950E94431A0895982F990F990F72
-:10377000990F962B9093CC010E94631A0895089597
-:1037800008951F920F920FB60F9211248F939F935B
-:10379000AF93BF938091CE01882399F48091CF019C
-:1037A0009091D001A091D101B091D2014196A11D7B
-:1037B000B11D8093CF019093D001A093D101B0931C
-:1037C000D201BF91AF919F918F910F900FBE0F903B
-:1037D0001F9018950E94171180E00E9423020E94FA
-:1037E0002A220E949F0F0E94680508958091E2019D
-:1037F000843039F11092CE0120E488E190E00FB6D8
-:10380000F894A895809360000FBE2093600080E03C
-:103810000E94230280E00E94680583B7817F846054
-:1038200083BF83B7816083BF7894889583B78E7F89
-:1038300083BF88E10FB6F894809360001092600017
-:103840000FBE089580E00E9423020E94BF1B0E94C9
-:1038500023070E94C01B80E00E946B05892B81F426
-:1038600081E00E946B05892B59F482E00E946B0570
-:10387000892B31F483E00E946B0520E0892B09F04D
-:1038800021E0822F089582E084BD93E095BD9AEFF8
-:1038900097BD80936E0008958FB7F8942091CF0163
-:1038A0003091D0014091D1015091D2018FBFC90117
-:1038B0000895EF92FF920F931F93BC018FB7F89476
-:1038C000E090CF01F090D0010091D1011091D20190
-:1038D0008FBFA801970140705070CB01A0E0B0E00D
-:1038E000281739074A075B0720F09701261B370B7B
-:1038F00005C09B01209530952E0D3F1DC9011F91DC
-:103900000F91FF90EF9008951F920F920FB60F92B4
-:1039100011248F939F93AF93BF938091CF01909188
-:10392000D001A091D101B091D2010196A11DB11D8C
-:103930008093CF019093D001A093D101B093D20195
-:10394000BF91AF919F918F910F900FBE0F901F90DD
-:1039500018950E94850CF89480E29EE420E931E0FD
-:10396000F9013197F1F70197D9F787E090EBA7E0DC
-:10397000B0EB8093ED019093EE01A093EF01B09333
-:10398000F0012CE088E190E00FB6F894A8958093C0
-:1039900060000FBE20936000FFCF0E94051D8823AA
-:1039A00011F40E94101D0E94001D8093CD010E9401
-:1039B000F61C8093EB010E94FB1C90E0A0E0B0E0BD
-:1039C000BC01CD010E94D41A0895682F86E090E0D2
-:1039D0000E9493230895682F84E090E00E9493232F
-:1039E000089586E090E00E948523089584E090E0A9
-:1039F0000E948523089583E090E00E948523089526
-:103A000082E090E00E948523089580E090E00E948B
-:103A10008D2320E08D5E9E4F09F421E0822F0895D2
-:103A200080E090E06DEE7EEF0E94A52382E090E0C2
-:103A300060E00E94932383E090E060E00E94932383
-:103A400084E090E060E00E94932385E090E060E0F5
-:103A50000E94932386E090E060E00E949323089503
-:103A60008091D90180FF0BC09091100185E0989F53
-:103A7000C0011124959587959595879530C081FF54
-:103A800009C09091100185E0989FC001112495957F
-:103A9000879525C082FF03C0909110010DC08091D1
-:103AA000D801882319F485E090E008956091110110
-:103AB00090911001861728F085E0989FC00111248D
-:103AC0000EC0899F90011124C901880F991F880F8A
-:103AD000991F820F931F70E00E945E23CB018038F4
-:103AE000910510F08FE70895009709F481E008959B
-:103AF0008091D90180FF05C080911201869586953D
-:103B000018C081FF04C080911201869512C082FF07
-:103B100003C0809112010DC02091D801222319F415
-:103B200081E090E0089560911301809112012617C1
-:103B300010F090E007C0289FC001112470E00E949F
-:103B40005E23CB018038910510F08FE70895009730
-:103B500009F481E00895803F21F40E94301D819591
-:103B600004C0813F29F40E94301D8093D50108953F
-:103B7000823F21F40E94301D819504C0833F29F4C7
-:103B80000E94301D8093D4010895893F19F40E944A
-:103B9000781D05C08A3F31F40E94781D819580937D
-:103BA000D60108958B3F21F40E94781D819504C0B1
-:103BB0008C3F29F40E94781D8093D7010895843F9B
-:103BC00021F48091D301816017C0853F21F4809159
-:103BD000D301826011C0863F21F48091D3018460BB
-:103BE0000BC0873F21F48091D301886005C0883FD6
-:103BF00031F48091D30180618093D30108958D3F8A
-:103C000021F48091D901816005C08E3F31F480910B
-:103C1000D90182608093D90108958F3F29F4809162
-:103C2000D90184608093D9010895803F29F480915F
-:103C3000D50187FF6FC007C0813F41F48091D50156
-:103C400018160CF067C01092D50164C0823F29F4A9
-:103C50008091D40187FF5EC007C0833F41F480910B
-:103C6000D40118160CF056C01092D40153C0893FED
-:103C700029F48091D60118163CF04CC08A3F39F4E3
-:103C80008091D60187FF46C01092D60143C08B3F7A
-:103C900029F48091D70187FF3DC006C08C3F39F4DD
-:103CA0008091D7011816B4F51092D70133C0843F24
-:103CB00021F48091D3018E7F05C0853F31F480913E
-:103CC000D3018D7F8093D30125C0863F21F480915D
-:103CD000D3018B7FF7CF873F21F48091D301877F7A
-:103CE000F1CF883F21F48091D3018F7EEBCF8D3FC0
-:103CF00021F48091D9018E7F0BC08E3F21F48091F9
-:103D0000D9018D7F05C08F3F29F48091D9018B7F28
-:103D10008093D9018091D401882371F48091D501D9
-:103D2000882351F48091D601882331F48091D70102
-:103D3000882311F41092D8010895E3EDF1E085E0B5
-:103D4000DF011D928A95E9F71092D8011092D901EE
-:103D5000089583ED91E00E94B70F0E944C1C909350
-:103D6000DB018093DA0108951F938091DA0190912D
-:103D7000DB010E94591CAC012091D801222321F0C3
-:103D800080910F0190E006C090910E018AE0989F0B
-:103D9000C00111244817590708F485C09091D40137
-:103DA000992369F48091D501882349F48091D60143
-:103DB000882329F48091D701882309F474C02F3F08
-:103DC00019F02F5F2093D801191624F40E94301D9A
-:103DD0008093D4018091D40187FF05C00E94301DDB
-:103DE00081958093D4018091D501181624F40E9406
-:103DF000301D8093D5018091D50187FF05C00E94B9
-:103E0000301D81958093D5016091D401662339F1ED
-:103E10001091D501112319F1772767FD7095872F30
-:103E2000972F0E946F2223E333E343E35FE30E9473
-:103E3000D3220E943C226093D401612F772767FD33
-:103E40007095872F972F0E946F2223E333E343E37C
-:103E50005FE30E94D3220E943C226093D5018091AF
-:103E6000D601181624F40E94781D8093D601809103
-:103E7000D60187FF05C00E94781D81958093D601E9
-:103E80008091D701181624F40E94781D8093D701E1
-:103E90008091D70187FF05C00E94781D819580938E
-:103EA000D7010E94A91E1F91089580E0089580E027
-:103EB0000895833099F1843030F4813069F0823094
-:103EC00009F06FC01AC0853009F44AC08530B8F1D6
-:103ED000863009F066C055C020910E01822F90E017
-:103EE000860F911D8F3F910520F4260F20930E0120
-:103EF00008958FEF80930E01089520910F01822F76
-:103F000090E0860F911D8F3F910520F4260F20939E
-:103F10000F0108958FEF80930F01089520911001F4
-:103F2000822F90E0860F911D8F3F910520F4260F80
-:103F30002093100108958FEF809310010895209130
-:103F40001101822F90E0860F911D8F3F910520F483
-:103F5000260F2093110108958FEF8093110108958A
-:103F600020911201822F90E0860F911D8F3F9105C5
-:103F700020F4260F2093120108958FEF80931201F1
-:103F8000089520911301822F90E0860F911D8F3F9D
-:103F9000910520F4260F2093130108958FEF80934D
-:103FA00013010895833031F1843030F4813061F0B1
-:103FB000823009F04AC013C0853091F1853028F174
-:103FC000863009F042C037C080910E01681720F496
-:103FD000861B80930E01089510920E010895809122
-:103FE0000F01681720F4861B80930F01089510922B
-:103FF0000F01089580911001681720F4861B8093AB
-:104000001001089510921001089580911101681710
-:1040100020F4861B809311010895109211010895D8
-:1040200080911201681720F4861B80931201089575
-:1040300010921201089580911301681720F4861BD5
-:1040400080931301089510921301089521E030E048
-:1040500040E050E004C0220F331F441F551F8A95D3
-:10406000D2F7CA01B9010E94D41A0E94171108950B
-:104070008732F8F48E3108F08AC08E3009F463C0BC
-:104080008F3048F4873009F445C08B3009F486C07E
-:10409000863039F528C0863109F480C0873118F49C
-:1040A0008031F9F45CC0893109F478C08B31C9F4EE
-:1040B00040C0883309F472C0893348F4893209F466
-:1040C00068C0853309F465C0873259F462C083340F
-:1040D00009F45FC0843418F48A3318F056C0883469
-:1040E00059F080E008958091CD01807F8093CD01CB
-:1040F00081E08093DC0108950E94171180E197E22E
-:1041000020E931E0F9013197F1F70197D9F70E94E1
-:10411000A91C42C09091CD01892F809581709E7F0E
-:10412000982B882311F09E6001C0917F9093CD0160
-:1041300033C08091CD01982F969590959170292F3D
-:10414000220F8D7F19C08091CD01982F969596955D
-:1041500090959170292F220F220F8B7F0DC0809197
-:10416000CD01982F96959695969590959170292FBB
-:10417000220F220F220F877F822B8093CD0199235C
-:1041800069F081608093CD0107C0895303C08D51D0
-:1041900001C080E00E94262081E0089581E008951A
-:1041A0001F93182F8091DC01813079F0813020F04D
-:1041B000823009F0BCC037C0E0910C01F0910D01D4
-:1041C0008081823209F0B5C007C0E0910C01F09106
-:1041D0000D018081823249F4812F0E94551F88236E
-:1041E000F9F4812F0E943820A5C0812F0E94571F0B
-:1041F0008823B1F4143161F0153128F41B3081F0BB
-:10420000103141F40AC0193219F0183319F408C0FA
-:104210001092DC0180E090E08DC082E08093DC01B0
-:1042200081E090E087C0193201F11A3270F4143144
-:10423000E1F0153120F4173009F064C065C0812F1A
-:104240008E51863008F05EC01BC01E3409F455C084
-:104250001F3420F41B3409F055C049C0113509F44E
-:1042600042C0123509F04EC03AC08091DD0188236A
-:1042700019F01092DD0146C081E08093DC015AC044
-:104280001232F9F0133260F41F3199F0103218F441
-:104290001E3109F510C0103281F01132E1F40FC067
-:1042A000143299F0143278F0153289F0163299F4FC
-:1042B00010C082E011C081E00FC083E00DC084E037
-:1042C0000BC085E009C086E007C087E005C088E034
-:1042D00003C089E001C080E08093DD0113C08091BC
-:1042E000DD0161E007C08091DD0161E009C08091DE
-:1042F000DD016AE00E94591F05C08091DD016AE07E
-:104300000E94D21F81E016C08EE180930E0182E3ED
-:1043100080930F018AE08093100184E18093110162
-:1043200088E08093120188E280931301EBCF109212
-:10433000DC0180E01F9108958091EC01869508953D
-:104340009091EC01292F26952827220F9170922B0E
-:104350009093EC0120E09E7F09F021E08091EC0138
-:104360008E7F822B8093EC010E94E51C8091EC01F2
-:1043700086950E94230208958091EC01282F2695AE
-:104380002F5F2F77922F990F8170892B8093EC01EB
-:1043900030E0243031051CF081708093EC0190E016
-:1043A0008091EC018E7F09F091E08091EC018E7F8D
-:1043B000892B8093EC010E94E51C8091EC0186958D
-:1043C0000E94230208958091EC01982F909591709E
-:1043D0008E7F892B8093EC010E94E51C8091EC017B
-:1043E00080FD02C080E001C086950E9423020895EE
-:1043F0008091EC01982F969591F09158990F8170CA
-:10440000892B8093EC0190E08E7F09F091E0809100
-:10441000EC018E7F892B8093EC010E94E51C80913A
-:10442000EC0186950E94230208952091EC012695C7
-:10443000822F90E0039744F4822F8F5F880F816072
-:104440008093EC010E94E51C8091EC0186950E940E
-:10445000230208950E94051D882311F40E94101D57
-:104460000E94F11C8093EC0180FD02C080E001C03D
-:1044700086950E942302089504D06894B1118DC0DE
-:10448000089570D088F09F5790F0B92F9927B751B1
-:10449000A0F0D1F0660F771F881F991F1AF0BA9508
-:1044A000C9F712C0B13081F077D0B1E0089574C07F
-:1044B000672F782F8827B85F39F0B93FCCF38695FE
-:1044C00077956795B395D9F73EF49095809570955B
-:1044D00061957F4F8F4F9F4F0895E89409C097FBD8
-:1044E0003EF490958095709561957F4F8F4F9F4FCB
-:1044F0009923A9F0F92F96E9BB279395F69587950F
-:1045000077956795B795F111F8CFFAF4BB0F11F4D1
-:1045100060FF1BC06F5F7F4F8F4F9F4F16C0882378
-:1045200011F096E911C0772321F09EE8872F762FAE
-:1045300005C0662371F096E8862F70E060E02AF0EF
-:104540009A95660F771F881FDAF7880F96958795DB
-:1045500097F9089557FD9058440F551F59F05F3F44
-:1045600071F04795880F97FB991F61F09F3F79F095
-:1045700087950895121613061406551FF2CF469517
-:10458000F1DF08C0161617061806991FF1CF869599
-:104590007105610508940895E894BB27662777277D
-:1045A000CB0197F908950BD078C069D028F06ED070
-:1045B00018F0952309F05AC05FC01124EECFCADF6E
-:1045C000A0F3959FD1F3950F50E0551F629FF00126
-:1045D000729FBB27F00DB11D639FAA27F00DB11D7F
-:1045E000AA1F649F6627B00DA11D661F829F222708
-:1045F000B00DA11D621F739FB00DA11D621F839F8F
-:10460000A00D611D221F749F3327A00D611D231F64
-:10461000849F600D211D822F762F6A2F11249F57B2
-:1046200050408AF0E1F088234AF0EE0FFF1FBB1FD5
-:10463000661F771F881F91505040A9F79E3F510574
-:1046400070F014C0AACF5F3FECF3983EDCF3869580
-:1046500077956795B795F795E7959F5FC1F7FE2B1F
-:10466000880F911D9695879597F9089597F99F67FB
-:1046700080E870E060E008959FEF80EC08950024EA
-:104680000A941616170618060906089500240A94B7
-:1046900012161306140605060895092E0394000C3D
-:1046A00011F4882352F0BB0F40F4BF2B11F460FFCC
-:1046B00004C06F5F7F4F8F4F9F4F089597FB092E68
-:1046C00007260AD077FD04D00CD006D000201AF4BB
-:1046D000709561957F4F0895F6F7909581959F4F5E
-:1046E0000895AA1BBB1B51E107C0AA1FBB1FA61739
-:1046F000B70710F0A61BB70B881F991F5A95A9F78B
-:1047000080959095BC01CD010895F999FECF92BD99
-:1047100081BDF89A992780B50895A8E1B0E042E0FC
-:1047200050E00C94AD23262FF999FECF92BD81BDA8
-:10473000F89A019700B4021639F01FBA20BD0FB6DF
-:10474000F894FA9AF99A0FBE08950196272F0E94BD
-:1047500094230C949323DC01CB01FC01F999FECF47
-:1047600006C0F2BDE1BDF89A319600B40D924150F9
-:0A4770005040B8F70895F894FFCF09
-:10477A00050175080A09E408AE087808C0011E3266
-:10478A000A14082840004500250026006100600040
-:10479A002000370064006500660067004400460098
-:1047AA002400470040004500250026006100600003
-:1047BA002000370064006500660067004400460078
-:0447CA002400470080
-:00000001FF
diff --git a/keyboard/planck/keymaps/Jacob/readme.md b/keyboard/planck/keymaps/Jacob/readme.md
deleted file mode 100644
index 2a4be4ebce..0000000000
--- a/keyboard/planck/keymaps/Jacob/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck.
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/alexey.c b/keyboard/planck/keymaps/alexey.c
deleted file mode 100644
index 89af4112c6..0000000000
--- a/keyboard/planck/keymaps/alexey.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "keymap_common.h"
-#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 uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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;
-};
-
diff --git a/keyboard/planck/keymaps/alexey/alexey.c b/keyboard/planck/keymaps/alexey/alexey.c
new file mode 100644
index 0000000000..89af4112c6
--- /dev/null
+++ b/keyboard/planck/keymaps/alexey/alexey.c
@@ -0,0 +1,51 @@
+#include "keymap_common.h"
+#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 uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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;
+};
+
diff --git a/keyboard/planck/keymaps/angerthosenear.c b/keyboard/planck/keymaps/angerthosenear.c
deleted file mode 100644
index cdf60632e4..0000000000
--- a/keyboard/planck/keymaps/angerthosenear.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_ENT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT},
-  {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, FUNC(2), KC_SPC,  KC_SPC,  FUNC(1), KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* WASD + NumPad */
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7,   KC_P8,   KC_P9,   KC_PSLS, KC_PMNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4,   KC_P5,   KC_P6,   KC_PAST, KC_PPLS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1,   KC_P2,   KC_P3,   KC_PDOT, KC_PENT, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_SPC,  KC_P0,   FUNC(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-},
-[2] = { /* RAISE */
-  {KC_GRV,	KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_TRNS},
-  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_MPRV,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_DEL},
-  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
-}
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/angerthosenear/angerthosenear.c b/keyboard/planck/keymaps/angerthosenear/angerthosenear.c
new file mode 100644
index 0000000000..cdf60632e4
--- /dev/null
+++ b/keyboard/planck/keymaps/angerthosenear/angerthosenear.c
@@ -0,0 +1,50 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
+  {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_ENT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT},
+  {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, FUNC(2), KC_SPC,  KC_SPC,  FUNC(1), KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* WASD + NumPad */
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7,   KC_P8,   KC_P9,   KC_PSLS, KC_PMNS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4,   KC_P5,   KC_P6,   KC_PAST, KC_PPLS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1,   KC_P2,   KC_P3,   KC_PDOT, KC_PENT, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_SPC,  KC_P0,   FUNC(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+[2] = { /* RAISE */
+  {KC_GRV,	KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_TRNS},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_MPRV,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* LOWER */
+  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_DEL},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
+}
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/austin.c b/keyboard/planck/keymaps/austin.c
deleted file mode 100644
index 49fc98a587..0000000000
--- a/keyboard/planck/keymaps/austin.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* 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,  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},
-  {BL_STEP, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LGUI, KC_LALT, KC_LCTL,  FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/austin/austin.c b/keyboard/planck/keymaps/austin/austin.c
new file mode 100644
index 0000000000..49fc98a587
--- /dev/null
+++ b/keyboard/planck/keymaps/austin/austin.c
@@ -0,0 +1,50 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* 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,  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},
+  {BL_STEP, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* Colemak */
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+  {KC_FN3, KC_LGUI, KC_LALT, KC_LCTL,  FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+},
+[2] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* LOWER */
+  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/bone2planck.c b/keyboard/planck/keymaps/bone2planck.c
deleted file mode 100644
index a99e7719f9..0000000000
--- a/keyboard/planck/keymaps/bone2planck.c
+++ /dev/null
@@ -1,112 +0,0 @@
-
-#include "planck.h"
-#ifdef BACKLIGHT_ENABLE
-#include "backlight.h"
-#endif
-#include "..\..\quantum\keymap_extras\keymap_german.h"
-
-/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
-   It has Umlauts and "ß" as it is optimized for a mix of German & English.
-   My favourite features are the placement of the special characters often used for programming right on the home row 
-   and the number & navigation block combo, so you never have to move your hands from their home position.
-   
-   Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
-*/
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-	/* Bone2
-	* ,-----------------------------------------------------------------------------------.
-	* | Q	 |   J  |   D  |   U  |   A  |   X  |   P  |   H  |   L  |   M  |   W  |  ẞ   |
-	* |------+------+------+------+------+-------------+------+------+------+------+------|
-	* | M1   |   C  |   T  |   I  |   E  |   O  |   B  |   N  |   R  |   S  |   G  |  M1  |
-	* |------+------+------+------+------+------|------+------+------+------+------+------|
-	* | Shift|   F  |   V  |   Ü  |   Ä  |   Ö  |   Y  |   Z  |   ,  |   .  |   K  |Shift |
-	* |------+------+------+------+------+------+------+------+------+------+------+------|
-	* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |  Esc |  Tab |Enter |
-	* `-----------------------------------------------------------------------------------'
-	*/
-	[0] = {
-		{ DE_Q,	   DE_J,	DE_D,    DE_U,    DE_A,    DE_X,    DE_P,    DE_H,    DE_L,    DE_M,    DE_W,    DE_SS  },
-		{ MO(1),   DE_C,    DE_T,    DE_I,    DE_E,    DE_O,    DE_B,    DE_N,    DE_R,    DE_S,    DE_G,    MO(1)  },
-		{ DE_S,	   DE_F,    DE_V,    DE_UE,   DE_AE,   DE_OE,   DE_Y,    DE_Z,    DE_COMM, DE_DOT,  DE_K,    DE_S   },
-		{ KC_LCTL, KC_LGUI, KC_LALT, MO(3),   MO(2),   KC_SPC,  KC_SPC,  MO(2),   MO(3),   KC_ESC,  KC_TAB,  KC_ENT }
-	},
-
-	/* M1 Special Characters
-	* ,-----------------------------------------------------------------------------------.
-	* | °    |   @  |   _  |   [  |   ]  |   ^  |   !  |   <  |   >  |   =  |   &  |      |
-	* |------+------+------+------+------+-------------+------+------+------+------+------|
-	* | M1   |   \  |   /  |   {  |   }  |   *  |   ?  |   (  |   )  |   -  |   :  |  M1  |
-	* |------+------+------+------+------+------|------+------+------+------+------+------|
-	* |      |   #  |   $  |   |  |   ~  |   €  |   +  |   %  |   "  |   '  |   ;  |      |
-	* |------+------+------+------+------+------+------+------+------+------+------+------|
-	* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |  Esc |  Tab |Enter |
-	* `-----------------------------------------------------------------------------------'
-	*/
-	[1] = {
-		{ DE_RING, DE_AT,   DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_NO   },
-		{ KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS },
-		{ KC_NO  , DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, 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 }
-	},
-
-	/* Navigation & Number Blocks
-	* ,-----------------------------------------------------------------------------------.
-	* |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      |      |
-	* |------+------+------+------+------+-------------+------+------+------+------+------|
-	* |      | Home |  Lft | Down | Right| End  |   .  |   4  |   5  |   6  |   ,  |      |
-	* |------+------+------+------+------+------|------+------+------+------+------+------|
-	* | Shift|      |  Tab | Ins  | Enter|      |   0  |   1  |   2  |   3  |   ;  |Shift |
-	* |------+------+------+------+------+------+------+------+------+------+------+------|
-	* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |  Esc |  Tab |Enter |
-	* `-----------------------------------------------------------------------------------'
-	*/
-	[2] = {
-		{ KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO,   DE_7,    DE_8,    DE_9,    KC_NO,   KC_NO   },
-		{ KC_NO,   KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  DE_DOT,  DE_4,    DE_5,    DE_6,    DE_COMM, KC_NO   },
-		{ DE_S,    KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   KC_0,    DE_1,    DE_2,    DE_3,    DE_SCLN, DE_S    },
-		{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
-	},
-
-	/* Function & Media Keys
-	* ,-----------------------------------------------------------------------------------.
-	* |      |      | Print|Scroll|Pause |      |      |  F7  |  F8  |  F9  |  F12 |      |
-	* |------+------+------+------+------+-------------+------+------+------+------+------|
-	* |      |      | Mute | Vol- | Vol+ |      |   ³  |  F4  |  F5  |  F6  |  F11 |      |
-	* |------+------+------+------+------+------|------+------+------+------+------+------|
-	* | Shift|      | Prev | Play | Next |      |   ²  |  F1  |  F2  |  F3  |  F10 |Shift |
-	* |------+------+------+------+------+------+------+------+------+------+------+------|
-	* | Ctrl | GUI  | Alt  |  M3  |      |    Space    |      |  M3  |  Esc |  Tab |Enter |
-	* `-----------------------------------------------------------------------------------'
-	*/
-	[3] = {
-		{ KC_NO,   KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO,   KC_F7,   KC_F8,   KC_F9,   KC_F12,  KC_NO	},
-		{ KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   DE_SQ3,  KC_F4,   KC_F5,   KC_F6,   KC_F11,  KC_NO  },
-		{ KC_TRNS, KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   DE_SQ2,  KC_F1,   KC_F2,   KC_F3,   KC_F10,  KC_TRNS},
-		{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-	}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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);
-#ifdef BACKLIGHT_ENABLE
-			backlight_step();
-#endif
-		}
-		else {
-			unregister_code(KC_RSFT);
-		}
-		break;
-	}
-	return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/bone2planck/bone2planck.c b/keyboard/planck/keymaps/bone2planck/bone2planck.c
new file mode 100644
index 0000000000..a99e7719f9
--- /dev/null
+++ b/keyboard/planck/keymaps/bone2planck/bone2planck.c
@@ -0,0 +1,112 @@
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+#endif
+#include "..\..\quantum\keymap_extras\keymap_german.h"
+
+/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
+   It has Umlauts and "ß" as it is optimized for a mix of German & English.
+   My favourite features are the placement of the special characters often used for programming right on the home row 
+   and the number & navigation block combo, so you never have to move your hands from their home position.
+   
+   Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
+*/
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+	/* Bone2
+	* ,-----------------------------------------------------------------------------------.
+	* | Q	 |   J  |   D  |   U  |   A  |   X  |   P  |   H  |   L  |   M  |   W  |  ẞ   |
+	* |------+------+------+------+------+-------------+------+------+------+------+------|
+	* | M1   |   C  |   T  |   I  |   E  |   O  |   B  |   N  |   R  |   S  |   G  |  M1  |
+	* |------+------+------+------+------+------|------+------+------+------+------+------|
+	* | Shift|   F  |   V  |   Ü  |   Ä  |   Ö  |   Y  |   Z  |   ,  |   .  |   K  |Shift |
+	* |------+------+------+------+------+------+------+------+------+------+------+------|
+	* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |  Esc |  Tab |Enter |
+	* `-----------------------------------------------------------------------------------'
+	*/
+	[0] = {
+		{ DE_Q,	   DE_J,	DE_D,    DE_U,    DE_A,    DE_X,    DE_P,    DE_H,    DE_L,    DE_M,    DE_W,    DE_SS  },
+		{ MO(1),   DE_C,    DE_T,    DE_I,    DE_E,    DE_O,    DE_B,    DE_N,    DE_R,    DE_S,    DE_G,    MO(1)  },
+		{ DE_S,	   DE_F,    DE_V,    DE_UE,   DE_AE,   DE_OE,   DE_Y,    DE_Z,    DE_COMM, DE_DOT,  DE_K,    DE_S   },
+		{ KC_LCTL, KC_LGUI, KC_LALT, MO(3),   MO(2),   KC_SPC,  KC_SPC,  MO(2),   MO(3),   KC_ESC,  KC_TAB,  KC_ENT }
+	},
+
+	/* M1 Special Characters
+	* ,-----------------------------------------------------------------------------------.
+	* | °    |   @  |   _  |   [  |   ]  |   ^  |   !  |   <  |   >  |   =  |   &  |      |
+	* |------+------+------+------+------+-------------+------+------+------+------+------|
+	* | M1   |   \  |   /  |   {  |   }  |   *  |   ?  |   (  |   )  |   -  |   :  |  M1  |
+	* |------+------+------+------+------+------|------+------+------+------+------+------|
+	* |      |   #  |   $  |   |  |   ~  |   €  |   +  |   %  |   "  |   '  |   ;  |      |
+	* |------+------+------+------+------+------+------+------+------+------+------+------|
+	* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |  Esc |  Tab |Enter |
+	* `-----------------------------------------------------------------------------------'
+	*/
+	[1] = {
+		{ DE_RING, DE_AT,   DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_NO   },
+		{ KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS },
+		{ KC_NO  , DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, 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 }
+	},
+
+	/* Navigation & Number Blocks
+	* ,-----------------------------------------------------------------------------------.
+	* |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      |      |
+	* |------+------+------+------+------+-------------+------+------+------+------+------|
+	* |      | Home |  Lft | Down | Right| End  |   .  |   4  |   5  |   6  |   ,  |      |
+	* |------+------+------+------+------+------|------+------+------+------+------+------|
+	* | Shift|      |  Tab | Ins  | Enter|      |   0  |   1  |   2  |   3  |   ;  |Shift |
+	* |------+------+------+------+------+------+------+------+------+------+------+------|
+	* | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |  Esc |  Tab |Enter |
+	* `-----------------------------------------------------------------------------------'
+	*/
+	[2] = {
+		{ KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO,   DE_7,    DE_8,    DE_9,    KC_NO,   KC_NO   },
+		{ KC_NO,   KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  DE_DOT,  DE_4,    DE_5,    DE_6,    DE_COMM, KC_NO   },
+		{ DE_S,    KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   KC_0,    DE_1,    DE_2,    DE_3,    DE_SCLN, DE_S    },
+		{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
+	},
+
+	/* Function & Media Keys
+	* ,-----------------------------------------------------------------------------------.
+	* |      |      | Print|Scroll|Pause |      |      |  F7  |  F8  |  F9  |  F12 |      |
+	* |------+------+------+------+------+-------------+------+------+------+------+------|
+	* |      |      | Mute | Vol- | Vol+ |      |   ³  |  F4  |  F5  |  F6  |  F11 |      |
+	* |------+------+------+------+------+------|------+------+------+------+------+------|
+	* | Shift|      | Prev | Play | Next |      |   ²  |  F1  |  F2  |  F3  |  F10 |Shift |
+	* |------+------+------+------+------+------+------+------+------+------+------+------|
+	* | Ctrl | GUI  | Alt  |  M3  |      |    Space    |      |  M3  |  Esc |  Tab |Enter |
+	* `-----------------------------------------------------------------------------------'
+	*/
+	[3] = {
+		{ KC_NO,   KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO,   KC_F7,   KC_F8,   KC_F9,   KC_F12,  KC_NO	},
+		{ KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   DE_SQ3,  KC_F4,   KC_F5,   KC_F6,   KC_F11,  KC_NO  },
+		{ KC_TRNS, KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   DE_SQ2,  KC_F1,   KC_F2,   KC_F3,   KC_F10,  KC_TRNS},
+		{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+	}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+#ifdef BACKLIGHT_ENABLE
+			backlight_step();
+#endif
+		}
+		else {
+			unregister_code(KC_RSFT);
+		}
+		break;
+	}
+	return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/brandon.c b/keyboard/planck/keymaps/brandon.c
deleted file mode 100644
index 2b89f86db2..0000000000
--- a/keyboard/planck/keymaps/brandon.c
+++ /dev/null
@@ -1,134 +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.
-
-#include "planck.h"
-#ifdef BACKLIGHT_ENABLE
-  #include "backlight.h"
-#endif
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _TK 2
-#define _LW 3
-#define _RS 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_QW] = { /* Qwerty */
-/* MIT Layout (QWERTY layer)
- *
- * ,-----------------------------------------------------------------------.
- * | esc |  q  |  w  |  e  |  r  |  t  |  y  |  u  |  i  |  o  |  p  | bspc|
- * |-----------------------------------------------------------------------|
- * | tab |  a  |  s  |  d  |  f  |  g  |  h  |  j  |  k  |  l  |  ;  |  '  |
- * |-----------------------------------------------------------------------|
- * |shift|  z  |  x  |  c  |  v  |  b  |  n  |  m  |  ,  |  .  |  /  |enter|
- * |-----------------------------------------------------------------------|
- * | ctl | alt | win | TK  |lower|    spc    |raise|left |down | up  |right|
- * `-----------------------------------------------------------------------'
- */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
-  {KC_TAB,  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, MT(MOD_LSFT, KC_ENT) },
-  {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[_CM] = { /* Colemak */
-/* MIT Layout (Colemak layer)
- *
- * ,-----------------------------------------------------------------------.
- * | esc |  q  |  w  |  f  |  p  |  g  |  j  |  l  |  u  |  y  |  ;  | bspc|
- * |-----------------------------------------------------------------------|
- * | tab |  a  |  r  |  s  |  t  |  d  |  h  |  n  |  e  |  i  |  o  |  '  |
- * |-----------------------------------------------------------------------|
- * |shift|  z  |  x  |  c  |  v  |  b  |  k  |  m  |  ,  |  .  |  /  |enter|
- * |-----------------------------------------------------------------------|
- * | ctl | alt | win | TK  |lower|    spc    |raise|left |down | up  |right|
- * `-----------------------------------------------------------------------'
- */
-  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, MT(MOD_LSFT, KC_ENT)},
-  {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[_RS] = { /* RAISE */
-/* MIT Layout (RAISE layer)
- *
- * ,-----------------------------------------------------------------------.
- * |  `  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  | bspc|
- * |-----------------------------------------------------------------------|
- * | tab | F1  | F2  | F3  |  F4 |  F5 |  F6 |  -  |  =  |  [  |  ]  |  \  |
- * |-----------------------------------------------------------------------|
- * |shift|  F7 |  F8 |  F9 | F10 | F11 | F12 |  QW |  CM |  BL | RST |enter|
- * |-----------------------------------------------------------------------|
- * | ctl | alt | win | del |lower|    spc    |raise|next |vold |volu |PLAY |
- * `-----------------------------------------------------------------------'
- */
-
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[_LW] = { /* LOWER */
-/* MIT Layout (Colemak layer)
- *
- * ,-----------------------------------------------------------------------.
- * | esc |  q  |  w  |  f  |  p  |  g  |  j  |  l  |  u  |  y  |  ;  | bspc|
- * |-----------------------------------------------------------------------|
- * | tab | F1  | F2  | F3  |  F4 |  F5 |  F6 |  _  |  +  |  {  |  }  |  |  |
- * |-----------------------------------------------------------------------|
- * |shift|  F7 |  F8 |  F9 | F10 | F11 | F12 |  QW |  CM |  BL | RST |enter|
- * |-----------------------------------------------------------------------|
- * | ctl | alt | win | TK  |lower|    spc    |raise|next |vold |volu |PLAY |
- * `-----------------------------------------------------------------------'
- */
-  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[_TK] = { /* Ten Key*/
-/* MIT Layout (Ten Key layer)
- *
- * ,-----------------------------------------------------------------------.
- * | esc |  F9 | F10 | F11 | F12 | PGUP|  %  |  /  |  7  |  8  |  9  | bspc|
- * |-----------------------------------------------------------------------|
- * | tab |  F5 |  F6 | F7  |  F8 | PGDN| HOME|  *  |  4  |  5  |  6  |  \  |
- * |-----------------------------------------------------------------------|
- * |shift|  F1 |  F2 | F3  |  F4 | DEL | END |  0  |  1  |  2  |  3  |enter|
- * |-----------------------------------------------------------------------|
- * | ctl | alt | win | TK  |lower|    spc    |raise|left |down | up  |right|
- * `-----------------------------------------------------------------------'
- */
-  {KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PGUP, KC_PERC, KC_SLSH, KC_7,    KC_8,    KC_9,  KC_BSPC},
-  {KC_TRNS, KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_PGDN, KC_HOME, KC_ASTR, KC_4,    KC_5,    KC_6,  KC_PIPE},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_DEL,  KC_END,  KC_0,    KC_1,    KC_2,    KC_3,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-}
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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);
-            #ifdef BACKLIGHT_ENABLE
-              backlight_step();
-            #endif
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/brandon/brandon.c b/keyboard/planck/keymaps/brandon/brandon.c
new file mode 100644
index 0000000000..2b89f86db2
--- /dev/null
+++ b/keyboard/planck/keymaps/brandon/brandon.c
@@ -0,0 +1,134 @@
+// 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.
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _TK 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+/* MIT Layout (QWERTY layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * | esc |  q  |  w  |  e  |  r  |  t  |  y  |  u  |  i  |  o  |  p  | bspc|
+ * |-----------------------------------------------------------------------|
+ * | tab |  a  |  s  |  d  |  f  |  g  |  h  |  j  |  k  |  l  |  ;  |  '  |
+ * |-----------------------------------------------------------------------|
+ * |shift|  z  |  x  |  c  |  v  |  b  |  n  |  m  |  ,  |  .  |  /  |enter|
+ * |-----------------------------------------------------------------------|
+ * | ctl | alt | win | TK  |lower|    spc    |raise|left |down | up  |right|
+ * `-----------------------------------------------------------------------'
+ */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_TAB,  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, MT(MOD_LSFT, KC_ENT) },
+  {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_CM] = { /* Colemak */
+/* MIT Layout (Colemak layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * | esc |  q  |  w  |  f  |  p  |  g  |  j  |  l  |  u  |  y  |  ;  | bspc|
+ * |-----------------------------------------------------------------------|
+ * | tab |  a  |  r  |  s  |  t  |  d  |  h  |  n  |  e  |  i  |  o  |  '  |
+ * |-----------------------------------------------------------------------|
+ * |shift|  z  |  x  |  c  |  v  |  b  |  k  |  m  |  ,  |  .  |  /  |enter|
+ * |-----------------------------------------------------------------------|
+ * | ctl | alt | win | TK  |lower|    spc    |raise|left |down | up  |right|
+ * `-----------------------------------------------------------------------'
+ */
+  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, MT(MOD_LSFT, KC_ENT)},
+  {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_RS] = { /* RAISE */
+/* MIT Layout (RAISE layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * |  `  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  | bspc|
+ * |-----------------------------------------------------------------------|
+ * | tab | F1  | F2  | F3  |  F4 |  F5 |  F6 |  -  |  =  |  [  |  ]  |  \  |
+ * |-----------------------------------------------------------------------|
+ * |shift|  F7 |  F8 |  F9 | F10 | F11 | F12 |  QW |  CM |  BL | RST |enter|
+ * |-----------------------------------------------------------------------|
+ * | ctl | alt | win | del |lower|    spc    |raise|next |vold |volu |PLAY |
+ * `-----------------------------------------------------------------------'
+ */
+
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+/* MIT Layout (Colemak layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * | esc |  q  |  w  |  f  |  p  |  g  |  j  |  l  |  u  |  y  |  ;  | bspc|
+ * |-----------------------------------------------------------------------|
+ * | tab | F1  | F2  | F3  |  F4 |  F5 |  F6 |  _  |  +  |  {  |  }  |  |  |
+ * |-----------------------------------------------------------------------|
+ * |shift|  F7 |  F8 |  F9 | F10 | F11 | F12 |  QW |  CM |  BL | RST |enter|
+ * |-----------------------------------------------------------------------|
+ * | ctl | alt | win | TK  |lower|    spc    |raise|next |vold |volu |PLAY |
+ * `-----------------------------------------------------------------------'
+ */
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_TK] = { /* Ten Key*/
+/* MIT Layout (Ten Key layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * | esc |  F9 | F10 | F11 | F12 | PGUP|  %  |  /  |  7  |  8  |  9  | bspc|
+ * |-----------------------------------------------------------------------|
+ * | tab |  F5 |  F6 | F7  |  F8 | PGDN| HOME|  *  |  4  |  5  |  6  |  \  |
+ * |-----------------------------------------------------------------------|
+ * |shift|  F1 |  F2 | F3  |  F4 | DEL | END |  0  |  1  |  2  |  3  |enter|
+ * |-----------------------------------------------------------------------|
+ * | ctl | alt | win | TK  |lower|    spc    |raise|left |down | up  |right|
+ * `-----------------------------------------------------------------------'
+ */
+  {KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PGUP, KC_PERC, KC_SLSH, KC_7,    KC_8,    KC_9,  KC_BSPC},
+  {KC_TRNS, KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_PGDN, KC_HOME, KC_ASTR, KC_4,    KC_5,    KC_6,  KC_PIPE},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_DEL,  KC_END,  KC_0,    KC_1,    KC_2,    KC_3,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+}
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/charlie.c b/keyboard/planck/keymaps/charlie.c
deleted file mode 100644
index 88f454d789..0000000000
--- a/keyboard/planck/keymaps/charlie.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [0] = { /* Native */
-      {KC_ESC,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    FUNC(2)}, 
-      {KC_BSPC,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
-     {KC_TAB,     KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-      {KC_DEL,     KC_LCTL, KC_NO,   KC_LSFT, KC_LALT, KC_SPC,        KC_NO,   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},	  
-    [1] = { /* QWERTY->PHOTOSHOP */
-      {KC_DELETE,  KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    FUNC(1)},
-      {KC_O,       KC_G,    KC_S,    KC_U,    KC_T,    FUNC(27),  KC_F21,  KC_F10,  KC_F11,  KC_F7,   KC_F8,   KC_F9},
-      {KC_TAB,     FUNC(4), FUNC(5),  FUNC(6),  KC_F1,   FUNC(7),  KC_F18,  KC_F19,  KC_F23,  KC_F20,  KC_F22,  FUNC(9)},
-      {KC_COMM,    KC_DOT,  KC_R, FUNC(11), FUNC(3),  KC_SPC,        FUNC(12), KC_F2,   FUNC(8),  KC_F3,   KC_F14}
-	  },
-    [2] = { /* 2: FUNC(3 PHOTOSHOP */
-      {KC_ESC,    FUNC(25), FUNC(26),   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,   FUNC(19), FUNC(20), FUNC(21)}, 
-      {KC_C,       KC_NO,  FUNC(22),  FUNC(5),   KC_NO,   FUNC(23), KC_NO,   KC_NO,   KC_NO,   KC_NO,   FUNC(13), KC_NO},
-      {FUNC(14),    FUNC(15), FUNC(16), FUNC(17), FUNC(3),   KC_SPC,        FUNC(18), KC_NO,   KC_NO,   KC_F24,  KC_NO}
-	  }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_DEFAULT_LAYER_SET(0),                             // set Qwerty layout
-    [2] = ACTION_DEFAULT_LAYER_SET(1),                             // set Photoshop presets
-    [3] = ACTION_LAYER_MOMENTARY(2),                                  // Photoshop function layer
- 
-    [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9),   // photo folder AHK
-    [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I),              // select inverse
-    [6] = ACTION_MODS_KEY(MOD_LSFT, KC_M),                         // marquee select
-    [7] = ACTION_MODS_KEY(MOD_LALT, KC_BSPC),                      // fill 
-    [8] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_X),    // warp
-    [9] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT | MOD_LSFT, KC_F12),  // merge all new layer
-    [10] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS),                     // zoom out
-    [11] = ACTION_MODS_KEY(MOD_LCTL, KC_H),                        // RBG sliders
-    [12] = ACTION_MODS_KEY(MOD_LCTL, KC_S),                        // save
-    [13] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F5),           // layer mask from transparancy 
-    [14] = ACTION_MODS_KEY(MOD_LCTL, KC_F2),                     // stroke
-    [15] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_F2),                     // stroke layer
-    [16] = ACTION_MODS_KEY(MOD_LCTL, KC_0),                      // zoom 0
-    [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_H),             // HSV sliders
-    [18] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_S),         // save as 
-    [19] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F7),  // gaussian blur
-    [20] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F8),  // motion blur
-    [21] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_X),            // liquify filter
-    [22] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),                     // prev layer blending
-    [23] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_BSPC),             // KC_NOrmal layer blending
-    [24] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),                      // next layer blending
-    [25] = ACTION_MODS_KEY(MOD_LCTL, KC_Z),                        // step back
-    [26] = ACTION_MODS_KEY(MOD_LCTL, KC_Y),                        // step forward
-    [27] = ACTION_MODS_KEY(MOD_LCTL, KC_R),                        // rasterize
-     
-};
diff --git a/keyboard/planck/keymaps/charlie/charlie.c b/keyboard/planck/keymaps/charlie/charlie.c
new file mode 100644
index 0000000000..88f454d789
--- /dev/null
+++ b/keyboard/planck/keymaps/charlie/charlie.c
@@ -0,0 +1,54 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = { /* Native */
+      {KC_ESC,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    FUNC(2)}, 
+      {KC_BSPC,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+     {KC_TAB,     KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+      {KC_DEL,     KC_LCTL, KC_NO,   KC_LSFT, KC_LALT, KC_SPC,        KC_NO,   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+},	  
+    [1] = { /* QWERTY->PHOTOSHOP */
+      {KC_DELETE,  KC_0,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    FUNC(1)},
+      {KC_O,       KC_G,    KC_S,    KC_U,    KC_T,    FUNC(27),  KC_F21,  KC_F10,  KC_F11,  KC_F7,   KC_F8,   KC_F9},
+      {KC_TAB,     FUNC(4), FUNC(5),  FUNC(6),  KC_F1,   FUNC(7),  KC_F18,  KC_F19,  KC_F23,  KC_F20,  KC_F22,  FUNC(9)},
+      {KC_COMM,    KC_DOT,  KC_R, FUNC(11), FUNC(3),  KC_SPC,        FUNC(12), KC_F2,   FUNC(8),  KC_F3,   KC_F14}
+	  },
+    [2] = { /* 2: FUNC(3 PHOTOSHOP */
+      {KC_ESC,    FUNC(25), FUNC(26),   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,   FUNC(19), FUNC(20), FUNC(21)}, 
+      {KC_C,       KC_NO,  FUNC(22),  FUNC(5),   KC_NO,   FUNC(23), KC_NO,   KC_NO,   KC_NO,   KC_NO,   FUNC(13), KC_NO},
+      {FUNC(14),    FUNC(15), FUNC(16), FUNC(17), FUNC(3),   KC_SPC,        FUNC(18), KC_NO,   KC_NO,   KC_F24,  KC_NO}
+	  }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_DEFAULT_LAYER_SET(0),                             // set Qwerty layout
+    [2] = ACTION_DEFAULT_LAYER_SET(1),                             // set Photoshop presets
+    [3] = ACTION_LAYER_MOMENTARY(2),                                  // Photoshop function layer
+ 
+    [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9),   // photo folder AHK
+    [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I),              // select inverse
+    [6] = ACTION_MODS_KEY(MOD_LSFT, KC_M),                         // marquee select
+    [7] = ACTION_MODS_KEY(MOD_LALT, KC_BSPC),                      // fill 
+    [8] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_X),    // warp
+    [9] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT | MOD_LSFT, KC_F12),  // merge all new layer
+    [10] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS),                     // zoom out
+    [11] = ACTION_MODS_KEY(MOD_LCTL, KC_H),                        // RBG sliders
+    [12] = ACTION_MODS_KEY(MOD_LCTL, KC_S),                        // save
+    [13] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F5),           // layer mask from transparancy 
+    [14] = ACTION_MODS_KEY(MOD_LCTL, KC_F2),                     // stroke
+    [15] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_F2),                     // stroke layer
+    [16] = ACTION_MODS_KEY(MOD_LCTL, KC_0),                      // zoom 0
+    [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_H),             // HSV sliders
+    [18] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_S),         // save as 
+    [19] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F7),  // gaussian blur
+    [20] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F8),  // motion blur
+    [21] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_X),            // liquify filter
+    [22] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),                     // prev layer blending
+    [23] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_BSPC),             // KC_NOrmal layer blending
+    [24] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),                      // next layer blending
+    [25] = ACTION_MODS_KEY(MOD_LCTL, KC_Z),                        // step back
+    [26] = ACTION_MODS_KEY(MOD_LCTL, KC_Y),                        // step forward
+    [27] = ACTION_MODS_KEY(MOD_LCTL, KC_R),                        // rasterize
+     
+};
diff --git a/keyboard/planck/keymaps/daniel.c b/keyboard/planck/keymaps/daniel.c
deleted file mode 100644
index 234e48ff4a..0000000000
--- a/keyboard/planck/keymaps/daniel.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_TAB,  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_RSFT},
-  {FUNC(3), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* RAISE */
-  {KC_GRV, S(KC_1),  S(KC_2),  S(KC_3),  S(KC_4),  S(KC_5),  S(KC_6),  S(KC_7),  S(KC_8),  S(KC_9),  S(KC_0), KC_EQL},
-  {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_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_MINS,  S(KC_MINS),  KC_BSLS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[2] = { /* LOWER */
-  {S(KC_GRV), KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  S(KC_EQL)},
-  {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_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_ENT},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* Qwerty */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_DEL},
-  {KC_TAB,  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_RSFT},
-  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-}
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(1),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(2),   // to LOWER
-    [3] = ACTION_LAYER_MOMENTARY(3)   // to LOWER
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/daniel/daniel.c b/keyboard/planck/keymaps/daniel/daniel.c
new file mode 100644
index 0000000000..234e48ff4a
--- /dev/null
+++ b/keyboard/planck/keymaps/daniel/daniel.c
@@ -0,0 +1,48 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
+  {KC_TAB,  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_RSFT},
+  {FUNC(3), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* RAISE */
+  {KC_GRV, S(KC_1),  S(KC_2),  S(KC_3),  S(KC_4),  S(KC_5),  S(KC_6),  S(KC_7),  S(KC_8),  S(KC_9),  S(KC_0), KC_EQL},
+  {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_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_MINS,  S(KC_MINS),  KC_BSLS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[2] = { /* LOWER */
+  {S(KC_GRV), KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  S(KC_EQL)},
+  {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_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_ENT},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* Qwerty */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_DEL},
+  {KC_TAB,  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_RSFT},
+  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+}
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(1),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(2),   // to LOWER
+    [3] = ACTION_LAYER_MOMENTARY(3)   // to LOWER
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/david.c b/keyboard/planck/keymaps/david.c
deleted file mode 100644
index f483084801..0000000000
--- a/keyboard/planck/keymaps/david.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "keymap_common.h"
-#include "beeps.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_BSPC,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_ENT,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT},
-  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_ESC,   KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {M(10), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  M(0),   M(1),   M(2),   M(3),   M(4),   M(5),   M(6),   M(7), KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-  // MACRODOWN only works in this function
-    if (record->event.pressed) {
-      switch(id) {
-        case 0:
-            true_note(12, 12, 20);
-        break;
-        case 1:
-            true_note(14, 14, 20);
-        break;
-        case 2:
-            true_note(16, 16, 20);
-        break;
-        case 3:
-            true_note(17, 17, 20);
-        break;
-        case 4:
-            true_note(19, 19, 20);
-        break;
-        case 5:
-            true_note(21, 21, 20);
-        break;
-        case 6:
-            true_note(23, 23, 20);
-        break;
-        case 7:
-            true_note(24, 24, 20);
-        break;
-        case 10:
-
-        break;
-      } 
-    }
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/david/david.c b/keyboard/planck/keymaps/david/david.c
new file mode 100644
index 0000000000..f483084801
--- /dev/null
+++ b/keyboard/planck/keymaps/david/david.c
@@ -0,0 +1,76 @@
+#include "keymap_common.h"
+#include "beeps.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_BSPC,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
+  {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_ENT,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT},
+  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_ESC,   KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+  {M(10), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* Colemak */
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+},
+[2] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F11,  KC_F12,  M(0),   M(1),   M(2),   M(3),   M(4),   M(5),   M(6),   M(7), KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* LOWER */
+  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
+{
+  // MACRODOWN only works in this function
+    if (record->event.pressed) {
+      switch(id) {
+        case 0:
+            true_note(12, 12, 20);
+        break;
+        case 1:
+            true_note(14, 14, 20);
+        break;
+        case 2:
+            true_note(16, 16, 20);
+        break;
+        case 3:
+            true_note(17, 17, 20);
+        break;
+        case 4:
+            true_note(19, 19, 20);
+        break;
+        case 5:
+            true_note(21, 21, 20);
+        break;
+        case 6:
+            true_note(23, 23, 20);
+        break;
+        case 7:
+            true_note(24, 24, 20);
+        break;
+        case 10:
+
+        break;
+      } 
+    }
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/dzobert.c b/keyboard/planck/keymaps/dzobert.c
deleted file mode 100644
index 665e9c20b6..0000000000
--- a/keyboard/planck/keymaps/dzobert.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_TAB},
-  {KC_LCTL,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_BSPC},
-  {KC_LALT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN4, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_TAB},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_BSPC},
-  {KC_LALT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* 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_1,    KC_2,    KC_3,    KC_4,    KC_5,     KC_6,     KC_7,    KC_8,          KC_9,  KC_DEL},
-  {KC_TRNS, KC_GRV,  KC_MINS,  KC_EQL,  KC_QUOT,  S(KC_QUOT),  S(KC_LBRC),  S(KC_RBRC),  KC_LBRC,  KC_RBRC,  KC_BSLS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_HOME, KC_PGUP, KC_PGDN, KC_END}
-},
-[3] = { /* LOWER */
-  {KC_POWER,KC_PSCR, KC_SLCK, KC_PAUSE, KC_NLCK, KC_EXECUTE, KC_MENU,   KC_APP,  KC_7,  KC_8, KC_9, KC_KP_SLASH},
-  {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_CAPS, KC_CANCEL, KC_UNDO, KC_AGAIN, KC_4,  KC_5, KC_6, KC_KP_ASTERISK},
-  {KC_TRNS, KC_INSERT,KC_CUT,   KC_COPY,   KC_PASTE,   KC_BSLS,   KC_9,   KC_0,   KC_1,   KC_2,   KC_3,  KC_KP_MINUS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/dzobert/dzobert.c b/keyboard/planck/keymaps/dzobert/dzobert.c
new file mode 100644
index 0000000000..665e9c20b6
--- /dev/null
+++ b/keyboard/planck/keymaps/dzobert/dzobert.c
@@ -0,0 +1,49 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_TAB},
+  {KC_LCTL,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_BSPC},
+  {KC_LALT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+  {KC_FN4, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* Colemak */
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_TAB},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_BSPC},
+  {KC_LALT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+  {KC_FN3, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+},
+[2] = { /* 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_1,    KC_2,    KC_3,    KC_4,    KC_5,     KC_6,     KC_7,    KC_8,          KC_9,  KC_DEL},
+  {KC_TRNS, KC_GRV,  KC_MINS,  KC_EQL,  KC_QUOT,  S(KC_QUOT),  S(KC_LBRC),  S(KC_RBRC),  KC_LBRC,  KC_RBRC,  KC_BSLS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_HOME, KC_PGUP, KC_PGDN, KC_END}
+},
+[3] = { /* LOWER */
+  {KC_POWER,KC_PSCR, KC_SLCK, KC_PAUSE, KC_NLCK, KC_EXECUTE, KC_MENU,   KC_APP,  KC_7,  KC_8, KC_9, KC_KP_SLASH},
+  {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_CAPS, KC_CANCEL, KC_UNDO, KC_AGAIN, KC_4,  KC_5, KC_6, KC_KP_ASTERISK},
+  {KC_TRNS, KC_INSERT,KC_CUT,   KC_COPY,   KC_PASTE,   KC_BSLS,   KC_9,   KC_0,   KC_1,   KC_2,   KC_3,  KC_KP_MINUS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/gabriel.c b/keyboard/planck/keymaps/gabriel.c
deleted file mode 100644
index 805484488b..0000000000
--- a/keyboard/planck/keymaps/gabriel.c
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "planck.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _LW 1
-#define _RS 2
-#define _FN 3
-
-// This a slightly modified 'default' keymap that's closer to the Mac keyboard layout. I like the position
-// of 'esc' and 'tab' better this way. I also got rid of the backlighting control key and the dvorak and
-// colemak layers. I added an 'fn' layer that makes the 'bspc' a forward delete (like on OSX).
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* MIT Layout (QWERTY layer)
- *
- * ,-----------------------------------------------------------------------.
- * | esc |  q  |  w  |  e  |  r  |  t  |  y  |  u  |  i  |  o  |  p  | bspc|
- * |-----------------------------------------------------------------------|
- * | tab |  a  |  s  |  d  |  f  |  g  |  h  |  j  |  k  |  l  |  ;  |  '  |
- * |-----------------------------------------------------------------------|
- * |shift|  z  |  x  |  c  |  v  |  b  |  n  |  m  |  ,  |  .  |  /  |enter|
- * |-----------------------------------------------------------------------|
- * | fn  | ctl | alt | cmd |lower|    spc    |raise|left |down | up  |right|
- * `-----------------------------------------------------------------------'
- */
-[_QW] = { /* QWERTY */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
-  {KC_TAB,  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 },
-  {MO(_FN), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-/* MIT Layout (Raised layer)
- *
- * ,-----------------------------------------------------------------------.
- * |  `  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |     |
- * |-----------------------------------------------------------------------|
- * |     | F1  | F2  | F3  | F4  | F5  | F6  |  -  |  +  |  [  |  ]  |  |  |
- * |-----------------------------------------------------------------------|
- * |     | F7  | F8  | F9  | F10 | F11 | F12 |     |     |     |     |     |
- * |-----------------------------------------------------------------------|
- * |     |     |     |     |     |           |     |     |     |     |     |
- * `-----------------------------------------------------------------------'
- */
-[_RS] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE},
-  {KC_TRNS, 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}
-},
-/* MIT Layout (Lowered layer)
- *
- * ,-----------------------------------------------------------------------.
- * |  ~  |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |     |
- * |-----------------------------------------------------------------------|
- * |     | F1  | F2  | F3  | F4  | F5  | F6  |  _  |  =  |  {  |  }  |  \  |
- * |-----------------------------------------------------------------------|
- * |     | F7  | F8  | F9  | F10 | F11 | F12 |     |     |     |     |     |
- * |-----------------------------------------------------------------------|
- * |     |     |     |     |     |           |     |     |     |     |     |
- * `-----------------------------------------------------------------------'
- */
-[_LW] = { /* LOWER */
-  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_EQL,  KC_LCBR, KC_RCBR, KC_BSLS},
-  {KC_TRNS, 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}
-},
-/* MIT Layout (FN layer)
- *
- * ,-----------------------------------------------------------------------.
- * |     |     |     |     |     |     |     |     |     |     |     | del |
- * |-----------------------------------------------------------------------|
- * |     |     |     |     |     |     |     |     |     |     |     |     |
- * |-----------------------------------------------------------------------|
- * |     |     |     |     |     |     |     |     |     |     |     |     |
- * |-----------------------------------------------------------------------|
- * |     |     |     |     |     |           |     |home |pgdn |pgup | end |
- * `-----------------------------------------------------------------------'
- */
-[_FN] = { /* FUNCTION */
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DELT},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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;
-};
diff --git a/keyboard/planck/keymaps/gabriel/gabriel.c b/keyboard/planck/keymaps/gabriel/gabriel.c
new file mode 100644
index 0000000000..805484488b
--- /dev/null
+++ b/keyboard/planck/keymaps/gabriel/gabriel.c
@@ -0,0 +1,108 @@
+#include "planck.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _LW 1
+#define _RS 2
+#define _FN 3
+
+// This a slightly modified 'default' keymap that's closer to the Mac keyboard layout. I like the position
+// of 'esc' and 'tab' better this way. I also got rid of the backlighting control key and the dvorak and
+// colemak layers. I added an 'fn' layer that makes the 'bspc' a forward delete (like on OSX).
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* MIT Layout (QWERTY layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * | esc |  q  |  w  |  e  |  r  |  t  |  y  |  u  |  i  |  o  |  p  | bspc|
+ * |-----------------------------------------------------------------------|
+ * | tab |  a  |  s  |  d  |  f  |  g  |  h  |  j  |  k  |  l  |  ;  |  '  |
+ * |-----------------------------------------------------------------------|
+ * |shift|  z  |  x  |  c  |  v  |  b  |  n  |  m  |  ,  |  .  |  /  |enter|
+ * |-----------------------------------------------------------------------|
+ * | fn  | ctl | alt | cmd |lower|    spc    |raise|left |down | up  |right|
+ * `-----------------------------------------------------------------------'
+ */
+[_QW] = { /* QWERTY */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_TAB,  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 },
+  {MO(_FN), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+/* MIT Layout (Raised layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * |  `  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |     |
+ * |-----------------------------------------------------------------------|
+ * |     | F1  | F2  | F3  | F4  | F5  | F6  |  -  |  +  |  [  |  ]  |  |  |
+ * |-----------------------------------------------------------------------|
+ * |     | F7  | F8  | F9  | F10 | F11 | F12 |     |     |     |     |     |
+ * |-----------------------------------------------------------------------|
+ * |     |     |     |     |     |           |     |     |     |     |     |
+ * `-----------------------------------------------------------------------'
+ */
+[_RS] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE},
+  {KC_TRNS, 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}
+},
+/* MIT Layout (Lowered layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * |  ~  |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |     |
+ * |-----------------------------------------------------------------------|
+ * |     | F1  | F2  | F3  | F4  | F5  | F6  |  _  |  =  |  {  |  }  |  \  |
+ * |-----------------------------------------------------------------------|
+ * |     | F7  | F8  | F9  | F10 | F11 | F12 |     |     |     |     |     |
+ * |-----------------------------------------------------------------------|
+ * |     |     |     |     |     |           |     |     |     |     |     |
+ * `-----------------------------------------------------------------------'
+ */
+[_LW] = { /* LOWER */
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_EQL,  KC_LCBR, KC_RCBR, KC_BSLS},
+  {KC_TRNS, 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}
+},
+/* MIT Layout (FN layer)
+ *
+ * ,-----------------------------------------------------------------------.
+ * |     |     |     |     |     |     |     |     |     |     |     | del |
+ * |-----------------------------------------------------------------------|
+ * |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |-----------------------------------------------------------------------|
+ * |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |-----------------------------------------------------------------------|
+ * |     |     |     |     |     |           |     |home |pgdn |pgup | end |
+ * `-----------------------------------------------------------------------'
+ */
+[_FN] = { /* FUNCTION */
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DELT},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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;
+};
diff --git a/keyboard/planck/keymaps/jacob/Keyboard Layout.PNG b/keyboard/planck/keymaps/jacob/Keyboard Layout.PNG
new file mode 100644
index 0000000000..40f0b89429
Binary files /dev/null and b/keyboard/planck/keymaps/jacob/Keyboard Layout.PNG differ
diff --git a/keyboard/planck/keymaps/jacob/keymap.c b/keyboard/planck/keymaps/jacob/keymap.c
new file mode 100644
index 0000000000..5e6e8498e2
--- /dev/null
+++ b/keyboard/planck/keymaps/jacob/keymap.c
@@ -0,0 +1,56 @@
+#include "planck.h"
+#include "action_layer.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+//Simple Keymap where CTRL, WINKEY, and ALT keys are placed in a more familiar location for Windows users. 
+//Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck.
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+#define _QW 0
+#define _LW 1
+#define _RS 2
+
+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, KC_QUOT},
+    {KC_LSFT, KC_Z,    KC_X,    KC_C,   KC_V,    KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, MT(MOD_RSFT, KC_ENT)},
+    {KC_LCTL, KC_LGUI, KC_LALT, M(0),   MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  },
+  [_RS] = { /* RAISE */
+    {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL },
+    {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+    {KC_TRNS, 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}
+  },
+  [_LW] = { /* LOWER */
+    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS},
+    {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 uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+        #ifdef BACKLIGHT_ENABLE
+          backlight_step();
+        #endif
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/jacob/readme.md b/keyboard/planck/keymaps/jacob/readme.md
new file mode 100644
index 0000000000..2a4be4ebce
--- /dev/null
+++ b/keyboard/planck/keymaps/jacob/readme.md
@@ -0,0 +1 @@
+Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck.
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/joe.c b/keyboard/planck/keymaps/joe.c
deleted file mode 100644
index 5b7bbe2bbb..0000000000
--- a/keyboard/planck/keymaps/joe.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = { /* Joe colemak */
-    {F(3),    KC_Q,    KC_W,    KC_F,    KC_P, KC_G,   KC_J,   KC_L, KC_U,    KC_Y,    KC_SCLN, KC_MINS},
-    {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T, KC_D,   KC_H,   KC_N, KC_E,    KC_I,    KC_O,    KC_ENT },
-    {F(15),   KC_Z,    KC_X,    KC_C,    KC_V, KC_B,   KC_K,   KC_M, KC_COMM, KC_DOT,  KC_UP,   KC_QUOT},
-    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
-  },
-  [1] = { /* Joe soft Colemak */
-    {F(3),    CM_Q,    CM_W,    CM_F,    CM_P, CM_G,   CM_J,   CM_L, CM_U,    CM_Y,    CM_SCLN, KC_MINS},
-    {KC_BSPC, CM_A,    CM_R,    CM_S,    CM_T, CM_D,   CM_H,   CM_N, CM_E,    CM_I,    CM_O,    KC_ENT },
-    {F(15),   CM_Z,    CM_X,    CM_C,    CM_V, CM_B,   CM_K,   CM_M, KC_COMM, KC_DOT,  KC_UP,   KC_QUOT},
-    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
-  },
-  [2] = { /* Joe NUMPAD */
-    {F(3),    KC_NO,   KC_UP,   KC_NO,   KC_NO, KC_NO,   LSFT(KC_9), LSFT(KC_0), KC_PSLS, KC_P7, KC_P8,   KC_P9  },
-    {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,   LSFT(KC_5), KC_PEQL,    KC_PAST, KC_P4, KC_P5,   KC_P6  },
-    {F(15),   KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,      KC_PCMM,    KC_PMNS, KC_P1, KC_P2,   KC_P3  },
-    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1),  KC_TRNS, KC_TRNS,    F(2),       KC_PPLS, KC_P0, KC_PDOT, KC_PENT}
-  },
-  [3] = { /* Joe 1337 haxOr5*/
-    {F(3),    KC_Q,    KC_W,    KC_F,    KC_P, KC_6,   KC_J,   KC_L, KC_U,    KC_Y,    KC_SCLN, KC_MINS},
-    {KC_BSPC, KC_4,    KC_R,    KC_5,    KC_7, KC_D,   KC_H,   KC_N, KC_3,    KC_1,    KC_0,    KC_ENT },
-    {F(15),   KC_Z,    KC_X,    KC_C,    KC_V, KC_B,   KC_K,   KC_M, KC_COMM, KC_DOT,  KC_UP,   KC_QUOT},
-    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
-  },
-  [4] = { /* Joe LOWER fn1 */
-    {KC_GRV,  KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, M(3),    M(2),    M(1),    M(0)   },
-    {KC_BSPC, KC_1,    KC_2,    KC_3,    KC_4,  KC_5,    KC_6,    KC_7,  KC_8,    KC_9,    KC_0,    KC_TRNS},
-    {KC_BSLS, KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, KC_LBRC, KC_RBRC, KC_PGUP, KC_EQL },
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1),  KC_TRNS, KC_TRNS, F(2),  KC_NO,   KC_HOME, KC_PGDN, KC_END }
-  },
-  [5] = { /* Joe UPPER fn2 */
-    {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_DEL,  KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_BTN4, KC_LEFT, KC_DOWN, KC_UP,               KC_RGHT,             KC_NO              },
-    {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_L, KC_WH_D, KC_WH_R, KC_NO,   KC_NO,   LCTL(KC_PGUP),       LCTL(LALT(KC_UP)),   LCTL(KC_PGDN)      },
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1),    KC_NO,   KC_NO,   F(2),    KC_NO,   LCTL(LALT(KC_LEFT)), LCTL(LALT(KC_DOWN)), LCTL(LALT(KC_RGHT))}
-  },
-  [6] = { /* Joe SPECIAL fn3 */
-    {KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,    KC_NO,   KC_NO,   KC_NO           },
-    {KC_NO,   KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,    KC_NO,   KC_NO,   RESET           },
-    {KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,    KC_NO,   KC_NO,   KC_NO           },
-    {F(6),    F(7),    F(8),    F(9),   F(1),  KC_TRNS, KC_TRNS, F(2),  KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))}
-  }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(4),  // fn1
-    [2] = ACTION_LAYER_MOMENTARY(5),  // fn2
-
-    /* ESC on tap, fn3 on hold */
-    [3] = ACTION_LAYER_TAP_KEY(6, KC_ESC),
-
-    /* toggle layers */
-    [6]  = ACTION_DEFAULT_LAYER_SET(0), 
-    [7]  = ACTION_DEFAULT_LAYER_SET(1),
-    [8]  = ACTION_DEFAULT_LAYER_SET(2),
-    [9]  = ACTION_DEFAULT_LAYER_SET(3),
-
-    /* tab on tap, shift on hold */
-    [15] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB),
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case 0:
-            /* :) */
-            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), END );
-            break;
-        case 1:
-            /* :( */
-            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), UP(KC_LSFT), END );
-            break;
-        case 2:
-            /* (: | :) */
-            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_9), TYPE(KC_SCLN), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END );
-            break;
-        case 3:
-            /* :( | ): */
-            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_0), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END );
-            break;
-        default:
-            break;
-    }
-    return MACRO_NONE;
-}
diff --git a/keyboard/planck/keymaps/joe/joe.c b/keyboard/planck/keymaps/joe/joe.c
new file mode 100644
index 0000000000..5b7bbe2bbb
--- /dev/null
+++ b/keyboard/planck/keymaps/joe/joe.c
@@ -0,0 +1,88 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [0] = { /* Joe colemak */
+    {F(3),    KC_Q,    KC_W,    KC_F,    KC_P, KC_G,   KC_J,   KC_L, KC_U,    KC_Y,    KC_SCLN, KC_MINS},
+    {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T, KC_D,   KC_H,   KC_N, KC_E,    KC_I,    KC_O,    KC_ENT },
+    {F(15),   KC_Z,    KC_X,    KC_C,    KC_V, KC_B,   KC_K,   KC_M, KC_COMM, KC_DOT,  KC_UP,   KC_QUOT},
+    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
+  },
+  [1] = { /* Joe soft Colemak */
+    {F(3),    CM_Q,    CM_W,    CM_F,    CM_P, CM_G,   CM_J,   CM_L, CM_U,    CM_Y,    CM_SCLN, KC_MINS},
+    {KC_BSPC, CM_A,    CM_R,    CM_S,    CM_T, CM_D,   CM_H,   CM_N, CM_E,    CM_I,    CM_O,    KC_ENT },
+    {F(15),   CM_Z,    CM_X,    CM_C,    CM_V, CM_B,   CM_K,   CM_M, KC_COMM, KC_DOT,  KC_UP,   KC_QUOT},
+    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
+  },
+  [2] = { /* Joe NUMPAD */
+    {F(3),    KC_NO,   KC_UP,   KC_NO,   KC_NO, KC_NO,   LSFT(KC_9), LSFT(KC_0), KC_PSLS, KC_P7, KC_P8,   KC_P9  },
+    {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,   LSFT(KC_5), KC_PEQL,    KC_PAST, KC_P4, KC_P5,   KC_P6  },
+    {F(15),   KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,      KC_PCMM,    KC_PMNS, KC_P1, KC_P2,   KC_P3  },
+    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1),  KC_TRNS, KC_TRNS,    F(2),       KC_PPLS, KC_P0, KC_PDOT, KC_PENT}
+  },
+  [3] = { /* Joe 1337 haxOr5*/
+    {F(3),    KC_Q,    KC_W,    KC_F,    KC_P, KC_6,   KC_J,   KC_L, KC_U,    KC_Y,    KC_SCLN, KC_MINS},
+    {KC_BSPC, KC_4,    KC_R,    KC_5,    KC_7, KC_D,   KC_H,   KC_N, KC_3,    KC_1,    KC_0,    KC_ENT },
+    {F(15),   KC_Z,    KC_X,    KC_C,    KC_V, KC_B,   KC_K,   KC_M, KC_COMM, KC_DOT,  KC_UP,   KC_QUOT},
+    {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
+  },
+  [4] = { /* Joe LOWER fn1 */
+    {KC_GRV,  KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, M(3),    M(2),    M(1),    M(0)   },
+    {KC_BSPC, KC_1,    KC_2,    KC_3,    KC_4,  KC_5,    KC_6,    KC_7,  KC_8,    KC_9,    KC_0,    KC_TRNS},
+    {KC_BSLS, KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, KC_LBRC, KC_RBRC, KC_PGUP, KC_EQL },
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1),  KC_TRNS, KC_TRNS, F(2),  KC_NO,   KC_HOME, KC_PGDN, KC_END }
+  },
+  [5] = { /* Joe UPPER fn2 */
+    {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_DEL,  KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_BTN4, KC_LEFT, KC_DOWN, KC_UP,               KC_RGHT,             KC_NO              },
+    {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_L, KC_WH_D, KC_WH_R, KC_NO,   KC_NO,   LCTL(KC_PGUP),       LCTL(LALT(KC_UP)),   LCTL(KC_PGDN)      },
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1),    KC_NO,   KC_NO,   F(2),    KC_NO,   LCTL(LALT(KC_LEFT)), LCTL(LALT(KC_DOWN)), LCTL(LALT(KC_RGHT))}
+  },
+  [6] = { /* Joe SPECIAL fn3 */
+    {KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,    KC_NO,   KC_NO,   KC_NO           },
+    {KC_NO,   KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,    KC_NO,   KC_NO,   RESET           },
+    {KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,    KC_NO,   KC_NO,   KC_NO           },
+    {F(6),    F(7),    F(8),    F(9),   F(1),  KC_TRNS, KC_TRNS, F(2),  KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))}
+  }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(4),  // fn1
+    [2] = ACTION_LAYER_MOMENTARY(5),  // fn2
+
+    /* ESC on tap, fn3 on hold */
+    [3] = ACTION_LAYER_TAP_KEY(6, KC_ESC),
+
+    /* toggle layers */
+    [6]  = ACTION_DEFAULT_LAYER_SET(0), 
+    [7]  = ACTION_DEFAULT_LAYER_SET(1),
+    [8]  = ACTION_DEFAULT_LAYER_SET(2),
+    [9]  = ACTION_DEFAULT_LAYER_SET(3),
+
+    /* tab on tap, shift on hold */
+    [15] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case 0:
+            /* :) */
+            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), END );
+            break;
+        case 1:
+            /* :( */
+            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), UP(KC_LSFT), END );
+            break;
+        case 2:
+            /* (: | :) */
+            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_9), TYPE(KC_SCLN), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END );
+            break;
+        case 3:
+            /* :( | ): */
+            return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_0), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END );
+            break;
+        default:
+            break;
+    }
+    return MACRO_NONE;
+}
diff --git a/keyboard/planck/keymaps/kyle.c b/keyboard/planck/keymaps/kyle.c
deleted file mode 100644
index da32b74f96..0000000000
--- a/keyboard/planck/keymaps/kyle.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_TAB,  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_RCTL, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), LSFT(RSFT(KC_D)), KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/kyle/kyle.c b/keyboard/planck/keymaps/kyle/kyle.c
new file mode 100644
index 0000000000..da32b74f96
--- /dev/null
+++ b/keyboard/planck/keymaps/kyle/kyle.c
@@ -0,0 +1,49 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
+  {KC_TAB,  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_RCTL, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* Colemak */
+  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
+  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+},
+[2] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* LOWER */
+  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), LSFT(RSFT(KC_D)), KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
+  {BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/leo.c b/keyboard/planck/keymaps/leo.c
deleted file mode 100644
index 6d66441822..0000000000
--- a/keyboard/planck/keymaps/leo.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* BASE */
-  {KC_ESC,  KC_LBRC, KC_QUOT, KC_SCLN, KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
-  {KC_TAB,  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_DOT,  KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_COMM},
-  {KC_LCTL, KC_LALT, KC_LGUI, FUNC(3), FUNC(2), KC_SPC,  KC_SPC,  FUNC(1), FUNC(3), KC_RGUI, KC_RALT, KC_RCTL}
-},
-[2] = { /* RAISE */
-  {RALT(KC_RBRC),  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  S(KC_RBRC)},
-  {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_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-},
-[3] = { /* LOWER */
-  {S(KC_EQL),S(KC_1),S(KC_2),S(KC_3),RALT(KC_5),S(KC_5),   S(KC_6),  S(KC_7),RALT(KC_7),RALT(KC_0),S(KC_0), KC_MINS},
-  {KC_TRNS,RALT(KC_2),S(KC_SLSH),KC_NUBS,S(KC_NUBS),RALT(KC_MINS),RALT(KC_NUBS), KC_NUHS, S(KC_8),  S(KC_9), S(KC_MINS), KC_SLSH},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, RALT(KC_8),   RALT(KC_9),   KC_TRNS,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-},
-[4] = { /* META */
-  {KC_TRNS,  KC_HOME,  KC_UP,    KC_END,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_HOME,  KC_UP,    KC_END,   KC_TRNS,  KC_DEL},
-  {KC_TRNS,  KC_RGHT,  KC_DOWN,  KC_LEFT,  KC_PGUP,  KC_TRNS,  KC_PGUP,  KC_LEFT,  KC_DOWN,  KC_RGHT,  KC_TRNS,  KC_TRNS},
-  {KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PGDN,  KC_TRNS,  KC_PGDN,  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}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-    [3] = ACTION_LAYER_MOMENTARY(4),  // to META
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/leo/leo.c b/keyboard/planck/keymaps/leo/leo.c
new file mode 100644
index 0000000000..6d66441822
--- /dev/null
+++ b/keyboard/planck/keymaps/leo/leo.c
@@ -0,0 +1,46 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* BASE */
+  {KC_ESC,  KC_LBRC, KC_QUOT, KC_SCLN, KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_TAB,  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_DOT,  KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_COMM},
+  {KC_LCTL, KC_LALT, KC_LGUI, FUNC(3), FUNC(2), KC_SPC,  KC_SPC,  FUNC(1), FUNC(3), KC_RGUI, KC_RALT, KC_RCTL}
+},
+[2] = { /* RAISE */
+  {RALT(KC_RBRC),  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  S(KC_RBRC)},
+  {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_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+[3] = { /* LOWER */
+  {S(KC_EQL),S(KC_1),S(KC_2),S(KC_3),RALT(KC_5),S(KC_5),   S(KC_6),  S(KC_7),RALT(KC_7),RALT(KC_0),S(KC_0), KC_MINS},
+  {KC_TRNS,RALT(KC_2),S(KC_SLSH),KC_NUBS,S(KC_NUBS),RALT(KC_MINS),RALT(KC_NUBS), KC_NUHS, S(KC_8),  S(KC_9), S(KC_MINS), KC_SLSH},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, RALT(KC_8),   RALT(KC_9),   KC_TRNS,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+[4] = { /* META */
+  {KC_TRNS,  KC_HOME,  KC_UP,    KC_END,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_HOME,  KC_UP,    KC_END,   KC_TRNS,  KC_DEL},
+  {KC_TRNS,  KC_RGHT,  KC_DOWN,  KC_LEFT,  KC_PGUP,  KC_TRNS,  KC_PGUP,  KC_LEFT,  KC_DOWN,  KC_RGHT,  KC_TRNS,  KC_TRNS},
+  {KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PGDN,  KC_TRNS,  KC_PGDN,  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}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+    [3] = ACTION_LAYER_MOMENTARY(4),  // to META
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/lucas.c b/keyboard/planck/keymaps/lucas.c
deleted file mode 100644
index 27672e1bbc..0000000000
--- a/keyboard/planck/keymaps/lucas.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/* 
-This is the keymap of /u/deepshitgoeshere!
-Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german.
-The second layer has all the german umlauts I need and with capital and small letters on the 
-same layer there is no need to press shift+lower.
-This keymap is made to work with software implemented QWERTZ.
-The "Gaming" layer is mainly customized for CS:GO.
-If you have any question about this keymap feel free to shoot me a message on reddit!
-*/
-
-#include "keymap_common.h"
-#include "keymap_extras/keymap_german.h"
-#include "backlight.h"
-#include "debug.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Colemak   
-    * ,-----------------------------------------------------------------------.
-    * | Esc | q   | w   | f   | p   | g   | j   | l   | u   | y   | ;   |  -  |
-    * |-----------------------------------------------------------------------|
-    * | BS  | a   | r   | s   | t   | d   | h   | n   | e   | i   | o   |  '  |
-    * |-----------------------------------------------------------------------|
-    * | SFT | z   | x   | c   | v   | b   | k   | m   |  ,  |  .  |  /  | Ent |
-    * |-----------------------------------------------------------------------|
-    * | CTL | GUI | Tab | ALT |Lower|   Space   |Raise|Left |Down | Up  |Right|
-    * `-----------------------------------------------------------------------'
-    */
-  {KC_ESC,  KC_Q,    KC_W,   KC_F,    KC_P, KC_G, KC_J, KC_L, KC_U,    KC_Z,    DE_SCLN, DE_MINS},
-  {KC_BSPC, KC_A,    KC_R,   KC_S,    KC_T, KC_D, KC_H, KC_N, KC_E,    KC_I,    KC_O,    DE_QUOT},
-  {M(0),    KC_Y,    KC_X,   KC_C,    KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT,  DE_SLSH, KC_ENT},
-  {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[1] = { /* Symbols
-    * ,-----------------------------------------------------------------------.
-    * |     |     |     |     |     |     |     |     |     |     |  :  |     |
-    * |-----------------------------------------------------------------------|
-    * |     |     |     |     |     |     |     |     |     |     |     |  "  |
-    * |-----------------------------------------------------------------------|
-    * |     |     |     |     |     |     |     |     |  <  |  >  |  ?  |     |
-    * |-----------------------------------------------------------------------|
-    * |     |     |     |     |     |           |     |     |     |     |     |
-    * `-----------------------------------------------------------------------'
-    */
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1),    DE_MORE, DE_QST,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-},
-[2] = { /* Raise
-    * ,-----------------------------------------------------------------------.
-    * |     |  Ä  |     |     |     |     |     |     |  Ü  |  Ö  |     |Game |
-    * |-----------------------------------------------------------------------|
-    * | Del |  ä  |     |  ß  |     |     |     |     |  ü  |  ö  |     |FVol+|
-    * |-----------------------------------------------------------------------|
-    * |     |     |     |     |     |     |     |     |Stop | Prv | Nxt |FVol-|
-    * |-----------------------------------------------------------------------|
-    * |LCTL |LGUI | Tab |LALT |Lower|   Space   |     |Mute |Vol- |Vol+ | P/P |
-    * `-----------------------------------------------------------------------'
-    */
-  {KC_NO,   S(DE_AE), KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,   S(DE_UE), S(DE_OE), KC_NO,   F(4)},
-  {KC_DEL,  DE_AE,    KC_NO,   DE_SS,   KC_NO,   KC_NO,   KC_NO,    KC_NO,   DE_UE,    DE_OE,    KC_NO,   RALT(KC_F12)},
-  {KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,   KC_MSTP,  KC_MPRV,  KC_MNXT, RALT(KC_F11)},
-  {KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_MUTE,  KC_VOLD,  KC_VOLU, KC_MPLY}
-},
-[3] = { /* Lower 
-    * ,-----------------------------------------------------------------------.
-    * |  ~  |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |  +  |
-    * |-----------------------------------------------------------------------| 
-    * |  `  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  =  |
-    * |-----------------------------------------------------------------------|
-    * |     |     |     |  |  |  [  |  ]  |  {  |  }  |  €  |     |  \  | Ent |
-    * |-----------------------------------------------------------------------|
-    * |LCTL |LGUI | Tab |LALT |     |   Space   |Raise|Home |PgDn |PgUp | End |
-    * `-----------------------------------------------------------------------'
-    */
-  {DE_TILD, DE_EXLM, DE_AT,   DE_HASH, DE_DLR,  DE_PERC, DE_CIRC,  DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS},
-  {DE_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,     KC_7,    KC_8,    KC_9,    KC_0,    DE_EQL},
-  {KC_NO,   KC_NO,   KC_NO,   DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR,  DE_RCBR, DE_EURO, KC_NO,   DE_BSLS, KC_ENT},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
-},
-[4] = { /* Function
-    * ,-----------------------------------------------------------------------.
-    * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
-    * |-----------------------------------------------------------------------|
-    * | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 |
-    * |-----------------------------------------------------------------------|
-    * |     |     |     |     |     | KP- | KP+ |     |     |     |     |Reset| 
-    * |-----------------------------------------------------------------------|
-    * |     |Light|BL DN|BL UP|     |     |     |     |Mute |Vol- |Vol+ | P/P | 
-    * `-----------------------------------------------------------------------'
-    */
-  {KC_F13, KC_F14,  KC_F15, KC_F16, KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24},
-  {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_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,   KC_PMNS, KC_PPLS, KC_NO,   KC_NO,   KC_NO,   RESET,   KC_NO},
-  {KC_NO,  BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[5] = { /* Gaming
-    * ,-----------------------------------------------------------------------.
-    * | Buy | ESC | q   | w   | e   | r   | t   | y   | u   | i   | o   |  p  |
-    * |-----------------------------------------------------------------------|
-    * | ENT | BS  | a   | s   | d   | f   | g   | h   | j   | k   | l   |  ;  |
-    * |-----------------------------------------------------------------------|
-    * | CTL | SFT | z   | x   | c   | v   | b   | n   |  m  |  ,  | Up  |  /  |
-    * |-----------------------------------------------------------------------|
-    * |     |     | Tab | ALT |     |   Space   |CrJmp| GUI |Left |Down |Right|
-    * `-----------------------------------------------------------------------'
-    */
-  {MO(6),   KC_ESC,  KC_Q,   KC_W,    KC_E,  KC_R,   KC_T,   KC_Z,         KC_U,    KC_I,    KC_O,    F(4)},
-  {KC_ENT,  KC_BSPC, KC_A,   KC_S,    KC_D,  KC_F,   KC_G,   KC_H,         KC_J,    KC_K,    KC_L,    DE_SCLN},
-  {KC_LCTL, KC_LSFT, KC_Y,   KC_X,    KC_C,  KC_V,   KC_B,   KC_N,         KC_M,    DE_DOT,  KC_UP,   DE_SLSH},
-  {KC_NO,   KC_NO,   KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT}
-},
-[6] = { /* Gaming 
-        /* CS:GO buy binds
-    * ,-----------------------------------------------------------------------.
-    * |     |     |     |     |     |     |     |     |  7  |  8  |  9  |     |
-    * |-----------------------------------------------------------------------|
-    * | BS  |     |     |     |     |     |     |     |  6  |  5  |  4  | End |
-    * |-----------------------------------------------------------------------|
-    * | CTL | SFT |     |     |     |     |     |     |  1  |  2  |  3  |Pgdn |
-    * |-----------------------------------------------------------------------|
-    * |     |     | Tab | ALT |     |   Space   |CrJmp|     |  0  | KP+ |PEnt |
-    * `-----------------------------------------------------------------------'
-    */
-  {KC_TRNS, KC_NO,   KC_Q,   KC_W,    KC_F,  KC_P,   KC_G,   KC_J,         KC_P7, KC_P8, KC_P9,   KC_NO},
-  {KC_BSPC, KC_NO,   KC_A,   KC_R,    KC_S,  KC_T,   KC_D,   KC_H,         KC_P4, KC_P5, KC_P6,   KC_END},
-  {KC_LCTL, KC_LSFT, KC_Y,   KC_X,    KC_C,  KC_V,   KC_B,   KC_K,         KC_P1, KC_P2, KC_P3,   KC_PGDN},
-  {KC_NO,   KC_NO,   KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT}
-},
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),              // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),              // to LOWER
-    [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC),         // to Function
-    [4] = ACTION_LAYER_TOGGLE(5),                 // toggle Gaming
-	[5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS),  //Shift on press, Caps on tap
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-  switch(id) {
-    case 0: // M(0)
-        if (record->event.pressed) {
-            register_code(KC_LSFT);
-            layer_on(1);
-        } else {
-            layer_off(1);
-            unregister_code(KC_LSFT);
-        }
-        break;       
-    case 1: // M(1)
-        if (record->event.pressed) {
-            unregister_code(KC_LSFT);
-            register_code(DE_MORE);
-        } else {
-            unregister_code(DE_MORE);
-        }
-        break;    
-  }
-  return MACRO_NONE;
-
-};          
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/lucas/lucas.c b/keyboard/planck/keymaps/lucas/lucas.c
new file mode 100644
index 0000000000..27672e1bbc
--- /dev/null
+++ b/keyboard/planck/keymaps/lucas/lucas.c
@@ -0,0 +1,163 @@
+/* 
+This is the keymap of /u/deepshitgoeshere!
+Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german.
+The second layer has all the german umlauts I need and with capital and small letters on the 
+same layer there is no need to press shift+lower.
+This keymap is made to work with software implemented QWERTZ.
+The "Gaming" layer is mainly customized for CS:GO.
+If you have any question about this keymap feel free to shoot me a message on reddit!
+*/
+
+#include "keymap_common.h"
+#include "keymap_extras/keymap_german.h"
+#include "backlight.h"
+#include "debug.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Colemak   
+    * ,-----------------------------------------------------------------------.
+    * | Esc | q   | w   | f   | p   | g   | j   | l   | u   | y   | ;   |  -  |
+    * |-----------------------------------------------------------------------|
+    * | BS  | a   | r   | s   | t   | d   | h   | n   | e   | i   | o   |  '  |
+    * |-----------------------------------------------------------------------|
+    * | SFT | z   | x   | c   | v   | b   | k   | m   |  ,  |  .  |  /  | Ent |
+    * |-----------------------------------------------------------------------|
+    * | CTL | GUI | Tab | ALT |Lower|   Space   |Raise|Left |Down | Up  |Right|
+    * `-----------------------------------------------------------------------'
+    */
+  {KC_ESC,  KC_Q,    KC_W,   KC_F,    KC_P, KC_G, KC_J, KC_L, KC_U,    KC_Z,    DE_SCLN, DE_MINS},
+  {KC_BSPC, KC_A,    KC_R,   KC_S,    KC_T, KC_D, KC_H, KC_N, KC_E,    KC_I,    KC_O,    DE_QUOT},
+  {M(0),    KC_Y,    KC_X,   KC_C,    KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT,  DE_SLSH, KC_ENT},
+  {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[1] = { /* Symbols
+    * ,-----------------------------------------------------------------------.
+    * |     |     |     |     |     |     |     |     |     |     |  :  |     |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |     |     |     |     |     |     |  "  |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |     |     |     |  <  |  >  |  ?  |     |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |           |     |     |     |     |     |
+    * `-----------------------------------------------------------------------'
+    */
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1),    DE_MORE, DE_QST,  KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+[2] = { /* Raise
+    * ,-----------------------------------------------------------------------.
+    * |     |  Ä  |     |     |     |     |     |     |  Ü  |  Ö  |     |Game |
+    * |-----------------------------------------------------------------------|
+    * | Del |  ä  |     |  ß  |     |     |     |     |  ü  |  ö  |     |FVol+|
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |     |     |     |Stop | Prv | Nxt |FVol-|
+    * |-----------------------------------------------------------------------|
+    * |LCTL |LGUI | Tab |LALT |Lower|   Space   |     |Mute |Vol- |Vol+ | P/P |
+    * `-----------------------------------------------------------------------'
+    */
+  {KC_NO,   S(DE_AE), KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,   S(DE_UE), S(DE_OE), KC_NO,   F(4)},
+  {KC_DEL,  DE_AE,    KC_NO,   DE_SS,   KC_NO,   KC_NO,   KC_NO,    KC_NO,   DE_UE,    DE_OE,    KC_NO,   RALT(KC_F12)},
+  {KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,   KC_MSTP,  KC_MPRV,  KC_MNXT, RALT(KC_F11)},
+  {KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_MUTE,  KC_VOLD,  KC_VOLU, KC_MPLY}
+},
+[3] = { /* Lower 
+    * ,-----------------------------------------------------------------------.
+    * |  ~  |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |  +  |
+    * |-----------------------------------------------------------------------| 
+    * |  `  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  =  |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |  |  |  [  |  ]  |  {  |  }  |  €  |     |  \  | Ent |
+    * |-----------------------------------------------------------------------|
+    * |LCTL |LGUI | Tab |LALT |     |   Space   |Raise|Home |PgDn |PgUp | End |
+    * `-----------------------------------------------------------------------'
+    */
+  {DE_TILD, DE_EXLM, DE_AT,   DE_HASH, DE_DLR,  DE_PERC, DE_CIRC,  DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS},
+  {DE_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,     KC_7,    KC_8,    KC_9,    KC_0,    DE_EQL},
+  {KC_NO,   KC_NO,   KC_NO,   DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR,  DE_RCBR, DE_EURO, KC_NO,   DE_BSLS, KC_ENT},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
+},
+[4] = { /* Function
+    * ,-----------------------------------------------------------------------.
+    * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
+    * |-----------------------------------------------------------------------|
+    * | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     | KP- | KP+ |     |     |     |     |Reset| 
+    * |-----------------------------------------------------------------------|
+    * |     |Light|BL DN|BL UP|     |     |     |     |Mute |Vol- |Vol+ | P/P | 
+    * `-----------------------------------------------------------------------'
+    */
+  {KC_F13, KC_F14,  KC_F15, KC_F16, KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24},
+  {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_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,   KC_PMNS, KC_PPLS, KC_NO,   KC_NO,   KC_NO,   RESET,   KC_NO},
+  {KC_NO,  BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[5] = { /* Gaming
+    * ,-----------------------------------------------------------------------.
+    * | Buy | ESC | q   | w   | e   | r   | t   | y   | u   | i   | o   |  p  |
+    * |-----------------------------------------------------------------------|
+    * | ENT | BS  | a   | s   | d   | f   | g   | h   | j   | k   | l   |  ;  |
+    * |-----------------------------------------------------------------------|
+    * | CTL | SFT | z   | x   | c   | v   | b   | n   |  m  |  ,  | Up  |  /  |
+    * |-----------------------------------------------------------------------|
+    * |     |     | Tab | ALT |     |   Space   |CrJmp| GUI |Left |Down |Right|
+    * `-----------------------------------------------------------------------'
+    */
+  {MO(6),   KC_ESC,  KC_Q,   KC_W,    KC_E,  KC_R,   KC_T,   KC_Z,         KC_U,    KC_I,    KC_O,    F(4)},
+  {KC_ENT,  KC_BSPC, KC_A,   KC_S,    KC_D,  KC_F,   KC_G,   KC_H,         KC_J,    KC_K,    KC_L,    DE_SCLN},
+  {KC_LCTL, KC_LSFT, KC_Y,   KC_X,    KC_C,  KC_V,   KC_B,   KC_N,         KC_M,    DE_DOT,  KC_UP,   DE_SLSH},
+  {KC_NO,   KC_NO,   KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT}
+},
+[6] = { /* Gaming 
+        /* CS:GO buy binds
+    * ,-----------------------------------------------------------------------.
+    * |     |     |     |     |     |     |     |     |  7  |  8  |  9  |     |
+    * |-----------------------------------------------------------------------|
+    * | BS  |     |     |     |     |     |     |     |  6  |  5  |  4  | End |
+    * |-----------------------------------------------------------------------|
+    * | CTL | SFT |     |     |     |     |     |     |  1  |  2  |  3  |Pgdn |
+    * |-----------------------------------------------------------------------|
+    * |     |     | Tab | ALT |     |   Space   |CrJmp|     |  0  | KP+ |PEnt |
+    * `-----------------------------------------------------------------------'
+    */
+  {KC_TRNS, KC_NO,   KC_Q,   KC_W,    KC_F,  KC_P,   KC_G,   KC_J,         KC_P7, KC_P8, KC_P9,   KC_NO},
+  {KC_BSPC, KC_NO,   KC_A,   KC_R,    KC_S,  KC_T,   KC_D,   KC_H,         KC_P4, KC_P5, KC_P6,   KC_END},
+  {KC_LCTL, KC_LSFT, KC_Y,   KC_X,    KC_C,  KC_V,   KC_B,   KC_K,         KC_P1, KC_P2, KC_P3,   KC_PGDN},
+  {KC_NO,   KC_NO,   KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT}
+},
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),              // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),              // to LOWER
+    [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC),         // to Function
+    [4] = ACTION_LAYER_TOGGLE(5),                 // toggle Gaming
+	[5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS),  //Shift on press, Caps on tap
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
+{
+  switch(id) {
+    case 0: // M(0)
+        if (record->event.pressed) {
+            register_code(KC_LSFT);
+            layer_on(1);
+        } else {
+            layer_off(1);
+            unregister_code(KC_LSFT);
+        }
+        break;       
+    case 1: // M(1)
+        if (record->event.pressed) {
+            unregister_code(KC_LSFT);
+            register_code(DE_MORE);
+        } else {
+            unregister_code(DE_MORE);
+        }
+        break;    
+  }
+  return MACRO_NONE;
+
+};          
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/lukas.c b/keyboard/planck/keymaps/lukas.c
deleted file mode 100644
index 6fd95378b1..0000000000
--- a/keyboard/planck/keymaps/lukas.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "planck.h"
-#ifdef BACKLIGHT_ENABLE
-  #include "backlight.h"
-#endif
-
-// This simple keymap is optimized for xmonad users using super as their modifier key.
-// M(1) makes it possible to change virtual screens and swap windows between them.
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-#define _QW 0
-#define _LW 1
-#define _RS 2
-
-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, 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_LCTL, KC_LALT, KC_LGUI, M(1), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-  },
-  [_RS] = { /* RAISE */
-    {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL },
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-  },
-  [_LW] = { /* LOWER */
-    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS},
-    {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 uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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);
-        #ifdef BACKLIGHT_ENABLE
-          backlight_step();
-        #endif
-      } else {
-        unregister_code(KC_RSFT);
-      }
-      break;
-    case 1:
-      if (record->event.pressed) {
-        register_code(KC_LGUI);
-        layer_on(_RS);
-      } else {
-        unregister_code(KC_LGUI);
-        layer_off(_RS);
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/lukas/lukas.c b/keyboard/planck/keymaps/lukas/lukas.c
new file mode 100644
index 0000000000..6fd95378b1
--- /dev/null
+++ b/keyboard/planck/keymaps/lukas/lukas.c
@@ -0,0 +1,64 @@
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// This simple keymap is optimized for xmonad users using super as their modifier key.
+// M(1) makes it possible to change virtual screens and swap windows between them.
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+#define _QW 0
+#define _LW 1
+#define _RS 2
+
+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, 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_LCTL, KC_LALT, KC_LGUI, M(1), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  },
+  [_RS] = { /* RAISE */
+    {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL },
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+  },
+  [_LW] = { /* LOWER */
+    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS},
+    {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 uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+        #ifdef BACKLIGHT_ENABLE
+          backlight_step();
+        #endif
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      break;
+    case 1:
+      if (record->event.pressed) {
+        register_code(KC_LGUI);
+        layer_on(_RS);
+      } else {
+        unregister_code(KC_LGUI);
+        layer_off(_RS);
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/max.c b/keyboard/planck/keymaps/max.c
deleted file mode 100644
index 7fb29bc7a4..0000000000
--- a/keyboard/planck/keymaps/max.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_ENT },
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT},
-  {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_ENT },
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT},
-  {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_TRNS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_BSLS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), KC_TRNS},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  S(KC_BSLS)},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/max/max.c b/keyboard/planck/keymaps/max/max.c
new file mode 100644
index 0000000000..7fb29bc7a4
--- /dev/null
+++ b/keyboard/planck/keymaps/max/max.c
@@ -0,0 +1,49 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
+  {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_ENT },
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT},
+  {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+},
+[1] = { /* Colemak */
+  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_ENT },
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT},
+  {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+},
+[2] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_TRNS},
+  {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_BSLS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* LOWER */
+  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
+  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), KC_TRNS},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  S(KC_BSLS)},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/mollat.c b/keyboard/planck/keymaps/mollat.c
deleted file mode 100644
index e7c71efd47..0000000000
--- a/keyboard/planck/keymaps/mollat.c
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// This layout is based on the following needs:
-//
-// should be as close as possible to querty/us-international layout (using international/AltGr as o/s driver)
-// added german umlauts at known places from de-layout
-// all movement keys should be at known places from vi/bash (eg HJKL for cursor keys)
-// Fn layer (at CapsLock place like the Pok3r does) for missing keys
-// additional layer for tmux window switching
-//
-// This is work in Progress! If you have suggestions write me at github.com/mollat/qmk_firmware/ and check
-// this fork for updates as I probably won't bother jack with my pull requests frequently.
-//
-
-#include "planck.h"
-
-#define _QWERTY 0
-#define _HIGH 1
-#define _LOW 2
-#define _FN 3
-#define _TMUX 4
-#define _LCTL 5
-#define _MOUSE 6
-#define __________ KC_NO // just for easy reading
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[_QWERTY] = { /* Qwerty */
-  { LT(_MOUSE, KC_ESC),KC_Q,KC_W,       KC_E,       KC_R,       KC_T,       KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_BSPC    },
-  { LT(_FN, KC_TAB),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_T(KC_ENT)},
-  { __________, __________, KC_LGUI,    KC_LALT,    KC_LCTL,LT(_TMUX, KC_SPC),LT(_HIGH, KC_SPC),MO(_LOW),KC_RALT,KC_RGUI,   __________, __________ }
-},
-
-// missing keys regarding to the form factor
-// keeping the dot and comma for typing faster IP addresses and (german) float values
-// putting the backslash on the slash's place
-[_HIGH] = {
-  { KC_GRV,     KC_EXLM,    KC_AT,      KC_HASH,    KC_DLR,     KC_PERC,    KC_CIRC,    KC_AMPR,    KC_ASTR,    KC_LPRN,    KC_RPRN,    KC_MINS    },
-  { __________, KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       KC_6,       KC_7,       KC_8,       KC_9,       KC_0,       KC_EQL     },
-  { __________, __________, __________, __________, __________, __________, __________, __________, KC_COMM,    KC_DOT,     KC_BSLS,    LSFT(KC_BSLS)},
-  { __________, __________, __________, __________, __________, __________, KC_TRNS,    __________, __________, __________, __________, __________ }
-},
-
-// classic Fn-Layer triggered with 'CapsLock-key' like on Pok3r
-// SPC and ENT are doubled for using repeat (which I switched off, see https://github.com/tmk/tmk_keyboard/issues/287)
-// '€' sign is on the '5' position as this is the usual AltGr place on the US Internation layout
-// home/end at the 'a' and 'e' position like in bash
-// ins at 'i'
-// del besides backspace (had no better place for it because of the umlauts)
-// pg-down at 'f' (forward in vi), pg-up at 'b' (back in 'vi')
-//
-[_FN] = {
-  { __________, __________, __________, KC_END,     __________, __________, __________, __________, KC_INS,     __________, KC_DEL,     RALT(KC_Y) },
-  { KC_TRNS,    __________, RALT(KC_S), __________, KC_PGDN,    RALT(KC_5), KC_LEFT,    KC_DOWN,    KC_UP,      KC_RGHT,    RALT(KC_P), RALT(KC_Q) },
-  { __________, KC_HOME,    __________, __________, __________, KC_PGUP,    __________, __________, __________, __________, __________, KC_ENT     },
-  { RESET,      __________, __________, __________, __________, KC_SPC,     KC_SPC,     __________, __________, __________, __________, __________ }
-},
-
-// function key layer and some shift + (missing key at the small form factor)
-[_LOW] = {
-  { KC_TILD,    __________, __________, __________, __________, __________, __________, __________, __________, KC_LCBR,    KC_RCBR,    KC_UNDS    },
-  { __________, KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,      KC_F7,      KC_F8,      KC_LBRC,    KC_RBRC,    KC_PLUS    },
-  { __________, __________, __________, __________, __________, KC_F9,      KC_F10,     KC_F11,     KC_F12,     __________, __________, __________ },
-  { __________, __________, __________, __________, __________, __________, __________, KC_TRNS,    __________, __________, __________, __________ }
-},
-
-// most macros will switch tmux screens
-// two macros are for vi's save/quit at 'w' and 'q'
-[_TMUX] = {
-  { __________, M(14),      M(13),      __________, __________, __________, __________, __________, __________, __________, M(11),      __________ },
-  { M(0),       M(1),       M(2),       M(3),       M(4),       M(5),       M(6),       M(7),       M(8),       M(9),       __________, __________ },
-  { __________, __________, __________, M(12),      __________, __________, M(10),      __________, __________, __________, __________, __________ },
-  { __________, __________, __________, __________, __________, KC_TRNS,    __________, __________, __________, __________, __________, __________ }
-},
-
-// mouse movement can be improved (e.g. can't press hj at once), but I will use this seldom, so I stick with hjkl keys.
-[_MOUSE] = {
-  { KC_TRNS,    __________, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________ },
-  { __________, __________, __________, __________, KC_WH_D,    __________, KC_MS_L,    KC_MS_D,    KC_MS_U,    KC_MS_R,    __________, __________ },
-  { __________, __________, __________, __________, __________, KC_WH_U,    __________, __________, __________, __________, __________, __________ },
-  { __________, __________, __________, KC_ACL2,    KC_ACL1,    KC_ACL0,    KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, __________, __________, __________ }
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [_LCTL] = ACTION_MODS_TAP_KEY(KC_LCTL, M(12)),    // does not work
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_0), END );
-          break;
-        case 1:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_1), END );
-          break;
-        case 2:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_2), END );
-          break;
-        case 3:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_3), END );
-          break;
-        case 4:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_4), END );
-          break;
-        case 5:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_5), END );
-          break;
-        case 6:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_6), END );
-          break;
-        case 7:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_7), END );
-          break;
-        case 8:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_8), END );
-          break;
-        case 9:
-          // tmux last window
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_L), END );
-          break;
-          // tmux next window
-        case 10:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_N), END );
-          break;
-          // tmux previous window
-        case 11:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_P), END );
-          break;
-          // tmux new window
-        case 12:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_C), END );
-          break;
-        case 13:
-          // vi save document
-          return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_W), TYPE(KC_ENT), END );
-          break;
-        case 14:
-          // vi quit
-          return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_Q), TYPE(KC_ENT), END );
-          break;
-          // tmux press ctrl-b
-        case 15:
-          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), END );
-          break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/mollat/mollat.c b/keyboard/planck/keymaps/mollat/mollat.c
new file mode 100644
index 0000000000..e7c71efd47
--- /dev/null
+++ b/keyboard/planck/keymaps/mollat/mollat.c
@@ -0,0 +1,149 @@
+//
+// This layout is based on the following needs:
+//
+// should be as close as possible to querty/us-international layout (using international/AltGr as o/s driver)
+// added german umlauts at known places from de-layout
+// all movement keys should be at known places from vi/bash (eg HJKL for cursor keys)
+// Fn layer (at CapsLock place like the Pok3r does) for missing keys
+// additional layer for tmux window switching
+//
+// This is work in Progress! If you have suggestions write me at github.com/mollat/qmk_firmware/ and check
+// this fork for updates as I probably won't bother jack with my pull requests frequently.
+//
+
+#include "planck.h"
+
+#define _QWERTY 0
+#define _HIGH 1
+#define _LOW 2
+#define _FN 3
+#define _TMUX 4
+#define _LCTL 5
+#define _MOUSE 6
+#define __________ KC_NO // just for easy reading
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = { /* Qwerty */
+  { LT(_MOUSE, KC_ESC),KC_Q,KC_W,       KC_E,       KC_R,       KC_T,       KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_BSPC    },
+  { LT(_FN, KC_TAB),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_T(KC_ENT)},
+  { __________, __________, KC_LGUI,    KC_LALT,    KC_LCTL,LT(_TMUX, KC_SPC),LT(_HIGH, KC_SPC),MO(_LOW),KC_RALT,KC_RGUI,   __________, __________ }
+},
+
+// missing keys regarding to the form factor
+// keeping the dot and comma for typing faster IP addresses and (german) float values
+// putting the backslash on the slash's place
+[_HIGH] = {
+  { KC_GRV,     KC_EXLM,    KC_AT,      KC_HASH,    KC_DLR,     KC_PERC,    KC_CIRC,    KC_AMPR,    KC_ASTR,    KC_LPRN,    KC_RPRN,    KC_MINS    },
+  { __________, KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       KC_6,       KC_7,       KC_8,       KC_9,       KC_0,       KC_EQL     },
+  { __________, __________, __________, __________, __________, __________, __________, __________, KC_COMM,    KC_DOT,     KC_BSLS,    LSFT(KC_BSLS)},
+  { __________, __________, __________, __________, __________, __________, KC_TRNS,    __________, __________, __________, __________, __________ }
+},
+
+// classic Fn-Layer triggered with 'CapsLock-key' like on Pok3r
+// SPC and ENT are doubled for using repeat (which I switched off, see https://github.com/tmk/tmk_keyboard/issues/287)
+// '€' sign is on the '5' position as this is the usual AltGr place on the US Internation layout
+// home/end at the 'a' and 'e' position like in bash
+// ins at 'i'
+// del besides backspace (had no better place for it because of the umlauts)
+// pg-down at 'f' (forward in vi), pg-up at 'b' (back in 'vi')
+//
+[_FN] = {
+  { __________, __________, __________, KC_END,     __________, __________, __________, __________, KC_INS,     __________, KC_DEL,     RALT(KC_Y) },
+  { KC_TRNS,    __________, RALT(KC_S), __________, KC_PGDN,    RALT(KC_5), KC_LEFT,    KC_DOWN,    KC_UP,      KC_RGHT,    RALT(KC_P), RALT(KC_Q) },
+  { __________, KC_HOME,    __________, __________, __________, KC_PGUP,    __________, __________, __________, __________, __________, KC_ENT     },
+  { RESET,      __________, __________, __________, __________, KC_SPC,     KC_SPC,     __________, __________, __________, __________, __________ }
+},
+
+// function key layer and some shift + (missing key at the small form factor)
+[_LOW] = {
+  { KC_TILD,    __________, __________, __________, __________, __________, __________, __________, __________, KC_LCBR,    KC_RCBR,    KC_UNDS    },
+  { __________, KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,      KC_F7,      KC_F8,      KC_LBRC,    KC_RBRC,    KC_PLUS    },
+  { __________, __________, __________, __________, __________, KC_F9,      KC_F10,     KC_F11,     KC_F12,     __________, __________, __________ },
+  { __________, __________, __________, __________, __________, __________, __________, KC_TRNS,    __________, __________, __________, __________ }
+},
+
+// most macros will switch tmux screens
+// two macros are for vi's save/quit at 'w' and 'q'
+[_TMUX] = {
+  { __________, M(14),      M(13),      __________, __________, __________, __________, __________, __________, __________, M(11),      __________ },
+  { M(0),       M(1),       M(2),       M(3),       M(4),       M(5),       M(6),       M(7),       M(8),       M(9),       __________, __________ },
+  { __________, __________, __________, M(12),      __________, __________, M(10),      __________, __________, __________, __________, __________ },
+  { __________, __________, __________, __________, __________, KC_TRNS,    __________, __________, __________, __________, __________, __________ }
+},
+
+// mouse movement can be improved (e.g. can't press hj at once), but I will use this seldom, so I stick with hjkl keys.
+[_MOUSE] = {
+  { KC_TRNS,    __________, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________ },
+  { __________, __________, __________, __________, KC_WH_D,    __________, KC_MS_L,    KC_MS_D,    KC_MS_U,    KC_MS_R,    __________, __________ },
+  { __________, __________, __________, __________, __________, KC_WH_U,    __________, __________, __________, __________, __________, __________ },
+  { __________, __________, __________, KC_ACL2,    KC_ACL1,    KC_ACL0,    KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, __________, __________, __________ }
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [_LCTL] = ACTION_MODS_TAP_KEY(KC_LCTL, M(12)),    // does not work
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_0), END );
+          break;
+        case 1:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_1), END );
+          break;
+        case 2:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_2), END );
+          break;
+        case 3:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_3), END );
+          break;
+        case 4:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_4), END );
+          break;
+        case 5:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_5), END );
+          break;
+        case 6:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_6), END );
+          break;
+        case 7:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_7), END );
+          break;
+        case 8:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_8), END );
+          break;
+        case 9:
+          // tmux last window
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_L), END );
+          break;
+          // tmux next window
+        case 10:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_N), END );
+          break;
+          // tmux previous window
+        case 11:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_P), END );
+          break;
+          // tmux new window
+        case 12:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_C), END );
+          break;
+        case 13:
+          // vi save document
+          return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_W), TYPE(KC_ENT), END );
+          break;
+        case 14:
+          // vi quit
+          return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_Q), TYPE(KC_ENT), END );
+          break;
+          // tmux press ctrl-b
+        case 15:
+          return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), END );
+          break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/monkey.c b/keyboard/planck/keymaps/monkey.c
deleted file mode 100644
index 21a2c146ab..0000000000
--- a/keyboard/planck/keymaps/monkey.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "keymap_common.h"
-#include "backlight.h"
-#include "debug.h"
-
-#define COLEMAK_LAYER 0
-#define QWERTY_LAYER 1
-#define LOWER_LAYER 2
-#define UPPER_LAYER 3
-#define SPACEFN_LAYER 4
-#define TENKEY_LAYER 5
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[COLEMAK_LAYER] = { /* Colemak */
-  {KC_TAB,    UNI(0x1961),     KC_W,    KC_F,    KC_P,    KC_G,     KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN,  KC_BSPC},
-  {KC_LCTL,   KC_A,     KC_R,    KC_S,    KC_T,    KC_D,     KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT,   KC_Z,     KC_X,    KC_C,    KC_V,    KC_B,     KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,  KC_ENT},
-  {FUNC(5),   KC_ESC,   KC_LGUI, KC_LALT, FUNC(1), FUNC(6),  FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP,    KC_RGHT}
-},
-[QWERTY_LAYER] = { /* 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, KC_ENT},
-  {FUNC(5), KC_ESC, KC_LGUI, KC_LALT, FUNC(1), FUNC(6), FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[LOWER_LAYER] = { /* LOWER */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DELETE},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET,   DEBUG,   KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {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_HOME, KC_PGDN, KC_PGUP, KC_END}
-},
-[UPPER_LAYER] = { /* RAISE */
-  {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3),  S(KC_4),  S(KC_5), S(KC_6), S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0),    KC_DELETE},
-  {KC_CALC,   FUNC(3), FUNC(4), RESET,    DEBUG,    KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS,   KC_F1,   KC_F2,   KC_F3,    KC_F4,    KC_F5,   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_MNXT,    KC_VOLD,    KC_VOLU,    KC_MPLY}
-},
-[SPACEFN_LAYER] = { /* SpaceFN */
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP,   KC_END,   KC_TRNS, KC_TRNS},
-  {KC_TRNS, FUNC(3), FUNC(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS}
-},
-[TENKEY_LAYER] = { /* TENKEY */
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_BSPC},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_NLCK},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_PDOT, KC_ENT},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC,  KC_SPC,  KC_KP_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_KEY(LOWER_LAYER, KC_BSPC),  // Tap for backspace, hold for LOWER
-    [2] = ACTION_LAYER_TAP_KEY(UPPER_LAYER, KC_ENT),  // Tap for enter, hold for RAISE
-
-    [3] = ACTION_DEFAULT_LAYER_SET(COLEMAK_LAYER),
-    [4] = ACTION_DEFAULT_LAYER_SET(QWERTY_LAYER),
-    [5] = ACTION_LAYER_TOGGLE(TENKEY_LAYER),
-    
-    [6] = ACTION_LAYER_TAP_KEY(SPACEFN_LAYER, KC_SPC),  // Tap for space, hold for SpaceFN
-};
-
-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;
-};
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/monkey/monkey.c b/keyboard/planck/keymaps/monkey/monkey.c
new file mode 100644
index 0000000000..21a2c146ab
--- /dev/null
+++ b/keyboard/planck/keymaps/monkey/monkey.c
@@ -0,0 +1,76 @@
+#include "keymap_common.h"
+#include "backlight.h"
+#include "debug.h"
+
+#define COLEMAK_LAYER 0
+#define QWERTY_LAYER 1
+#define LOWER_LAYER 2
+#define UPPER_LAYER 3
+#define SPACEFN_LAYER 4
+#define TENKEY_LAYER 5
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[COLEMAK_LAYER] = { /* Colemak */
+  {KC_TAB,    UNI(0x1961),     KC_W,    KC_F,    KC_P,    KC_G,     KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN,  KC_BSPC},
+  {KC_LCTL,   KC_A,     KC_R,    KC_S,    KC_T,    KC_D,     KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
+  {KC_LSFT,   KC_Z,     KC_X,    KC_C,    KC_V,    KC_B,     KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,  KC_ENT},
+  {FUNC(5),   KC_ESC,   KC_LGUI, KC_LALT, FUNC(1), FUNC(6),  FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP,    KC_RGHT}
+},
+[QWERTY_LAYER] = { /* 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, KC_ENT},
+  {FUNC(5), KC_ESC, KC_LGUI, KC_LALT, FUNC(1), FUNC(6), FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[LOWER_LAYER] = { /* LOWER */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DELETE},
+  {KC_TRNS, FUNC(3), FUNC(4), RESET,   DEBUG,   KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {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_HOME, KC_PGDN, KC_PGUP, KC_END}
+},
+[UPPER_LAYER] = { /* RAISE */
+  {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3),  S(KC_4),  S(KC_5), S(KC_6), S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0),    KC_DELETE},
+  {KC_CALC,   FUNC(3), FUNC(4), RESET,    DEBUG,    KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+  {KC_TRNS,   KC_F1,   KC_F2,   KC_F3,    KC_F4,    KC_F5,   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_MNXT,    KC_VOLD,    KC_VOLU,    KC_MPLY}
+},
+[SPACEFN_LAYER] = { /* SpaceFN */
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP,   KC_END,   KC_TRNS, KC_TRNS},
+  {KC_TRNS, FUNC(3), FUNC(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS},
+  {KC_TRNS, KC_F11,  KC_F12,  KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS}
+},
+[TENKEY_LAYER] = { /* TENKEY */
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_BSPC},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_NLCK},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_PDOT, KC_ENT},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC,  KC_SPC,  KC_KP_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_KEY(LOWER_LAYER, KC_BSPC),  // Tap for backspace, hold for LOWER
+    [2] = ACTION_LAYER_TAP_KEY(UPPER_LAYER, KC_ENT),  // Tap for enter, hold for RAISE
+
+    [3] = ACTION_DEFAULT_LAYER_SET(COLEMAK_LAYER),
+    [4] = ACTION_DEFAULT_LAYER_SET(QWERTY_LAYER),
+    [5] = ACTION_LAYER_TOGGLE(TENKEY_LAYER),
+    
+    [6] = ACTION_LAYER_TAP_KEY(SPACEFN_LAYER, KC_SPC),  // Tap for space, hold for SpaceFN
+};
+
+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;
+};
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/nico.c b/keyboard/planck/keymaps/nico.c
deleted file mode 100644
index e81fd80a44..0000000000
--- a/keyboard/planck/keymaps/nico.c
+++ /dev/null
@@ -1,69 +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.
-
-#include "planck.h"
-#include "backlight.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _DV 2
-#define _LW 3
-#define _RS 4
-
-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_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, KC_ENT },
-  {M(0),    KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[_CM] = { /* Colemak */
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_LCTL,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
-  {M(0),    KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[_DV] = { /* Dvorak */
-  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
-  {KC_LCTL,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
-  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
-  {M(0),    KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-[_RS] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
-  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14,  KC_F15,  KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[_LW] = { /* LOWER */
-  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
-  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14,  KC_F15,  KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC),  // Tap for backspace, hold for LOWER
-  [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT),  // Tap for enter, hold for RAISE
-};
-
-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;
-};
diff --git a/keyboard/planck/keymaps/nico/nico.c b/keyboard/planck/keymaps/nico/nico.c
new file mode 100644
index 0000000000..e81fd80a44
--- /dev/null
+++ b/keyboard/planck/keymaps/nico/nico.c
@@ -0,0 +1,69 @@
+// 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.
+
+#include "planck.h"
+#include "backlight.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+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_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, KC_ENT },
+  {M(0),    KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_CM] = { /* Colemak */
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_LCTL,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_LCTL,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(0),    KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_RS] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14,  KC_F15,  KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14,  KC_F15,  KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC),  // Tap for backspace, hold for LOWER
+  [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT),  // Tap for enter, hold for RAISE
+};
+
+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;
+};
diff --git a/keyboard/planck/keymaps/numpad.c b/keyboard/planck/keymaps/numpad.c
deleted file mode 100644
index 7de4372ab0..0000000000
--- a/keyboard/planck/keymaps/numpad.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_KP_MINUS, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_KP_ENTER},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_KP_ASTERISK, KC_KP_9, KC_KP_6,    KC_KP_3,  KC_KP_DOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_KP_SLASH,    KC_KP_8, KC_KP_5,  KC_KP_2, KC_KP_0},
-  {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC,  KC_SPC,  KC_NUMLOCK,   KC_KP_7, KC_KP_4, KC_KP_1,  KC_KP_0}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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:
-        return MACRODOWN(T(CM_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/numpad/numpad.c b/keyboard/planck/keymaps/numpad/numpad.c
new file mode 100644
index 0000000000..7de4372ab0
--- /dev/null
+++ b/keyboard/planck/keymaps/numpad/numpad.c
@@ -0,0 +1,26 @@
+#include "keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Qwerty */
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_KP_MINUS, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_KP_ENTER},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_KP_ASTERISK, KC_KP_9, KC_KP_6,    KC_KP_3,  KC_KP_DOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_KP_SLASH,    KC_KP_8, KC_KP_5,  KC_KP_2, KC_KP_0},
+  {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC,  KC_SPC,  KC_NUMLOCK,   KC_KP_7, KC_KP_4, KC_KP_1,  KC_KP_0}
+                                                // Space is repeated to accommadate for both spacebar wiring positions
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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:
+        return MACRODOWN(T(CM_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
\ No newline at end of file
diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c
deleted file mode 100644
index 7d8243dfac..0000000000
--- a/keyboard/planck/keymaps/tak3over.c
+++ /dev/null
@@ -1,130 +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.
-//
-//Dropped the Dvorak layer and added two my layer buttons.  Both Raise and lower can be accessed from either side now.
-
-#include "planck.h"
-#ifdef BACKLIGHT_ENABLE
-  #include "backlight.h"
-#endif
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _LW 2
-#define _RS 3
-#define _FN 4
-
-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 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_QW] = {
-  {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_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-/* 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 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right 
- * `-----------------------------------------------------------------------------------'
- */
-[_CM] = {
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-	{KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
-  {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
-/* Raise
- * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp 
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  |   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   _  |   +  |   {  |   }  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_RS] = {
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_PIPE},
-  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-},
-/* Lower
- * ,-----------------------------------------------------------------------------------.
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  | Reset| Ins  | Home | PGUP |Colemk| Left |   -  |   =  |   [  |   ]  |  \   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Brite| Del  | End  | PGDN |Qwerty| Del  |   _  |   +  |   {  |   }  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_LW] = {
-  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
-  {KC_TRNS, RESET,   KC_INS,  KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, M(0),    KC_DEL,  KC_END,  KC_PGDN, DF(_QW), KC_DEL,  KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
-},
-/* Function
- * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  | GUI  |   X  |   C  |   V  |  Z   | Left | Down |  Up  |Right | Del  |  \   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |Shift | Ctrl |   X  |   C  |   V  |  Z   | Next | Mute | Vol- | Vol+ | Play |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_FN] = {
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, KC_RGUI, KC_X,    KC_C,    KC_V,    KC_Z,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_DEL,  KC_BSLS},
-  {KC_TRNS, KC_RCTL, KC_X,    KC_C,    KC_V,    KC_Z,    KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS},
-  {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 uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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);
-            #ifdef BACKLIGHT_ENABLE
-              backlight_step();
-            #endif
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/tak3over/tak3over.c b/keyboard/planck/keymaps/tak3over/tak3over.c
new file mode 100644
index 0000000000..7d8243dfac
--- /dev/null
+++ b/keyboard/planck/keymaps/tak3over/tak3over.c
@@ -0,0 +1,130 @@
+// 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.
+//
+//Dropped the Dvorak layer and added two my layer buttons.  Both Raise and lower can be accessed from either side now.
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _LW 2
+#define _RS 3
+#define _FN 4
+
+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 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QW] = {
+  {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_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+/* 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 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right 
+ * `-----------------------------------------------------------------------------------'
+ */
+[_CM] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+	{KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp 
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   _  |   +  |   {  |   }  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RS] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  | Reset| Ins  | Home | PGUP |Colemk| Left |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Brite| Del  | End  | PGDN |Qwerty| Del  |   _  |   +  |   {  |   }  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LW] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, RESET,   KC_INS,  KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, M(0),    KC_DEL,  KC_END,  KC_PGDN, DF(_QW), KC_DEL,  KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+/* Function
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  | GUI  |   X  |   C  |   V  |  Z   | Left | Down |  Up  |Right | Del  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |Shift | Ctrl |   X  |   C  |   V  |  Z   | Next | Mute | Vol- | Vol+ | Play |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FN] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_RGUI, KC_X,    KC_C,    KC_V,    KC_Z,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_DEL,  KC_BSLS},
+  {KC_TRNS, KC_RCTL, KC_X,    KC_C,    KC_V,    KC_Z,    KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS},
+  {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 uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
-- 
cgit v1.2.3


From 2425fd295af80a8e8c4f962085bca4a61d2a00db Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Mon, 16 May 2016 23:08:16 -0400
Subject: fixes default planck keymap

---
 keyboard/planck/keymaps/default/keymap.c | 1 -
 1 file changed, 1 deletion(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index 79bf62436a..43f570532b 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -261,7 +261,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             layer_off(_RAISE);
             layer_off(_LOWER);
             layer_off(_ADJUST);
-            layer_off(_MUSIC);
             layer_on(_PLOVER);
             if (!eeconfig_is_enabled()) {
                 eeconfig_init();
-- 
cgit v1.2.3


From fe9b1482fd34a1c07afca0433e4bf5eb6229cf22 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Tue, 17 May 2016 22:17:23 -0400
Subject: adds KC_NUBS, KC_NUHS and shifted versions to default keymaps

---
 keyboard/planck/keymaps/default/keymap.c      | 8 ++++----
 keyboard/planck/keymaps/experimental/keymap.c | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index 43f570532b..36d496416e 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_LOWER] = {
   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_RAISE] = {
   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c
index 2f8a0510a8..4b9c15e084 100644
--- a/keyboard/planck/keymaps/experimental/keymap.c
+++ b/keyboard/planck/keymaps/experimental/keymap.c
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_LOWER] = {
   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_RAISE] = {
   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUHS, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
-- 
cgit v1.2.3


From b732b79b49b098dba8e14493c745075f336747d8 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Wed, 18 May 2016 23:47:16 -0400
Subject: adapts unicode to quantum.c (#333)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Unicode

to have unicode input you need to:

- set your OS input method to UNICODE if needed
- enable unicode in your makefile
- copy the action_function from
keyboard/planck/keymaps/unicode/unicode.c to your keymap.c
set the target OS method in your keymap.c: void matrix_init_user() {
set_unicode_mode(UC_OSX); } you can then switch when you want with:
set_unicode_mode(UC_OSX); set_unicode_mode(UC_LNX);
set_unicode_mode(UC_WIN);
put some unicode codes in your keymap like so: UC(0x0061)
I did change the bit mask in quantum/keymap_common.c and .h
I’m afraid we will need uint32 to get a total support for all unicode
tables or relocate the handler as @mbarkhau did.

* rearranges keycode values, hooks-up unicode

* removes extra lalt ref

* adds unicode shortcuts and example
---
 keyboard/planck/keymaps/unicode/keymap.c    | 326 ++++++++++++++++++++++++++++
 keyboard/planck/keymaps/unicode/makefile.mk |   1 +
 2 files changed, 327 insertions(+)
 create mode 100644 keyboard/planck/keymaps/unicode/keymap.c
 create mode 100644 keyboard/planck/keymaps/unicode/makefile.mk

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/unicode/keymap.c b/keyboard/planck/keymaps/unicode/keymap.c
new file mode 100644
index 0000000000..d73e7e09d4
--- /dev/null
+++ b/keyboard/planck/keymaps/unicode/keymap.c
@@ -0,0 +1,326 @@
+/*
+   Copyright
+   2015 Jack Humbert <jack.humb@gmail.com>
+   2016 Francois Marlier <fmarlier@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/>.
+
+   For more info on how this works per OS, see here
+   https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input
+*/
+
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _PLOVER 5
+#define _ADJUST 16
+
+// Macro name shortcuts
+#define QWERTY M(_QWERTY)
+#define COLEMAK M(_COLEMAK)
+#define DVORAK M(_DVORAK)
+#define LOWER M(_LOWER)
+#define RAISE M(_RAISE)
+#define M_BL 5
+#define PLOVER M(12)
+#define EXT_PLV M(13)
+#define TOG_OUT M(14)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+
+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 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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, 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 },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* 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 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+  {KC_TAB,  UC_q,    UC_w,    UC_f,    UC_p,    UC_g,    UC_j,    UC_l,    UC_u,    UC_y,    UC_SCLN, UC_BSPC},
+  {KC_ESC,  UC_a,    UC_r,    UC_s,    UC_t,    UC_d,    UC_h,    UC_n,    UC_e,    UC_i,    UC_o,    UC_QUOT},
+  {KC_LSFT, UC_z,    UC_x,    UC_c,    UC_v,    UC_b,    UC_k,    UC_m,    UC_COMM, UC_DOT,  UC_SLSH, KC_ENT},
+  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* 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 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = {
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* 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 |      |      |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |TogOut|   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit |      |      |   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   },
+  {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
+  {TOG_OUT, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover|      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Mus on|Musoff|      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
+  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = {
+  {440.0*pow(2.0,(31)/12.0), 12},
+  {440.0*pow(2.0,(28)/12.0), 8},
+  {440.0*pow(2.0,(19)/12.0), 8},
+  {440.0*pow(2.0,(24)/12.0), 8},
+  {440.0*pow(2.0,(28)/12.0), 20}
+};
+
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+float tone_plover[][2]     = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
+
+float goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _QWERTY:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_QWERTY);
+          }
+          break;
+        case _COLEMAK:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_COLEMAK);
+          }
+          break;
+        case _DVORAK:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_DVORAK);
+          }
+          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);
+          }
+          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);
+          }
+          break;
+        case M_BL:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+        case 12:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              stop_all_notes();
+              PLAY_NOTE_ARRAY(tone_plover, false, 0);
+            #endif
+            layer_off(_RAISE);
+            layer_off(_LOWER);
+            layer_off(_ADJUST);
+            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);
+          }
+        break;
+        case 13:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
+            #endif
+            layer_off(_PLOVER);
+          }
+        break;
+        case 14:
+          if (record->event.pressed) {
+            return MACRO( D(E), D(R), D(F), D(V), D(O), D(L), U(E), U(R), U(F), U(V), U(O), U(L), END );
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+  #ifdef AUDIO_ENABLE
+    _delay_ms(20); // stops the tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+  #endif
+}
+
+#ifdef AUDIO_ENABLE
+void play_goodbye_tone()
+{
+  PLAY_NOTE_ARRAY(goodbye, false, 0);
+  _delay_ms(150);
+}
+#endif
+
+
diff --git a/keyboard/planck/keymaps/unicode/makefile.mk b/keyboard/planck/keymaps/unicode/makefile.mk
new file mode 100644
index 0000000000..9b27b08bed
--- /dev/null
+++ b/keyboard/planck/keymaps/unicode/makefile.mk
@@ -0,0 +1 @@
+UNICODE_ENABLE   = yes  # Unicode
-- 
cgit v1.2.3


From d66aa0abf96b5e887250cf0a7fa5e575f18c5a91 Mon Sep 17 00:00:00 2001
From: Peter <petereichinger@users.noreply.github.com>
Date: Fri, 20 May 2016 17:14:08 +0200
Subject: adds petereichinger's planck keymap (#340)

* Add custom keymap

* A little readme and remove old layout comments
---
 keyboard/planck/keymaps/pete/README.md   |  14 ++
 keyboard/planck/keymaps/pete/keymap.c    | 223 +++++++++++++++++++++++++++++++
 keyboard/planck/keymaps/pete/makefile.mk |   2 +
 3 files changed, 239 insertions(+)
 create mode 100644 keyboard/planck/keymaps/pete/README.md
 create mode 100644 keyboard/planck/keymaps/pete/keymap.c
 create mode 100644 keyboard/planck/keymaps/pete/makefile.mk

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/pete/README.md b/keyboard/planck/keymaps/pete/README.md
new file mode 100644
index 0000000000..3cf594f3a9
--- /dev/null
+++ b/keyboard/planck/keymaps/pete/README.md
@@ -0,0 +1,14 @@
+# Planck Layout by Pete
+
+This layout is based on the default layout but uses a FN key in the bottom left corner instead of the shift / backlight key.
+On the FN layer you can do the following things
+
+- Step through back light
+- Put a mac to sleep
+- The Fxx keys in a block to click with the right hand
+- The delete key in the upper right corner
+- Quick access to screenshot functions
+- Control volume and media playback
+- Home/PgDown/PgUp/End buttons where the arrow keys are
+
+Pressing the lower and raise buttons allows to reset and change from QWERT to Colemak or Dvorak.
diff --git a/keyboard/planck/keymaps/pete/keymap.c b/keyboard/planck/keymaps/pete/keymap.c
new file mode 100644
index 0000000000..57cab65a31
--- /dev/null
+++ b/keyboard/planck/keymaps/pete/keymap.c
@@ -0,0 +1,223 @@
+// 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.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _FCT 5
+#define _SETUP 6
+#define _MICMUTE 16
+
+// Macro name shortcuts
+#define QWERTY M(_QWERTY)
+#define COLEMAK M(_COLEMAK)
+#define DVORAK M(_DVORAK)
+#define LOWER M(_LOWER)
+#define RAISE M(_RAISE)
+#define FCT M(_FCT)
+#define MICMUTE M(_MICMUTE)
+
+#define MACPRNT LGUI(LSFT(KC_3))
+#define MACPRNT2 LGUI(LSFT(KC_4))
+#define CYCLWIN LGUI(KC_GRV)
+#define MAC_SLEP LSFT(LCTL(KC_POWER))
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_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, 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 },
+  {FCT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+[_COLEMAK] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {FCT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+[_DVORAK] = {
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {FCT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+[_LOWER] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+[_RAISE] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+[_FCT] = { /* Function */
+  {BL_STEP, MAC_SLEP,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_DELT},
+  {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_F5,   KC_F6,   KC_F7,   KC_F8,   MACPRNT},
+  {_______, CYCLWIN, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12, MACPRNT2},
+  {FCT,     _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END }
+},
+
+[_SETUP] = { /* Setup */
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, RESET,   RESET,   _______, _______, _______, _______, _______}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = {
+  {440.0*pow(2.0,(31)/12.0), 12},
+  {440.0*pow(2.0,(28)/12.0), 8},
+  {440.0*pow(2.0,(19)/12.0), 8},
+  {440.0*pow(2.0,(24)/12.0), 8},
+  {440.0*pow(2.0,(28)/12.0), 20}
+};
+
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+float tone_plover[][2]     = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
+
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+float goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _QWERTY:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_QWERTY);
+          }
+          break;
+        case _COLEMAK:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_COLEMAK);
+          }
+          break;
+        case _DVORAK:
+          if (record->event.pressed) {
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+            #endif
+            persistant_default_layer_set(1UL<<_DVORAK);
+          }
+          break;
+        case _LOWER:
+          if (record->event.pressed) {
+            layer_on(_LOWER);
+            update_tri_layer(_LOWER, _RAISE, _SETUP);
+          } else {
+            layer_off(_LOWER);
+            update_tri_layer(_LOWER, _RAISE, _SETUP);
+          }
+          break;
+        case _RAISE:
+          if (record->event.pressed) {
+            layer_on(_RAISE);
+            update_tri_layer(_LOWER, _RAISE, _SETUP);
+          } else {
+            layer_off(_RAISE);
+            update_tri_layer(_LOWER, _RAISE, _SETUP);
+          }
+          break;
+        case _FCT:
+          if (record->event.pressed) {
+            layer_on(_FCT);
+          } else {
+            layer_off(_FCT);
+          }
+        break;
+        case _MICMUTE:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            register_code(KC_RCTL);
+            register_code(KC_RALT);
+            register_code(KC_RGUI);
+          } else {
+            unregister_code(KC_RSFT);
+            unregister_code(KC_RCTL);
+            unregister_code(KC_RALT);
+            unregister_code(KC_RGUI);
+          } 
+        break;
+
+      }
+    return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+  #ifdef AUDIO_ENABLE
+    _delay_ms(20); // stops the tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+  #endif
+}
+
+#ifdef AUDIO_ENABLE
+void play_goodbye_tone()
+{
+  PLAY_NOTE_ARRAY(goodbye, false, 0);
+  _delay_ms(150);
+}
+
+uint8_t starting_note = 0x0C;
+int offset = 0;
+
+void process_action_user(keyrecord_t *record) {
+
+  if (IS_LAYER_ON(_MUSIC)) {
+    if (record->event.pressed) {
+        play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
+    } else {
+        stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+    }
+  }
+
+}
+#endif
diff --git a/keyboard/planck/keymaps/pete/makefile.mk b/keyboard/planck/keymaps/pete/makefile.mk
new file mode 100644
index 0000000000..812264cb35
--- /dev/null
+++ b/keyboard/planck/keymaps/pete/makefile.mk
@@ -0,0 +1,2 @@
+AUDIO_ENABLE = no
+NKRO_ENABLE = yes
\ No newline at end of file
-- 
cgit v1.2.3


From aaa758f1d3f97dda39879f2b055ad2da9680adfe Mon Sep 17 00:00:00 2001
From: Eric Tang <e_l_tang@outlook.com>
Date: Mon, 23 May 2016 20:42:21 -0700
Subject: Optimize matrix scanning (#343)

---
 keyboard/planck/keymaps/pvc/config.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/pvc/config.h b/keyboard/planck/keymaps/pvc/config.h
index d435cc795c..b8960038ab 100644
--- a/keyboard/planck/keymaps/pvc/config.h
+++ b/keyboard/planck/keymaps/pvc/config.h
@@ -33,8 +33,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_COLS 12
 
 /* Planck PCB default pin-out */
-#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define ROWS (int []){ D0, D5, B5, B6 }
+#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
+#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
+#define UNUSED_PINS
 
 /* COL2ROW or ROW2COL */
 #define DIODE_DIRECTION COL2ROW
@@ -46,7 +47,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define BACKLIGHT_LEVELS 3
 
 /* Set 0 if debouncing isn't needed */
-#define DEBOUNCE    5
+#define DEBOUNCING_DELAY 5
 
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
-- 
cgit v1.2.3


From 287eb7ad148abc8fe3fb014218d71e205fd9131d Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Tue, 24 May 2016 11:56:53 -0400
Subject: Converted audio play functions to *_user (#349)

* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs

* Usability tweaks

* TWEAE

* nightly

added extra kcs to keymap common

* turned on Plank audio

* Added backlight breathing to atomic

* reverted accidental merge

* Added music and audio toggles to Quantum.c

* Redid the audio callbacks

* Adjusted default planck layout to use the user tone naming

* tabs to spaces

* Rewrote the ALL recipe to allow for faster parallel make

* tabs to spaces

* Renamed custom event functions to be 'startup_user' and 'shutdown_user'. Also moved the prototypes around.

* Tweaked pvc atomic layout to work with the pvc planck.

* updates midi scale calling
---
 keyboard/planck/keymaps/default/keymap.c |  43 +++--
 keyboard/planck/keymaps/pvc/config.h     |   2 +-
 keyboard/planck/keymaps/pvc/keymap.c     | 291 ++++++++++++-------------------
 3 files changed, 140 insertions(+), 196 deletions(-)

(limited to 'keyboard/planck/keymaps')

diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index 36d496416e..3d62898171 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -174,21 +174,16 @@ const uint16_t PROGMEM fn_actions[] = {
 };
 
 #ifdef AUDIO_ENABLE
-float tone_startup[][2] = {
-  {440.0*pow(2.0,(31)/12.0), 12},
-  {440.0*pow(2.0,(28)/12.0), 8},
-  {440.0*pow(2.0,(19)/12.0), 8},
-  {440.0*pow(2.0,(24)/12.0), 8},
-  {440.0*pow(2.0,(28)/12.0), 20}
-};
 
+float tone_startup[][2]    = SONG(STARTUP_SOUND);
 float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
 float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
 float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
 float tone_plover[][2]     = SONG(PLOVER_SOUND);
 float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
+float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND);
 
-float goodbye[][2] = SONG(GOODBYE_SOUND);
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
 #endif
 
 
@@ -288,16 +283,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 };
 
 void matrix_init_user(void) {
-  #ifdef AUDIO_ENABLE
-    _delay_ms(20); // stops the tick
-    PLAY_NOTE_ARRAY(tone_startup, false, 0);
-  #endif
+    #ifdef AUDIO_ENABLE
+        startup_user();
+    #endif
 }
 
 #ifdef AUDIO_ENABLE
-void play_goodbye_tone()
+
+void startup_user()
+{
+    _delay_ms(20); // gets rid of tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void shutdown_user()
 {
-  PLAY_NOTE_ARRAY(goodbye, false, 0);
-  _delay_ms(150);
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
 }
+
+void music_on_user(void)
+{
+    music_scale_user();
+}
+
+void music_scale_user(void)
+{
+    PLAY_NOTE_ARRAY(music_scale, false, 0);
+}
+
 #endif
diff --git a/keyboard/planck/keymaps/pvc/config.h b/keyboard/planck/keymaps/pvc/config.h
index b8960038ab..b648931081 100644
--- a/keyboard/planck/keymaps/pvc/config.h
+++ b/keyboard/planck/keymaps/pvc/config.h
@@ -74,7 +74,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* disable debug print */
-#define NO_DEBUG
+//#define NO_DEBUG
 
 /* disable print */
 //#define NO_PRINT
diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c
index 177f04484d..2fc5f0da16 100644
--- a/keyboard/planck/keymaps/pvc/keymap.c
+++ b/keyboard/planck/keymaps/pvc/keymap.c
@@ -8,43 +8,44 @@
     #include "song_list.h"
 #endif
 
-#define LAYER_QWERTY         0
-#define LAYER_COLEMAK        1
-#define LAYER_DVORAK         2
-#define LAYER_LOWER          3
-#define LAYER_RAISE          4
-#define LAYER_FUNCTION       5
-#define LAYER_MOUSE          6
-#define LAYER_MUSIC          7
-#define LAYER_ADJUST         8
-
-#define MACRO_QWERTY         0
-#define MACRO_COLEMAK        1
-#define MACRO_DVORAK         2
-#define MACRO_LOWER          3
-#define MACRO_RAISE          4
-#define MACRO_FUNCTION       5
-#define MACRO_MOUSE          6
-#define MACRO_TIMBRE_1       7
-#define MACRO_TIMBRE_2       8
-#define MACRO_TIMBRE_3       9
-#define MACRO_TIMBRE_4      10
-#define MACRO_TEMPO_U       11
-#define MACRO_TEMPO_D       12
-#define MACRO_TONE_DEFAULT  13
-#define MACRO_MUSIC_ON      14
-#define MACRO_MUSIC_OFF     15
-#define MACRO_AUDIO_ON      16
-#define MACRO_AUDIO_OFF     17
-#define MACRO_INC_VOICE     18
-#define MACRO_DEC_VOICE     19
-#define MACRO_BACKLIGHT     20
+#define LAYER_QWERTY                     0
+#define LAYER_COLEMAK                    1
+#define LAYER_DVORAK                     2
+#define LAYER_UPPER                      3
+#define LAYER_LOWER                      4
+#define LAYER_FUNCTION                   5
+#define LAYER_MOUSE                      6
+#define LAYER_ADJUST                     7
+
+#define MACRO_QWERTY                     0
+#define MACRO_COLEMAK                    1
+#define MACRO_DVORAK                     2
+#define MACRO_UPPER                      3
+#define MACRO_LOWER                      4
+#define MACRO_FUNCTION                   5
+#define MACRO_MOUSE                      6
+#define MACRO_TIMBRE_1                   7
+#define MACRO_TIMBRE_2                   8
+#define MACRO_TIMBRE_3                   9
+#define MACRO_TIMBRE_4                  10
+#define MACRO_TEMPO_U                   11
+#define MACRO_TEMPO_D                   12
+#define MACRO_TONE_DEFAULT              13
+#define MACRO_MUSIC_TOGGLE              14
+#define MACRO_AUDIO_TOGGLE              16
+#define MACRO_INC_VOICE                 18
+#define MACRO_DEC_VOICE                 19
+#define MACRO_BACKLIGHT                 20
+#define MACRO_BREATH_TOGGLE             21
+#define MACRO_BREATH_SPEED_INC          23
+#define MACRO_BREATH_SPEED_DEC          24
+#define MACRO_BREATH_DEFAULT            25
 
 #define M_QWRTY             M(MACRO_QWERTY)
 #define M_COLMK             M(MACRO_COLEMAK)
 #define M_DVORK             M(MACRO_DVORAK)
+#define M_UPPER             M(MACRO_UPPER)
 #define M_LOWER             M(MACRO_LOWER)
-#define M_RAISE             M(MACRO_RAISE)
 #define M_FUNCT             M(MACRO_FUNCTION)
 #define M_MOUSE             M(MACRO_MOUSE)
 #define TIMBR_1             M(MACRO_TIMBRE_1)
@@ -55,12 +56,12 @@
 #define TMPO_DN             M(MACRO_TEMPO_D)
 #define TMPO_DF             M(MACRO_TONE_DEFAULT)
 #define M_BACKL             M(MACRO_BACKLIGHT)
+#define M_BRTOG             M(MACRO_BREATH_TOGGLE)
+#define M_BSPDU             M(MACRO_BREATH_SPEED_INC)
+#define M_BSPDD             M(MACRO_BREATH_SPEED_DEC)
+#define M_BDFLT             M(MACRO_BREATH_DEFAULT)
 
 
-#define MUS_ON              M(MACRO_MUSIC_ON)
-#define MUS_OFF             M(MACRO_MUSIC_OFF)
-#define AUD_OFF             M(MACRO_AUDIO_OFF)
-#define AUD_ON              M(MACRO_AUDIO_ON)
 #define VC_UP               M(MACRO_INC_VOICE)
 #define VC_DOWN             M(MACRO_DEC_VOICE)
 
@@ -76,6 +77,7 @@
 #define SC_ACLS             LALT(KC_F4)
 #define SC_CCLS             LCTL(KC_F4)
 
+#define OS_SHFT             KC_FN0
 
 #define _______             KC_TRNS
 #define XXXXXXX             KC_NO
@@ -90,17 +92,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  * | ESC    | A      | S      | D      | F      | G      | H      | J      | K      | L      | ;      | '      |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | Z      | X      | C      | V      | B      | N      | M      | ,      | .      | /      | ENTER  |
+ * | LSHIFT | Z      | X      | C      | V      | B      | N      | M      | ,      | .      | UP     | ENTER  |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL  | LWIN   | FN     | LALT   | RAISE  | SPACE  | SPACE  | LOWER  | UP     | DOWN   | LEFT   | RIGHT  |
+ * | LCTRL  | LWIN   | FN     | LALT   | UPPER  | SPACE  | SPACE  | LOWER  | SHIFT  | LEFT   | DOWN   | RIGHT  |
  * '-----------------------------------------------------------------------------------------------------------'
  */
 
- [LAYER_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   },
+ [LAYER_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_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_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  KC_SPC,  M_LOWER, KC_UP,   KC_DOWN, KC_LEFT, KC_RGHT  },
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_UP,   KC_ENT   },
+  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC,  KC_SPC,  M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT  },
  },
 
 /* COLEMAK
@@ -109,77 +111,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  * | BACKSP | A      | R      | S      | T      | D      | H      | N      | E      | I      | O      | '      |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | Z      | X      | C      | V      | B      | K      | M      | ,      | .      | /      | ENTER  |
+ * | LSHIFT | Z      | X      | C      | V      | B      | K      | M      | ,      | .      | UP     | ENTER  |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL  | LWIN   | FN     | LALT   | RAISE  | SPACE  | SPACE  | LOWER  | UP     | DOWN   | LEFT   | RIGHT  |
+ * | LCTRL  | LWIN   | FN     | LALT   | UPPER  | SPACE  | SPACE  | LOWER  | SHIFT  | LEFT   | DOWN   | RIGHT  |
  * '-----------------------------------------------------------------------------------------------------------'
  */
 
- [LAYER_COLEMAK]      = { /* COLEMAK */
+ [LAYER_COLEMAK]      = { // COLEMAK
   { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_ESC   },
   { KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT  },
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT   },
-  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  KC_SPC,  M_LOWER, KC_UP,   KC_DOWN, KC_LEFT, KC_RGHT  },
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_UP,   KC_ENT   },
+  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC,  KC_SPC,  M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT  },
  },
 
 /* DVORAK
  * .-----------------------------------------------------------------------------------------------------------.
  * | TAB    | '      | ,      | .      | P      | Y      | F      | G      | C      | R      | L      | BACKSP |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | ESC    | A      | O      | E      | U      | I      | D      | H      | T      | N      | S      | '      |
+ * | ESC    | A      | O      | E      | U      | I      | D      | H      | T      | N      | S      | /      |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  * | LSHIFT | ;      | Q      | J      | K      | X      | B      | M      | W      | V      | Z      | ENTER  |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL  | LWIN   | FN     | LALT   | RAISE  | SPACE  | SPACE  | LOWER  | UP     | DOWN   | LEFT   | RIGHT  |
+ * | LCTRL  | LWIN   | FN     | LALT   | UPPER  | SPACE  | SPACE  | LOWER  | UP     | DOWN   | LEFT   | RIGHT  |
  * '-----------------------------------------------------------------------------------------------------------'
  */
 
- [LAYER_DVORAK]       = { /* DVORAK */
+ [LAYER_DVORAK]       = { // DVORAK
   { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC  },
   { KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH  },
   { KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT   },
-  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  KC_SPC,  M_LOWER, KC_UP,   KC_DOWN, KC_LEFT, KC_RGHT  },
+  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC,  KC_SPC,  M_LOWER, KC_UP,   KC_DOWN, KC_LEFT, KC_RGHT  },
  },
 
-/* Raise
+/* UPPER
  * .-----------------------------------------------------------------------------------------------------------.
- * | ~      | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | DEL    |
+ * | PRINT  | F1     | F2     | F3     | F4     | NUM LK | /      | 7      | 8      | 9      | -      | DEL    |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | XXXXXX | F1     | F2     | F3     | F4     | F5     | F6     | _      | +      | [      | ]      | \      |
+ * | CAP LK | F5     | F6     | F7     | F8     | SCR LK | *      | 4      | 5      | 6      | +      | INS    |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | F7     | F8     | F9     | F10    | F11    | F12    | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER  |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL  | LWIN   | FN     | LALT   | RAISE  | BACKSP | BACKSP | LOWER  | PG UP  | PG DN  | HOME   | END    |
+ * |        | F9     | F10    | F11    | F12    | PAUSE  |        | 1      | 2      | 3      | ENTER  | HOME   |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * |        |        |        |        |        | 0      | 0      |        | RALT   | .      | ENTER  | END    |
  * '-----------------------------------------------------------------------------------------------------------'
  */
 
- [LAYER_RAISE]        = { /* RAISED */
-  { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL   },
-  { XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS  },
-  { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
-  { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END   },
+ [LAYER_UPPER]        = { // UPPER
+  { KC_PSCR, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL   },
+  { KC_CAPS, KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS   },
+  { _______, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PAUS, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME  },
+  { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END   },
  },
 
-
-/* LOWERED
+/* LOWER
  * .-----------------------------------------------------------------------------------------------------------.
- * | ~      | !      | @      | #      | $      | %      | ^      | &      | *      | (      | )      | INS    |
+ * |        | $      | {      | [      | (      | %      | #      | )      | ]      | }      | @      | PG UP  |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | XXXXXX | F1     | F2     | F3     | F4     | F5     | F6     | _      | +      | {      | }      | |      |
+ * |        | ^      | *      | +      | -      | ;      | :      | _      | '      | "      | `      | PG DN  |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | F7     | F8     | F9     | F10    | F11    | F12    | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER  |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL  | LWIN   | FN     | LALT   | RAISE  | BACKSP | BACKSP | LOWER  | PG UP  | PG DN  | HOME   | END    |
+ * |        | |      | &      | !      | ~      | /      | \      | =      | <      | >      | ?      | HOME   |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * |        |        |        |        |        |        |        |        |        |        |        | END    |
  * '-----------------------------------------------------------------------------------------------------------'
  */
 
- [LAYER_LOWER]        = { /* LOWERED */
-  { KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS   },
-  { XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS  },
-  { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
-  { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END   },
+ [LAYER_LOWER]        = { // LOWER
+  { _______, KC_DLR,  KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT,   KC_PGUP  },
+  { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT,  KC_GRV,  KC_PGDN  },
+  { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL,  KC_LT,   KC_GT,   KC_QUES, KC_HOME  },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END   },
  },
 
+
 /* FUNCTION
  * .-----------------------------------------------------------------------------------------------------------.
  * | NUM LK | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    | PAUSE  |
@@ -188,10 +190,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  * | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE   |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL  | LWIN   | FN     | LALT   | RAISE  | PLAY   | PLAY   | LOWER  | VOL UP | VOL DN | NEXT   | PREV   |
+ * | LCTRL  | LWIN   | FN     | LALT   | UPPER  | PLAY   | PLAY   | LOWER  | VOL UP | VOL DN | NEXT   | PREV   |
  * '-----------------------------------------------------------------------------------------------------------'
  */
- [LAYER_FUNCTION]     = { /* FUNCTION */
+ [LAYER_FUNCTION]     = { // FUNCTION
   { KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_PAUS  },
   { KC_CAPS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_PSCR  },
   { KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE  },
@@ -200,7 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 #ifdef MOUSEKEY_ENABLE
 
- [LAYER_MOUSE]        = { /* MOUSE */
+ [LAYER_MOUSE]        = { // MOUSE
   { KC_ESC,  KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC   },
   { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
   { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D  },
@@ -209,21 +211,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 #endif
 
- [LAYER_MUSIC]        = { /* MUSIC */
-  { 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, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
-  { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
- },
-
- [LAYER_ADJUST]       = { /* ADJUST */
-  { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON,  MUS_OFF, AUD_ON,  AUD_OFF  },
+ [LAYER_ADJUST]       = { // ADJUST
+  { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, MU_TOG,  AU_TOG   },
   { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______  },
-  { _______, _______, _______, _______, M_BACKL, RESET,   _______, M_MOUSE, _______, _______, _______, _______  },
-  { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP,   VC_DOWN, _______, _______  },
+  { _______, _______, _______, _______, M_BACKL, RESET,   _______, M_MOUSE, _______, _______, MUV_IN,  _______  },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MUV_DE,  _______  },
  },
 
-
 /*
  [LAYER_EMPTY]        = {
   { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,  },
@@ -263,6 +257,7 @@ void persistant_default_layer_set(uint16_t default_layer)
 }
 
 const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_MODS_ONESHOT(MOD_LSFT),
 };
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -306,25 +301,25 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             if (record->event.pressed)
             {
                 layer_on(LAYER_LOWER);
-                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+                update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
             }
             else
             {
                 layer_off(LAYER_LOWER);
-                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+                update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
             }
             break;
 
-        case MACRO_RAISE:
+        case MACRO_UPPER:
             if (record->event.pressed)
             {
-                layer_on(LAYER_RAISE);
-                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+                layer_on(LAYER_UPPER);
+                update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
             }
             else
             {
-                layer_off(LAYER_RAISE);
-                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+                layer_off(LAYER_UPPER);
+                update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
             }
             break;
 
@@ -393,65 +388,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             }
             break;
 
-        case MACRO_AUDIO_OFF:
-            if (record->event.pressed)
-            {
-                #ifdef AUDIO_ENABLE
-                    audio_off();
-                #endif
-            }
-            break;
-
-        case MACRO_AUDIO_ON:
-            if (record->event.pressed)
-            {
-                #ifdef AUDIO_ENABLE
-                    audio_on();
-                PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO);
-                #endif
-            }
-            break;
-
-        case MACRO_MUSIC_ON:
-            if (record->event.pressed)
-            {
-                #ifdef AUDIO_ENABLE
-                    PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO);
-                    layer_on(LAYER_MUSIC);
-                #endif
-            }
-            break;
-
-        case MACRO_MUSIC_OFF:
-            if (record->event.pressed)
-            {
-                #ifdef AUDIO_ENABLE
-                    layer_off(LAYER_MUSIC);
-                    stop_all_notes();
-                #endif
-            }
-            break;
-
-        case MACRO_INC_VOICE:
-            if (record->event.pressed)
-            {
-                #ifdef AUDIO_ENABLE
-                    voice_iterate();
-                    PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
-                #endif
-            }
-            break;
-
-        case MACRO_DEC_VOICE:
-            if (record->event.pressed)
-            {
-                #ifdef AUDIO_ENABLE
-                    voice_deiterate();
-                    PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
-                #endif
-            }
-            break;
-
 #endif /* AUDIO_ENABLE */
 
         default:
@@ -464,31 +400,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 
 #ifdef AUDIO_ENABLE
 
-
-void process_action_user(keyrecord_t *record)
-{
-
-    uint8_t starting_note = 0x0C;
-    int offset = 7;
-
-    if (IS_LAYER_ON(LAYER_MUSIC))
-    {
-        if (record->event.pressed)
-        {
-            play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
-        }
-        else
-        {
-            stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
-        }
-    }
-}
-
-
 void matrix_init_user(void)
 {
     set_voice(default_voice);
-    play_startup_tone();
+    startup_user();
     println("Matrix Init");
 }
 
@@ -532,16 +447,32 @@ void led_set_user(uint8_t usb_led)
 }
 
 
-void play_startup_tone()
+void startup_user()
 {
     _delay_ms(10); // gets rid of tick
     PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);
 }
 
-void play_goodbye_tone()
+void shutdown_user()
 {
     PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
-    _delay_ms(1000);
+    _delay_ms(2000);
+    stop_all_notes();
+}
+
+void audio_on_user(void)
+{
+	PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO);
+}
+
+void music_on_user(void)
+{
+	PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO);
+}
+
+void music_scale_user(void)
+{
+	PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
 }
 
 #endif /* AUDIO_ENABLE */
\ No newline at end of file
-- 
cgit v1.2.3