From 6e27f6fbde47804035d508eb84690ed7ee9acee7 Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@gmail.com>
Date: Thu, 10 Nov 2016 18:19:13 -0500
Subject: [PATCH 1/8]   Changes to be committed: 	new file:  
 keyboards/lets_splitv2/Makefile 	new file:  
 keyboards/lets_splitv2/config.h 	new file:  
 keyboards/lets_splitv2/i2c.c 	new file:   keyboards/lets_splitv2/i2c.h 
 new file:   keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png 
 new file:   keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png 
 new file:   keyboards/lets_splitv2/keymaps/default/keymap.c 	new file:  
 keyboards/lets_splitv2/lets_split.c 	new file:  
 keyboards/lets_splitv2/lets_split.h 	new file:  
 keyboards/lets_splitv2/matrix.c 	new file:  
 keyboards/lets_splitv2/pro_micro.h 	new file:  
 keyboards/lets_splitv2/readme.md 	new file:  
 keyboards/lets_splitv2/serial.c 	new file:  
 keyboards/lets_splitv2/serial.h 	new file:  
 keyboards/lets_splitv2/split_util.c 	new file:  
 keyboards/lets_splitv2/split_util.h 	new file:   keyboards/maxipad/Makefile
 	new file:   keyboards/maxipad/config.h 	new file:  
 keyboards/maxipad/keymaps/default/Makefile 	new file:  
 keyboards/maxipad/keymaps/default/config.h 	new file:  
 keyboards/maxipad/keymaps/default/keymap.c 	new file:  
 keyboards/maxipad/keymaps/default/readme.md 	new file:  
 keyboards/maxipad/maxipad.c 	new file:   keyboards/maxipad/maxipad.h 
 new file:   keyboards/maxipad/readme.md

---
 keyboards/lets_split/Makefile                 |   2 +-
 keyboards/lets_split/config.h                 |   6 +-
 keyboards/lets_split/keymaps/default/keymap.c |  65 +---
 keyboards/lets_split/lets_split.h             |   8 +-
 keyboards/lets_splitv2/Makefile               |  78 ++++
 keyboards/lets_splitv2/config.h               |  98 +++++
 keyboards/lets_splitv2/i2c.c                  | 159 ++++++++
 keyboards/lets_splitv2/i2c.h                  |  31 ++
 .../imgs/split-keyboard-i2c-schematic.png     | Bin 0 -> 26565 bytes
 .../imgs/split-keyboard-serial-schematic.png  | Bin 0 -> 19487 bytes
 .../lets_splitv2/keymaps/default/keymap.c     | 159 ++++++++
 keyboards/lets_splitv2/lets_split.c           |  30 ++
 keyboards/lets_splitv2/lets_split.h           |  25 ++
 keyboards/lets_splitv2/matrix.c               | 311 +++++++++++++++
 keyboards/lets_splitv2/pro_micro.h            | 362 ++++++++++++++++++
 keyboards/lets_splitv2/readme.md              | 102 +++++
 keyboards/lets_splitv2/serial.c               | 225 +++++++++++
 keyboards/lets_splitv2/serial.h               |  26 ++
 keyboards/lets_splitv2/split_util.c           |  76 ++++
 keyboards/lets_splitv2/split_util.h           |  22 ++
 keyboards/maxipad/Makefile                    |  75 ++++
 keyboards/maxipad/config.h                    | 162 ++++++++
 keyboards/maxipad/keymaps/default/Makefile    |  21 +
 keyboards/maxipad/keymaps/default/config.h    |   8 +
 keyboards/maxipad/keymaps/default/keymap.c    |  54 +++
 keyboards/maxipad/keymaps/default/readme.md   |   1 +
 keyboards/maxipad/maxipad.c                   |  28 ++
 keyboards/maxipad/maxipad.h                   |  25 ++
 keyboards/maxipad/readme.md                   |  28 ++
 29 files changed, 2119 insertions(+), 68 deletions(-)
 create mode 100644 keyboards/lets_splitv2/Makefile
 create mode 100644 keyboards/lets_splitv2/config.h
 create mode 100644 keyboards/lets_splitv2/i2c.c
 create mode 100644 keyboards/lets_splitv2/i2c.h
 create mode 100644 keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png
 create mode 100644 keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png
 create mode 100644 keyboards/lets_splitv2/keymaps/default/keymap.c
 create mode 100644 keyboards/lets_splitv2/lets_split.c
 create mode 100644 keyboards/lets_splitv2/lets_split.h
 create mode 100644 keyboards/lets_splitv2/matrix.c
 create mode 100644 keyboards/lets_splitv2/pro_micro.h
 create mode 100644 keyboards/lets_splitv2/readme.md
 create mode 100644 keyboards/lets_splitv2/serial.c
 create mode 100644 keyboards/lets_splitv2/serial.h
 create mode 100644 keyboards/lets_splitv2/split_util.c
 create mode 100644 keyboards/lets_splitv2/split_util.h
 create mode 100644 keyboards/maxipad/Makefile
 create mode 100644 keyboards/maxipad/config.h
 create mode 100644 keyboards/maxipad/keymaps/default/Makefile
 create mode 100644 keyboards/maxipad/keymaps/default/config.h
 create mode 100644 keyboards/maxipad/keymaps/default/keymap.c
 create mode 100644 keyboards/maxipad/keymaps/default/readme.md
 create mode 100644 keyboards/maxipad/maxipad.c
 create mode 100644 keyboards/maxipad/maxipad.h
 create mode 100644 keyboards/maxipad/readme.md

diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile
index b9f07636b..982cfc591 100644
--- a/keyboards/lets_split/Makefile
+++ b/keyboards/lets_split/Makefile
@@ -67,7 +67,7 @@ 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.
-
+USE_I2C ?= yes
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
 
diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index 6f90997ab..bf618704c 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -25,7 +25,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define PRODUCT_ID      0x3060
 #define DEVICE_VER      0x0001
 #define MANUFACTURER    Wootpatoot
-#define PRODUCT         Lets Split
+#define PRODUCT         Lets Split v2
 #define DESCRIPTION     A split keyboard for the cheap makers
 
 /* key matrix size */
@@ -34,8 +34,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_COLS 6
 
 // wiring of each half
-#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
-#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
 
 #define CATERINA_BOOTLOADER
 
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index 0d2d94b67..8c8466ebd 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -42,64 +42,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = KEYMAP( \
-  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_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 , \
-  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+  KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER),   KC_SPC,  KC_LSFT,  MO(_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 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_COLEMAK] = KEYMAP( \
-  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 , \
-  ADJUST,  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 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_DVORAK] = KEYMAP( \
-  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 , \
-  ADJUST,  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 |ISO ~ |ISO | |      |      |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
 [_LOWER] = KEYMAP( \
   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,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+  _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 ),
 
 /* Raise
@@ -117,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   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_NUHS, KC_NUBS, _______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+  _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 ),
 
 /* Adjust (Lower + Raise)
@@ -131,14 +84,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_ADJUST] =  KEYMAP( \
-  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
-  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
-)
-
-
 };
 
 #ifdef AUDIO_ENABLE
diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h
index fe7ae0767..04844ed63 100644
--- a/keyboards/lets_split/lets_split.h
+++ b/keyboards/lets_split/lets_split.h
@@ -6,10 +6,10 @@
 void promicro_bootloader_jmp(bool program);
 
 #define KEYMAP( \
-	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
-	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
-	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
-	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
+	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+	k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+	k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+	k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
 	) \
 	{ \
 		{ k00, k01, k02, k03, k04, k05 }, \
diff --git a/keyboards/lets_splitv2/Makefile b/keyboards/lets_splitv2/Makefile
new file mode 100644
index 000000000..982cfc591
--- /dev/null
+++ b/keyboards/lets_splitv2/Makefile
@@ -0,0 +1,78 @@
+SRC += matrix.c \
+	   i2c.c \
+	   split_util.c \
+	   serial.c
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+#   Teensy halfKay   512
+#   Teensy++ halfKay 1024
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+#   USBaspLoader     2048
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE ?= no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
+CONSOLE_ENABLE ?= no         # Console for debug(+400)
+COMMAND_ENABLE ?= yes        # Commands for debug and configuration
+NKRO_ENABLE ?= 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
+MIDI_ENABLE ?= no            # MIDI controls
+AUDIO_ENABLE ?= yes           # Audio output on port C6
+UNICODE_ENABLE ?= no         # Unicode
+BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+USE_I2C ?= yes
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
+
+CUSTOM_MATRIX = yes
+
+ifndef QUANTUM_DIR
+	include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/lets_splitv2/config.h b/keyboards/lets_splitv2/config.h
new file mode 100644
index 000000000..bf618704c
--- /dev/null
+++ b/keyboards/lets_splitv2/config.h
@@ -0,0 +1,98 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wootpatoot
+#define PRODUCT         Lets Split v2
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
+
+#define CATERINA_BOOTLOADER
+
+// #define USE_I2C
+
+// #define EE_HANDS
+
+#define I2C_MASTER_LEFT
+// #define I2C_MASTER_RIGHT
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* ws2812 RGB LED */
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * 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
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_splitv2/i2c.c b/keyboards/lets_splitv2/i2c.c
new file mode 100644
index 000000000..c72789403
--- /dev/null
+++ b/keyboards/lets_splitv2/i2c.c
@@ -0,0 +1,159 @@
+#include <util/twi.h>
+#include <avr/io.h>
+#include <stdlib.h>
+#include <avr/interrupt.h>
+#include <util/twi.h>
+#include <stdbool.h>
+#include "i2c.h"
+
+// Limits the amount of we wait for any one i2c transaction.
+// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
+// 9 bits, a single transaction will take around 90μs to complete.
+//
+// (F_CPU/SCL_CLOCK)  =>  # of μC cycles to transfer a bit
+// poll loop takes at least 8 clock cycles to execute
+#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
+
+#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
+
+volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
+
+static volatile uint8_t slave_buffer_pos;
+static volatile bool slave_has_register_set = false;
+
+// Wait for an i2c operation to finish
+inline static
+void i2c_delay(void) {
+  uint16_t lim = 0;
+  while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
+    lim++;
+
+  // easier way, but will wait slightly longer
+  // _delay_us(100);
+}
+
+// Setup twi to run at 100kHz
+void i2c_master_init(void) {
+  // no prescaler
+  TWSR = 0;
+  // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
+  // Check datasheets for more info.
+  TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
+}
+
+// Start a transaction with the given i2c slave address. The direction of the
+// transfer is set with I2C_READ and I2C_WRITE.
+// returns: 0 => success
+//          1 => error
+uint8_t i2c_master_start(uint8_t address) {
+  TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
+
+  i2c_delay();
+
+  // check that we started successfully
+  if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
+    return 1;
+
+  TWDR = address;
+  TWCR = (1<<TWINT) | (1<<TWEN);
+
+  i2c_delay();
+
+  if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
+    return 1; // slave did not acknowledge
+  else
+    return 0; // success
+}
+
+
+// Finish the i2c transaction.
+void i2c_master_stop(void) {
+  TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
+
+  uint16_t lim = 0;
+  while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
+    lim++;
+}
+
+// Write one byte to the i2c slave.
+// returns 0 => slave ACK
+//         1 => slave NACK
+uint8_t i2c_master_write(uint8_t data) {
+  TWDR = data;
+  TWCR = (1<<TWINT) | (1<<TWEN);
+
+  i2c_delay();
+
+  // check if the slave acknowledged us
+  return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
+}
+
+// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
+// if ack=0 the acknowledge bit is not set.
+// returns: byte read from i2c device
+uint8_t i2c_master_read(int ack) {
+  TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
+
+  i2c_delay();
+  return TWDR;
+}
+
+void i2c_reset_state(void) {
+  TWCR = 0;
+}
+
+void i2c_slave_init(uint8_t address) {
+  TWAR = address << 0; // slave i2c address
+  // TWEN  - twi enable
+  // TWEA  - enable address acknowledgement
+  // TWINT - twi interrupt flag
+  // TWIE  - enable the twi interrupt
+  TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
+}
+
+ISR(TWI_vect);
+
+ISR(TWI_vect) {
+  uint8_t ack = 1;
+  switch(TW_STATUS) {
+    case TW_SR_SLA_ACK:
+      // this device has been addressed as a slave receiver
+      slave_has_register_set = false;
+      break;
+
+    case TW_SR_DATA_ACK:
+      // this device has received data as a slave receiver
+      // The first byte that we receive in this transaction sets the location
+      // of the read/write location of the slaves memory that it exposes over
+      // i2c.  After that, bytes will be written at slave_buffer_pos, incrementing
+      // slave_buffer_pos after each write.
+      if(!slave_has_register_set) {
+        slave_buffer_pos = TWDR;
+        // don't acknowledge the master if this memory loctaion is out of bounds
+        if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
+          ack = 0;
+          slave_buffer_pos = 0;
+        }
+        slave_has_register_set = true;
+      } else {
+        i2c_slave_buffer[slave_buffer_pos] = TWDR;
+        BUFFER_POS_INC();
+      }
+      break;
+
+    case TW_ST_SLA_ACK:
+    case TW_ST_DATA_ACK:
+      // master has addressed this device as a slave transmitter and is
+      // requesting data.
+      TWDR = i2c_slave_buffer[slave_buffer_pos];
+      BUFFER_POS_INC();
+      break;
+
+    case TW_BUS_ERROR: // something went wrong, reset twi state
+      TWCR = 0;
+    default:
+      break;
+  }
+  // Reset everything, so we are ready for the next TWI interrupt
+  TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
+}
diff --git a/keyboards/lets_splitv2/i2c.h b/keyboards/lets_splitv2/i2c.h
new file mode 100644
index 000000000..08ce4b009
--- /dev/null
+++ b/keyboards/lets_splitv2/i2c.h
@@ -0,0 +1,31 @@
+#ifndef I2C_H
+#define I2C_H
+
+#include <stdint.h>
+
+#ifndef F_CPU
+#define F_CPU 16000000UL
+#endif
+
+#define I2C_READ 1
+#define I2C_WRITE 0
+
+#define I2C_ACK 1
+#define I2C_NACK 0
+
+#define SLAVE_BUFFER_SIZE 0x10
+
+// i2c SCL clock frequency
+#define SCL_CLOCK  100000L
+
+extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
+
+void i2c_master_init(void);
+uint8_t i2c_master_start(uint8_t address);
+void i2c_master_stop(void);
+uint8_t i2c_master_write(uint8_t data);
+uint8_t i2c_master_read(int);
+void i2c_reset_state(void);
+void i2c_slave_init(uint8_t address);
+
+#endif
diff --git a/keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png b/keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png
new file mode 100644
index 0000000000000000000000000000000000000000..8882947187b15ae4c0cf70c90725d67fb2386d87
GIT binary patch
literal 26565
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
YZ*J%5%7ZOoIGcw!{-X~Y-v8v-@5~+X@&Et;

literal 0
HcmV?d00001

diff --git a/keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png b/keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png
new file mode 100644
index 0000000000000000000000000000000000000000..7621d38ed94c1716410cdb2b459aa35ad6797160
GIT binary patch
literal 19487
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
Yy9>onw)Hgg6Sq#eBqNc0;l{oH1LK2XbN~PV

