From d36d5ecfad3ea32c11fbf4a251cea7e25caafc28 Mon Sep 17 00:00:00 2001
From: James Smith <37446827+Klackygears@users.noreply.github.com>
Date: Sun, 28 Jun 2020 07:07:57 -0400
Subject: [PATCH] Klackygears add user and handwired brain (#9154)

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
---
 keyboards/handwired/brain/brain.c             |   1 +
 keyboards/handwired/brain/brain.h             |  28 +++
 keyboards/handwired/brain/config.h            | 111 +++++++++
 .../handwired/brain/keymaps/default/keymap.c  | 119 ++++++++++
 .../brain/keymaps/klackygears/config.h        |  43 ++++
 .../brain/keymaps/klackygears/keymap.c        |  99 ++++++++
 .../brain/keymaps/klackygears/rules.mk        |   3 +
 keyboards/handwired/brain/readme.md           |   1 +
 keyboards/handwired/brain/rules.mk            |  24 ++
 users/klackygears/klackygears.c               |  75 ++++++
 users/klackygears/klackygears.h               |  72 ++++++
 users/klackygears/readme.md                   |  15 ++
 users/klackygears/rules.mk                    |   6 +
 users/klackygears/tap_dances.c                | 184 +++++++++++++++
 users/klackygears/tap_dances.h                |  37 +++
 users/klackygears/wrappers.h                  | 220 ++++++++++++++++++
 16 files changed, 1038 insertions(+)
 create mode 100644 keyboards/handwired/brain/brain.c
 create mode 100644 keyboards/handwired/brain/brain.h
 create mode 100644 keyboards/handwired/brain/config.h
 create mode 100644 keyboards/handwired/brain/keymaps/default/keymap.c
 create mode 100644 keyboards/handwired/brain/keymaps/klackygears/config.h
 create mode 100644 keyboards/handwired/brain/keymaps/klackygears/keymap.c
 create mode 100644 keyboards/handwired/brain/keymaps/klackygears/rules.mk
 create mode 100644 keyboards/handwired/brain/readme.md
 create mode 100644 keyboards/handwired/brain/rules.mk
 create mode 100644 users/klackygears/klackygears.c
 create mode 100644 users/klackygears/klackygears.h
 create mode 100644 users/klackygears/readme.md
 create mode 100644 users/klackygears/rules.mk
 create mode 100644 users/klackygears/tap_dances.c
 create mode 100644 users/klackygears/tap_dances.h
 create mode 100644 users/klackygears/wrappers.h

diff --git a/keyboards/handwired/brain/brain.c b/keyboards/handwired/brain/brain.c
new file mode 100644
index 0000000000..2f792f04cf
--- /dev/null
+++ b/keyboards/handwired/brain/brain.c
@@ -0,0 +1 @@
+#include "brain.h"
diff --git a/keyboards/handwired/brain/brain.h b/keyboards/handwired/brain/brain.h
new file mode 100644
index 0000000000..a0f2ad6848
--- /dev/null
+++ b/keyboards/handwired/brain/brain.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "quantum.h"
+
+
+
+
+
+#define LAYOUT( \
+         L01, L02, L03, L04, L05, L06,                     R00, R01, R02, R03, R04, R05, \
+    L10, L11, L12, L13, L14, L15, L16,                     R10, R11, R12, R13, R14, R15, R16, \
+    L20, L21, L22, L23, L24, L25, L26,                     R20, R21, R22, R23, R24, R25, R26, \
+         L31, L32, L33, L34, L35,                               R31, R32, R33, R34, R35, \
+                   L43, L44, L45,                               R41, R42, R43 \
+    ) \
+    { \
+        { KC_NO, L01,   L02, L03, L04, L05, L06},   \
+        { L10,   L11,   L12, L13, L14, L15, L16},   \
+        { L20,   L21,   L22, L23, L24, L25, L26},   \
+        { KC_NO, L31,   L32, L33, L34, L35, KC_NO}, \
+        { KC_NO, KC_NO, KC_NO, L43, L44, L45, KC_NO}, \
+\
+        { R00,   R01, R02, R03, R04,   R05,   KC_NO }, \
+        { R10,   R11, R12, R13, R14,   R15,   R16 },   \
+        { R20,   R21, R22, R23, R24,   R25,   R26 },   \
+        { KC_NO, R31, R32, R33, R34,   R35,   KC_NO }, \
+        { KC_NO, R41, R42, R43, KC_NO, KC_NO, KC_NO }, \
+}
diff --git a/keyboards/handwired/brain/config.h b/keyboards/handwired/brain/config.h
new file mode 100644
index 0000000000..3779cfb9c1
--- /dev/null
+++ b/keyboards/handwired/brain/config.h
@@ -0,0 +1,111 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+Copyright 2020 James Smith <bronzegears@gmail.com> @klackygears
+
+
+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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4A53
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER klackygears
+#define PRODUCT Brain
+#define DESCRIPTION A split ergonomic keyboard with sculpted shell
+
+#define SPLIT_USB_DETECT
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+// wiring of each half
+
+#define MATRIX_COL_PINS \
+    { D1, D4, C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS \
+    { F4, F5, F6, F7, B1 }
+
+#define MATRIX_COL_PINS_RIGHT \
+    { B5, B4, E6, D7, C6, D4, D1 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* mouse config */
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
+
+/* Set 0 if debouncing isn't needed */
+
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+#define EE_HANDS
+
+//#define SPLIT_HAND_PIN B7
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Enables This makes it easier for fast typists to use dual-function keys */
+#define PERMISSIVE_HOLD
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#define RGBLED_NUM 28  // Number of LEDs
+
+
+#define RGBLIGHT_LIMIT_VAL 120
+
+#define RGBLIGHT_SPLIT
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+//#define PREVENT_STUCK_MODIFIERS
+//#define TAPPING_TERM 150
+//#define IGNORE_MOD_TAP_INTERRUPT
+//#define TAPPING_FORCE_HOLD
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 6
+#define BOOTMAGIC_LITE_ROW_RIGHT 5
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
diff --git a/keyboards/handwired/brain/keymaps/default/keymap.c b/keyboards/handwired/brain/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a3f750542b
--- /dev/null
+++ b/keyboards/handwired/brain/keymaps/default/keymap.c
@@ -0,0 +1,119 @@
+#include QMK_KEYBOARD_H
+
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layers {
+    _QWERTY,
+    _LOWER,
+    _RAISE,
+    _ADJUST
+};
+
+enum custom_keycodes {
+  LOWER = SAFE_RANGE,
+  RAISE,
+  ADJUST,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+[_QWERTY] = LAYOUT(
+  //       |------------------------------------------.         ,---------------------------------------------,
+              KC_Q,  KC_W,  KC_E,  KC_R,  KC_T,  KC_NO,           KC_NO, KC_Y,  KC_U,    KC_I,   KC_O,    KC_P,
+  //|------+------+------+------+------+------+-------|         |------+------+------+-------+--------+-------+--------,
+    KC_LCTL,  KC_A,  KC_S,  KC_D,  KC_F,  KC_G,  KC_NO,           KC_NO, 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_NO,           KC_NO, KC_N,  KC_M, KC_COMM, KC_DOT, KC_SLSH,  KC_ESC,
+  //|------+------+------+------+------+------+-------|         |------+------+------+-------+-------+--------+--------|
+             KC_NO, KC_NO,        KC_NO, LOWER, KC_SPC,          KC_ENT, RAISE, KC_NO,          KC_NO,   KC_NO,
+         //|------+------|   //|-------+------+-------|         |------+------+------|       |-------+--------|
+                                  KC_NO, KC_NO,  KC_NO,           KC_NO, KC_NO,  KC_NO
+                             //`----------------------'         `--------------------'
+
+  ),
+
+[_LOWER] = LAYOUT(
+  //       |-----------------------------------------------.         ,--------------------------------------------------------,
+              KC_1,  KC_2,    KC_3,   KC_3,    KC_4, KC_ESC,              KC_5,    KC_6,    KC_7,     KC_8,     KC_9,     KC_0,
+  //|------+------+------+--------+-------+------+---------|         |--------+--------+--------+---------+---------+---------+--------,
+    KC_LCTL, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO,  KC_NO,             KC_NO, KC_LEFT, KC_DOWN,    KC_UP, KC_RIGHT,    KC_NO, KC_BSPC,
+  //|------+------+------+--------+-------+------+---------|         |--------+--------+--------+---------+---------+---------+--------,
+    KC_LSFT, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO,  KC_NO,             KC_NO,   KC_NO,   KC_NO,    KC_NO,    KC_NO,    KC_NO,   KC_NO,
+  //|------+------+------+---+----+-------+------+---------|         |--------+--------+--------+---------+---------+---------+--------|
+             KC_NO, KC_NO,         KC_LGUI,   LOWER, KC_SPC,            KC_ENT,   RAISE, KC_RALT,              KC_NO,    KC_NO,
+         //|------+------|      //|------+------+----------|         |--------+------+----------|         |---------+---------|
+                                     KC_NO,   KC_NO,  KC_NO,             KC_NO,   KC_NO,   KC_NO
+                                //`------------------------'         `--------------------------'
+  ),
+
+[_RAISE] = LAYOUT(
+  //       |------------------------------------------------.         ,-----------------------------------------------------,
+           KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_ESC,           KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+  //|------+------+------+--------+-------+------+---------|         |--------+--------+--------+--------+--------+--------+--------,
+    KC_LCTL, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO,  KC_NO,             KC_NO, KC_MINS,  KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE,  KC_GRV,
+  //|------+------+------+--------+-------+------+---------|         |--------+--------+--------+--------+--------+--------+--------,
+    KC_LSFT, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO,  KC_NO,             KC_NO, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
+  //|------+------+------+---+----+-------+------+---------|         |--------+--------+--------+--------+--------+--------+--------|
+             KC_NO, KC_NO,         KC_LGUI,   LOWER, KC_SPC,            KC_ENT,   RAISE, KC_RALT,            KC_NO,   KC_NO,
+         //|------+------|      //|------+------+----------|         |--------+------+----------|        |--------+--------|
+                                     KC_NO,   KC_NO,  KC_NO,             KC_NO,   KC_NO,   KC_NO
+                                //`------------------------'         `--------------------------'
+  ),
+
+
+[_ADJUST] = LAYOUT(
+  //       |------------------------------------------------.         ,-----------------------------------------------------,
+             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_LCTL, 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_LSFT, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO,  KC_NO,             KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+  //|------+------+------+---+----+-------+------+---------|         |--------+--------+--------+--------+--------+--------+--------|
+             KC_NO, KC_NO,         KC_LGUI,   LOWER, KC_SPC,            KC_ENT,   RAISE, KC_RALT,            KC_NO,   KC_NO,
+         //|------+------|      //|------+------+----------|         |--------+------+----------|        |--------+--------|
+                                     KC_NO,   KC_NO,  KC_NO,             KC_NO,   KC_NO,   KC_NO
+                                //`------------------------'         `--------------------------'
+  )
+
+
+};
+
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+  }
+  return true;
+}
diff --git a/keyboards/handwired/brain/keymaps/klackygears/config.h b/keyboards/handwired/brain/keymaps/klackygears/config.h
new file mode 100644
index 0000000000..4dd99c8b3a
--- /dev/null
+++ b/keyboards/handwired/brain/keymaps/klackygears/config.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2020 James Smith <bronzegears@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/>.
+*/
+
+#pragma once
+
+//#define USE_SERIAL
+
+#define PERMISSIVE_HOLD
+#define TAPPING_TERM 150
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#undef RGBLIGHT_RAINBOW_SWIRL_RANGE
+#define RGBLIGHT_RAINBOW_SWIRL_RANGE 75
+#define RGBLIGHT_EFFECT_SNAKE
+#undef RGBLIGHT_EFFECT_SNAKE_LENGTH
+#define RGBLIGHT_EFFECT_SNAKE_LENGTH 20
+#define RGBLIGHT_EFFECT_KNIGHT
+#undef RGBLIGHT_EFFECT_KNIGHT_LENGTH
+#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 20
+
+//   #define RGBLIGHT_EFFECT_CHRISTMAS
+//   #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//   #define RGBLIGHT_EFFECT_RGB_TEST
+//   #define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 127
diff --git a/keyboards/handwired/brain/keymaps/klackygears/keymap.c b/keyboards/handwired/brain/keymaps/klackygears/keymap.c
new file mode 100644
index 0000000000..07185446db
--- /dev/null
+++ b/keyboards/handwired/brain/keymaps/klackygears/keymap.c
@@ -0,0 +1,99 @@
+#include QMK_KEYBOARD_H
+#include "klackygears.h"
+
+//For an explanation of what's going on here with the keymap wrappers, check out drashna's user folder.
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  [_WINBASE] = LAYOUT_wrapper(
+             _______________DVORAK_L1___________________, KC_ESC,       KC_GAMER, _______________DVORAK_R1___________________,
+    RGB_TOG, _______________DVORAK_L2___________________, _______,      KC_GAMR1, _______________DVORAK_R2___________________, RGB_TOG,
+    RGB_MOD, _______________WINDVK_L3___________________, _______,      KC_GAMR2, _______________WINDVK_R3___________________, RGB_MOD,
+             _______, _______,          __________________WIN_THUMB_CLUSTER_V2______________     ,          _______, _______,
+                                        KC_NO,   KC_NO,   KC_NO,        KC_NO,   KC_NO,   KC_NO
+  ),
+
+  [_MACBASE] = LAYOUT_wrapper(
+             _______________DVORAK_L1___________________, KC_ESC,       _______, _______________DVORAK_R1___________________,
+    RGB_TOG, _______________DVORAK_L2___________________, _______,      _______, _______________DVORAK_R2___________________, RGB_TOG,
+    RGB_MOD, _______________MACDVK_L3___________________, _______,      _______, _______________MACDVK_R3___________________, RGB_MOD,
+             _______, _______,            __________________MAC_THUMB_CLUSTER_V2______________    ,         _______, _______,
+                                        KC_NO,   KC_NO,   KC_NO,        KC_NO,   KC_NO,   KC_NO
+  ),
+
+
+  [_QWERTY] = LAYOUT_wrapper(
+             _________________QWERTY_L1_________________, KC_ESC,       _______, _________________QWERTY_R1_________________,
+    KC_CAPS, _________________QWERTY_L2_________________, _______,      _______, _________________QWERTY_R2_________________, KC_ENT,
+    KC_LSFT, _________________QWERTY_L3_________________, _______,      _______, _________________QWERTY_R3_________________, KC_RSFT,
+             KC_LCTL, KC_LALT,      KC_LGUI, MO(_MNMB), MO(_SYMB),      MO(_SYMB), MO(_MNMB), KC_RGUI,  MO(_MDIA), MO(_FUNC),
+                                         KC_LSFT, KC_SPC,  KC_SPC,      KC_SPC,  KC_SPC,  KC_RSFT
+  ),
+  //Jedi - Fallen Order
+  [_GAMER] = LAYOUT_wrapper(
+             KC_R,    KC_Q,    KC_W,    KC_E,    KC_1,      KC_ESC,        KC_WINBASE, _________________RGB_1_____________________,
+    KC_TAB,  KC_F,    KC_A,    KC_S,    KC_D,    KC_2, LSFT(KC_F2),        KC_GAMR1, _________________RGB_2_____________________, RGB_TOG,
+    KC_TAB,  KC_TAB,  KC_X,    KC_Z,    KC_C,    KC_3,        KC_M,        KC_GAMR2, _________________MEDIA_____________________, RGB_MOD,
+             KC_LCTL, KC_LALT,       KC_LCTL,    KC_LSFT,   KC_SPC,        _______, KC_UP,   _______,           _______, _______,
+                                     KC_NO,      KC_LSFT,  KC_LSFT,        KC_LEFT, KC_DOWN, KC_RIGHT
+  ),
+  //Borderlands
+  [_GAMR1] = LAYOUT_wrapper(
+             KC_R,    KC_G,    KC_W,    KC_E,    KC_1,      KC_ESC,        KC_WINBASE, _________________RGB_1_____________________,
+    KC_TAB,  KC_V,    KC_A,    KC_S,    KC_D,    KC_2,        KC_L,        KC_GAMR1, _________________RGB_2_____________________, RGB_TOG,
+    KC_T,    KC_I,    KC_F,    KC_Q,    KC_4,    KC_3,        KC_M,        KC_GAMR2, _________________MEDIA_____________________, RGB_MOD,
+             KC_X,    KC_K,             KC_C,    KC_LSFT,   KC_SPC,        _______, KC_UP,   _______,           _______, _______,
+                                        KC_Z,    KC_LSFT,  KC_LSFT,        KC_LEFT, KC_DOWN, KC_RIGHT
+  ),
+  //Witcher
+  [_GAMR2] = LAYOUT_wrapper(
+             KC_R,    KC_Q,    KC_W,    KC_E,    KC_1,      KC_ESC,        KC_WINBASE, _________________RGB_1_____________________,
+    KC_TAB,  KC_LALT,  KC_A,    KC_S,    KC_D,    KC_2,        KC_J,        KC_GAMR1, _________________RGB_2_____________________, RGB_TOG,
+    KC_X,    KC_I,    KC_F,    KC_C,    KC_V,    KC_3,        KC_M,        KC_GAMR2, _________________MEDIA_____________________, RGB_MOD,
+             KC_LCTL, KC_V,          KC_HOME,    KC_LSFT,   KC_SPC,        _______, KC_UP,   _______,           _______, _______,
+                                     KC_ENT,     KC_LCTL,  KC_LSFT,        KC_LEFT, KC_DOWN, KC_RIGHT
+  ),
+
+  [_SYMB] = LAYOUT_wrapper(
+             _________________PUNC_L1_ALT_______________, _______,      _______, _________________PUNC_R1___________________,
+    _______, _________________PUNC_L3___________________, _______,      _______, _________________PUNC_R2___________________, _______,
+    RGB_MOD, _________________PUNC_L3_ALT_______________, _______,      _______, _________________PUNC_R3___________________, _______,
+             _______, _______,          _______, _______, KC_DEL,       KC_CAPS, _______, _______,          _______, _______,
+                                        _______, _______, KC_DEL,       KC_CAPS, _______, _______
+  ),
+
+  [_FUNC] = LAYOUT_wrapper(
+             _____________FUNC_L1_______________________,    _______,      _______, _______, _____________FUNC_1_______________,
+    _______, ________MAC_MISSION_CTRL__________, LGUI(KC_L), _______,      _______, _______, _____________FUNC_2_______________, _______,
+    RGB_MOD, _____________FUNC_L3_______________________,    _______,      _______, _______, _____________FUNC_3_______________, _______,
+             _______, _______,          _______, _______,    _______,      KC_CAPS, _______, _______,          _______, _______,
+                                        _______, _______,    _______,      KC_CAPS, _______, _______
+  ),
+
+  [_MNMB] = LAYOUT_wrapper(
+             _________________MACNAV_L1_________________, _______,      _______, _________________NUMB_R1___________________,
+    _______, _________________MACNAV_L2_________________, _______,      _______, _________________NUMB_R2___________________, _______,
+    RGB_MOD, _________________MACNAV_L3_________________, _______,      _______, _________________NUMB_R3_MAC_______________, _______,
+             _______, _______,          _______, _______, _______,      _______, RSFT_T(KC_ENT), KC_RSFT,   _______, _______,
+                                        _______, _______, _______,      _______, RSFT_T(KC_ENT), KC_RSFT
+  ),
+
+
+  [_NUMB] = LAYOUT_wrapper(
+             _________________WINNAV_L1_________________, _______,      _______, _________________NUMB_R1___________________,
+    _______, _________________WINNAV_L2_________________, _______,      _______, _________________NUMB_R2___________________, _______,
+    RGB_MOD, _________________WINNAV_L3_________________, _______,      _______, _________________NUMB_R3_WIN_______________, _______,
+             _______, _______,          _______, _______, _______,      _______, RSFT_T(KC_ENT), KC_RSFT,   _______, _______,
+                                        _______, _______, _______,      _______, RSFT_T(KC_ENT), KC_RSFT
+  ),
+
+   [_MDIA] = LAYOUT_wrapper(
+             _________________LYOUT_____________________, _______,      RGB_TOG, _________________RGB_1_____________________,
+    _______, _________________KC_BLANK__________________, _______,      _______, _________________RGB_2_____________________, _______,
+    RGB_MOD, _________________KC_BLANK__________________, _______,      _______, _________________MEDIA_____________________, _______,
+             _______, _______,          _______, _______, _______,      _______, _______, _______,          _______, _______,
+                                        _______, _______, _______,      _______, _______, _______
+  )
+
+  };
diff --git a/keyboards/handwired/brain/keymaps/klackygears/rules.mk b/keyboards/handwired/brain/keymaps/klackygears/rules.mk
new file mode 100644
index 0000000000..26c9daf6ad
--- /dev/null
+++ b/keyboards/handwired/brain/keymaps/klackygears/rules.mk
@@ -0,0 +1,3 @@
+
+RGBLIGHT_ENABLE = yes #Enable WS2812 RGB underlight.
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/handwired/brain/readme.md b/keyboards/handwired/brain/readme.md
new file mode 100644
index 0000000000..4a5ad4b94d
--- /dev/null
+++ b/keyboards/handwired/brain/readme.md
@@ -0,0 +1 @@
+#The Brain is a tented ergo split handwired keyboard with a sculped shell that can be changed out for other options.
diff --git a/keyboards/handwired/brain/rules.mk b/keyboards/handwired/brain/rules.mk
new file mode 100644
index 0000000000..2c24d019b4
--- /dev/null
+++ b/keyboards/handwired/brain/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no        # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE.it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+NKRO_ENABLE = no            # 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
+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
+MIDI_ENABLE = no            # MIDI controls
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no           # Audio output on port C6
+
+SPLIT_KEYBOARD = yes
diff --git a/users/klackygears/klackygears.c b/users/klackygears/klackygears.c
new file mode 100644
index 0000000000..2e7533eb16
--- /dev/null
+++ b/users/klackygears/klackygears.c
@@ -0,0 +1,75 @@
+#include "klackygears.h"
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    /*
+     if (!process_record_dynamic_macro(keycode, record)) {
+            return false;
+        }
+    */
+    switch (keycode) {
+        case KC_MACBASE:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_MACBASE);
+            }
+            break;
+
+        case KC_QWERTY:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_QWERTY);
+            }
+            break;
+
+        case KC_WINBASE:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_WINBASE);
+            }
+            break;
+
+        case KC_GAMER:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_GAMER);
+            }
+            break;
+
+        case KC_GAMR1:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_GAMR1);
+            }
+            break;
+
+        case KC_GAMR2:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_GAMR2);
+            }
+            break;
+        case RGBRST:
+#ifdef RGBLIGHT_ENABLE
+            if (record->event.pressed) {
+                eeconfig_update_rgblight_default();
+                rgblight_enable();
+            }
+#endif
+            break;
+
+        case MAKEK:
+            if (record->event.pressed) {
+                SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
+            }
+            break;
+
+        case MAKEKF:
+            if (!record->event.pressed) {
+                SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":flash");
+            }
+
+            break;
+
+        case SHRUG:
+            if (record->event.pressed) {
+                SEND_STRING(":Shrug:");
+            }
+            break;
+    }
+
+    return true;
+}
diff --git a/users/klackygears/klackygears.h b/users/klackygears/klackygears.h
new file mode 100644
index 0000000000..69f3279e2f
--- /dev/null
+++ b/users/klackygears/klackygears.h
@@ -0,0 +1,72 @@
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+#include "wrappers.h"
+#include "eeprom.h"
+#ifdef TAP_DANCE_ENABLE
+  #include "tap_dances.h"
+#endif // TAP_DANCE_ENABLE
+
+enum layer_number {
+    _WINBASE = 0,
+    _MACBASE,
+    _QWERTY,
+    _GAMER,
+    _GAMR1,
+    _GAMR2,
+    _NGMR,
+    _NUMB,
+    _MNMB,
+    _SYMB,
+    _FUNC,
+    _MDIA,
+    _MEME
+};
+
+enum userspace_custom_keycodes {
+  KC_MACBASE = SAFE_RANGE,
+  KC_QWERTY,
+  KC_WINBASE,
+  KC_GAMER,
+  KC_GAMR1,
+  KC_GAMR2,
+  NUMB,
+  MNMB,
+  SYMB,
+  FUNC,
+  MDIA,
+  RGBRST,
+  MAKEK,
+  MAKEKF,
+  SHRUG,
+  //DYNAMIC_MACRO_RANGE,
+  SAFE_RANGE_KEYMAP
+};
+
+
+/*
+#ifdef UNICODEMAP_ENABLE
+enum unicode_names {
+  BANG,
+  IRONY,
+  SNEK,
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+  [BANG]  = 0x203D,  // ‽
+  [IRONY] = 0x2E2E,  // ⸮
+  [SNEK]  = 0x1F40D, // 🐍
+};
+#endif // UNICODEMAP_ENABLE
+*/
+
+
+//#include "dynamic_macro.h"
+
+
+
+#if RGBLIGHT_ENABLE
+uint8_t RGB_current_mode;
+
+#endif
diff --git a/users/klackygears/readme.md b/users/klackygears/readme.md
new file mode 100644
index 0000000000..d00d9a17c0
--- /dev/null
+++ b/users/klackygears/readme.md
@@ -0,0 +1,15 @@
+Copyright<2019><James Smith><bronzegears@gmail.com> @klackygears
+
+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/>.
+
+
+Most of what I have here was copied and modified from drashna. If it looks a bit messy it's because I'm a total noob and trying to push myself to learn new things.
diff --git a/users/klackygears/rules.mk b/users/klackygears/rules.mk
new file mode 100644
index 0000000000..82b2233f12
--- /dev/null
+++ b/users/klackygears/rules.mk
@@ -0,0 +1,6 @@
+SRC += klackygears.c
+
+
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+  SRC += tap_dances.c
+endif
\ No newline at end of file
diff --git a/users/klackygears/tap_dances.c b/users/klackygears/tap_dances.c
new file mode 100644
index 0000000000..af4f187fcc
--- /dev/null
+++ b/users/klackygears/tap_dances.c
@@ -0,0 +1,184 @@
+#include "tap_dances.h"
+
+/*
+void macroTogKey(qk_tap_dance_state_t *state, void *user_data) {
+  keyrecord_t kr;
+
+  if (state->count == 1)
+  {
+    kr.event.pressed = false;
+    process_record_dynamic_macro( DYN_MACRO_PLAY1, &kr );
+  }
+  else if (state->count == 2)
+  {
+    kr.event.pressed = true;
+    process_record_dynamic_macro( DYN_REC_STOP, &kr );
+  }
+  else if (state->count == 3)
+  {
+    kr.event.pressed = false;
+    process_record_dynamic_macro( DYN_REC_START1, &kr );
+  }
+}
+
+void macroTogKey2(qk_tap_dance_state_t *state, void *user_data) {
+  keyrecord_t kr;
+
+  if (state->count == 1)
+  {
+    kr.event.pressed = false;
+    process_record_dynamic_macro( DYN_MACRO_PLAY2, &kr );
+  }
+  else if (state->count == 2)
+  {
+    kr.event.pressed = true;
+    process_record_dynamic_macro( DYN_REC_STOP, &kr );
+  }
+  else if (state->count == 3)
+  {
+    kr.event.pressed = false;
+    process_record_dynamic_macro( DYN_REC_START2, &kr );
+  }
+}
+*/
+
+void pstinsrt(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        register_code(KC_LALT);
+        tap_code(KC_I);
+        tap_code(KC_E);
+        unregister_code(KC_LALT);
+    } else {
+        tap_code16(C(KC_V));
+    }
+    reset_tap_dance(state);
+}
+
+void ccopy(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code16(C(KC_X));
+
+        // SEND_STRING( SS_DOWN(KC_LCTL) SS_TAP(KC_X) SS_UP(KC_LCTL));
+    } else {
+        tap_code16(C(KC_C));
+    }
+    reset_tap_dance(state);
+}
+
+void pstspecial(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        register_code(KC_LALT);
+        tap_code(KC_E);
+        tap_code(KC_S);
+        unregister_code(KC_LALT);
+        tap_code(KC_V);
+    } else {
+        register_code(KC_LALT);
+        tap_code(KC_E);
+        tap_code(KC_S);
+        unregister_code(KC_LALT);
+        tap_code(KC_T);
+    }
+    reset_tap_dance(state);
+}
+
+void deldel(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        register_code(KC_LALT);
+        tap_code(KC_E);
+        tap_code(KC_D);
+        unregister_code(KC_LALT);
+    } else {
+        tap_code(KC_DEL);
+    }
+    reset_tap_dance(state);
+}
+
+void findreplace(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code16(C(KC_H));
+    } else {
+        tap_code16(C(KC_F));
+    }
+    reset_tap_dance(state);
+}
+
+void cyclawin(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code16(C(S(KC_F6)));
+    } else {
+        tap_code16(C(KC_F6));
+    }
+    reset_tap_dance(state);
+}
+
+void SCRNSNP(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code16(A(KC_PSCR));
+    } else {
+        tap_code(KC_LGUI);
+        tap_code(KC_S);
+        tap_code(KC_N);
+        tap_code16(C(KC_N));
+    }
+    reset_tap_dance(state);
+}
+
+void mcccpy(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code16(G(KC_X));
+    } else {
+        tap_code16(G(KC_C));
+    }
+    reset_tap_dance(state);
+}
+
+void mcpstin(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code16(G(KC_I));
+    } else {
+        tap_code16(G(KC_V));
+    }
+    reset_tap_dance(state);
+}
+
+void enttab(qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count > 1) {
+        tap_code(KC_ENT);
+    } else {
+        tap_code(KC_TAB);
+    }
+    reset_tap_dance(state);
+}
+
+void rgb_toggle(qk_tap_dance_state_t *state, void *user_data) {
+#ifdef RGBLIGHT_ENABLE
+    if (state->count == 1) {
+        rgblight_step();
+    } else {
+        rgblight_increase_hue();
+    }
+#endif
+}
+
+// Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+    [TD_PSTI] = ACTION_TAP_DANCE_FN(pstinsrt),
+    [TD_PTSP] = ACTION_TAP_DANCE_FN(pstspecial),
+    [TD_FNDR] = ACTION_TAP_DANCE_FN(findreplace),
+    [TD_CCPY] = ACTION_TAP_DANCE_FN(ccopy),
+    [TD_DDEL] = ACTION_TAP_DANCE_FN(deldel),
+    [TD_ACCW] = ACTION_TAP_DANCE_FN(cyclawin),
+    [TD_CAPESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
+    [TD_DTEX] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_EXLM),
+    [TD_COMQUES] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_QUES),
+    [TD_MINPLS] = ACTION_TAP_DANCE_DOUBLE(KC_PMNS, KC_PPLS),
+    [TD_DIVMLT] = ACTION_TAP_DANCE_DOUBLE(KC_PSLS, KC_PAST),
+    [TD_DOTEQL] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_EQL),
+    [TD_SCNSP] = ACTION_TAP_DANCE_FN(SCRNSNP),
+    [TD_MCCCPY] = ACTION_TAP_DANCE_FN(mcccpy),
+    [TD_MCPSTIN] = ACTION_TAP_DANCE_FN(mcpstin),
+    [TD_ENTAB] = ACTION_TAP_DANCE_FN(enttab),
+    [TD_XSPC] = ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_X),
+    [TD_RGB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rgb_toggle, NULL)
+};
diff --git a/users/klackygears/tap_dances.h b/users/klackygears/tap_dances.h
new file mode 100644
index 0000000000..66c2c48c91
--- /dev/null
+++ b/users/klackygears/tap_dances.h
@@ -0,0 +1,37 @@
+#pragma once
+#include "klackygears.h"
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+    // TD_MCROTOG,
+    // TD_MCROTG2,
+    TD_BTK,
+    TD_TDE,
+    TD_LPRN,
+    TD_RPRN,
+    TD_MIN,
+    TD_USC,
+    TD_CMWN,
+    TD_ATSH,
+    TD_PSTI,
+    TD_PTSP,
+    TD_FNDR,
+    TD_CCPY,
+    TD_DDEL,
+    TD_ACCW,
+    TD_CAPESC,
+    TD_DTEX,
+    TD_COMQUES,
+    TD_MINPLS,
+    TD_DIVMLT,
+    TD_DOTEQL,
+    TD_LSHSYM,
+    TD_RSHSYM,
+    TD_SCNSP,
+    TD_MCCCPY,
+    TD_MCPSTIN,
+    TD_ENTAB,
+    TD_XSPC,
+    TD_RGB,
+};
+#endif
diff --git a/users/klackygears/wrappers.h b/users/klackygears/wrappers.h
new file mode 100644
index 0000000000..88cbae1849
--- /dev/null
+++ b/users/klackygears/wrappers.h
@@ -0,0 +1,220 @@
+#pragma once
+#include "klackygears.h"
+/*
+Most of this is copied from drashna. I added and changed a few things but, it's all based off of his user folder.
+*/
+#if (!defined(LAYOUT) && defined(KEYMAP))
+#define LAYOUT KEYMAP
+#endif
+
+//Added other layout options
+#define LAYOUT_ergodox_wrapper(...)          LAYOUT_ergodox(__VA_ARGS__)
+#define LAYOUT_ergodox_pretty_wrapper(...)   LAYOUT_ergodox_pretty(__VA_ARGS__)
+#define KEYMAP_wrapper(...)                  LAYOUT(__VA_ARGS__)
+#define LAYOUT_wrapper(...)                  LAYOUT(__VA_ARGS__)
+#define LAYOUT_ortho_4x12_wrapper(...)       LAYOUT_ortho_4x12(__VA_ARGS__)
+#define LAYOUT_ortho_5x10_wrapper(...)       LAYOUT_ortho_5x10(__VA_ARGS__)
+#define LAYOUT_ortho_5x5_wrapper(...)        LAYOUT_ortho_5x5(__VA_ARGS__)
+
+
+/*
+NOTE: If you do a search/replace
+  then you need to add/remove underscores to keep the
+  lengths consistent.
+*/
+//keymaps for tap dance and without
+#ifdef TAP_DANCE_ENABLE
+  #define _________________QWERTY_L1_________________        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
+  #define _________________QWERTY_L2_________________        KC_A,    KC_S,    KC_D,    KC_F,    KC_G
+  #define _________________QWERTY_L3_________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+  #define _________________QWERTY_R1_________________        KC_Y,    KC_U,    KC_I,           KC_O,        KC_P
+  #define _________________QWERTY_R2_________________        KC_H,    KC_J,    KC_K,           KC_L,        KC_SCLN
+  #define _________________QWERTY_R3_________________        KC_N,    KC_M,    TD(TD_COMQUES), TD(TD_DTEX), LT(_MDIA,KC_SLASH)
+
+
+  #define _________________COLEMAK_L1________________        KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
+  #define _________________COLEMAK_L2________________        KC_A,    KC_R,    KC_S,    KC_T,    KC_D
+  #define _________________COLEMAK_L3________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+  #define _________________COLEMAK_R1________________        KC_J,    KC_L,    KC_U,           KC_Y,        KC_SCLN
+  #define _________________COLEMAK_R2________________        KC_H,    KC_N,    KC_E,           KC_I,        KC_O
+  #define _________________COLEMAK_R3________________        KC_K,    KC_M,    TD(TD_COMQUES), TD(TD_DTEX), KC_SLASH
+/*
+  #define ______________COLEMAK_MOD_DH_L1____________        KC_Q,    KC_W,    KC_F,    KC_P,    KC_B
+  #define ______________COLEMAK_MOD_DH_L2____________        KC_A,    KC_R,    KC_S,    KC_T,    KC_G
+  #define ______________COLEMAK_MOD_DH_L3____________        KC_Z,    KC_X,    KC_C,    KC_D,    KC_V
+
+  #define ______________COLEMAK_MOD_DH_R1____________        KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN
+  #define ______________COLEMAK_MOD_DH_R2____________        KC_M,    KC_N,    KC_E,    KC_I,    KC_O
+  #define ______________COLEMAK_MOD_DH_R3____________        KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLASH
+*/
+
+  #define _______________DVORAK_L1___________________        KC_QUOT,              TD(TD_COMQUES),    TD(TD_DTEX),        KC_P, KC_Y
+  #define _______________DVORAK_L2___________________        KC_A,                 KC_O,              KC_E,               KC_U, KC_I
+  #define _______________MACDVK_L3___________________        MT(MOD_LCTL,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LGUI, KC_J), KC_K, KC_X
+  #define _______________WINDVK_L3___________________        MT(MOD_LGUI,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LCTL, KC_J), KC_K, KC_X
+
+  #define _______________DVORAK_R1___________________        KC_F,       KC_G,       KC_C,              KC_R,              KC_L
+  #define _______________DVORAK_R2___________________        KC_D,       KC_H,       KC_T,              KC_N,              KC_S
+  #define _______________MACDVK_R3___________________        KC_B,       KC_M,       MT(MOD_LGUI,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z)
+  #define _______________WINDVK_R3___________________        KC_B,       KC_M,       MT(MOD_LCTL,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z)
+
+  #define __________c39__MACDVK_L3___________________        MT(MOD_LCTL,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LGUI, KC_J), LT(_SYMB,KC_K), TD(TD_XSPC)
+  #define __________c39__WINDVK_L3___________________        MT(MOD_LGUI,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LCTL, KC_J), LT(_SYMB,KC_K), TD(TD_XSPC)
+  #define __________c39__MACDVK_R3___________________        LT(_MNMB,KC_B),       LT(_SYMB,KC_M),    MT(MOD_LGUI,KC_W),  MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z)
+  #define __________c39__WINDVK_R3___________________        LT(_NUMB,KC_B),       LT(_SYMB,KC_M),    MT(MOD_LCTL,KC_W),  MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z)
+#else
+
+  #define _________________QWERTY_L1_________________        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
+  #define _________________QWERTY_L2_________________        KC_A,    KC_S,    KC_D,    KC_F,    KC_G
+  #define _________________QWERTY_L3_________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+  #define _________________QWERTY_R1_________________        KC_Y,    KC_U,    KC_I,           KC_O,        KC_P
+  #define _________________QWERTY_R2_________________        KC_H,    KC_J,    KC_K,           KC_L,        KC_SCLN
+  #define _________________QWERTY_R3_________________        KC_N,    KC_M,    KC_COMM, KC_DOT, LT(_MDIA,KC_SLASH)
+
+
+  #define _________________COLEMAK_L1________________        KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
+  #define _________________COLEMAK_L2________________        KC_A,    KC_R,    KC_S,    KC_T,    KC_D
+  #define _________________COLEMAK_L3________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+  #define _________________COLEMAK_R1________________        KC_J,    KC_L,    KC_U,           KC_Y,        KC_SCLN
+  #define _________________COLEMAK_R2________________        KC_H,    KC_N,    KC_E,           KC_I,        KC_O
+  #define _________________COLEMAK_R3________________        KC_K,    KC_M,    KC_COMM, KC_DOT, KC_SLASH
+
+  #define _______________DVORAK_L1___________________        KC_QUOT,              KC_COMM,    KC_DOT,        KC_P, KC_Y
+  #define _______________DVORAK_L2___________________        KC_A,                 KC_O,              KC_E,               KC_U, KC_I
+  #define _______________MACDVK_L3___________________        MT(MOD_LCTL,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LGUI, KC_J), KC_K, KC_X
+  #define _______________WINDVK_L3___________________        MT(MOD_LGUI,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LCTL, KC_J), KC_K, KC_X
+
+  #define _______________DVORAK_R1___________________        KC_F,       KC_G,       KC_C,              KC_R,              KC_L
+  #define _______________DVORAK_R2___________________        KC_D,       KC_H,       KC_T,              KC_N,              KC_S
+  #define _______________MACDVK_R3___________________        KC_B,       KC_M,       MT(MOD_LGUI,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z)
+  #define _______________WINDVK_R3___________________        KC_B,       KC_M,       MT(MOD_LCTL,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z)
+#endif
+
+/*
+#define ________________DVORAK_AU_L1_______________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define ________________DVORAK_AU_L2_______________        KC_O,    KC_A,    KC_E,   KC_I,     KC_U
+#define ________________DVORAK_AU_L3_______________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
+
+#define ________________DVORAK_AU_R1_______________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define ________________DVORAK_AU_R2_______________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
+#define ________________DVORAK_AU_R3_______________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
+
+
+#define _________________WORKMAN_L1________________        KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
+#define _________________WORKMAN_L2________________        KC_A,    KC_S,    KC_H,   KC_T,     KC_G
+#define _________________WORKMAN_L3________________        KC_Z,    KC_X,    KC_M,   KC_C,     KC_V
+
+#define _________________WORKMAN_R1________________        KC_J,    KC_F,    KC_U,           KC_P,        KC_SCLN
+#define _________________WORKMAN_R2________________        KC_Y,    KC_N,    KC_E,           KC_O,        KC_I
+#define _________________WORKMAN_R3________________        KC_K,    KC_L,    TD(TD_COMQUES), TD(TD_DTEX), KC_SLASH
+
+
+#define _________________NORMAN_L1_________________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
+#define _________________NORMAN_L2_________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
+#define _________________NORMAN_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
+
+#define _________________NORMAN_R1_________________       KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN
+#define _________________NORMAN_R2_________________       KC_Y,    KC_N,    KC_I,    KC_O,    KC_U
+#define _________________NORMAN_R3_________________       KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
+*/
+
+// thumb key layouts
+#define ________WIN_THUMB_CLUSTER_________                LT(_SYMB,KC_SPC), LT(_NUMB,KC_BSPC), LT(_NUMB,KC_TAB), LT(_SYMB,KC_ENT)
+#define ________MAC_THUMB_CLUSTER_________                LT(_SYMB,KC_SPC), LT(_MNMB,KC_BSPC), LT(_MNMB,KC_TAB), LT(_SYMB,KC_ENT)
+
+#define __________________WIN_THUMB_CLUSTER_V2______________ LT(_FUNC,KC_ENT), LT(_NUMB,KC_BSPC), MT(MOD_LSFT,KC_SPC), LT(_NUMB,KC_TAB), LT(_SYMB,KC_ENT), KC_RSFT
+#define __________________MAC_THUMB_CLUSTER_V2______________ LT(_FUNC,KC_ENT), LT(_MNMB,KC_BSPC), MT(MOD_LSFT,KC_SPC), LT(_MNMB,KC_TAB), LT(_SYMB,KC_ENT), KC_RSFT
+#define ________MAC_THUMB_L______                            LT(_FUNC,KC_ENT), LT(_MNMB,KC_BSPC), MT(MOD_LSFT,KC_SPC)
+#define ________MAC_THUMB_R______                            LT(_MNMB,KC_TAB), LT(_SYMB,KC_ENT),    LT(_MDIA,KC_ENT)
+#define ________WIN_THUMB_L______                            LT(_FUNC,KC_ENT), LT(_NUMB,KC_BSPC), MT(MOD_LSFT,KC_SPC)
+#define ________WIN_THUMB_R______                            LT(_NUMB,KC_TAB), LT(_SYMB,KC_ENT),    LT(_MDIA,KC_ENT)
+
+// Mission Control Commands
+#define ________MAC_MISSION_CTRL__________                LCTL(KC_LEFT),    LCTL(KC_UP),       LCTL(KC_DOWN),    LCTL(KC_RGHT)
+
+//Number Row
+#define _________________NUMBER_L__________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5
+#define _________________NUMBER_R__________________       KC_6,    KC_7,    KC_8,    KC_9,    KC_0
+
+//keymaps for tap dance and without
+#ifdef TAP_DANCE_ENABLE
+//Arrow keys and copy-paste shortcuts for MAC OS
+  #define _________________MACNAV_L1_________________       KC_PGUP,    KC_PGDN,    KC_HOME,       KC_END,         _______
+  #define _________________MACNAV_L2_________________       KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,       _______
+  #define _________________MACNAV_L3_________________       _______,    LGUI(KC_A), TD(TD_MCCCPY), TD(TD_MCPSTIN), KC_DEL
+
+//Arrow keys and copy-paste shortcuts for Windows and Microsoft Access & Excel
+  #define _________________WINNAV_L1_________________       KC_PGUP,     KC_PGDN,    KC_HOME,     KC_END,      TD(TD_FNDR)
+  #define _________________WINNAV_L2_________________       KC_LEFT,     KC_UP,      KC_DOWN,     KC_RIGHT,    TD(TD_PTSP)
+  #define _________________WINNAV_L3_________________       TD(TD_ACCW), LCTL(KC_A), TD(TD_CCPY), TD(TD_PSTI), TD(TD_DDEL)
+
+//Numpad layout with different mod-tap keys for MAC OS and Windows
+  #define _________________NUMB_R1___________________       TD(TD_MINPLS), KC_7, KC_8,              KC_9,              KC_COLN
+  #define _________________NUMB_R2___________________       TD(TD_DIVMLT), KC_4, KC_5,              KC_6,              C_S_T(KC_COLN)
+  #define _________________NUMB_R3_MAC_______________       TD(TD_DOTEQL), KC_1, MT(MOD_LGUI,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LCTL,KC_0)
+  #define _________________NUMB_R3_WIN_______________       TD(TD_DOTEQL), KC_1, MT(MOD_LCTL,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LGUI,KC_0)
+  #define _________________NUMB_R4___________________       KC_LSFT,       KC_0, KC_0,              _______,           _______
+#else
+//Arrow keys and copy-paste shortcuts for MAC OS
+  #define _________________MACNAV_L1_________________       KC_PGUP,    KC_PGDN,    KC_HOME,       KC_END,         _______
+  #define _________________MACNAV_L2_________________       KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,       _______
+  #define _________________MACNAV_L3_________________       _______,    LGUI(KC_A), _______,       _______, KC_DEL
+
+//Arrow keys and copy-paste shortcuts for Windows and Microsoft Access & Excel
+  #define _________________WINNAV_L1_________________       KC_PGUP,     KC_PGDN,    KC_HOME,     KC_END,      _______
+  #define _________________WINNAV_L2_________________       KC_LEFT,     KC_UP,      KC_DOWN,     KC_RIGHT,    _______
+  #define _________________WINNAV_L3_________________       _______,     _______,    _______,     _______,     _______
+  #define _________________NUMB_R1___________________       KC_PMNS,       KC_7, KC_8,              KC_9,              KC_PPLS
+  #define _________________NUMB_R2___________________       KC_PSLS,       KC_4, KC_5,              KC_6,              KC_PAST
+  #define _________________NUMB_R3_MAC_______________       KC_DOT,        KC_1, MT(MOD_LGUI,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LCTL,KC_0)
+  #define _________________NUMB_R3_WIN_______________       KC_DOT,        KC_1, MT(MOD_LCTL,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LGUI,KC_0)
+  #define _________________NUMB_R4___________________       KC_LSFT,       KC_0, KC_0,              _______,           _______
+#endif
+
+//Function Row
+/*
+#define _________________FUNC_LEFT_________________       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
+#define _________________FUNC_RIGHT________________       KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
+*/
+
+//Function keys as macropad
+#define _____________FUNC_1_______________                KC_F9,      KC_F10,     KC_F11,     KC_F12
+#define _____________FUNC_2_______________                KC_F5,      KC_F6,      KC_F7,      KC_F8
+#define _____________FUNC_3_______________                KC_F1,      KC_F2,      KC_F3,      KC_F4
+
+//RGB keys
+#if defined RGBLIGHT_ENABLE || defined RGB_MATRIX_ENABLE
+#define _________________RGB_1_____________________       RGBRST,     RGB_HUI,    RGB_SAI,    RGB_VAI,    RGB_SPI
+#define _________________RGB_2_____________________       RGB_MOD,    RGB_HUD,    RGB_SAD,    RGB_VAD,    RGB_SPD
+#else
+#define _________________RGB_1_____________________       _______,    _______,    _______,    _______,    _______
+#define _________________RGB_2_____________________       _______,    _______,    _______,    _______,    _______
+#endif
+
+//Audio keys
+#define _________________MEDIA_____________________       KC_MPLY,    KC_MUTE,     KC_VOLD,      KC_VOLU,     _______
+#define _________________MEDIA_V2__________________       KC_EJCT,    KC_MRWD,     KC_MPLY,      KC_MFFD,     _______
+
+//Base layer keys
+#define _________________LYOUT_____________________       _______,    KC_QWERTY,   KC_MACBASE,   KC_WINBASE,  _______
+
+//Punctuation keys
+#define _________________PUNC_L1___________________       KC_BSLS,    KC_AT,      KC_HASH,    KC_DLR,     KC_PERC
+#define _________________PUNC_L1_ALT_______________       KC_DQT,     KC_AT,      KC_HASH,    KC_DLR,     KC_PERC
+#define _________________PUNC_L2___________________       KC_PLUS,    KC_MINS,    KC_ASTR,    KC_SLSH,    KC_EQL
+#define _________________PUNC_L3___________________       KC_LBRC,    KC_RBRC,    KC_LPRN,    KC_RPRN,    KC_AMPR
+#define _________________PUNC_L3_ALT_______________       _______,    _______,    KC_TILD,    KC_CIRC,    KC_GRV
+#define _________________PUNC_R1___________________       _______, KC_DQT,  KC_EQL,  _______, _______
+#define _________________PUNC_R2___________________       _______, KC_ASTR, KC_SLSH, KC_PLUS, KC_MINS
+#define _________________PUNC_R3___________________       _______, KC_EQL,  KC_BSLS, _______, _______
+
+//Make Shortcuts and window switching
+#define _____________FUNC_L1_______________________       MAKEKF,   MAKEK,   _______, KC_ESC,  LCTL(LALT(KC_DEL))
+#define _____________FUNC_L3_______________________       KC_LGUI, KC_RALT, KC_LCTL, KC_TAB,  _______
+
+
+#define _________________KC_BLANK__________________       _______, _______, _______, _______, _______