summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrice Figureau <brice-puppet@daysofwonder.com>2019-01-29 02:05:43 +0100
committerDrashna Jaelre <drashna@live.com>2019-01-28 17:05:43 -0800
commit03d9e3fe799ff70bba2c30b3cc160811c363dce6 (patch)
tree3a2d30bc82a4c7380584b8c82254b7469c0c5af4
parentdf251d7a1387390383f12b3ff31d71d7e3de5a42 (diff)
downloadqmk_firmware-03d9e3fe799ff70bba2c30b3cc160811c363dce6.tar.gz
qmk_firmware-03d9e3fe799ff70bba2c30b3cc160811c363dce6.zip
[Keyboard] E7-V1 keyboard support (#4965)
* Add the e7-v1 keyboard The e7-v1 is a 75% keyboard made by Exclusive based on an Atmega32u4 pub with RGB lights on top and backlighting. This PR add supports for the regular ANSI layout and ANSI split backspace layout. No ISO yet :( * My e7-v1 keymap Difference from base layout: * split backspace * Home & End on last keys of row 0 instead of Insert/Del * Fn is on the End key when hold * supports both a windows/linux keymap and osx keymap * layer change is reflected in the rgb leds of the logo
-rw-r--r--keyboards/e7v1/config.h47
-rw-r--r--keyboards/e7v1/e7v1.c25
-rw-r--r--keyboards/e7v1/e7v1.h103
-rw-r--r--keyboards/e7v1/keymaps/ansi_splitbs/keymap.c37
-rw-r--r--keyboards/e7v1/keymaps/ansi_splitbs/readme.md5
-rw-r--r--keyboards/e7v1/keymaps/default/keymap.c37
-rw-r--r--keyboards/e7v1/keymaps/default/readme.md5
-rw-r--r--keyboards/e7v1/keymaps/masterzen/keymap.c138
-rw-r--r--keyboards/e7v1/keymaps/masterzen/readme.md14
-rw-r--r--keyboards/e7v1/readme.md15
-rw-r--r--keyboards/e7v1/rules.mk54
11 files changed, 480 insertions, 0 deletions
diff --git a/keyboards/e7v1/config.h b/keyboards/e7v1/config.h
new file mode 100644
index 0000000000..653d874041
--- /dev/null
+++ b/keyboards/e7v1/config.h
@@ -0,0 +1,47 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x7050
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Exclusive / E - Team
+#define PRODUCT E7 - V1
+#define DESCRIPTION E7 - V1 QMK PCB(LED)
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5 }
+#define MATRIX_COL_PINS { B6, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7, F1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 6
+#endif
+
+/* 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
+
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 20
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/e7v1/e7v1.c b/keyboards/e7v1/e7v1.c
new file mode 100644
index 0000000000..381585e6cf
--- /dev/null
+++ b/keyboards/e7v1/e7v1.c
@@ -0,0 +1,25 @@
+#include "e7v1.h"
+
+void matrix_init_kb(void) {
+ setPinOutput(F0);
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+ writePinHigh(F0);
+ } else {
+ writePinLow(F0);
+ }
+
+ led_set_user(usb_led);
+}
+
diff --git a/keyboards/e7v1/e7v1.h b/keyboards/e7v1/e7v1.h
new file mode 100644
index 0000000000..45ef519cd0
--- /dev/null
+++ b/keyboards/e7v1/e7v1.h
@@ -0,0 +1,103 @@
+#pragma once
+
+#include "quantum.h"
+
+// layout with all the switches supported by the PCB
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K505, K510, K511, K512, K513, K514, K515 \
+) { \
+ { K000, K001, K002, K003, KC_NO, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, KC_NO }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
+}
+
+#define LAYOUT_75_ansi( \
+ K000, K001, K002, K003, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K505, K510, K512, K513, K514, K515 \
+) { \
+ { K000, K001, K002, K003, KC_NO, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, KC_NO }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
+}
+
+// Ansi layout with a 7u space bar
+#define LAYOUT_75_ansi_7u( \
+ K000, K001, K002, K003, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K505, K510, K512, K513, K514, K515 \
+) { \
+ { K000, K001, K002, K003, KC_NO, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, KC_NO }, \
+ { K500, K501, KC_NO, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
+}
+
+// ANSI layout with split backspace
+#define LAYOUT_75_ansi_splitbs( \
+ K000, K001, K002, K003, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400 , K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K505, K510, K512, K513, K514, K515 \
+) { \
+ { K000, K001, K002, K003, KC_NO, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, KC_NO }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
+}
+
+// ANSI layout with split backspace
+#define LAYOUT_75_ansi_7u_splitbs( \
+ K000, K001, K002, K003, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400 , K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K505, K510, K512, K513, K514, K515 \
+) { \
+ { K000, K001, K002, K003, KC_NO, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, KC_NO }, \
+ { K500, K501, KC_NO, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
+}
+
+#define LAYOUT_75_iso( \
+ K000, K001, K002, K003, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K505, K510, K512, K513, K514, K515 \
+) { \
+ { K000, K001, K002, K003, KC_NO, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, KC_NO }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
+}
diff --git a/keyboards/e7v1/keymaps/ansi_splitbs/keymap.c b/keyboards/e7v1/keymaps/ansi_splitbs/keymap.c
new file mode 100644
index 0000000000..242020b20a
--- /dev/null
+++ b/keyboards/e7v1/keymaps/ansi_splitbs/keymap.c
@@ -0,0 +1,37 @@
+#include QMK_KEYBOARD_H
+
+/*
+ * ,---------------------------------------------------------------------|
+ * |Esc|▓|F1 |F2 |F3 |F4 |▓|F5 |F6 |F7 |F8 |▓|F9 |F10|F11|F12|▓|Ins|▓|Del|
+ * |---------------------------------------------------------------------|
+ * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |\ |Del|▓PgU |
+ * |---------------------------------------------------------------------|
+ * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | BSpc|▓PgDn|
+ * |---------------------------------------------------------------------|
+ * |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter |▓▓▓▓▓▓▓|
+ * |---------------------------------------------------------------------|
+ * |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |▓| Up |▓▓|
+ * |---------------------------------------------------------------------|
+ * |Ctrl|GUI |Alt | Space |Alt |Fn |▓|Lt |Dn |Rt |
+ * `---------------------------------------------------------------------|'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_75_ansi_splitbs(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,KC_DEL, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_75_ansi_splitbs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_DEC, BL_INC, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, MO(1), RGB_MOD, RGB_VAD, RGB_HUD),
+
+
+};
diff --git a/keyboards/e7v1/keymaps/ansi_splitbs/readme.md b/keyboards/e7v1/keymaps/ansi_splitbs/readme.md
new file mode 100644
index 0000000000..be9f4c312e
--- /dev/null
+++ b/keyboards/e7v1/keymaps/ansi_splitbs/readme.md
@@ -0,0 +1,5 @@
+# ANSI split backspace Keymap
+
+Split backspace ANSI keymap with a base layer and an adjust layer.
+
+Keymap Maintainer: [masterzen](https://github.com/amnesia0287)
diff --git a/keyboards/e7v1/keymaps/default/keymap.c b/keyboards/e7v1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..189c01eca2
--- /dev/null
+++ b/keyboards/e7v1/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+#include QMK_KEYBOARD_H
+
+/*
+ * ,---------------------------------------------------------------------|
+ * |Esc|▓|F1 |F2 |F3 |F4 |▓|F5 |F6 |F7 |F8 |▓|F9 |F10|F11|F12|▓|Ins|▓|Del|
+ * |---------------------------------------------------------------------|
+ * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace|▓PgU |
+ * |---------------------------------------------------------------------|
+ * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ |▓PgDn|
+ * |---------------------------------------------------------------------|
+ * |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter |▓▓▓▓▓▓▓|
+ * |---------------------------------------------------------------------|
+ * |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |▓| Up |▓▓|
+ * |---------------------------------------------------------------------|
+ * |Ctrl|GUI |Alt | Space |Alt |Fn |▓|Lt |Dn |Rt |
+ * `---------------------------------------------------------------------|'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_75_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_75_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_DEC, BL_INC, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, MO(1), RGB_MOD, RGB_VAD, RGB_HUD),
+
+
+};
diff --git a/keyboards/e7v1/keymaps/default/readme.md b/keyboards/e7v1/keymaps/default/readme.md
new file mode 100644
index 0000000000..a6fc70a6aa
--- /dev/null
+++ b/keyboards/e7v1/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# Default Keymap
+
+Default ANSI keymap with a base layer and an adjust layer.
+
+Keymap Maintainer: [masterzen](https://github.com/amnesia0287)
diff --git a/keyboards/e7v1/keymaps/masterzen/keymap.c b/keyboards/e7v1/keymaps/masterzen/keymap.c
new file mode 100644
index 0000000000..61a41f629c
--- /dev/null
+++ b/keyboards/e7v1/keymaps/masterzen/keymap.c
@@ -0,0 +1,138 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ BASE, // qwerty linux
+ OSX, // qwerty osx
+
+ _ADJUST, // function key layer
+};
+
+enum keycodes {
+ // default layout switcher
+ LAY_LIN = SAFE_RANGE,
+ LAY_OSX
+};
+
+/*
+ * ,---------------------------------------------------------------------|
+ * |Esc|▓|F1 |F2 |F3 |F4 |▓|F5 |F6 |F7 |F8 |▓|F9 |F10|F11|F12|▓|Hom|▓|End|
+ * |---------------------------------------------------------------------|
+ * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |\ |Del|▓PgU |
+ * |---------------------------------------------------------------------|
+ * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | BSpc|▓PgDn|
+ * |---------------------------------------------------------------------|
+ * |LCTRL |A |S |D |F |G |H |J |K |L |; |' | Enter |▓▓▓▓▓▓▓|
+ * |---------------------------------------------------------------------|
+ * |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |▓| Up |▓▓|
+ * |---------------------------------------------------------------------|
+ * |Ctrl|GUI |Alt | Space |Alt |Fn |▓|Lt |Dn |Rt |
+ * `---------------------------------------------------------------------|'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_75_ansi_splitbs(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, LT(_ADJUST,KC_END),
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,KC_DEL, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [OSX] = LAYOUT_75_ansi_splitbs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, KC_LGUI, KC_RALT, _______, _______, _______),
+
+ [_ADJUST] = LAYOUT_75_ansi_splitbs(
+ RESET, LAY_LIN, LAY_OSX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_ADJUST),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_DEC, BL_INC, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_VAD, RGB_HUD),
+
+
+};
+
+extern rgblight_config_t rgblight_config;
+
+bool edit = false;
+uint32_t mode;
+uint16_t hue;
+uint8_t sat;
+uint8_t val;
+
+void matrix_init_user(void)
+{
+ mode = rgblight_config.mode;
+}
+
+
+void persistent_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)
+ {
+ /* layout switcher */
+ case LAY_LIN:
+ if (record->event.pressed)
+ {
+ persistent_default_layer_set(1UL << BASE);
+ }
+ return false;
+ break;
+ case LAY_OSX:
+ if (record->event.pressed)
+ {
+ persistent_default_layer_set(1UL << OSX);
+ }
+ return false;
+ break;
+ case RGB_MOD:
+ // allows to set the rgb mode while in the ADJUST layer which uses
+ // its own mode
+ if (record->event.pressed)
+ {
+ rgblight_mode(mode);
+ rgblight_step();
+ mode = rgblight_config.mode;
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+uint32_t layer_state_set_user(uint32_t state)
+{
+ if (state == BASE && edit == true)
+ {
+ hue = rgblight_get_hue();
+ sat = rgblight_get_sat();
+ val = rgblight_get_val();
+ edit = false;
+ }
+
+ switch (biton32(state))
+ {
+ case _ADJUST:
+ mode = rgblight_get_mode();
+ rgblight_mode_noeeprom(1);
+ rgblight_setrgb(0xD3, 0x7F, 0xED);
+ edit = true;
+ break;
+ default:
+ rgblight_mode(mode);
+ rgblight_sethsv(hue, sat, val);
+ break;
+ }
+ return state;
+}
diff --git a/keyboards/e7v1/keymaps/masterzen/readme.md b/keyboards/e7v1/keymaps/masterzen/readme.md
new file mode 100644
index 0000000000..ee4f2a531f
--- /dev/null
+++ b/keyboards/e7v1/keymaps/masterzen/readme.md
@@ -0,0 +1,14 @@
+# masterzen's Keymap
+
+![masterzen keymap Layout Image](https://imgur.com/SF4UP2j)
+
+Keymap Maintainer: [masterzen](https://github.com/masterzen)
+
+
+Difference from base layout:
+ * split backspace
+ * Home & End on last keys of row 0 instead of Insert/Del
+ * Fn is on the End key when hold
+ * supports both a windows/linux keymap and osx keymap
+ * layer change is reflected in the rgb leds of the logo
+
diff --git a/keyboards/e7v1/readme.md b/keyboards/e7v1/readme.md
new file mode 100644
index 0000000000..6224694b4f
--- /dev/null
+++ b/keyboards/e7v1/readme.md
@@ -0,0 +1,15 @@
+# E7-V1
+
+![E7-V1](https://imgur.com/a/5v5pV9U)
+
+A 75% keyboard made by Exclusive and run in a Geekhack group buy.
+
+Keyboard Maintainer: [masterzen](https://github.com/masterzen)
+Hardware Supported: E7 - V1 QMK PCB LED
+Hardware Availability: [https://geekhack.org/index.php?topic=97182.msg2654226#msg2654226](https://geekhack.org/index.php?topic=97182.msg2654226#msg2654226)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make e7v1:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/e7v1/rules.mk b/keyboards/e7v1/rules.mk
new file mode 100644
index 0000000000..f903df7de5
--- /dev/null
+++ b/keyboards/e7v1/rules.mk
@@ -0,0 +1,54 @@
+# MCU name
+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
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = yes