literal 0
HcmV?d00001

diff --git a/keyboards/lets_splitv2/keymaps/default/keymap.c b/keyboards/lets_splitv2/keymaps/default/keymap.c
new file mode 100644
index 000000000..8c8466ebd
--- /dev/null
+++ b/keyboards/lets_splitv2/keymaps/default/keymap.c
@@ -0,0 +1,159 @@
+#include "lets_split.h"
+#include "action_layer.h"
+#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 _ADJUST 16
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  ADJUST,
+};
+
+// 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 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = KEYMAP( \
+  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_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER),   KC_SPC,  KC_LSFT,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+[_LOWER] = KEYMAP( \
+  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,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
+  _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, 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 |ISO # |ISO / |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = KEYMAP( \
+  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_NUHS, KC_NUBS, _______, _______, _______, \
+  _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+#endif
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+        #endif
+        persistant_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+        #endif
+        persistant_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+        #endif
+        persistant_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
\ No newline at end of file
diff --git a/keyboards/lets_splitv2/lets_split.c b/keyboards/lets_splitv2/lets_split.c
new file mode 100644
index 000000000..574c116a7
--- /dev/null
+++ b/keyboards/lets_splitv2/lets_split.c
@@ -0,0 +1,30 @@
+#include "lets_split.h"
+
+#ifdef AUDIO_ENABLE
+    float tone_startup[][2] = SONG(STARTUP_SOUND);
+    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void matrix_init_kb(void) {
+
+    #ifdef AUDIO_ENABLE
+        _delay_ms(20); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+
+    // // green led on
+    // DDRD |= (1<<5);
+    // PORTD &= ~(1<<5);
+
+    // // orange led on
+    // DDRB |= (1<<0);
+    // PORTB &= ~(1<<0);
+
+	matrix_init_user();
+};
+
+void shutdown_user(void) {
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
diff --git a/keyboards/lets_splitv2/lets_split.h b/keyboards/lets_splitv2/lets_split.h
new file mode 100644
index 000000000..04844ed63
--- /dev/null
+++ b/keyboards/lets_splitv2/lets_split.h
@@ -0,0 +1,25 @@
+#ifndef LETS_SPLIT_H
+#define LETS_SPLIT_H
+
+#include "quantum.h"
+
+void promicro_bootloader_jmp(bool program);
+
+#define KEYMAP( \
+	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+	k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+	k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+	k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
+	) \
+	{ \
+		{ k00, k01, k02, k03, k04, k05 }, \
+		{ k10, k11, k12, k13, k14, k15 }, \
+		{ k20, k21, k22, k23, k24, k25 }, \
+		{ k30, k31, k32, k33, k34, k35 }, \
+		{ k40, k41, k42, k43, k44, k45 }, \
+		{ k50, k51, k52, k53, k54, k55 }, \
+		{ k60, k61, k62, k63, k64, k65 }, \
+		{ k70, k71, k72, k73, k74, k75 } \
+	}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_splitv2/matrix.c b/keyboards/lets_splitv2/matrix.c
new file mode 100644
index 000000000..1d768c59b
--- /dev/null
+++ b/keyboards/lets_splitv2/matrix.c
@@ -0,0 +1,311 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+/*
+ * scan matrix
+ */
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <avr/wdt.h>
+#include <avr/interrupt.h>
+#include <util/delay.h>
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "i2c.h"
+#include "serial.h"
+#include "split_util.h"
+#include "pro_micro.h"
+#include "config.h"
+
+#ifndef DEBOUNCE
+#   define DEBOUNCE	5
+#endif
+
+#define ERROR_DISCONNECT_COUNT 5
+
+static uint8_t debouncing = DEBOUNCE;
+static const int ROWS_PER_HAND = MATRIX_ROWS/2;
+static uint8_t error_count = 0;
+
+static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+static matrix_row_t read_cols(void);
+static void init_cols(void);
+static void unselect_rows(void);
+static void select_row(uint8_t row);
+
+__attribute__ ((weak))
+void matrix_init_quantum(void) {
+    matrix_init_kb();
+}
+
+__attribute__ ((weak))
+void matrix_scan_quantum(void) {
+    matrix_scan_kb();
+}
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+    matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+    matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+inline
+uint8_t matrix_rows(void)
+{
+    return MATRIX_ROWS;
+}
+
+inline
+uint8_t matrix_cols(void)
+{
+    return MATRIX_COLS;
+}
+
+void matrix_init(void)
+{
+    debug_enable = true;
+    debug_matrix = true;
+    debug_mouse = true;
+    // initialize row and col
+    unselect_rows();
+    init_cols();
+
+    TX_RX_LED_INIT;
+
+    // initialize matrix state: all keys off
+    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+        matrix[i] = 0;
+        matrix_debouncing[i] = 0;
+    }
+
+    matrix_init_quantum();
+}
+
+uint8_t _matrix_scan(void)
+{
+    // Right hand is stored after the left in the matirx so, we need to offset it
+    int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
+
+    for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
+        select_row(i);
+        _delay_us(30);  // without this wait read unstable value.
+        matrix_row_t cols = read_cols();
+        if (matrix_debouncing[i+offset] != cols) {
+            matrix_debouncing[i+offset] = cols;
+            debouncing = DEBOUNCE;
+        }
+        unselect_rows();
+    }
+
+    if (debouncing) {
+        if (--debouncing) {
+            _delay_ms(1);
+        } else {
+            for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
+                matrix[i+offset] = matrix_debouncing[i+offset];
+            }
+        }
+    }
+
+    return 1;
+}
+
+// Get rows from other half over i2c
+int i2c_transaction(void) {
+    int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
+
+    int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
+    if (err) goto i2c_error;
+
+    // start of matrix stored at 0x00
+    err = i2c_master_write(0x00);
+    if (err) goto i2c_error;
+
+    // Start read
+    err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
+    if (err) goto i2c_error;
+
+    if (!err) {
+        int i;
+        for (i = 0; i < ROWS_PER_HAND-1; ++i) {
+            matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
+        }
+        matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
+        i2c_master_stop();
+    } else {
+i2c_error: // the cable is disconnceted, or something else went wrong
+        i2c_reset_state();
+        return err;
+    }
+
+    return 0;
+}
+
+#ifndef USE_I2C
+int serial_transaction(void) {
+    int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
+
+    if (serial_update_buffers()) {
+        return 1;
+    }
+
+    for (int i = 0; i < ROWS_PER_HAND; ++i) {
+        matrix[slaveOffset+i] = serial_slave_buffer[i];
+    }
+    return 0;
+}
+#endif
+
+uint8_t matrix_scan(void)
+{
+    int ret = _matrix_scan();
+
+
+
+#ifdef USE_I2C
+    if( i2c_transaction() ) {
+#else
+    if( serial_transaction() ) {
+#endif
+        // turn on the indicator led when halves are disconnected
+        TXLED1;
+
+        error_count++;
+
+        if (error_count > ERROR_DISCONNECT_COUNT) {
+            // reset other half if disconnected
+            int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
+            for (int i = 0; i < ROWS_PER_HAND; ++i) {
+                matrix[slaveOffset+i] = 0;
+            }
+        }
+    } else {
+        // turn off the indicator led on no error
+        TXLED0;
+        error_count = 0;
+    }
+
+    matrix_scan_quantum();
+
+    return ret;
+}
+
+void matrix_slave_scan(void) {
+    _matrix_scan();
+
+    int offset = (isLeftHand) ? 0 : (MATRIX_ROWS / 2);
+
+#ifdef USE_I2C
+    for (int i = 0; i < ROWS_PER_HAND; ++i) {
+        /* i2c_slave_buffer[i] = matrix[offset+i]; */
+        i2c_slave_buffer[i] = matrix[offset+i];
+    }
+#else
+    for (int i = 0; i < ROWS_PER_HAND; ++i) {
+        serial_slave_buffer[i] = matrix[offset+i];
+    }
+#endif
+}
+
+bool matrix_is_modified(void)
+{
+    if (debouncing) return false;
+    return true;
+}
+
+inline
+bool matrix_is_on(uint8_t row, uint8_t col)
+{
+    return (matrix[row] & ((matrix_row_t)1<<col));
+}
+
+inline
+matrix_row_t matrix_get_row(uint8_t row)
+{
+    return matrix[row];
+}
+
+void matrix_print(void)
+{
+    print("\nr/c 0123456789ABCDEF\n");
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+        phex(row); print(": ");
+        pbin_reverse16(matrix_get_row(row));
+        print("\n");
+    }
+}
+
+uint8_t matrix_key_count(void)
+{
+    uint8_t count = 0;
+    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+        count += bitpop16(matrix[i]);
+    }
+    return count;
+}
+
+static void  init_cols(void)
+{
+    for(int x = 0; x < MATRIX_COLS; x++) {
+        _SFR_IO8((col_pins[x] >> 4) + 1) &=  ~_BV(col_pins[x] & 0xF);
+        _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
+    }
+}
+
+static matrix_row_t read_cols(void)
+{
+    matrix_row_t result = 0;
+    for(int x = 0; x < MATRIX_COLS; x++) {     
+        result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
+    }
+    return result;
+}
+
+static void unselect_rows(void)
+{
+    for(int x = 0; x < ROWS_PER_HAND; x++) { 
+        _SFR_IO8((row_pins[x] >> 4) + 1) &=  ~_BV(row_pins[x] & 0xF);
+        _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
+    }
+}
+
+static void select_row(uint8_t row)
+{
+    _SFR_IO8((row_pins[row] >> 4) + 1) |=  _BV(row_pins[row] & 0xF);
+    _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
+}
diff --git a/keyboards/lets_splitv2/pro_micro.h b/keyboards/lets_splitv2/pro_micro.h
new file mode 100644
index 000000000..09e219b7b
--- /dev/null
+++ b/keyboards/lets_splitv2/pro_micro.h
@@ -0,0 +1,362 @@
+/*
+  pins_arduino.h - Pin definition functions for Arduino
+  Part of Arduino - http://www.arduino.cc/
+
+  Copyright (c) 2007 David A. Mellis
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library 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
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General
+  Public License along with this library; if not, write to the
+  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+  Boston, MA  02111-1307  USA
+
+  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
+*/
+
+#ifndef Pins_Arduino_h
+#define Pins_Arduino_h
+
+#include <avr/pgmspace.h>
+
+// Workaround for wrong definitions in "iom32u4.h".
+// This should be fixed in the AVR toolchain.
+#undef UHCON
+#undef UHINT
+#undef UHIEN
+#undef UHADDR
+#undef UHFNUM
+#undef UHFNUML
+#undef UHFNUMH
+#undef UHFLEN
+#undef UPINRQX
+#undef UPINTX
+#undef UPNUM
+#undef UPRST
+#undef UPCONX
+#undef UPCFG0X
+#undef UPCFG1X
+#undef UPSTAX
+#undef UPCFG2X
+#undef UPIENX
+#undef UPDATX
+#undef TCCR2A
+#undef WGM20
+#undef WGM21
+#undef COM2B0
+#undef COM2B1
+#undef COM2A0
+#undef COM2A1
+#undef TCCR2B
+#undef CS20
+#undef CS21
+#undef CS22
+#undef WGM22
+#undef FOC2B
+#undef FOC2A
+#undef TCNT2
+#undef TCNT2_0
+#undef TCNT2_1
+#undef TCNT2_2
+#undef TCNT2_3
+#undef TCNT2_4
+#undef TCNT2_5
+#undef TCNT2_6
+#undef TCNT2_7
+#undef OCR2A
+#undef OCR2_0
+#undef OCR2_1
+#undef OCR2_2
+#undef OCR2_3
+#undef OCR2_4
+#undef OCR2_5
+#undef OCR2_6
+#undef OCR2_7
+#undef OCR2B
+#undef OCR2_0
+#undef OCR2_1
+#undef OCR2_2
+#undef OCR2_3
+#undef OCR2_4
+#undef OCR2_5
+#undef OCR2_6
+#undef OCR2_7
+
+#define NUM_DIGITAL_PINS  30
+#define NUM_ANALOG_INPUTS 12
+
+#define TX_RX_LED_INIT  DDRD |= (1<<5), DDRB |= (1<<0)
+#define TXLED0          PORTD |= (1<<5)
+#define TXLED1          PORTD &= ~(1<<5)
+#define RXLED0          PORTB |= (1<<0)
+#define RXLED1          PORTB &= ~(1<<0)
+
+static const uint8_t SDA = 2;
+static const uint8_t SCL = 3;
+#define LED_BUILTIN 13
+
+// Map SPI port to 'new' pins D14..D17
+static const uint8_t SS   = 17;
+static const uint8_t MOSI = 16;
+static const uint8_t MISO = 14;
+static const uint8_t SCK  = 15;
+
+// Mapping of analog pins as digital I/O
+// A6-A11 share with digital pins
+static const uint8_t A0 = 18;
+static const uint8_t A1 = 19;
+static const uint8_t A2 = 20;
+static const uint8_t A3 = 21;
+static const uint8_t A4 = 22;
+static const uint8_t A5 = 23;
+static const uint8_t A6 = 24;   // D4
+static const uint8_t A7 = 25;   // D6
+static const uint8_t A8 = 26;   // D8
+static const uint8_t A9 = 27;   // D9
+static const uint8_t A10 = 28;  // D10
+static const uint8_t A11 = 29;  // D12
+
+#define digitalPinToPCICR(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
+#define digitalPinToPCICRbit(p) 0
+#define digitalPinToPCMSK(p)    ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
+#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
+
+//  __AVR_ATmega32U4__ has an unusual mapping of pins to channels
+extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
+#define analogPinToChannel(P)  ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
+
+#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
+
+#ifdef ARDUINO_MAIN
+
+// On the Arduino board, digital pins are also used
+// for the analog output (software PWM).  Analog input
+// pins are a separate set.
+
+// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
+//
+// D0               PD2                 RXD1/INT2
+// D1               PD3                 TXD1/INT3
+// D2               PD1     SDA         SDA/INT1
+// D3#              PD0     PWM8/SCL    OC0B/SCL/INT0
+// D4       A6      PD4                 ADC8
+// D5#              PC6     ???         OC3A/#OC4A
+// D6#      A7      PD7     FastPWM     #OC4D/ADC10
+// D7               PE6                 INT6/AIN0
+//
+// D8       A8      PB4                 ADC11/PCINT4
+// D9#      A9      PB5     PWM16       OC1A/#OC4B/ADC12/PCINT5
+// D10#     A10     PB6     PWM16       OC1B/0c4B/ADC13/PCINT6
+// D11#             PB7     PWM8/16     0C0A/OC1C/#RTS/PCINT7
+// D12      A11     PD6                 T1/#OC4D/ADC9
+// D13#             PC7     PWM10       CLK0/OC4A
+//
+// A0       D18     PF7                 ADC7
+// A1       D19     PF6                 ADC6
+// A2       D20     PF5                 ADC5
+// A3       D21     PF4                 ADC4
+// A4       D22     PF1                 ADC1
+// A5       D23     PF0                 ADC0
+//
+// New pins D14..D17 to map SPI port to digital pins
+//
+// MISO     D14     PB3                 MISO,PCINT3
+// SCK      D15     PB1                 SCK,PCINT1
+// MOSI     D16     PB2                 MOSI,PCINT2
+// SS       D17     PB0                 RXLED,SS/PCINT0
+//
+// Connected LEDs on board for TX and RX
+// TXLED    D24     PD5                 XCK1
+// RXLED    D17     PB0
+// HWB              PE2                 HWB
+
+// these arrays map port names (e.g. port B) to the
+// appropriate addresses for various functions (e.g. reading
+// and writing)
+const uint16_t PROGMEM port_to_mode_PGM[] = {
+    NOT_A_PORT,
+    NOT_A_PORT,
+    (uint16_t) &DDRB,
+    (uint16_t) &DDRC,
+    (uint16_t) &DDRD,
+    (uint16_t) &DDRE,
+    (uint16_t) &DDRF,
+};
+
+const uint16_t PROGMEM port_to_output_PGM[] = {
+    NOT_A_PORT,
+    NOT_A_PORT,
+    (uint16_t) &PORTB,
+    (uint16_t) &PORTC,
+    (uint16_t) &PORTD,
+    (uint16_t) &PORTE,
+    (uint16_t) &PORTF,
+};
+
+const uint16_t PROGMEM port_to_input_PGM[] = {
+    NOT_A_PORT,
+    NOT_A_PORT,
+    (uint16_t) &PINB,
+    (uint16_t) &PINC,
+    (uint16_t) &PIND,
+    (uint16_t) &PINE,
+    (uint16_t) &PINF,
+};
+
+const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
+    PD, // D0 - PD2
+    PD, // D1 - PD3
+    PD, // D2 - PD1
+    PD, // D3 - PD0
+    PD, // D4 - PD4
+    PC, // D5 - PC6
+    PD, // D6 - PD7
+    PE, // D7 - PE6
+    
+    PB, // D8 - PB4
+    PB, // D9 - PB5
+    PB, // D10 - PB6
+    PB, // D11 - PB7
+    PD, // D12 - PD6
+    PC, // D13 - PC7
+    
+    PB, // D14 - MISO - PB3
+    PB, // D15 - SCK - PB1
+    PB, // D16 - MOSI - PB2
+    PB, // D17 - SS - PB0
+    
+    PF, // D18 - A0 - PF7
+    PF, // D19 - A1 - PF6
+    PF, // D20 - A2 - PF5
+    PF, // D21 - A3 - PF4
+    PF, // D22 - A4 - PF1
+    PF, // D23 - A5 - PF0
+    
+    PD, // D24 - PD5
+    PD, // D25 / D6 - A7 - PD7
+    PB, // D26 / D8 - A8 - PB4
+    PB, // D27 / D9 - A9 - PB5
+    PB, // D28 / D10 - A10 - PB6
+    PD, // D29 / D12 - A11 - PD6
+};
+
+const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
+    _BV(2), // D0 - PD2
+    _BV(3), // D1 - PD3
+    _BV(1), // D2 - PD1
+    _BV(0), // D3 - PD0
+    _BV(4), // D4 - PD4
+    _BV(6), // D5 - PC6
+    _BV(7), // D6 - PD7
+    _BV(6), // D7 - PE6
+    
+    _BV(4), // D8 - PB4
+    _BV(5), // D9 - PB5
+    _BV(6), // D10 - PB6
+    _BV(7), // D11 - PB7
+    _BV(6), // D12 - PD6
+    _BV(7), // D13 - PC7
+    
+    _BV(3), // D14 - MISO - PB3
+    _BV(1), // D15 - SCK - PB1
+    _BV(2), // D16 - MOSI - PB2
+    _BV(0), // D17 - SS - PB0
+    
+    _BV(7), // D18 - A0 - PF7
+    _BV(6), // D19 - A1 - PF6
+    _BV(5), // D20 - A2 - PF5
+    _BV(4), // D21 - A3 - PF4
+    _BV(1), // D22 - A4 - PF1
+    _BV(0), // D23 - A5 - PF0
+    
+    _BV(5), // D24 - PD5
+    _BV(7), // D25 / D6 - A7 - PD7
+    _BV(4), // D26 / D8 - A8 - PB4
+    _BV(5), // D27 / D9 - A9 - PB5
+    _BV(6), // D28 / D10 - A10 - PB6
+    _BV(6), // D29 / D12 - A11 - PD6
+};
+
+const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
+    NOT_ON_TIMER,   
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    TIMER0B,        /* 3 */
+    NOT_ON_TIMER,
+    TIMER3A,        /* 5 */
+    TIMER4D,        /* 6 */
+    NOT_ON_TIMER,   
+    
+    NOT_ON_TIMER,   
+    TIMER1A,        /* 9 */
+    TIMER1B,        /* 10 */
+    TIMER0A,        /* 11 */
+    
+    NOT_ON_TIMER,   
+    TIMER4A,        /* 13 */
+    
+    NOT_ON_TIMER,   
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+    NOT_ON_TIMER,
+};
+
+const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
+    7,  // A0               PF7                 ADC7
+    6,  // A1               PF6                 ADC6    
+    5,  // A2               PF5                 ADC5    
+    4,  // A3               PF4                 ADC4
+    1,  // A4               PF1                 ADC1    
+    0,  // A5               PF0                 ADC0    
+    8,  // A6       D4      PD4                 ADC8
+    10, // A7       D6      PD7                 ADC10
+    11, // A8       D8      PB4                 ADC11
+    12, // A9       D9      PB5                 ADC12
+    13, // A10      D10     PB6                 ADC13
+    9   // A11      D12     PD6                 ADC9
+};
+
+#endif /* ARDUINO_MAIN */
+
+// These serial port names are intended to allow libraries and architecture-neutral
+// sketches to automatically default to the correct port name for a particular type
+// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
+// the first hardware serial port whose RX/TX pins are not dedicated to another use.
+//
+// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
+//
+// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
+//
+// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
+//
+// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
+//
+// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
+//                            pins are NOT connected to anything by default.
+#define SERIAL_PORT_MONITOR        Serial
+#define SERIAL_PORT_USBVIRTUAL     Serial
+#define SERIAL_PORT_HARDWARE       Serial1
+#define SERIAL_PORT_HARDWARE_OPEN  Serial1
+
+#endif /* Pins_Arduino_h */
diff --git a/keyboards/lets_splitv2/readme.md b/keyboards/lets_splitv2/readme.md
new file mode 100644
index 000000000..73fdb0f78
--- /dev/null
+++ b/keyboards/lets_splitv2/readme.md
@@ -0,0 +1,102 @@
+Let's Split
+======
+
+This readme and most of the code are from https://github.com/ahtn/tmk_keyboard/
+
+Split keyboard firmware for Arduino Pro Micro or other ATmega32u4
+based boards.
+
+Features
+--------
+
+Some features supported by the firmware:
+
+* Either half can connect to the computer via USB, or both halves can be used
+  independently.
+* You only need 3 wires to connect the two halves. Two for VCC and GND and one
+  for serial communication.
+* Optional support for I2C connection between the two halves if for some
+  reason you require a faster connection between the two halves. Note this
+  requires an extra wire between halves and pull-up resistors on the data lines.
+
+Required Hardware
+-----------------
+
+Apart from diodes and key switches for the keyboard matrix in each half, you
+will need:
+
+* 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each.
+* 2 TRS sockets
+* 1 TRS cable.
+
+Alternatively, you can use any sort of cable and socket that has at least 3
+wires. If you want to use I2C to communicate between halves, you will need a
+cable with at least 4 wires and 2x 4.7kΩ pull-up resistors
+
+Optional Hardware
+-----------------
+
+A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`.
+
+Wiring
+------
+
+The 3 wires of the TRS cable need to connect GND, VCC, and digital pin 3 (i.e.
+PD0 on the ATmega32u4) between the two Pro Micros.
+
+Then wire your key matrix to any of the remaining 17 IO pins of the pro micro
+and modify the `matrix.c` accordingly.
+
+The wiring for serial:
+
+![serial wiring](imgs/split-keyboard-serial-schematic.png)
+
+The wiring for i2c:
+
+![i2c wiring](imgs/split-keyboard-i2c-schematic.png)
+
+The pull-up resistors may be placed on either half. It is also possible
+to use 4 resistors and have the pull-ups in both halves, but this is
+unnecessary in simple use cases.
+
+Notes on Software Configuration
+-------------------------------
+
+Configuring the firmware is similar to any other TMK project. One thing
+to note is that `MATIX_ROWS` in `config.h` is the total number of rows between
+the two halves, i.e. if your split keyboard has 4 rows in each half, then
+`MATRIX_ROWS=8`.
+
+Also the current implementation assumes a maximum of 8 columns, but it would
+not be very difficult to adapt it to support more if required.
+
+
+Flashing
+--------
+
+If you define `EE_HANDS` in your `config.h`, you will need to set the
+EEPROM for the left and right halves. The EEPROM is used to store whether the
+half is left handed or right handed. This makes it so that the same firmware
+file will run on both hands instead of having to flash left and right handed
+versions of the firmware to each half. To flash the EEPROM file for the left
+half run:
+```
+make eeprom-left
+```
+and similarly for right half
+```
+make eeprom-right
+```
+
+After you have flashed the EEPROM for the first time, you then need to program
+the flash memory:
+```
+make program
+```
+Note that you need to program both halves, but you have the option of using
+different keymaps for each half. You could program the left half with a QWERTY
+layout and the right half with a Colemak layout. Then if you connect the left
+half to a computer by USB the keyboard will use QWERTY and Colemak when the
+right half is connected.
+
+
diff --git a/keyboards/lets_splitv2/serial.c b/keyboards/lets_splitv2/serial.c
new file mode 100644
index 000000000..f439c2f20
--- /dev/null
+++ b/keyboards/lets_splitv2/serial.c
@@ -0,0 +1,225 @@
+/*
+ * WARNING: be careful changing this code, it is very timing dependent
+ */
+
+#ifndef F_CPU
+#define F_CPU 16000000
+#endif
+
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <util/delay.h>
+#include <stdbool.h>
+
+#include "serial.h"
+
+// Serial pulse period in microseconds. Its probably a bad idea to lower this
+// value.
+#define SERIAL_DELAY 24
+
+uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
+uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
+
+#define SLAVE_DATA_CORRUPT (1<<0)
+volatile uint8_t status = 0;
+
+inline static
+void serial_delay(void) {
+  _delay_us(SERIAL_DELAY);
+}
+
+inline static
+void serial_output(void) {
+  SERIAL_PIN_DDR |= SERIAL_PIN_MASK;
+}
+
+// make the serial pin an input with pull-up resistor
+inline static
+void serial_input(void) {
+  SERIAL_PIN_DDR  &= ~SERIAL_PIN_MASK;
+  SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
+}
+
+inline static
+uint8_t serial_read_pin(void) {
+  return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
+}
+
+inline static
+void serial_low(void) {
+  SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
+}
+
+inline static
+void serial_high(void) {
+  SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
+}
+
+void serial_master_init(void) {
+  serial_output();
+  serial_high();
+}
+
+void serial_slave_init(void) {
+  serial_input();
+
+  // Enable INT0
+  EIMSK |= _BV(INT0);
+  // Trigger on falling edge of INT0
+  EICRA &= ~(_BV(ISC00) | _BV(ISC01));
+}
+
+// Used by the master to synchronize timing with the slave.
+static
+void sync_recv(void) {
+  serial_input();
+  // This shouldn't hang if the slave disconnects because the
+  // serial line will float to high if the slave does disconnect.
+  while (!serial_read_pin());
+  serial_delay();
+}
+
+// Used by the slave to send a synchronization signal to the master.
+static
+void sync_send(void) {
+  serial_output();
+
+  serial_low();
+  serial_delay();
+
+  serial_high();
+}
+
+// Reads a byte from the serial line
+static
+uint8_t serial_read_byte(void) {
+  uint8_t byte = 0;
+  serial_input();
+  for ( uint8_t i = 0; i < 8; ++i) {
+    byte = (byte << 1) | serial_read_pin();
+    serial_delay();
+    _delay_us(1);
+  }
+
+  return byte;
+}
+
+// Sends a byte with MSB ordering
+static
+void serial_write_byte(uint8_t data) {
+  uint8_t b = 8;
+  serial_output();
+  while( b-- ) {
+    if(data & (1 << b)) {
+      serial_high();
+    } else {
+      serial_low();
+    }
+    serial_delay();
+  }
+}
+
+// interrupt handle to be used by the slave device
+ISR(SERIAL_PIN_INTERRUPT) {
+  sync_send();
+
+  uint8_t checksum = 0;
+  for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
+    serial_write_byte(serial_slave_buffer[i]);
+    sync_send();
+    checksum += serial_slave_buffer[i];
+  }
+  serial_write_byte(checksum);
+  sync_send();
+
+  // wait for the sync to finish sending
+  serial_delay();
+
+  // read the middle of pulses
+  _delay_us(SERIAL_DELAY/2);
+
+  uint8_t checksum_computed = 0;
+  for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
+    serial_master_buffer[i] = serial_read_byte();
+    sync_send();
+    checksum_computed += serial_master_buffer[i];
+  }
+  uint8_t checksum_received = serial_read_byte();
+  sync_send();
+
+  serial_input(); // end transaction
+
+  if ( checksum_computed != checksum_received ) {
+    status |= SLAVE_DATA_CORRUPT;
+  } else {
+    status &= ~SLAVE_DATA_CORRUPT;
+  }
+}
+
+inline
+bool serial_slave_DATA_CORRUPT(void) {
+  return status & SLAVE_DATA_CORRUPT;
+}
+
+// Copies the serial_slave_buffer to the master and sends the
+// serial_master_buffer to the slave.
+//
+// Returns:
+// 0 => no error
+// 1 => slave did not respond
+int serial_update_buffers(void) {
+  // this code is very time dependent, so we need to disable interrupts
+  cli();
+
+  // signal to the slave that we want to start a transaction
+  serial_output();
+  serial_low();
+  _delay_us(1);
+
+  // wait for the slaves response
+  serial_input();
+  serial_high();
+  _delay_us(SERIAL_DELAY);
+
+  // check if the slave is present
+  if (serial_read_pin()) {
+    // slave failed to pull the line low, assume not present
+    sei();
+    return 1;
+  }
+
+  // if the slave is present syncronize with it
+  sync_recv();
+
+  uint8_t checksum_computed = 0;
+  // receive data from the slave
+  for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
+    serial_slave_buffer[i] = serial_read_byte();
+    sync_recv();
+    checksum_computed += serial_slave_buffer[i];
+  }
+  uint8_t checksum_received = serial_read_byte();
+  sync_recv();
+
+  if (checksum_computed != checksum_received) {
+    sei();
+    return 1;
+  }
+
+  uint8_t checksum = 0;
+  // send data to the slave
+  for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
+    serial_write_byte(serial_master_buffer[i]);
+    sync_recv();
+    checksum += serial_master_buffer[i];
+  }
+  serial_write_byte(checksum);
+  sync_recv();
+
+  // always, release the line when not in use
+  serial_output();
+  serial_high();
+
+  sei();
+  return 0;
+}
diff --git a/keyboards/lets_splitv2/serial.h b/keyboards/lets_splitv2/serial.h
new file mode 100644
index 000000000..15fe4db7b
--- /dev/null
+++ b/keyboards/lets_splitv2/serial.h
@@ -0,0 +1,26 @@
+#ifndef MY_SERIAL_H
+#define MY_SERIAL_H
+
+#include "config.h"
+#include <stdbool.h>
+
+/* TODO:  some defines for interrupt setup */
+#define SERIAL_PIN_DDR DDRD
+#define SERIAL_PIN_PORT PORTD
+#define SERIAL_PIN_INPUT PIND
+#define SERIAL_PIN_MASK _BV(PD0)
+#define SERIAL_PIN_INTERRUPT INT0_vect
+
+#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
+#define SERIAL_MASTER_BUFFER_LENGTH 1
+
+// Buffers for master - slave communication
+extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
+extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
+
+void serial_master_init(void);
+void serial_slave_init(void);
+int serial_update_buffers(void);
+bool serial_slave_data_corrupt(void);
+
+#endif
diff --git a/keyboards/lets_splitv2/split_util.c b/keyboards/lets_splitv2/split_util.c
new file mode 100644
index 000000000..65003a71a
--- /dev/null
+++ b/keyboards/lets_splitv2/split_util.c
@@ -0,0 +1,76 @@
+#include <avr/io.h>
+#include <avr/wdt.h>
+#include <avr/power.h>
+#include <avr/interrupt.h>
+#include <util/delay.h>
+#include <avr/eeprom.h>
+#include "split_util.h"
+#include "matrix.h"
+#include "i2c.h"
+#include "serial.h"
+#include "keyboard.h"
+#include "config.h"
+
+volatile bool isLeftHand = true;
+
+static void setup_handedness(void) {
+  #ifdef EE_HANDS
+    isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
+  #else
+    #ifdef I2C_MASTER_RIGHT
+      isLeftHand = !has_usb();
+    #else
+      isLeftHand = has_usb();
+    #endif
+  #endif
+}
+
+static void keyboard_master_setup(void) {
+#ifdef USE_I2C
+    i2c_master_init();
+#else
+    serial_master_init();
+#endif
+}
+
+static void keyboard_slave_setup(void) {
+#ifdef USE_I2C
+    i2c_slave_init(SLAVE_I2C_ADDRESS);
+#else
+    serial_slave_init();
+#endif
+}
+
+bool has_usb(void) {
+   USBCON |= (1 << OTGPADE); //enables VBUS pad
+   _delay_us(5);
+   return (USBSTA & (1<<VBUS));  //checks state of VBUS
+}
+
+void split_keyboard_setup(void) {
+   setup_handedness();
+
+   if (has_usb()) {
+      keyboard_master_setup();
+   } else {
+      keyboard_slave_setup();
+   }
+   sei();
+}
+
+void keyboard_slave_loop(void) {
+   matrix_init();
+
+   while (1) {
+      matrix_slave_scan();
+   }
+}
+
+// this code runs before the usb and keyboard is initialized
+void matrix_setup(void) {
+    split_keyboard_setup();
+
+    if (!has_usb()) {
+        keyboard_slave_loop();
+    }
+}
diff --git a/keyboards/lets_splitv2/split_util.h b/keyboards/lets_splitv2/split_util.h
new file mode 100644
index 000000000..6b896679c
--- /dev/null
+++ b/keyboards/lets_splitv2/split_util.h
@@ -0,0 +1,22 @@
+#ifndef SPLIT_KEYBOARD_UTIL_H
+#define SPLIT_KEYBOARD_UTIL_H
+
+#include <stdbool.h>
+
+#ifdef EE_HANDS
+	#define EECONFIG_BOOTMAGIC_END      (uint8_t *)10
+	#define EECONFIG_HANDEDNESS         EECONFIG_BOOTMAGIC_END
+#endif
+
+#define SLAVE_I2C_ADDRESS           0x32
+
+extern volatile bool isLeftHand;
+
+// slave version of matix scan, defined in matrix.c
+void matrix_slave_scan(void);
+
+void split_keyboard_setup(void);
+bool has_usb(void);
+void keyboard_slave_loop(void);
+
+#endif
diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile
new file mode 100644
index 000000000..3f6d133c9
--- /dev/null
+++ b/keyboards/maxipad/Makefile
@@ -0,0 +1,75 @@
+
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+#   Teensy halfKay   512
+#   Teensy++ halfKay 1024
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+#   USBaspLoader     2048
+OPT_DEFS += -DBOOTLOADER_SIZE=512
+
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE ?= no      # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
+CONSOLE_ENABLE ?= yes        # Console for debug(+400)
+COMMAND_ENABLE ?= yes        # 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
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE ?= no            # USB Nkey Rollover
+BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default
+MIDI_ENABLE ?= no            # MIDI controls
+UNICODE_ENABLE ?= no         # Unicode
+BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE ?= no           # Audio output on port C6
+
+ifndef QUANTUM_DIR
+	include ../../Makefile
+endif
+
+
diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h
new file mode 100644
index 000000000..59b8cebec
--- /dev/null
+++ b/keyboards/maxipad/config.h
@@ -0,0 +1,162 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wootpatoot
+#define PRODUCT         maxipad
+#define DESCRIPTION     g8ming keeb
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 }
+#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+ 
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* 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
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * 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
+
+#endif
diff --git a/keyboards/maxipad/keymaps/default/Makefile b/keyboards/maxipad/keymaps/default/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/Makefile
@@ -0,0 +1,21 @@
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI controls
+AUDIO_ENABLE = no           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/config.h
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
\ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c
new file mode 100644
index 000000000..7ca127fe4
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+#include "maxipad.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Base */
+  KC_ESC,  KC_1,    KC_2,  KC_3,  KC_4,  KC_5, \
+  KC_TAB,  KC_Q,    KC_W,  KC_E,  KC_R,  KC_T, \
+  MO(1),   KC_A,    KC_S,  KC_D,  KC_F,  KC_G, \
+  KC_LSFT, KC_Z,    KC_X,  KC_C,  KC_V,  KC_B, \
+  KC_LCTL, KC_LALT, MO(1), KC_ENT,KC_GRV,KC_SPC \
+),
+[1] = KEYMAP(
+  KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+  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);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
\ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/readme.md b/keyboards/maxipad/keymaps/default/readme.md
new file mode 100644
index 000000000..a6c0d4a3f
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for maxipad
\ No newline at end of file
diff --git a/keyboards/maxipad/maxipad.c b/keyboards/maxipad/maxipad.c
new file mode 100644
index 000000000..879ae86a7
--- /dev/null
+++ b/keyboards/maxipad/maxipad.c
@@ -0,0 +1,28 @@
+#include "maxipad.h"
+
+void matrix_init_kb(void) {
+	// put your keyboard start-up code here
+	// runs once when the firmware starts up
+
+	matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+	// put your looping keyboard code here
+	// runs every cycle (a lot)
+
+	matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+	// put your per-action keyboard code here
+	// runs for every action, just before processing by the firmware
+
+	return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+	// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+
+	led_set_user(usb_led);
+}
diff --git a/keyboards/maxipad/maxipad.h b/keyboards/maxipad/maxipad.h
new file mode 100644
index 000000000..eee1309dd
--- /dev/null
+++ b/keyboards/maxipad/maxipad.h
@@ -0,0 +1,25 @@
+#ifndef MAXIPAD_H
+#define MAXIPAD_H
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The following is an example using the Planck MIT layout
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+     k00, k01, k02, k03, k04, k05, \
+     k10, k11, k12, k13, k14, k15, \
+     k20, k21, k22, k23, k24, k25, \
+     k30, k31, k32, k33, k34, k35, \
+     k40, k41, k42, k43, k44, k45 \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k33, k34, k35 }, \
+    { k40, k41, k42, k43, k44, k45} \
+}
+
+#endif
diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md
new file mode 100644
index 000000000..964212b8a
--- /dev/null
+++ b/keyboards/maxipad/readme.md
@@ -0,0 +1,28 @@
+maxipad keyboard firmware
+======================
+
+## Quantum MK Firmware
+
+For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
+
+## Building
+
+Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. 
+
+Depending on which keymap you would like to use, you will have to compile slightly differently.
+
+### Default
+
+To build with the default keymap, simply run `make`.
+
+### Other Keymaps
+
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
+
+To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
+
+```
+$ make keymap=[default|jack|<name>]
+```
+
+Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
\ No newline at end of file

From 79f82d3d80a24483d14b078d325bb0f45af58e3d Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@users.noreply.github.com>
Date: Thu, 10 Nov 2016 18:43:31 -0500
Subject: [PATCH 2/8] returned to o

---
 keyboards/lets_split/config.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index bf618704c..05439facb 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -25,7 +25,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define PRODUCT_ID      0x3060
 #define DEVICE_VER      0x0001
 #define MANUFACTURER    Wootpatoot
-#define PRODUCT         Lets Split v2
+#define PRODUCT         Lets Split
 #define DESCRIPTION     A split keyboard for the cheap makers
 
 /* key matrix size */
@@ -34,8 +34,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_COLS 6
 
 // wiring of each half
-#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
-#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
+#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
 
 #define CATERINA_BOOTLOADER
 
@@ -95,4 +95,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-#endif
\ No newline at end of file
+#endif

From b5cecb4cc9df2d541050a9a95f48c1d5fb796ae4 Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@gmail.com>
Date: Thu, 10 Nov 2016 20:03:24 -0500
Subject: [PATCH 3/8] Added both revisions into one folder

---
 keyboards/lets_split/Makefile                 |  2 +-
 keyboards/lets_split/config.h                 | 16 ++-
 keyboards/lets_split/keymaps/default/keymap.c | 51 ++--------
 keyboards/lets_split/lets_split.c             | 27 -----
 keyboards/lets_split/lets_split.h             | 26 ++---
 keyboards/lets_split/rev1/config.h            | 98 +++++++++++++++++++
 keyboards/lets_split/rev1/rev1.c              | 30 ++++++
 keyboards/lets_split/rev1/rev1.h              | 25 +++++
 keyboards/lets_split/rev2/config.h            | 98 +++++++++++++++++++
 keyboards/lets_split/rev2/rev2.c              | 30 ++++++
 keyboards/lets_split/rev2/rev2.h              | 25 +++++
 11 files changed, 327 insertions(+), 101 deletions(-)
 create mode 100644 keyboards/lets_split/rev1/config.h
 create mode 100644 keyboards/lets_split/rev1/rev1.c
 create mode 100644 keyboards/lets_split/rev1/rev1.h
 create mode 100644 keyboards/lets_split/rev2/config.h
 create mode 100644 keyboards/lets_split/rev2/rev2.c
 create mode 100644 keyboards/lets_split/rev2/rev2.h

diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile
index 982cfc591..396d51555 100644
--- a/keyboards/lets_split/Makefile
+++ b/keyboards/lets_split/Makefile
@@ -72,7 +72,7 @@ USE_I2C ?= yes
 SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
-
+SUBPROJECT_DEFAULT = rev2
 ifndef QUANTUM_DIR
 	include ../../Makefile
 endif
\ No newline at end of file
diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index bf618704c..245529ae0 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -28,15 +28,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define PRODUCT         Lets Split v2
 #define DESCRIPTION     A split keyboard for the cheap makers
 
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 6
-
-// wiring of each half
-#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
-#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
-
 #define CATERINA_BOOTLOADER
 
 // #define USE_I2C
@@ -94,5 +85,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_ONESHOT
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
-
+#ifdef SUBPROJECT_rev1
+    #include "rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "rev2/config.h"
+#endif
 #endif
\ No newline at end of file
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index 8c8466ebd..d94063816 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -29,61 +29,24 @@ enum custom_keycodes {
 #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 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_QWERTY] = KEYMAP( \
-  KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+[0] = KEYMAP( \
+  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_ENT , \
-  KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER),   KC_SPC,  KC_LSFT,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+  KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER),   KC_SPC,  KC_SPC,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
 ),
-
-[_LOWER] = KEYMAP( \
-  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+[3] = KEYMAP( \
+  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_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,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
   _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, 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 |ISO # |ISO / |      |      |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
-[_RAISE] = KEYMAP( \
-  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+[4] = KEYMAP( \
+  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_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_NUHS, KC_NUBS, _______, _______, _______, \
   _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 ),
-
-/* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |      |      |      |      |      |      |      |      |      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
- */
 };
 
 #ifdef AUDIO_ENABLE
diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c
index 574c116a7..fe2d4bc19 100644
--- a/keyboards/lets_split/lets_split.c
+++ b/keyboards/lets_split/lets_split.c
@@ -1,30 +1,3 @@
 #include "lets_split.h"
 
-#ifdef AUDIO_ENABLE
-    float tone_startup[][2] = SONG(STARTUP_SOUND);
-    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
-#endif
 
-void matrix_init_kb(void) {
-
-    #ifdef AUDIO_ENABLE
-        _delay_ms(20); // gets rid of tick
-        PLAY_NOTE_ARRAY(tone_startup, false, 0);
-    #endif
-
-    // // green led on
-    // DDRD |= (1<<5);
-    // PORTD &= ~(1<<5);
-
-    // // orange led on
-    // DDRB |= (1<<0);
-    // PORTB &= ~(1<<0);
-
-	matrix_init_user();
-};
-
-void shutdown_user(void) {
-    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
-    _delay_ms(150);
-    stop_all_notes();
-}
diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h
index 04844ed63..2cdfb061f 100644
--- a/keyboards/lets_split/lets_split.h
+++ b/keyboards/lets_split/lets_split.h
@@ -1,25 +1,13 @@
 #ifndef LETS_SPLIT_H
 #define LETS_SPLIT_H
 
+#ifdef SUBPROJECT_rev1
+    #include "rev1.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "rev2.h"
+#endif
+
 #include "quantum.h"
 
-void promicro_bootloader_jmp(bool program);
-
-#define KEYMAP( \
-	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
-	k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
-	k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
-	k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
-	) \
-	{ \
-		{ k00, k01, k02, k03, k04, k05 }, \
-		{ k10, k11, k12, k13, k14, k15 }, \
-		{ k20, k21, k22, k23, k24, k25 }, \
-		{ k30, k31, k32, k33, k34, k35 }, \
-		{ k40, k41, k42, k43, k44, k45 }, \
-		{ k50, k51, k52, k53, k54, k55 }, \
-		{ k60, k61, k62, k63, k64, k65 }, \
-		{ k70, k71, k72, k73, k74, k75 } \
-	}
-
 #endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
new file mode 100644
index 000000000..b609ada07
--- /dev/null
+++ b/keyboards/lets_split/rev1/config.h
@@ -0,0 +1,98 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wootpatoot
+#define PRODUCT         Lets Split v1
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+
+#define CATERINA_BOOTLOADER
+
+// #define USE_I2C
+
+// #define EE_HANDS
+
+#define I2C_MASTER_LEFT
+// #define I2C_MASTER_RIGHT
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* ws2812 RGB LED */
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * 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
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c
new file mode 100644
index 000000000..574c116a7
--- /dev/null
+++ b/keyboards/lets_split/rev1/rev1.c
@@ -0,0 +1,30 @@
+#include "lets_split.h"
+
+#ifdef AUDIO_ENABLE
+    float tone_startup[][2] = SONG(STARTUP_SOUND);
+    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void matrix_init_kb(void) {
+
+    #ifdef AUDIO_ENABLE
+        _delay_ms(20); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+
+    // // green led on
+    // DDRD |= (1<<5);
+    // PORTD &= ~(1<<5);
+
+    // // orange led on
+    // DDRB |= (1<<0);
+    // PORTB &= ~(1<<0);
+
+	matrix_init_user();
+};
+
+void shutdown_user(void) {
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h
new file mode 100644
index 000000000..04fe0ddeb
--- /dev/null
+++ b/keyboards/lets_split/rev1/rev1.h
@@ -0,0 +1,25 @@
+#ifndef REV1_H
+#define REV1_H
+
+#include "quantum.h"
+
+void promicro_bootloader_jmp(bool program);
+
+#define KEYMAP( \
+	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
+	) \
+	{ \
+		{ k00, k01, k02, k03, k04, k05 }, \
+		{ k10, k11, k12, k13, k14, k15 }, \
+		{ k20, k21, k22, k23, k24, k25 }, \
+		{ k30, k31, k32, k33, k34, k35 }, \
+		{ k40, k41, k42, k43, k44, k45 }, \
+		{ k50, k51, k52, k53, k54, k55 }, \
+		{ k60, k61, k62, k63, k64, k65 }, \
+		{ k70, k71, k72, k73, k74, k75 } \
+	}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h
new file mode 100644
index 000000000..bf618704c
--- /dev/null
+++ b/keyboards/lets_split/rev2/config.h
@@ -0,0 +1,98 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wootpatoot
+#define PRODUCT         Lets Split v2
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
+
+#define CATERINA_BOOTLOADER
+
+// #define USE_I2C
+
+// #define EE_HANDS
+
+#define I2C_MASTER_LEFT
+// #define I2C_MASTER_RIGHT
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* ws2812 RGB LED */
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * 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
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c
new file mode 100644
index 000000000..574c116a7
--- /dev/null
+++ b/keyboards/lets_split/rev2/rev2.c
@@ -0,0 +1,30 @@
+#include "lets_split.h"
+
+#ifdef AUDIO_ENABLE
+    float tone_startup[][2] = SONG(STARTUP_SOUND);
+    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void matrix_init_kb(void) {
+
+    #ifdef AUDIO_ENABLE
+        _delay_ms(20); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+
+    // // green led on
+    // DDRD |= (1<<5);
+    // PORTD &= ~(1<<5);
+
+    // // orange led on
+    // DDRB |= (1<<0);
+    // PORTB &= ~(1<<0);
+
+	matrix_init_user();
+};
+
+void shutdown_user(void) {
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
new file mode 100644
index 000000000..2a2246f05
--- /dev/null
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -0,0 +1,25 @@
+#ifndef REV2_H
+#define REV2_H
+
+#include "quantum.h"
+
+void promicro_bootloader_jmp(bool program);
+
+#define KEYMAP( \
+	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+	k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+	k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+	k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
+	) \
+	{ \
+		{ k00, k01, k02, k03, k04, k05 }, \
+		{ k10, k11, k12, k13, k14, k15 }, \
+		{ k20, k21, k22, k23, k24, k25 }, \
+		{ k30, k31, k32, k33, k34, k35 }, \
+		{ k40, k41, k42, k43, k44, k45 }, \
+		{ k50, k51, k52, k53, k54, k55 }, \
+		{ k60, k61, k62, k63, k64, k65 }, \
+		{ k70, k71, k72, k73, k74, k75 } \
+	}
+
+#endif
\ No newline at end of file

From dd22c787b8b417df109d2136c76ce496dd7b93e3 Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@users.noreply.github.com>
Date: Mon, 14 Nov 2016 23:05:37 -0500
Subject: [PATCH 4/8] fixed extra paste

---
 keyboards/lets_split/config.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index a5394c5e4..bf0473116 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -105,7 +105,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     #include "rev2/config.h"
 #endif
 #endif
-=======
 
-#endif
->>>>>>> 79f82d3d80a24483d14b078d325bb0f45af58e3d
+
+

From bce6e52391da7c5f620c96a91857940f0dee19df Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@users.noreply.github.com>
Date: Mon, 14 Nov 2016 23:08:10 -0500
Subject: [PATCH 5/8] fixed conflict

---
 keyboards/lets_split/config.h | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index bf0473116..059d45b0c 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -28,8 +28,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define PRODUCT         Lets Split
 #define DESCRIPTION     A split keyboard for the cheap makers
 
-<<<<<<< HEAD
-=======
 /* key matrix size */
 // Rows are doubled-up
 #define MATRIX_ROWS 8
@@ -39,7 +37,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { B5, B4, E6, D7 }
 #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
 
->>>>>>> 79f82d3d80a24483d14b078d325bb0f45af58e3d
 #define CATERINA_BOOTLOADER
 
 // #define USE_I2C

From 1dd6ceb45dfcf5f0991b84fea5a761a35df7fcda Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@gmail.com>
Date: Wed, 16 Nov 2016 19:18:54 -0500
Subject: [PATCH 6/8] Updated my repo to current qmk

---
 keyboards/lets_split/config.h                 |  48 +-----
 keyboards/lets_split/keymaps/default/keymap.c |  12 +-
 keyboards/lets_split/lets_split.c             |  30 ----
 keyboards/lets_split/lets_split.h             |  26 +--
 keyboards/lets_split/rev1/Makefile            |   3 +
 keyboards/lets_split/rev1/config.h            | 102 +++++++++++
 keyboards/lets_split/rev1/rev1.c              |  32 ++++
 keyboards/lets_split/rev1/rev1.h              |  25 +++
 keyboards/lets_split/rev1/rules.mk            |   5 +
 keyboards/lets_split/rev2/Makefile            |   3 +
 keyboards/lets_split/rev2/config.h            | 102 +++++++++++
 keyboards/lets_split/rev2/rev2.c              |  32 ++++
 keyboards/lets_split/rev2/rev2.h              |  25 +++
 keyboards/lets_split/rev2/rules.mk            |   5 +
 keyboards/lets_split/rules.mk                 |   7 +-
 keyboards/maxipad/Makefile                    |   3 +
 keyboards/maxipad/config.h                    | 162 ++++++++++++++++++
 keyboards/maxipad/keymaps/default/Makefile    |  21 +++
 keyboards/maxipad/keymaps/default/config.h    |   8 +
 keyboards/maxipad/keymaps/default/keymap.c    |  54 ++++++
 keyboards/maxipad/keymaps/default/readme.md   |   1 +
 keyboards/maxipad/maxipad.c                   |  28 +++
 keyboards/maxipad/maxipad.h                   |  25 +++
 keyboards/maxipad/readme.md                   |  28 +++
 keyboards/maxipad/rules.mk                    |  67 ++++++++
 25 files changed, 756 insertions(+), 98 deletions(-)
 create mode 100644 keyboards/lets_split/rev1/Makefile
 create mode 100644 keyboards/lets_split/rev1/config.h
 create mode 100644 keyboards/lets_split/rev1/rev1.c
 create mode 100644 keyboards/lets_split/rev1/rev1.h
 create mode 100644 keyboards/lets_split/rev1/rules.mk
 create mode 100644 keyboards/lets_split/rev2/Makefile
 create mode 100644 keyboards/lets_split/rev2/config.h
 create mode 100644 keyboards/lets_split/rev2/rev2.c
 create mode 100644 keyboards/lets_split/rev2/rev2.h
 create mode 100644 keyboards/lets_split/rev2/rules.mk
 create mode 100644 keyboards/maxipad/Makefile
 create mode 100644 keyboards/maxipad/config.h
 create mode 100644 keyboards/maxipad/keymaps/default/Makefile
 create mode 100644 keyboards/maxipad/keymaps/default/config.h
 create mode 100644 keyboards/maxipad/keymaps/default/keymap.c
 create mode 100644 keyboards/maxipad/keymaps/default/readme.md
 create mode 100644 keyboards/maxipad/maxipad.c
 create mode 100644 keyboards/maxipad/maxipad.h
 create mode 100644 keyboards/maxipad/readme.md
 create mode 100644 keyboards/maxipad/rules.mk

diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index f4d900acc..5bee55319 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -28,29 +28,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define PRODUCT         Lets Split
 #define DESCRIPTION     A split keyboard for the cheap makers
 
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 6
-
-// wiring of each half
-#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
-#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
-
-#define CATERINA_BOOTLOADER
-
-// #define USE_I2C
-
-// Use serial if not using I2C
-#ifndef USE_I2C
-#  define USE_SERIAL
-#endif
-
-// #define EE_HANDS
-
-#define I2C_MASTER_LEFT
-// #define I2C_MASTER_RIGHT
-
 /* COL2ROW or ROW2COL */
 #define DIODE_DIRECTION COL2ROW
 
@@ -72,25 +49,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define IS_COMMAND() ( \
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
-
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D4
-#define RGBLIGHT_TIMER
-#define RGBLED_NUM 8     // Number of LEDs
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
 /* disable debug print */
-// #define NO_DEBUG
+//#define NO_DEBUG
 
 /* disable print */
-// #define NO_PRINT
+//#define NO_PRINT
 
 /* disable action features */
 //#define NO_ACTION_LAYER
@@ -98,5 +61,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_ONESHOT
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
-
+#ifdef SUBPROJECT_rev1
+    #include "rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "rev2/config.h"
+#endif
 #endif
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index 0d2d94b67..fc41c01fd 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -42,10 +42,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = KEYMAP( \
-  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_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 , \
-  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+  KC_LCTL, ADJUST, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MT(MOD_LSFT, KC_SPC),  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
 ),
 
 /* Colemak
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   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,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+  _______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 ),
 
 /* Raise
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   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_NUHS, KC_NUBS, _______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+  _______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 ),
 
 /* Adjust (Lower + Raise)
@@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_ADJUST] =  KEYMAP( \
   _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
   _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
 )
 
diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c
index c505d3a6e..851299aa2 100644
--- a/keyboards/lets_split/lets_split.c
+++ b/keyboards/lets_split/lets_split.c
@@ -1,32 +1,2 @@
 #include "lets_split.h"
 
-#ifdef AUDIO_ENABLE
-    float tone_startup[][2] = SONG(STARTUP_SOUND);
-    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
-#endif
-
-void matrix_init_kb(void) {
-
-    #ifdef AUDIO_ENABLE
-        _delay_ms(20); // gets rid of tick
-        PLAY_NOTE_ARRAY(tone_startup, false, 0);
-    #endif
-
-    // // green led on
-    // DDRD |= (1<<5);
-    // PORTD &= ~(1<<5);
-
-    // // orange led on
-    // DDRB |= (1<<0);
-    // PORTB &= ~(1<<0);
-
-	matrix_init_user();
-};
-
-void shutdown_user(void) {
-    #ifdef AUDIO_ENABLE
-        PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
-	_delay_ms(150);
-	stop_all_notes();
-    #endif
-}
diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h
index fe7ae0767..2cdfb061f 100644
--- a/keyboards/lets_split/lets_split.h
+++ b/keyboards/lets_split/lets_split.h
@@ -1,25 +1,13 @@
 #ifndef LETS_SPLIT_H
 #define LETS_SPLIT_H
 
+#ifdef SUBPROJECT_rev1
+    #include "rev1.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "rev2.h"
+#endif
+
 #include "quantum.h"
 
-void promicro_bootloader_jmp(bool program);
-
-#define KEYMAP( \
-	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
-	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
-	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
-	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
-	) \
-	{ \
-		{ k00, k01, k02, k03, k04, k05 }, \
-		{ k10, k11, k12, k13, k14, k15 }, \
-		{ k20, k21, k22, k23, k24, k25 }, \
-		{ k30, k31, k32, k33, k34, k35 }, \
-		{ k40, k41, k42, k43, k44, k45 }, \
-		{ k50, k51, k52, k53, k54, k55 }, \
-		{ k60, k61, k62, k63, k64, k65 }, \
-		{ k70, k71, k72, k73, k74, k75 } \
-	}
-
 #endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev1/Makefile b/keyboards/lets_split/rev1/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/lets_split/rev1/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
new file mode 100644
index 000000000..f4d900acc
--- /dev/null
+++ b/keyboards/lets_split/rev1/config.h
@@ -0,0 +1,102 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wootpatoot
+#define PRODUCT         Lets Split
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+
+#define CATERINA_BOOTLOADER
+
+// #define USE_I2C
+
+// Use serial if not using I2C
+#ifndef USE_I2C
+#  define USE_SERIAL
+#endif
+
+// #define EE_HANDS
+
+#define I2C_MASTER_LEFT
+// #define I2C_MASTER_RIGHT
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D4
+#define RGBLIGHT_TIMER
+#define RGBLED_NUM 8     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * 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
+
+#endif
diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c
new file mode 100644
index 000000000..c505d3a6e
--- /dev/null
+++ b/keyboards/lets_split/rev1/rev1.c
@@ -0,0 +1,32 @@
+#include "lets_split.h"
+
+#ifdef AUDIO_ENABLE
+    float tone_startup[][2] = SONG(STARTUP_SOUND);
+    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void matrix_init_kb(void) {
+
+    #ifdef AUDIO_ENABLE
+        _delay_ms(20); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+
+    // // green led on
+    // DDRD |= (1<<5);
+    // PORTD &= ~(1<<5);
+
+    // // orange led on
+    // DDRB |= (1<<0);
+    // PORTB &= ~(1<<0);
+
+	matrix_init_user();
+};
+
+void shutdown_user(void) {
+    #ifdef AUDIO_ENABLE
+        PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+	_delay_ms(150);
+	stop_all_notes();
+    #endif
+}
diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h
new file mode 100644
index 000000000..50bda0315
--- /dev/null
+++ b/keyboards/lets_split/rev1/rev1.h
@@ -0,0 +1,25 @@
+#ifndef REV1_H
+#define REV1_H
+
+#include "../lets_split.h"
+
+//void promicro_bootloader_jmp(bool program);
+
+#define KEYMAP( \
+	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
+	) \
+	{ \
+		{ k00, k01, k02, k03, k04, k05 }, \
+		{ k10, k11, k12, k13, k14, k15 }, \
+		{ k20, k21, k22, k23, k24, k25 }, \
+		{ k30, k31, k32, k33, k34, k35 }, \
+		{ k40, k41, k42, k43, k44, k45 }, \
+		{ k50, k51, k52, k53, k54, k55 }, \
+		{ k60, k61, k62, k63, k64, k65 }, \
+		{ k70, k71, k72, k73, k74, k75 } \
+	}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev1/rules.mk b/keyboards/lets_split/rev1/rules.mk
new file mode 100644
index 000000000..a0825b4ef
--- /dev/null
+++ b/keyboards/lets_split/rev1/rules.mk
@@ -0,0 +1,5 @@
+BACKLIGHT_ENABLE = no
+
+ifndef QUANTUM_DIR
+	include ../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/Makefile b/keyboards/lets_split/rev2/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/lets_split/rev2/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h
new file mode 100644
index 000000000..cd152e331
--- /dev/null
+++ b/keyboards/lets_split/rev2/config.h
@@ -0,0 +1,102 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wootpatoot
+#define PRODUCT         Lets Split v2
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
+
+#define CATERINA_BOOTLOADER
+
+// #define USE_I2C
+
+// Use serial if not using I2C
+#ifndef USE_I2C
+#  define USE_SERIAL
+#endif
+
+// #define EE_HANDS
+
+#define I2C_MASTER_LEFT
+// #define I2C_MASTER_RIGHT
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+#define RGBLIGHT_TIMER
+#define RGBLED_NUM 12    // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * 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
+
+#endif
diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c
new file mode 100644
index 000000000..c505d3a6e
--- /dev/null
+++ b/keyboards/lets_split/rev2/rev2.c
@@ -0,0 +1,32 @@
+#include "lets_split.h"
+
+#ifdef AUDIO_ENABLE
+    float tone_startup[][2] = SONG(STARTUP_SOUND);
+    float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void matrix_init_kb(void) {
+
+    #ifdef AUDIO_ENABLE
+        _delay_ms(20); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+
+    // // green led on
+    // DDRD |= (1<<5);
+    // PORTD &= ~(1<<5);
+
+    // // orange led on
+    // DDRB |= (1<<0);
+    // PORTB &= ~(1<<0);
+
+	matrix_init_user();
+};
+
+void shutdown_user(void) {
+    #ifdef AUDIO_ENABLE
+        PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+	_delay_ms(150);
+	stop_all_notes();
+    #endif
+}
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
new file mode 100644
index 000000000..a8b0f0f4c
--- /dev/null
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -0,0 +1,25 @@
+#ifndef REV2_H
+#define REV2_H
+
+#include "../lets_split.h"
+
+//void promicro_bootloader_jmp(bool program);
+
+#define KEYMAP( \
+	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+	k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+	k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+	k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
+	) \
+	{ \
+		{ k00, k01, k02, k03, k04, k05 }, \
+		{ k10, k11, k12, k13, k14, k15 }, \
+		{ k20, k21, k22, k23, k24, k25 }, \
+		{ k30, k31, k32, k33, k34, k35 }, \
+		{ k40, k41, k42, k43, k44, k45 }, \
+		{ k50, k51, k52, k53, k54, k55 }, \
+		{ k60, k61, k62, k63, k64, k65 }, \
+		{ k70, k71, k72, k73, k74, k75 } \
+	}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rules.mk b/keyboards/lets_split/rev2/rules.mk
new file mode 100644
index 000000000..80a942d06
--- /dev/null
+++ b/keyboards/lets_split/rev2/rules.mk
@@ -0,0 +1,5 @@
+BACKLIGHT_ENABLE = no
+
+ifndef QUANTUM_DIR
+	include ../../../Makefile
+endif
diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index 6fde8a444..1aee5313c 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -63,11 +63,12 @@ COMMAND_ENABLE ?= yes        # Commands for debug and configuration
 NKRO_ENABLE ?= no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 BACKLIGHT_ENABLE ?= no      # Enable keyboard backlight functionality
 MIDI_ENABLE ?= no            # MIDI controls
-AUDIO_ENABLE ?= yes           # Audio output on port C6
+AUDIO_ENABLE ?= no           # Audio output on port C6
 UNICODE_ENABLE ?= no         # Unicode
 BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-
+RGBLIGHT_ENABLE ?= no       # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SUBPROJECT_rev1 ?= yes
+USE_I2C ?= yes
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
 
diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/maxipad/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h
new file mode 100644
index 000000000..2462a5cfd
--- /dev/null
+++ b/keyboards/maxipad/config.h
@@ -0,0 +1,162 @@
+/*
+Copyright 2012 Jun Wako <wakojun@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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    You
+#define PRODUCT         maxipad
+#define DESCRIPTION     A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 }
+#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+ 
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* 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
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * 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
+
+#endif
diff --git a/keyboards/maxipad/keymaps/default/Makefile b/keyboards/maxipad/keymaps/default/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/Makefile
@@ -0,0 +1,21 @@
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI controls
+AUDIO_ENABLE = no           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/config.h
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
\ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c
new file mode 100644
index 000000000..8a9bc4f0d
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+#include "maxipad.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Base */
+  KC_ESC,  KC_1,    KC_2,  KC_3,  KC_4,  KC_5, \
+  KC_TAB,  KC_Q,    KC_W,  KC_E,  KC_R,  KC_T, \
+  MO(1),   KC_A,    KC_S,  KC_D,  KC_F,  KC_G, \
+  KC_LSFT, KC_Z,    KC_X,  KC_C,  KC_V,  KC_B, \
+  KC_LCTL, KC_LALT, MO(1), KC_ENT,KC_GRV,KC_SPC \
+),
+[1] = KEYMAP(
+  KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \
+  KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \
+  KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, \
+  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);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
\ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/readme.md b/keyboards/maxipad/keymaps/default/readme.md
new file mode 100644
index 000000000..a6c0d4a3f
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for maxipad
\ No newline at end of file
diff --git a/keyboards/maxipad/maxipad.c b/keyboards/maxipad/maxipad.c
new file mode 100644
index 000000000..879ae86a7
--- /dev/null
+++ b/keyboards/maxipad/maxipad.c
@@ -0,0 +1,28 @@
+#include "maxipad.h"
+
+void matrix_init_kb(void) {
+	// put your keyboard start-up code here
+	// runs once when the firmware starts up
+
+	matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+	// put your looping keyboard code here
+	// runs every cycle (a lot)
+
+	matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+	// put your per-action keyboard code here
+	// runs for every action, just before processing by the firmware
+
+	return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+	// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+
+	led_set_user(usb_led);
+}
diff --git a/keyboards/maxipad/maxipad.h b/keyboards/maxipad/maxipad.h
new file mode 100644
index 000000000..eee1309dd
--- /dev/null
+++ b/keyboards/maxipad/maxipad.h
@@ -0,0 +1,25 @@
+#ifndef MAXIPAD_H
+#define MAXIPAD_H
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The following is an example using the Planck MIT layout
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+     k00, k01, k02, k03, k04, k05, \
+     k10, k11, k12, k13, k14, k15, \
+     k20, k21, k22, k23, k24, k25, \
+     k30, k31, k32, k33, k34, k35, \
+     k40, k41, k42, k43, k44, k45 \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k33, k34, k35 }, \
+    { k40, k41, k42, k43, k44, k45} \
+}
+
+#endif
diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md
new file mode 100644
index 000000000..e722b6602
--- /dev/null
+++ b/keyboards/maxipad/readme.md
@@ -0,0 +1,28 @@
+maxipad keyboard firmware
+======================
+
+## Quantum MK Firmware
+
+For the full Quantum feature list, see [the parent readme](/).
+
+## Building
+
+Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. 
+
+Depending on which keymap you would like to use, you will have to compile slightly differently.
+
+### Default
+
+To build with the default keymap, simply run `make default`.
+
+### Other Keymaps
+
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
+
+To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
+
+```
+$ make [default|jack|<name>]
+```
+
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk
new file mode 100644
index 000000000..55898147d
--- /dev/null
+++ b/keyboards/maxipad/rules.mk
@@ -0,0 +1,67 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+#   Teensy halfKay   512
+#   Teensy++ halfKay 1024
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+#   USBaspLoader     2048
+OPT_DEFS += -DBOOTLOADER_SIZE=512
+
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE ?= no      # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
+CONSOLE_ENABLE ?= yes        # Console for debug(+400)
+COMMAND_ENABLE ?= yes        # 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
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE ?= no            # USB Nkey Rollover
+BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default
+MIDI_ENABLE ?= no            # MIDI controls
+UNICODE_ENABLE ?= no         # Unicode
+BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE ?= no           # Audio output on port C6

From 21b6b4e6c4d6872164a13e8d31e3e0a9f146ea60 Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@gmail.com>
Date: Wed, 16 Nov 2016 19:49:38 -0500
Subject: [PATCH 7/8] should have fixed conflixed

---
 keyboards/lets_split/Makefile                 | 79 -------------------
 keyboards/lets_split/config.h                 | 13 +--
 keyboards/lets_split/keymaps/default/keymap.c | 19 -----
 keyboards/lets_split/lets_split.c             |  7 +-
 keyboards/lets_split/rev1/config.h            | 26 ------
 keyboards/lets_split/rev1/rev1.c              |  6 --
 keyboards/lets_split/rev1/rev1.h              |  5 +-
 keyboards/lets_split/rev2/config.h            | 18 +----
 keyboards/lets_split/rev2/rev2.c              |  6 --
 keyboards/lets_split/rev2/rev2.h              |  5 +-
 keyboards/maxipad/Makefile                    | 78 ------------------
 keyboards/maxipad/config.h                    |  9 +--
 keyboards/maxipad/keymaps/default/keymap.c    |  7 +-
 13 files changed, 10 insertions(+), 268 deletions(-)

diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile
index 6ce6e4373..4e2a6f00f 100644
--- a/keyboards/lets_split/Makefile
+++ b/keyboards/lets_split/Makefile
@@ -1,82 +1,3 @@
-<<<<<<< HEAD
 ifndef MAKEFILE_INCLUDED
-=======
-SRC += matrix.c \
-	   i2c.c \
-	   split_util.c \
-	   serial.c
-
-# MCU name
-#MCU = at90usb1287
-MCU = atmega32u4
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency in Hz. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-#
-#     This will be an integer division of F_USB below, as it is sourced by
-#     F_USB after it has run through any CPU prescalers. Note that this value
-#     does not *change* the processor frequency - it should merely be updated to
-#     reflect the processor speed set externally so that the code can use accurate
-#     software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-#     This will define a symbol, F_USB, in all source code files equal to the
-#     input clock frequency (before any prescaling is performed) in Hz. This value may
-#     differ from F_CPU if prescaling is used on the latter, and is required as the
-#     raw input clock is fed directly to the PLL sections of the AVR for high speed
-#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-#     at the end, this will be done automatically to create a 32-bit value in your
-#     source code.
-#
-#     If no clock division is performed on the input clock inside the AVR (via the
-#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-#   Teensy halfKay   512
-#   Teensy++ halfKay 1024
-#   Atmel DFU loader 4096
-#   LUFA bootloader  4096
-#   USBaspLoader     2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-# Build Options
-#   change to "no" to disable the options, or define them in the Makefile in 
-#   the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE ?= no       # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no         # Console for debug(+400)
-COMMAND_ENABLE ?= yes        # Commands for debug and configuration
-NKRO_ENABLE ?= 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
-MIDI_ENABLE ?= no            # MIDI controls
-AUDIO_ENABLE ?= yes           # Audio output on port C6
-UNICODE_ENABLE ?= no         # Unicode
-BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-USE_I2C ?= yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
-
-CUSTOM_MATRIX = yes
-SUBPROJECT_DEFAULT = rev2
-ifndef QUANTUM_DIR
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 	include ../../Makefile
 endif
\ No newline at end of file
diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index 91b11f03f..1b7bbcbbb 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -61,20 +61,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_ONESHOT
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
-<<<<<<< HEAD
-=======
-<<<<<<< HEAD
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+
 #ifdef SUBPROJECT_rev1
     #include "rev1/config.h"
 #endif
 #ifdef SUBPROJECT_rev2
     #include "rev2/config.h"
 #endif
-#endif
-<<<<<<< HEAD
-=======
-
-
-
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index 41b9b8d8f..6f1f71f5f 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -29,7 +29,6 @@ enum custom_keycodes {
 #define XXXXXXX KC_NO
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-<<<<<<< HEAD
 
 /* Qwerty
  * ,-----------------------------------------------------------------------------------.
@@ -83,29 +82,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   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 , \
   ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-=======
-[0] = KEYMAP( \
-  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_ENT , \
-  KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER),   KC_SPC,  KC_SPC,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 ),
 [3] = KEYMAP( \
   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_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,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
-<<<<<<< HEAD
   _______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-=======
-  _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 ),
 [4] = KEYMAP( \
   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_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_NUHS, KC_NUBS, _______, _______, _______, \
-<<<<<<< HEAD
   _______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 ),
 
@@ -126,12 +113,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
 )
-
-
-=======
-  _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-),
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 };
 
 #ifdef AUDIO_ENABLE
diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c
index 8bb33f951..117b727a8 100644
--- a/keyboards/lets_split/lets_split.c
+++ b/keyboards/lets_split/lets_split.c
@@ -1,6 +1 @@
-#include "lets_split.h"
-
-<<<<<<< HEAD
-=======
-
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+#include "lets_split.h"
\ No newline at end of file
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
index da5b47673..825e5ec24 100644
--- a/keyboards/lets_split/rev1/config.h
+++ b/keyboards/lets_split/rev1/config.h
@@ -25,11 +25,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define PRODUCT_ID      0x3060
 #define DEVICE_VER      0x0001
 #define MANUFACTURER    Wootpatoot
-<<<<<<< HEAD
 #define PRODUCT         Lets Split
-=======
 #define PRODUCT         Lets Split v1
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 #define DESCRIPTION     A split keyboard for the cheap makers
 
 /* key matrix size */
@@ -44,15 +41,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define CATERINA_BOOTLOADER
 
 // #define USE_I2C
-
-<<<<<<< HEAD
 // Use serial if not using I2C
 #ifndef USE_I2C
 #  define USE_SERIAL
 #endif
 
-=======
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 // #define EE_HANDS
 
 #define I2C_MASTER_LEFT
@@ -80,21 +73,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
-/* ws2812 RGB LED */
-<<<<<<< HEAD
-#define RGB_DI_PIN D4
-#define RGBLIGHT_TIMER
-#define RGBLED_NUM 8     // Number of LEDs
-=======
-#define ws2812_PORTREG  PORTD
-#define ws2812_DDRREG   DDRD
-#define ws2812_pin PD1
-#define RGBLED_NUM 28     // Number of LEDs
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
-
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
@@ -113,8 +91,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-<<<<<<< HEAD
 #endif
-=======
-#endif
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c
index 41dd1e353..c505d3a6e 100644
--- a/keyboards/lets_split/rev1/rev1.c
+++ b/keyboards/lets_split/rev1/rev1.c
@@ -24,15 +24,9 @@ void matrix_init_kb(void) {
 };
 
 void shutdown_user(void) {
-<<<<<<< HEAD
     #ifdef AUDIO_ENABLE
         PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
 	_delay_ms(150);
 	stop_all_notes();
     #endif
-=======
-    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
-    _delay_ms(150);
-    stop_all_notes();
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 }
diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h
index 998b2be7c..4667c9fb0 100644
--- a/keyboards/lets_split/rev1/rev1.h
+++ b/keyboards/lets_split/rev1/rev1.h
@@ -1,15 +1,12 @@
 #ifndef REV1_H
 #define REV1_H
 
-<<<<<<< HEAD
 #include "../lets_split.h"
 
 //void promicro_bootloader_jmp(bool program);
-=======
 #include "quantum.h"
 
-void promicro_bootloader_jmp(bool program);
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+//void promicro_bootloader_jmp(bool program);
 
 #define KEYMAP( \
 	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h
index 19c137e56..e9689d773 100644
--- a/keyboards/lets_split/rev2/config.h
+++ b/keyboards/lets_split/rev2/config.h
@@ -41,14 +41,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 // #define USE_I2C
 
-<<<<<<< HEAD
 // Use serial if not using I2C
 #ifndef USE_I2C
 #  define USE_SERIAL
 #endif
 
-=======
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 // #define EE_HANDS
 
 #define I2C_MASTER_LEFT
@@ -77,19 +74,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 )
 
 /* ws2812 RGB LED */
-<<<<<<< HEAD
 #define RGB_DI_PIN D3
 #define RGBLIGHT_TIMER
 #define RGBLED_NUM 12    // Number of LEDs
-=======
 #define ws2812_PORTREG  PORTD
 #define ws2812_DDRREG   DDRD
-#define ws2812_pin PD1
-#define RGBLED_NUM 28     // Number of LEDs
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
 
 /*
  * Feature disable options
@@ -109,8 +98,5 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-<<<<<<< HEAD
-#endif
-=======
-#endif
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+
+#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c
index 41dd1e353..c505d3a6e 100644
--- a/keyboards/lets_split/rev2/rev2.c
+++ b/keyboards/lets_split/rev2/rev2.c
@@ -24,15 +24,9 @@ void matrix_init_kb(void) {
 };
 
 void shutdown_user(void) {
-<<<<<<< HEAD
     #ifdef AUDIO_ENABLE
         PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
 	_delay_ms(150);
 	stop_all_notes();
     #endif
-=======
-    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
-    _delay_ms(150);
-    stop_all_notes();
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
 }
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
index 9e251ca57..990976de2 100644
--- a/keyboards/lets_split/rev2/rev2.h
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -1,15 +1,12 @@
 #ifndef REV2_H
 #define REV2_H
 
-<<<<<<< HEAD
 #include "../lets_split.h"
 
 //void promicro_bootloader_jmp(bool program);
-=======
 #include "quantum.h"
 
-void promicro_bootloader_jmp(bool program);
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+//void promicro_bootloader_jmp(bool program);
 
 #define KEYMAP( \
 	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile
index c65665142..57b2ef62e 100644
--- a/keyboards/maxipad/Makefile
+++ b/keyboards/maxipad/Makefile
@@ -1,81 +1,3 @@
-<<<<<<< HEAD
 ifndef MAKEFILE_INCLUDED
 	include ../../Makefile
 endif
-=======
-
-
-# MCU name
-#MCU = at90usb1287
-MCU = atmega32u4
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency in Hz. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-#
-#     This will be an integer division of F_USB below, as it is sourced by
-#     F_USB after it has run through any CPU prescalers. Note that this value
-#     does not *change* the processor frequency - it should merely be updated to
-#     reflect the processor speed set externally so that the code can use accurate
-#     software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-#     This will define a symbol, F_USB, in all source code files equal to the
-#     input clock frequency (before any prescaling is performed) in Hz. This value may
-#     differ from F_CPU if prescaling is used on the latter, and is required as the
-#     raw input clock is fed directly to the PLL sections of the AVR for high speed
-#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-#     at the end, this will be done automatically to create a 32-bit value in your
-#     source code.
-#
-#     If no clock division is performed on the input clock inside the AVR (via the
-#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-#   Teensy halfKay   512
-#   Teensy++ halfKay 1024
-#   Atmel DFU loader 4096
-#   LUFA bootloader  4096
-#   USBaspLoader     2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE ?= no      # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes        # Console for debug(+400)
-COMMAND_ENABLE ?= yes        # 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
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE ?= no            # USB Nkey Rollover
-BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE ?= no            # MIDI controls
-UNICODE_ENABLE ?= no         # Unicode
-BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE ?= no           # Audio output on port C6
-
-ifndef QUANTUM_DIR
-	include ../../Makefile
-endif
-
-
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h
index 4a942aae9..fbe64a5b0 100644
--- a/keyboards/maxipad/config.h
+++ b/keyboards/maxipad/config.h
@@ -24,15 +24,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define VENDOR_ID       0xFEED
 #define PRODUCT_ID      0x6060
 #define DEVICE_VER      0x0001
-<<<<<<< HEAD
-#define MANUFACTURER    You
-#define PRODUCT         maxipad
-#define DESCRIPTION     A custom keyboard
-=======
 #define MANUFACTURER    Wootpatoot
 #define PRODUCT         maxipad
-#define DESCRIPTION     g8ming keeb
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+#define DESCRIPTION     A custom keyboard
+
 
 /* key matrix size */
 #define MATRIX_ROWS 5
diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c
index 5e3a594cc..43ace3241 100644
--- a/keyboards/maxipad/keymaps/default/keymap.c
+++ b/keyboards/maxipad/keymaps/default/keymap.c
@@ -10,15 +10,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 ),
 [1] = KEYMAP(
   KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \
-<<<<<<< HEAD
   KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \
   KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, \
-=======
   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS  \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
 ),
 };
 

From b085a34506bc981a7c7cdb270b7786d6a4cbf985 Mon Sep 17 00:00:00 2001
From: climbalima <climbalima@users.noreply.github.com>
Date: Wed, 16 Nov 2016 20:44:49 -0500
Subject: [PATCH 8/8] fixed readme conflicts

---
 keyboards/maxipad/readme.md | 22 ++--------------------
 1 file changed, 2 insertions(+), 20 deletions(-)

diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md
index 1971ce1f3..ab7b122fe 100644
--- a/keyboards/maxipad/readme.md
+++ b/keyboards/maxipad/readme.md
@@ -1,13 +1,7 @@
-maxipad keyboard firmware
-======================
-
 ## Quantum MK Firmware
 
-<<<<<<< HEAD
 For the full Quantum feature list, see [the parent readme](/).
-=======
-For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+
 
 ## Building
 
@@ -17,17 +11,13 @@ Depending on which keymap you would like to use, you will have to compile slight
 
 ### Default
 
-<<<<<<< HEAD
-To build with the default keymap, simply run `make default`.
-=======
 To build with the default keymap, simply run `make`.
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df
+
 
 ### Other Keymaps
 
 Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
 
-<<<<<<< HEAD
 To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
 
 ```
@@ -35,12 +25,4 @@ $ make [default|jack|<name>]
 ```
 
 Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
-=======
-To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
 
-```
-$ make keymap=[default|jack|<name>]
-```
-
-Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df