From d1c35b12555cafcb0ca6107cfca9b0ef13c0276c Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Fri, 16 Sep 2016 22:02:33 -0700
Subject: [PATCH 001/163] removed a couple of mod_tap keys since they had some
 unintended conseqeunces across various platforms.

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

diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c
index 192933b18..9998f2a38 100644
--- a/keyboards/planck/keymaps/xyverz/keymap.c
+++ b/keyboards/planck/keymaps/xyverz/keymap.c
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_DVORAK] = {
   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH},
   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS},
-  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_T(KC_ENT)},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT},
   {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 

From 26d6b90dde303099405e5d61d8304af2e31f845b Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sat, 17 Sep 2016 14:43:25 -0700
Subject: [PATCH 002/163] Update readme.md

---
 keyboards/ergodox/keymaps/xyverz/readme.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md
index 6ecdabc9e..2d72fa6c2 100644
--- a/keyboards/ergodox/keymaps/xyverz/readme.md
+++ b/keyboards/ergodox/keymaps/xyverz/readme.md
@@ -19,7 +19,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	,--------------------------------------------------.,--------------------------------------------------.
 	|   ]    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   [    |
 	|--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
-	| Tab    |   '  |   ,  |   .  |   Y  |   Y  |      ||      |   F  |   G  |   C  |   R  |   L  |   \    |
+	| Tab    |   '  |   ,  |   .  |   P  |   Y  |      ||      |   F  |   G  |   C  |   R  |   L  |   \    |
 	|--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
 	| CapsLk |   A  |   O  |   E  |   U  |   I  |------||------|   D  |   H  |   T  |   N  |   S  |   -    |
 	|--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|

From a03d72f597f8595fa76b64825f1b7934646f422c Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Fri, 30 Sep 2016 13:05:21 -0700
Subject: [PATCH 003/163] Updates to my Planck keymap - standardizing the
 bottom row.

---
 keyboards/planck/keymaps/xyverz/keymap.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c
index 9998f2a38..bbb83faf1 100644
--- a/keyboards/planck/keymaps/xyverz/keymap.c
+++ b/keyboards/planck/keymaps/xyverz/keymap.c
@@ -50,8 +50,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_QWERTY] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
   {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
-  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  {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_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Colemak
@@ -68,8 +68,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_COLEMAK] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
   {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
-  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Dvorak

From 8cd3a8402571bb9d0c28579060f59a4ac26c37e5 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Fri, 30 Sep 2016 22:43:15 -0700
Subject: [PATCH 004/163] revisions to my keymap again.

---
 keyboards/tv44/keymaps/xyverz/keymap.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/keyboards/tv44/keymaps/xyverz/keymap.c b/keyboards/tv44/keymaps/xyverz/keymap.c
index 8cbcf8d35..6026c1cab 100644
--- a/keyboards/tv44/keymaps/xyverz/keymap.c
+++ b/keyboards/tv44/keymaps/xyverz/keymap.c
@@ -22,10 +22,10 @@ extern keymap_config_t keymap_config;
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   [_DV] = { /* 0: Dvorak */
-    {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC },
-    {MO(_L1), KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_ENT  },
+    {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
+    {MO(_L1), KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    LT(_L2, KC_MINS)},
     {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
-    {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  KC_SLSH, KC_MINS, XXXXXXX, MO(_L2) }
+    {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  KC_BSLS, KC_EQL,  XXXXXXX, KC_ENT  }
   },
 
   [_QW] = { /* 1: Qwerty */
@@ -46,14 +46,14 @@ 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_DEL  },
     {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_DOWN, KC_UP,   KC_LEFT, KC_RGHT, _______ },
     {_______, _______, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT },
-    {KC_ESC,  KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_SLSH, _______, _______ }
+    {KC_ESC,  KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_EQL,  _______, _______ }
   },
 
   [_L2] = { /* 2: FN 2 */
-    {KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_ESC  },
-    {_______, KC_F11,  KC_F12,  _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_VOLU, KC_ENT  },
-    {_______, _______, _______, _______, _______, _______, _______, _______, KC_END,  KC_PGDN, KC_VOLD, _______ },
-    {QWERTY,  DVORAK,  COLEMAK, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______ }
+    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ESC  },
+    {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   _______, KC_HOME, KC_PGUP, KC_VOLU, _______ },
+    {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, KC_END,  KC_PGDN, KC_VOLD, _______ },
+    {QWERTY,  DVORAK,  COLEMAK, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PLUS, _______, _______ }
   }
 
 };

From e3c3170610561042df3d67f358c15553878a2012 Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Fri, 30 Sep 2016 23:10:34 -0700
Subject: [PATCH 005/163] More standardization between the three layouts
 Swapped Number Row with Symbols between _L1 and _L2.

---
 keyboards/tv44/keymaps/xyverz/keymap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/keyboards/tv44/keymaps/xyverz/keymap.c b/keyboards/tv44/keymaps/xyverz/keymap.c
index 6026c1cab..00347b019 100644
--- a/keyboards/tv44/keymaps/xyverz/keymap.c
+++ b/keyboards/tv44/keymaps/xyverz/keymap.c
@@ -30,27 +30,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
   [_QW] = { /* 1: Qwerty */
     {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC },
-    {MO(_L1), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_ENT  },
+    {MO(_L1), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, LT(_L2, KC_QUOT)},
     {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
-    {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  KC_SLSH, KC_MINS, XXXXXXX, MO(_L2) }
+    {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  KC_SLSH, KC_MINS, XXXXXXX, KC_ENT  }
   },
 
   [_CM] = { /* 2: Colemak */
     {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC },
-    {MO(_L1), KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_ENT  },
+    {MO(_L1), KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    LT(_L2, 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_RSFT },
-    {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  KC_SLSH, KC_MINS, XXXXXXX, MO(_L2) }
+    {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  KC_SLSH, KC_MINS, XXXXXXX, KC_ENT  }
   },
 
   [_L1] = {/* 1: FN 1 */
-    {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_GRV,  KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL  },
     {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_DOWN, KC_UP,   KC_LEFT, KC_RGHT, _______ },
     {_______, _______, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT },
     {KC_ESC,  KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_EQL,  _______, _______ }
   },
 
   [_L2] = { /* 2: FN 2 */
-    {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ESC  },
+    {KC_TILD, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_ESC  },
     {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   _______, KC_HOME, KC_PGUP, KC_VOLU, _______ },
     {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, KC_END,  KC_PGDN, KC_VOLD, _______ },
     {QWERTY,  DVORAK,  COLEMAK, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PLUS, _______, _______ }

From f41d540e81d21ad5697cf6e48ad1c09edd9a1cb9 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Tue, 18 Oct 2016 16:28:44 -0700
Subject: [PATCH 006/163] Add files via upload

Minor changes to my Dvorak keymap. Updated the readme.md to reflect these changes.
---
 keyboards/ergodox/keymaps/xyverz/keymap.c  | 14 +++++++-------
 keyboards/ergodox/keymaps/xyverz/readme.md |  6 +++---
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/keyboards/ergodox/keymaps/xyverz/keymap.c b/keyboards/ergodox/keymaps/xyverz/keymap.c
index 08ee5aeda..ec909ec53 100644
--- a/keyboards/ergodox/keymaps/xyverz/keymap.c
+++ b/keyboards/ergodox/keymaps/xyverz/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Layer 0 : Dvorak
  * ,--------------------------------------------------. ,--------------------------------------------------.
- * |   ]    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   [    |
+ * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   /    |
  * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  * | Tab    |   '  |   ,  |   .  |   P  |   Y  |      | |      |   F  |   G  |   C  |   R  |   L  |   \    |
  * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
  * | LShift |   ;  |   Q  |   J  |   K  |   X  |      | |      |   B  |   M  |   W  |   V  |   Z  | RShift |
  * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   /  |   =  | RGUI |
+ *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
  *   `----------------------------------'                             `----------------------------------'
  *                                      ,-------------. ,-------------.
  *                                      | LCTL | LALT | | RALT | RCTL |
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_DV] = KEYMAP(
         // left hand
-        KC_RBRC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_ESC,
+        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_ESC,
         KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    XXXXXXX,
         KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,
         KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    MO(_MD),
@@ -70,11 +70,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                                      KC_HOME,
                                    KC_BSPC, KC_DEL,  KC_END,
         // right hand
-        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC,
+        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_SLSH,
         XXXXXXX, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSLS,
                  KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,
         MO(_KP), KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,
-                          KC_UP,   KC_DOWN, KC_SLSH, KC_EQL,  KC_RGUI,
+                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
         KC_RALT, KC_RCTL,
         KC_PGUP,
         KC_PGDN, KC_ENT,  KC_SPC
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
  * | LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   N  |   M  |   ,  |   .  |   /  | RShift |
  * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   /  |   =  | RGUI |
+ *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
  *   `----------------------------------'                             `----------------------------------'
  *                                      ,-------------. ,-------------.
  *                                      | LCTL | LALT | | RALT | RCTL |
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
  * | LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   K  |   M  |   ,  |   .  |   /  | RShift |
  * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   /  |   =  | RGUI |
+ *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
  *   `----------------------------------'                             `----------------------------------'
  *                                      ,-------------. ,-------------.
  *                                      | LCTL | LALT | | RALT | RCTL |
diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md
index 2d72fa6c2..134fb50af 100644
--- a/keyboards/ergodox/keymaps/xyverz/readme.md
+++ b/keyboards/ergodox/keymaps/xyverz/readme.md
@@ -2,7 +2,7 @@
 
 ## About this keymap:
 
-The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my ErgoDox.
+The Dvorak layout shown here stems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. ~~Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my ErgoDox.~~ I've decided do give the normal placing of the SLSH, EQL, and xBRC keys a try, after using a different keyboard for a while...
 
 The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
 
@@ -17,7 +17,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 ### Layer 0: Dvorak layer
 
 	,--------------------------------------------------.,--------------------------------------------------.
-	|   ]    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   [    |
+	|   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   /    |
 	|--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
 	| Tab    |   '  |   ,  |   .  |   P  |   Y  |      ||      |   F  |   G  |   C  |   R  |   L  |   \    |
 	|--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
@@ -25,7 +25,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	|--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
 	| LShift |   Z  |   X  |   C  |   V  |   X  |      ||      |   B  |   M  |   W  |   V  |   Z  | RShift |
 	`--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
-	  | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   /  |   =  | RGUI |
+	  | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
 	  `----------------------------------'                            `----------------------------------'
 	                                     ,-------------.,-------------.
 	                                     | LCtr | LAlt || Ralt | RCtr |

From 7920063035f45ce76541083e64ea66c77041a5c3 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Tue, 18 Oct 2016 16:34:00 -0700
Subject: [PATCH 007/163] Add files via upload

Minor layout changes.
---
 keyboards/atreus/keymaps/xyverz/keymap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/keyboards/atreus/keymaps/xyverz/keymap.c b/keyboards/atreus/keymaps/xyverz/keymap.c
index b418cc9b5..f976b0531 100644
--- a/keyboards/atreus/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus/keymaps/xyverz/keymap.c
@@ -28,30 +28,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   [_DV] = { /* Dvorak */
     {KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_NO,   KC_F,    KC_G,    KC_C,    KC_R,    KC_L   },
     {KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_NO,   KC_D,    KC_H,    KC_T,    KC_N,    KC_S   },
-    {SFT_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, CTL_T(KC_DEL),  KC_B,  KC_M,  KC_W,  KC_V,   SFT_T(KC_Z) },
+    {SFT_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, CTL_T(KC_BSPC),  KC_B,  KC_M,  KC_W,  KC_V,   SFT_T(KC_Z) },
     {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_EQL}
   },
   [_QW] = { /* Qwerty */
     {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_NO,   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P   },
     {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN},
-    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
+    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_BSPC), KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
     {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT}
   },
   [_CM] = { /* Colemak */
     {KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_NO,   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN},
     {KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_NO,   KC_H,    KC_N,    KC_E,    KC_I,    KC_O   },
-    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_K, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
+    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_BSPC), KC_K, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
     {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT}
   },
   [_L1] = { /* LAYER 1 */
     {KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0   },
-    {KC_TAB,  KC_INS,  KC_UP,   KC_DEL,  KC_HOME, KC_NO,   KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU, KC_EQL },
-    {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_BSLS},
+    {KC_TAB,  KC_INS,  KC_UP,   KC_DEL,  KC_HOME, KC_NO,   KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS},
+    {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS},
     {KC_TRNS, KC_GRV,  KC_LGUI, KC_TRNS, KC_DEL,  KC_LALT, KC_SPC,  KC_TRNS, KC_LBRC, KC_RBRC, KC_ENT }
   },
   [_L2] = { /* LAYER 2 */
     {KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_NO,   KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
-    {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_NO,   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_PLUS},
+    {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_NO,   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_PIPE},
     {KC_TRNS, KC_TRNS, DVORAK,  QWERTY,  COLEMAK, KC_LCTL, KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12 },
     {KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_BSPC, KC_LALT, KC_SPC,  KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), RESET}
   }

From 91b1aa0994ad2296d03148d9bec8c455ef105fcb Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Tue, 18 Oct 2016 16:34:42 -0700
Subject: [PATCH 008/163] Add files via upload

Minor layout changes
---
 keyboards/preonic/keymaps/xyverz/keymap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/keyboards/preonic/keymaps/xyverz/keymap.c b/keyboards/preonic/keymaps/xyverz/keymap.c
index adc7392e5..bc4692f3e 100644
--- a/keyboards/preonic/keymaps/xyverz/keymap.c
+++ b/keyboards/preonic/keymaps/xyverz/keymap.c
@@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH},
   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS},
   {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT},
-  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_LGUI, KC_ENT }
 },
 
 /* Lower
@@ -339,4 +339,4 @@ void play_goodbye_tone()
   _delay_ms(150);
 }
 
-#endif
\ No newline at end of file
+#endif

From 61eb35191a482aafde7e5eaa66c9b4a6fc455488 Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Mon, 31 Oct 2016 17:58:22 -0700
Subject: [PATCH 009/163] Adding more keymaps.

---
 keyboards/clueboard/keymaps/xyverz/keymap.c | 108 ++++++++++++++++++++
 keyboards/gh60/keymaps/xyverz/keymap        |  61 +++++++++++
 keyboards/gh60/keymaps/xyverz/keymap.c      | 101 ++++++++++++++++++
 keyboards/gh60/keymaps/xyverz/keymap_orig.c |  61 +++++++++++
 4 files changed, 331 insertions(+)
 create mode 100644 keyboards/clueboard/keymaps/xyverz/keymap.c
 create mode 100644 keyboards/gh60/keymaps/xyverz/keymap
 create mode 100644 keyboards/gh60/keymaps/xyverz/keymap.c
 create mode 100644 keyboards/gh60/keymaps/xyverz/keymap_orig.c

diff --git a/keyboards/clueboard/keymaps/xyverz/keymap.c b/keyboards/clueboard/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..01f158bf0
--- /dev/null
+++ b/keyboards/clueboard/keymaps/xyverz/keymap.c
@@ -0,0 +1,108 @@
+#include "clueboard.h"
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// 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 _BL 0
+#define _FL 1
+#define _RS 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap _BL: (Base Layer) Default Layer
+   * ,--------------------------------------------------------------------------.  ,----.
+   * |Esc~|   1|   2|   3|   4|   5|   6|   7|   8|   9|   0|   -|   =|   \|  BS|  |PGUP|
+   * |--------------------------------------------------------------------------|  |----|
+   * |   Tab|   Q|   W|   E|   R|   T|   Y|   U|   I|   O|   P|   [|   ]|      \|  |PGDN|
+   * |--------------------------------------------------------------------------|  `----'
+   * |Capslck|   A|   S|   D|   F|   G|   H|   J|   K|   L|   ;|   '|   # |  Ent|
+   * |-----------------------------------------------------------------------------.
+   * |Shift|  BS|   Z|   X|   C|   V|   B|   N|   M|   ,|   .|   /|   BS|Shift|  UP|
+   * |------------------------------------------------------------------------|----|----.
+   * | Ctrl|  Gui|  Alt| MHen|    Space|    Space|  Hen|  Alt| Ctrl|  _FL|LEFT|DOWN|RGHT|
+   * `----------------------------------------------------------------------------------'
+   */
+[_BL] = KEYMAP(
+  F(0),    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_GRV,  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_NUHS,  KC_ENT,                             \
+  KC_LSFT, KC_NUBS, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,   KC_SLSH,  KC_RO,    KC_RSFT,          KC_UP,            \
+  KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN,          KC_SPC,KC_SPC,                        KC_HENK,  KC_RALT,  KC_RCTL,  MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+
+  /* Keymap _FL: Function Layer
+   * ,--------------------------------------------------------------------------.  ,----.
+   * |   `|  F1|  F2|  F3|  F4|  F5|  F6|  F7|  F8|  F9| F10| F11| F12|    | Del|  |BLIN|
+   * |--------------------------------------------------------------------------|  |----|
+   * |      |    |    |    |    |    |    |    |PScr|SLck|Paus|    |    |       |  |BLDE|
+   * |--------------------------------------------------------------------------|  `----'
+   * |       |    | _RS|    |    |    |    |    |    |    |    |    |     |     |
+   * |-----------------------------------------------------------------------------.
+   * |     |    |    |    |    |    |    |    |    |    |    |    |     |     |PGUP|
+   * |------------------------------------------------------------------------|----|----.
+   * |     |     |     |     |         |         |     |     |     |  _FL|HOME|PGDN| END|
+   * `----------------------------------------------------------------------------------'
+   */
+[_FL] = KEYMAP(
+  KC_GRV,  KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,   KC_F11,   KC_F12,   KC_TRNS, KC_DEL,           BL_STEP, \
+  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                   KC_TRNS, \
+  KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                           \
+  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,          KC_PGUP,         \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,        KC_TRNS,KC_TRNS,                        KC_TRNS,  KC_TRNS,  KC_TRNS,  MO(_FL), KC_HOME, KC_PGDN, KC_END),
+
+  /* Keymap _RS: Reset layer
+   * ,--------------------------------------------------------------------------.  ,----.
+   * |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |  |    |
+   * |--------------------------------------------------------------------------|  |----|
+   * |      |    |    |    |RESET|   |    |    |    |    |    |    |    |       |  |    |
+   * |--------------------------------------------------------------------------|  `----'
+   * |       |    | _RS|    |    |    |    |    |    |    |    |    |     |     |
+   * |-----------------------------------------------------------------------------.
+   * |     |    |    |    |    |    |    |    |    |    |    |    |     |     |    |
+   * |------------------------------------------------------------------------|----|----.
+   * |     |     |     |     |         |         |     |     |     |  _FL|    |    |    |
+   * `----------------------------------------------------------------------------------'
+   */
+[_RS] = KEYMAP(
+  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, RGB_TOG,             RGB_VAI, \
+  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET,  KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                   RGB_VAD, \
+  KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                         \
+  MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  MO(_FL),          RGB_SAI,          \
+  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,        RGB_MOD,   RGB_MOD,                            KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, RGB_HUD,    RGB_SAD,    RGB_HUI),
+};
+
+enum function_id {
+    SHIFT_ESC,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [0]  = ACTION_FUNCTION(SHIFT_ESC),
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  static uint8_t shift_esc_shift_mask;
+  switch (id) {
+    case SHIFT_ESC:
+      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+      if (record->event.pressed) {
+        if (shift_esc_shift_mask) {
+          add_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          add_key(KC_ESC);
+          send_keyboard_report();
+        }
+      } else {
+        if (shift_esc_shift_mask) {
+          del_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          del_key(KC_ESC);
+          send_keyboard_report();
+        }
+      }
+      break;
+  }
+}
diff --git a/keyboards/gh60/keymaps/xyverz/keymap b/keyboards/gh60/keymaps/xyverz/keymap
new file mode 100644
index 000000000..85b998a46
--- /dev/null
+++ b/keyboards/gh60/keymaps/xyverz/keymap
@@ -0,0 +1,61 @@
+#include "gh60.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP(
+	ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
+        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
+        FN0, A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,NO,  ENT,  \
+        LSFT,NO,  SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,   NO,  RSFT, \
+        LCTL,LALT,LGUI,          SPC,                NO,  RGUI,RALT,RCTL,FN0),
+    /* 1: fn */
+	KEYMAP(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
+        TRNS,TRNS,UP,  TRNS,TRNS,TRNS,TRNS,PGUP,UP,  PGDN,PSCR,SLCK,PAUS,TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS, DEL, TRNS,TRNS, \
+        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,END, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
+};
+
+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_scan_user(void) {
+
+//Layer LED indicators
+    uint32_t layer = layer_state;
+	
+    if (layer & (1<<1)) {
+        gh60_wasd_leds_on();
+        gh60_fn_led_on();
+    } else {
+        gh60_wasd_leds_off();
+        gh60_fn_led_off();
+    }
+	
+    if (layer & (1<<2)) {
+        gh60_poker_leds_on();
+        gh60_esc_led_on();
+    } else {
+        gh60_poker_leds_off();
+        gh60_esc_led_off();
+    }
+	
+};
diff --git a/keyboards/gh60/keymaps/xyverz/keymap.c b/keyboards/gh60/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..f0211a88b
--- /dev/null
+++ b/keyboards/gh60/keymaps/xyverz/keymap.c
@@ -0,0 +1,101 @@
+#include "gh60.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+
+extern keymap_config_t keymap_config;
+
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _DV 1
+#define _CM 2
+#define _FL 3
+
+// Macro name shortcuts
+#define QWERTY M(_QW)
+#define DVORAK M(_DV)
+#define COLEMAK M(_CM)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QW] = { /* Layer 0: Qwerty */
+    {KC_ESC,  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_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},
+    {MO(_FL), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT },
+    {KC_LSFT, XXXXXXX, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, XXXXXXX, KC_RSFT},
+    {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)}
+  },
+
+[_DV] = { /* Layer 1: Dvorak */
+    {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_BSPC},
+    {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,  KC_BSLS},
+    {MO(_FL), KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, XXXXXXX, KC_ENT },
+    {KC_LSFT, XXXXXXX, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    XXXXXXX, KC_RSFT},
+    {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)}
+  },
+
+[_CM] = { /* Layer 2: Colemak */
+    {KC_ESC,  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_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS},
+    {MO(_FL), KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, XXXXXXX, KC_ENT },
+    {KC_LSFT, XXXXXXX, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, XXXXXXX, KC_RSFT},
+    {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)}
+  },
+
+[_FL] = { /* Layer 3: Functions */
+    {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL },
+    {_______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP,   KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______},
+    {_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, XXXXXXX, _______},
+    {KC_CAPS, XXXXXXX, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_END,  _______, _______, _______, _______, _______, XXXXXXX, _______},
+    {QWERTY,  DVORAK,  COLEMAK, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______}
+  },
+
+
+};
+
+enum function_id {
+    SHIFT_ESC,
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _DV:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_DV);
+          }
+          break;
+        case _QW:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_QW);
+          }
+          break;
+        case _CM:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_CM);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboards/gh60/keymaps/xyverz/keymap_orig.c b/keyboards/gh60/keymaps/xyverz/keymap_orig.c
new file mode 100644
index 000000000..85b998a46
--- /dev/null
+++ b/keyboards/gh60/keymaps/xyverz/keymap_orig.c
@@ -0,0 +1,61 @@
+#include "gh60.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP(
+	ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
+        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
+        FN0, A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,NO,  ENT,  \
+        LSFT,NO,  SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,   NO,  RSFT, \
+        LCTL,LALT,LGUI,          SPC,                NO,  RGUI,RALT,RCTL,FN0),
+    /* 1: fn */
+	KEYMAP(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
+        TRNS,TRNS,UP,  TRNS,TRNS,TRNS,TRNS,PGUP,UP,  PGDN,PSCR,SLCK,PAUS,TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS, DEL, TRNS,TRNS, \
+        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,END, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
+};
+
+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_scan_user(void) {
+
+//Layer LED indicators
+    uint32_t layer = layer_state;
+	
+    if (layer & (1<<1)) {
+        gh60_wasd_leds_on();
+        gh60_fn_led_on();
+    } else {
+        gh60_wasd_leds_off();
+        gh60_fn_led_off();
+    }
+	
+    if (layer & (1<<2)) {
+        gh60_poker_leds_on();
+        gh60_esc_led_on();
+    } else {
+        gh60_poker_leds_off();
+        gh60_esc_led_off();
+    }
+	
+};

From 063328344ada87757595d6b6b11023a6848da2e4 Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Mon, 31 Oct 2016 18:04:01 -0700
Subject: [PATCH 010/163] Removed files that weren't supposed to be uploaded
 from gh60 keymap folder

---
 keyboards/gh60/keymaps/xyverz/keymap        | 61 ---------------------
 keyboards/gh60/keymaps/xyverz/keymap_orig.c | 61 ---------------------
 2 files changed, 122 deletions(-)
 delete mode 100644 keyboards/gh60/keymaps/xyverz/keymap
 delete mode 100644 keyboards/gh60/keymaps/xyverz/keymap_orig.c

diff --git a/keyboards/gh60/keymaps/xyverz/keymap b/keyboards/gh60/keymaps/xyverz/keymap
deleted file mode 100644
index 85b998a46..000000000
--- a/keyboards/gh60/keymaps/xyverz/keymap
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "gh60.h"
-#include "action_layer.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP(
-	ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        FN0, A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,NO,  ENT,  \
-        LSFT,NO,  SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,   NO,  RSFT, \
-        LCTL,LALT,LGUI,          SPC,                NO,  RGUI,RALT,RCTL,FN0),
-    /* 1: fn */
-	KEYMAP(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        TRNS,TRNS,UP,  TRNS,TRNS,TRNS,TRNS,PGUP,UP,  PGDN,PSCR,SLCK,PAUS,TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS, DEL, TRNS,TRNS, \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,END, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
-};
-
-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_scan_user(void) {
-
-//Layer LED indicators
-    uint32_t layer = layer_state;
-	
-    if (layer & (1<<1)) {
-        gh60_wasd_leds_on();
-        gh60_fn_led_on();
-    } else {
-        gh60_wasd_leds_off();
-        gh60_fn_led_off();
-    }
-	
-    if (layer & (1<<2)) {
-        gh60_poker_leds_on();
-        gh60_esc_led_on();
-    } else {
-        gh60_poker_leds_off();
-        gh60_esc_led_off();
-    }
-	
-};
diff --git a/keyboards/gh60/keymaps/xyverz/keymap_orig.c b/keyboards/gh60/keymaps/xyverz/keymap_orig.c
deleted file mode 100644
index 85b998a46..000000000
--- a/keyboards/gh60/keymaps/xyverz/keymap_orig.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "gh60.h"
-#include "action_layer.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP(
-	ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        FN0, A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,NO,  ENT,  \
-        LSFT,NO,  SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,   NO,  RSFT, \
-        LCTL,LALT,LGUI,          SPC,                NO,  RGUI,RALT,RCTL,FN0),
-    /* 1: fn */
-	KEYMAP(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        TRNS,TRNS,UP,  TRNS,TRNS,TRNS,TRNS,PGUP,UP,  PGDN,PSCR,SLCK,PAUS,TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS, DEL, TRNS,TRNS, \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,END, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
-};
-
-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_scan_user(void) {
-
-//Layer LED indicators
-    uint32_t layer = layer_state;
-	
-    if (layer & (1<<1)) {
-        gh60_wasd_leds_on();
-        gh60_fn_led_on();
-    } else {
-        gh60_wasd_leds_off();
-        gh60_fn_led_off();
-    }
-	
-    if (layer & (1<<2)) {
-        gh60_poker_leds_on();
-        gh60_esc_led_on();
-    } else {
-        gh60_poker_leds_off();
-        gh60_esc_led_off();
-    }
-	
-};

From 8dd422ffe1a84416dd4a8d38878979f5b7bbd51b Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Mon, 31 Oct 2016 18:27:05 -0700
Subject: [PATCH 011/163] Updates to keymap file.

---
 keyboards/gh60/keymaps/xyverz/keymap.c | 66 ++++++++++++++++++++++----
 1 file changed, 57 insertions(+), 9 deletions(-)

diff --git a/keyboards/gh60/keymaps/xyverz/keymap.c b/keyboards/gh60/keymaps/xyverz/keymap.c
index f0211a88b..e83a7f5a3 100644
--- a/keyboards/gh60/keymaps/xyverz/keymap.c
+++ b/keyboards/gh60/keymaps/xyverz/keymap.c
@@ -6,9 +6,6 @@
 extern keymap_config_t keymap_config;
 
 
-// Used for SHIFT_ESC
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
-
 // 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
@@ -29,6 +26,20 @@ extern keymap_config_t keymap_config;
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
+    /*
+     *  _QW: Qwerty Layer
+     * ,-----------------------------------------------------------.
+     * |ESC | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =| Backsp|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Fn     |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| Return|
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|     Shift|
+     * |-----------------------------------------------------------|
+     * |Ctrl|Alt |Gui |      Space             |Gui |Alt |Ctrl|  Fn|
+     * `-----------------------------------------------------------'
+     */
 [_QW] = { /* Layer 0: Qwerty */
     {KC_ESC,  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_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},
@@ -37,6 +48,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)}
   },
 
+    /*
+     *  _DV: Dvorak Layer
+     * ,-----------------------------------------------------------.
+     * |ESC | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  [|  ]| Backsp|
+     * |-----------------------------------------------------------|
+     * |Tab  |  '|  ,|  .|  P|  Y|  F|  G|  C|  R|  L|  /|  =|    \|
+     * |-----------------------------------------------------------|
+     * |Fn     |  A|  O|  E|  U|  I|  D|  H|  T|  N|  S|  -| Return|
+     * |-----------------------------------------------------------|
+     * |Shift   |  ;|  Q|  J|  K|  X|  B|  M|  W|  V|  Z|     Shift|
+     * |-----------------------------------------------------------|
+     * |Ctrl|Alt |Gui |      Space             |Gui |Alt |Ctrl|  Fn|
+     * `-----------------------------------------------------------'
+     */
 [_DV] = { /* Layer 1: Dvorak */
     {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_BSPC},
     {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,  KC_BSLS},
@@ -45,6 +70,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)}
   },
 
+    /*
+     *  _CM: Colemak Layer
+     * ,-----------------------------------------------------------.
+     * |ESC | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =| Backsp|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  F|  P|  G|  J|  L|  U|  Y|  ;|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Fn     |  A|  R|  S|  T|  D|  H|  N|  E|  I|  O|  '| Return|
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  K|  M|  ,|  .|  /|     Shift|
+     * |-----------------------------------------------------------|
+     * |Ctrl|Alt |Gui |      Space             |Gui |Alt |Ctrl|  Fn|
+     * `-----------------------------------------------------------'
+     */
 [_CM] = { /* Layer 2: Colemak */
     {KC_ESC,  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_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS},
@@ -53,22 +92,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)}
   },
 
+    /*
+     *  _FL: Function Layer
+     * ,-----------------------------------------------------------.
+     * |    |F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|    Del|
+     * |-----------------------------------------------------------|
+     * |     |   |   |   |   |   |   |PgU| Up|PgD|PSc|SLk|Pau|     |
+     * |-----------------------------------------------------------|
+     * |       |   |MPr|MPl|MNx|   |Hom| Lt| Dn| Rt|   |   |       |
+     * |-----------------------------------------------------------|
+     * |CAPS    |   |Mut|VlD|VlU|   |End|   |   |   |   |          |
+     * |-----------------------------------------------------------|
+     * |_QW |_DV |_CM |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     */
 [_FL] = { /* Layer 3: Functions */
     {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL },
     {_______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP,   KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______},
     {_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, XXXXXXX, _______},
-    {KC_CAPS, XXXXXXX, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_END,  _______, _______, _______, _______, _______, XXXXXXX, _______},
+    {KC_CAPS, XXXXXXX, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_END,  _______, _______, _______, _______, XXXXXXX, _______},
     {QWERTY,  DVORAK,  COLEMAK, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______}
   },
 
 
 };
 
-enum function_id {
-    SHIFT_ESC,
-};
-
-
 const uint16_t PROGMEM fn_actions[] = {
 
 };

From 59bef40aab37f8dd4db61e601f2a0e9b5991e993 Mon Sep 17 00:00:00 2001
From: Zach Nielsen <nielsen.zac@gmail.com>
Date: Thu, 10 Nov 2016 12:14:54 -0800
Subject: [PATCH 012/163] Keep unicode's input_mode through a power cycle

---
 quantum/process_keycode/process_unicode.c | 6 ++++++
 tmk_core/common/eeconfig.h                | 1 +
 2 files changed, 7 insertions(+)

diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index cd3a610b4..f42f25538 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -1,6 +1,7 @@
 #include "process_unicode.h"
 
 static uint8_t input_mode;
+static uint8_t first_flag = 0;
 
 __attribute__((weak))
 uint16_t hex_to_keycode(uint8_t hex)
@@ -17,6 +18,7 @@ uint16_t hex_to_keycode(uint8_t hex)
 void set_unicode_input_mode(uint8_t os_target)
 {
   input_mode = os_target;
+  eeprom_update_byte(EECONFIG_UNICODEMODE, os_target);
 }
 
 uint8_t get_unicode_input_mode(void) {
@@ -75,6 +77,10 @@ void register_hex(uint16_t hex) {
 
 bool process_unicode(uint16_t keycode, keyrecord_t *record) {
   if (keycode > QK_UNICODE && record->event.pressed) {
+    if (first_flag == 0) {
+      set_unicode_input_mode(eeprom_read_byte(EECONFIG_UNICODEMODE));
+      first_flag = 1;
+    }
     uint16_t unicode = keycode & 0x7FFF;
     unicode_input_start();
     register_hex(unicode);
diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h
index d8caa346f..280dc7ab6 100644
--- a/tmk_core/common/eeconfig.h
+++ b/tmk_core/common/eeconfig.h
@@ -33,6 +33,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define EECONFIG_BACKLIGHT                          (uint8_t *)6
 #define EECONFIG_AUDIO                              (uint8_t *)7
 #define EECONFIG_RGBLIGHT                           (uint32_t *)8
+#define EECONFIG_UNICODEMODE                        (uint8_t *)12
 
 
 /* debug bit */

From c07ef5c6abd7875c19c4bcbe3bcaecd123862fd3 Mon Sep 17 00:00:00 2001
From: Zach Nielsen <nielsen.zac@gmail.com>
Date: Thu, 10 Nov 2016 12:26:56 -0800
Subject: [PATCH 013/163] Adding my (zach) keymaps for planck and preonic

---
 keyboards/planck/keymaps/zach/Makefile        |  29 +
 keyboards/planck/keymaps/zach/config.h        |  91 +++
 keyboards/planck/keymaps/zach/keymap.c        |  48 ++
 .../keymaps/zach/zach_common_functions.c      | 538 ++++++++++++++++++
 keyboards/preonic/keymaps/zach/Makefile       |  29 +
 keyboards/preonic/keymaps/zach/config.h       |  95 ++++
 keyboards/preonic/keymaps/zach/keymap.c       |  54 ++
 .../keymaps/zach/zach_common_functions.c      | 538 ++++++++++++++++++
 8 files changed, 1422 insertions(+)
 create mode 100644 keyboards/planck/keymaps/zach/Makefile
 create mode 100644 keyboards/planck/keymaps/zach/config.h
 create mode 100644 keyboards/planck/keymaps/zach/keymap.c
 create mode 100644 keyboards/planck/keymaps/zach/zach_common_functions.c
 create mode 100644 keyboards/preonic/keymaps/zach/Makefile
 create mode 100644 keyboards/preonic/keymaps/zach/config.h
 create mode 100644 keyboards/preonic/keymaps/zach/keymap.c
 create mode 100644 keyboards/preonic/keymaps/zach/zach_common_functions.c

diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile
new file mode 100644
index 000000000..b0009147a
--- /dev/null
+++ b/keyboards/planck/keymaps/zach/Makefile
@@ -0,0 +1,29 @@
+# Zach Planck Makefile
+# Max .hex size is about 28636 bytes
+
+# 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
+#
+TAP_DANCE_ENABLE    = yes   # Enable TapDance functionality
+BOOTMAGIC_ENABLE    = no    # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE     = no    # Mouse keys(+4700)
+EXTRAKEY_ENABLE     = no    # Audio control and System control(+450)
+CONSOLE_ENABLE      = no    # Console for debug(+400)
+COMMAND_ENABLE      = no    # 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
+USB_6KRO_ENABLE     = no    # 6key Rollover
+BACKLIGHT_ENABLE    = no    # Enable keyboard backlight functionality
+MIDI_ENABLE         = no    # MIDI controls
+AUDIO_ENABLE        = no    # Audio output on port C6
+VARIABLE_TRACE      = no    # Debug changes to variable values
+UNICODE_ENABLE      = yes   # Unicode
+UNICODEMAP_ENABLE   = yes   # Enable extended 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.
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE    = no    # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
diff --git a/keyboards/planck/keymaps/zach/config.h b/keyboards/planck/keymaps/zach/config.h
new file mode 100644
index 000000000..1be800545
--- /dev/null
+++ b/keyboards/planck/keymaps/zach/config.h
@@ -0,0 +1,91 @@
+/*
+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 MANUFACTURER    Ortholinear Keyboards
+#define PRODUCT         The Planck Keyboard
+#define DESCRIPTION     A compact ortholinear keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/* Planck PCB default pin-out */
+#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
+#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN B7
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+//#define BACKLIGHT_BREATHING     // LED breathing
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 5
+
+/* 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)) \
+)
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+#define NO_ACTION_TAPPING
+#define NO_ACTION_ONESHOT
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define PREVENT_STUCK_MODIFIERS
+//#define DYNAMIC_MACRO_ENABLE    // Enable if you need to use the macro functionality
+//#define SPACE_CADET             // Parenthesis on L/R shift
+
+#ifdef SUBPROJECT_rev3
+    #include "rev3/config.h"
+#endif
+#ifdef SUBPROJECT_rev4
+    #include "rev4/config.h"
+#endif
+
+#endif
diff --git a/keyboards/planck/keymaps/zach/keymap.c b/keyboards/planck/keymaps/zach/keymap.c
new file mode 100644
index 000000000..d3cde5bb9
--- /dev/null
+++ b/keyboards/planck/keymaps/zach/keymap.c
@@ -0,0 +1,48 @@
+// Zach Nielsen     Custom Planck Keyboard layout
+#include "planck.h"
+#define PLANCK_YES                  // This is the Planck
+#include "zach_common_functions.c"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_COLEMAK] = { /* Base Layer */
+  {KC_ESC,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,   KC_J,   KC_L,    KC_U,    KC_Y,    KC_QUOT, KC_BSPC},
+  {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,   KC_H,   KC_N,    KC_E,    KC_I,    KC_O,    KC_ENT},
+  {SHFT_CAP,KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_K,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
+  {CTRLB,   TD(SUP), KC_LALT, KC_LCTL, TD(LOW), KC_SPC, KC_SPC, TD(RAI), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+[_SWCOLE] = { /* Software Colemak */
+  {_______, CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    KC_QUOT, _______},
+  {_______, CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,    _______},
+  {_______, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+},
+
+[_RAISE] = { /* RAISE - Numpad and Unicode symbols */
+  {KC_GRV,  SUPA2,   FACE,  DISFACE, SHRUG,   PLUMIN, IBANG,   KC_7,    KC_8, KC_9, KC_COLN, _______},
+  {KC_DEL,  DEGREE,  MICRO, WOMEGA,  OMEGA,   PENGY,  KC_ENT,  KC_4,    KC_5, KC_6, KC_SLSH, KC_ASTR},
+  {_______, KC_COLN, TFLIP, LAROW,   RAROW,   DUCK,   KC_SPC,  KC_1,    KC_2, KC_3, KC_MINS, KC_PLUS},
+  {_______, KC_PIPE, TPUT,  _______, _______, KC_TAB, KC_TAB,  _______, KC_0, KC_0, KC_DOT,  KC_EQL}
+},
+
+[_LOWER] = { /* LOWER - Symbols, Paging, CtrAltDel */
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_QUES, KC_DQT,  KC_DEL},
+  {KC_DEL,  KC_LBRC, KC_RBRC, KC_MINS, KC_UNDS, KC_HOME, KC_END,  KC_LPRN, KC_RPRN, KC_SLSH, KC_SCLN, KC_PGUP},
+  {CPYPST,  XXXXXXX, C(KC_X), KC_LABK, KC_RABK, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_BSLS, KC_COLN, KC_PGDN},
+  {_______, _______, _______, _______, _______, KC_TAB,  KC_TAB,  _______, _______, _______, _______, _______}
+},
+
+[_ADJUST] = { /* ADJUST - Macros, Layer Switching, Function Keys */
+  {UNIWIN,  Sil_Usr, Sil_Pas, PENGY,   DUCK,    KC_INS,  KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   XXXXXXX},
+  {UNILIN,  UltiU,   UltiP,   RANDIG,  RANDIG,  SWCOLE,  COLEMAK, KC_F5,   KC_F6,   KC_F7,   KC_F8,   XXXXXXX},
+  {_______, CADKEY,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX},
+  {_______, _______, _______, _______, _______, RESET,   RESET,   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+[_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */
+  {_______, TFLIP,   XXXXXXX, FINGER,  IBANG,   roman7,  XXXXXXX, XXXXXXX, ROMAN7,  TappyL,  TappyR,  _______},
+  {KC_DEL,  TPUT,    FACE,    DISFACE, SHRUG,   roman4,  roman5,  roman6,  ROMAN4,  ROMAN5,  ROMAN6,  _______},
+  {XXXXXXX, PENIS,   BOOBS,   LAROW,   RAROW,   roman1,  roman2,  roman3,  ROMAN1,  ROMAN2,  ROMAN3,  XXXXXXX},
+  {_______, _______, _______, _______, _______, KC_SPC,  KC_SPC,  _______, _______, _______, _______, _______}
+}
+};
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
new file mode 100644
index 000000000..f01929f5d
--- /dev/null
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -0,0 +1,538 @@
+#ifndef ZACH_COMMON_FUNCTIONS
+#define ZACH_COMMON_FUNCTIONS
+#include "eeconfig.h"
+#include "action_layer.h"
+#include "keymap_colemak.h"
+#include "extra_functions.c"
+extern keymap_config_t keymap_config;
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+#define C(n)    RCTL(n)
+#define CADKEY  RCTL(RALT(KC_DEL))
+
+void tap(uint16_t keycode){
+    register_code(keycode);
+    unregister_code(keycode);
+};
+
+void persistant_default_layer_set(uint16_t default_layer){
+    eeconfig_update_default_layer(default_layer);
+    default_layer_set(default_layer);
+};
+
+// Automatic number generation of important keywords
+enum my_keycodes{
+    // Layer numbers
+    _COLEMAK = 0,
+    _SWCOLE,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+    _UNICODES,
+    // These use process_record_user()
+    COLEMAK = SAFE_RANGE,
+    SWCOLE,
+    LOWER,
+    RAISE,
+    SHFT_CAP,
+    CTRLB,
+    CPYPST,
+    FACE,
+    UNIWIN,
+    UNILIN,
+    DISFACE,
+    TFLIP,
+    TPUT,
+    SHRUG,
+    PENIS,
+    BOOBS,
+    Sil_Pas,
+    Sil_Usr,
+    UltiU,
+    UltiP,
+    TappyR,
+    TappyL,
+    RANDIG,
+    FINGER,
+    // Tap_Dance nums
+    RAI = 0,
+    LOW,
+    SUP
+};
+
+#ifdef AUDIO_ENABLE
+#include "audio.h"
+float tone_startup[][2]         = SONG(STARTUP_SOUND);
+float tone_goodbye[][2]         = SONG(GOODBYE_SOUND);
+float tone_colemak[][2]         = SONG(COLEMAK_SOUND);
+float tone_swcole[][2]          = SONG(QWERTY_SOUND);
+float tone_capslock_on[][2]     = SONG(CAPS_LOCK_ON_SOUND);
+float tone_capslock_off[][2]    = SONG(CAPS_LOCK_OFF_SOUND);
+float tone_ctrl_mod[][2]        = SONG(COIN_SOUND);
+float tone_copy[][2]            = SONG(SCROLL_LOCK_ON_SOUND);
+float tone_paste[][2]           = SONG(SCROLL_LOCK_OFF_SOUND);
+float uniwin[][2]               = SONG(UNICODE_WINDOWS);
+float unilin[][2]               = SONG(UNICODE_LINUX);
+#endif
+
+#ifdef TAP_DANCE_ENABLE
+#define TAPPING_TERM 200
+
+uint8_t Lstate = 0, Rstate = 0;
+uint32_t Ltimer = 0, Rtimer = 0;
+uint32_t Ltimes[3], Rtimes[4];   // Ratio of tap times should be about 1.335 (L/R)
+void rhythm_parse(void){
+    int L = Ltimes[0] + Ltimes[1] + Ltimes[2];  // Start to end time
+    int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3];
+    if(abs(R-L) > 10){
+        tap(KC_N); tap(KC_O);
+        return;
+    } else {
+        L = (L / 3)*100;                    // Average time per tap * 100
+        R = (R / 4);
+        if(abs(abs(L/R)-133) > 1){
+            tap(KC_N); tap(KC_O);
+            tap(KC_P); tap(KC_E);
+            return;
+        } else {
+            tap(KC_O); tap(KC_K);
+            return;
+        }
+    }
+};
+
+void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap
+  switch(state->count){      // Only turn the layer on once
+    case 1:
+        layer_off(_UNICODES);
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        break;
+  }
+};
+void dance_raise_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release
+  switch(state->count){
+    case 1:         // Normal action. Turn off layers
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        layer_off(_UNICODES);
+        break;
+  }
+};
+/////////////////////////////////////////////////////////////////////
+void dance_lower_press(qk_tap_dance_state_t *state, void *user_data){// Called on tap
+  switch(state->count){
+    case 1:         // Turn on lower
+        layer_off(_UNICODES);
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        break;
+  }
+};
+void dance_lower_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release
+  switch(state->count){
+    case 1:         // Normal action. Turn off layers
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        layer_off(_UNICODES);
+        break;
+    case 2:         // Turn on _UNICODES layer
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        layer_on(_UNICODES);
+        #ifdef AUDIO_ENABLE
+            PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0);
+        #endif
+        break;
+  }
+};
+/////////////////////////////////////////////////////////////////////
+void dance_super_press(qk_tap_dance_state_t *state, void *user_data){   // Called on down
+    if(state->count == 1){
+        register_code(KC_LGUI);
+    }
+}
+void dance_super_done(qk_tap_dance_state_t *state, void *user_data){    // Called on timeout
+  switch(state->count){
+    case 2:
+        register_code(KC_LGUI);
+        tap(KC_L);
+        unregister_code(KC_LGUI);
+        break;
+  }
+}
+void dance_super_lift(qk_tap_dance_state_t *state, void *user_data){        // Called on up
+    unregister_code(KC_LGUI);
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+    [RAI] = ACTION_TAP_DANCE_FN_ADVANCED(dance_raise_press, NULL, dance_raise_lift),
+    [LOW] = ACTION_TAP_DANCE_FN_ADVANCED(dance_lower_press, NULL, dance_lower_lift),
+    [SUP] = ACTION_TAP_DANCE_FN_ADVANCED(dance_super_press, dance_super_done, dance_super_lift)
+};
+#endif
+
+#ifdef UNICODE_ENABLE
+// Unicode shortcuts
+#define IBANG   UC(0x203D)
+#define RAROW   UC(0x2192)
+#define LAROW   UC(0x2190)
+#define DEGREE  UC(0x00B0)
+#define OMEGA   UC(0x03A9)
+#define WOMEGA  UC(0x03C9)
+#define MICRO   UC(0x00B5)
+#define PLUMIN  UC(0x00B1)
+#define SUPA2   UC(0x00B2)
+#define ROMAN1  UC(0x2160)
+#define ROMAN2  UC(0x2161)
+#define ROMAN3  UC(0x2162)
+#define ROMAN4  UC(0x2163)
+#define ROMAN5  UC(0x2164)
+#define ROMAN6  UC(0x2165)
+#define ROMAN7  UC(0x2166)
+#define roman1  UC(0x2170)
+#define roman2  UC(0x2171)
+#define roman3  UC(0x2172)
+#define roman4  UC(0x2173)
+#define roman5  UC(0x2174)
+#define roman6  UC(0x2175)
+#define roman7  UC(0x2176)
+
+#ifdef UNICODEMAP_ENABLE        // For Unicode characters larger than 0x8000. Send with X(<unicode>)
+enum Ext_Unicode{
+    PENGUIN = 0,
+    BOAR,
+    MONKEY,
+    DRAGON,
+    CHICK,
+    TUMBLER
+};
+const uint32_t PROGMEM unicode_map[] = {
+    [PENGUIN]   = 0x1F427,
+    [BOAR]      = 0x1F417,
+    [MONKEY]    = 0x1F412,
+    [DRAGON]    = 0x1F409,
+    [CHICK]     = 0x1F425,
+    [TUMBLER]   = 0x1F943
+};
+#define PENGY   X(PENGUIN)
+#define BOARY   X(BOAR)
+#define MNKY    X(MONKEY)
+#define DRGN    X(DRAGON)
+#define DUCK    X(CHICK)
+#define TMBL    X(TUMBLER)
+#endif
+
+#endif
+
+static uint16_t key_timer;
+static uint8_t  caps_status = 0;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case COLEMAK:
+        if(record->event.pressed){
+            persistant_default_layer_set(1UL<<_COLEMAK);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    case SWCOLE:
+        if(record->event.pressed){
+            persistant_default_layer_set(1UL<<_SWCOLE);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_swcole, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    #ifndef TAP_DANCE_ENABLE   
+    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 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;
+    #endif
+    case SHFT_CAP: 
+        if(record->event.pressed){
+            key_timer = timer_read();               // if the key is being pressed, we start the timer.
+            register_code(KC_LSHIFT);
+        } else {                                    // this means the key was just released (tap or "held down")
+            if(timer_elapsed(key_timer) < 152){     // Time in ms, the threshold we pick for counting something as a tap.
+                tap(KC_CAPS);
+                if(caps_status == 0){
+                    caps_status = 1;
+                    #ifdef AUDIO_ENABLE
+                        PLAY_NOTE_ARRAY(tone_capslock_on, false, 0);
+                    #endif
+                } else {
+                    caps_status = 0;
+                    #ifdef AUDIO_ENABLE
+                        PLAY_NOTE_ARRAY(tone_capslock_off, false, 0);
+                    #endif
+                }
+            }
+            unregister_code(KC_LSHIFT);
+        }
+        return false;
+        break;
+    case CTRLB:                                     // Control-B on tap (bold)
+        if(record->event.pressed){
+            key_timer = timer_read();               // if the key is being pressed, we start the timer.
+            register_code(KC_LCTL);
+        } else {                                    // this means the key was just released (tap or "held down")
+            if (timer_elapsed(key_timer) < 152) {   // Time in ms, the threshold we pick for counting something as a tap.
+                tap(KC_B);
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0);
+                #endif
+                #ifdef BACKLIGHT_BREATHING
+                    breathing_speed_set(2);
+                    breathing_pulse();
+                #endif
+            }
+            unregister_code(KC_LCTL);
+        }
+        return false;
+        break;
+    case CPYPST:                                    // One key copy/paste
+        if(record->event.pressed){
+            key_timer = timer_read();
+        } else {
+            if (timer_elapsed(key_timer) > 152) {   // Hold, copy
+                register_code(KC_LCTL);
+                tap(KC_C);
+                unregister_code(KC_LCTL);
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_copy, false, 0);
+                #endif
+            } else {                                // Tap, paste
+                register_code(KC_LCTL);
+                tap(KC_V);
+                unregister_code(KC_LCTL);
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_paste, false, 0);
+                #endif
+            }
+        }
+        return false;
+        break;
+    #ifdef UNICODE_ENABLE
+    case UNIWIN:
+        if(record->event.pressed){
+            set_unicode_input_mode(UC_WIN);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(uniwin, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    case UNILIN:
+        if(record->event.pressed){
+            set_unicode_input_mode(UC_LNX);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(unilin, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    case DISFACE:       // ಠ_ಠ
+        if(record->event.pressed){
+            process_unicode((0x0CA0|QK_UNICODE), record);   // Eye
+            register_code(KC_RSFT);
+            tap(KC_MINS);
+            unregister_code(KC_RSFT);
+            process_unicode((0x0CA0|QK_UNICODE), record);   // Eye
+        }
+        return false;
+        break;
+    case TFLIP:         // (╯°□°)╯ ︵ ┻━┻
+        if(record->event.pressed){
+            register_code(KC_RSFT);
+            tap(KC_9);
+            unregister_code(KC_RSFT);
+            process_unicode((0x256F|QK_UNICODE), record);   // Arm
+            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
+            process_unicode((0x25A1|QK_UNICODE), record);   // Mouth
+            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
+            register_code(KC_RSFT);
+            tap(KC_0);
+            unregister_code(KC_RSFT);
+            process_unicode((0x256F|QK_UNICODE), record);   // Arm
+            tap(KC_SPC);
+            process_unicode((0x0361|QK_UNICODE), record);   // Flippy
+            tap(KC_SPC);
+            process_unicode((0x253B|QK_UNICODE), record);   // Table
+            process_unicode((0x2501|QK_UNICODE), record);   // Table
+            process_unicode((0x253B|QK_UNICODE), record);   // Table
+        }
+        return false;
+        break;
+    case TPUT:          // ┬──┬ ノ( ゜-゜ノ)
+        if(record->event.pressed){
+            process_unicode((0x252C|QK_UNICODE), record);   // Table
+            process_unicode((0x2500|QK_UNICODE), record);   // Table
+            process_unicode((0x2500|QK_UNICODE), record);   // Table
+            process_unicode((0x252C|QK_UNICODE), record);   // Table
+            tap(KC_SPC);
+            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
+            register_code(KC_RSFT);
+            tap(KC_9);
+            unregister_code(KC_RSFT);
+            tap(KC_SPC);
+            process_unicode((0x309C|QK_UNICODE), record);   // Eye
+            tap(KC_MINS);
+            process_unicode((0x309C|QK_UNICODE), record);   // Eye
+            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
+            register_code(KC_RSFT);
+            tap(KC_0);
+            unregister_code(KC_RSFT);
+        }
+        return false;
+        break;
+    case SHRUG:         // ¯\_(ツ)_/¯
+        if(record->event.pressed){
+            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
+            tap(KC_BSLS);                                   // Arm
+            register_code(KC_RSFT);
+            tap(KC_UNDS);                                   // Arm
+            tap(KC_LPRN);                                   // Head
+            unregister_code(KC_RSFT);
+            process_unicode((0x30C4|QK_UNICODE), record);   // Face
+            register_code(KC_RSFT);
+            tap(KC_RPRN);                                   // Head
+            tap(KC_UNDS);                                   // Arm
+            unregister_code(KC_RSFT);
+            tap(KC_SLSH);                                   // Arm
+            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
+        }
+        return false;
+        break;
+    #endif
+    case FACE:          // (o_O)
+        if(record->event.pressed){
+            register_code(KC_RSFT);
+            tap(KC_LPRN);
+            unregister_code(KC_RSFT);
+            tap(KC_O);
+            register_code(KC_RSFT);
+            tap(KC_UNDS);
+            tap(KC_O);
+            tap(KC_RPRN);
+            unregister_code(KC_RSFT);
+        }
+        return false;
+        break;
+    #ifdef TAP_DANCE_ENABLE
+    case TappyR:
+        if(record->event.pressed){
+            if(timer_elapsed32(Rtimer) > 1052){
+                Rstate = 0;
+            }
+          switch(Rstate){
+            case 0:
+                Rtimer = timer_read32();
+                Rstate++;
+                break;
+            case 1:
+                Rtimes[0] = timer_elapsed32(Rtimer);
+                Rtimer = timer_read32();
+                Rstate++;
+                break;
+            case 2:
+                Rtimes[1] = timer_elapsed32(Rtimer);
+                Rtimer = timer_read32();
+                Rstate++;
+                break;
+            case 3:
+                Rtimes[2] = timer_elapsed32(Rtimer);
+                Rstate = 0;
+                break;
+            }
+            if(Rstate == 0 && Lstate == 0) rhythm_parse();
+        }
+        return false;
+        break;
+    case TappyL:
+        if(record->event.pressed){
+            if(timer_elapsed32(Ltimer) > 1052){
+                Lstate = 0;
+            }
+          switch(Lstate){
+            case 0:
+                Ltimer = timer_read32();
+                Lstate++;
+                break;
+            case 1:
+                Ltimes[0] = timer_elapsed32(Ltimer);
+                Ltimer = timer_read32();
+                Lstate++;
+                break;
+            case 2:
+                Ltimes[1] = timer_elapsed32(Ltimer);
+                Lstate = 0;
+                break;
+            }
+            if(Rstate == 0 && Lstate == 0) rhythm_parse();
+        }
+        return false;
+        break;
+    #endif
+    #endif
+    case RANDIG:
+        if (record->event.pressed) {
+            tap_random_base64();
+        }
+        return false;
+        break;
+  }
+  return true;
+};
+
+#ifdef AUDIO_ENABLE
+void matrix_init_user(void){        // Run once at startup
+    #ifdef AUDIO_ENABLE
+        _delay_ms(50); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+}
+
+void play_goodbye_tone(void){
+  PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+  _delay_ms(150);
+}
+
+void shutdown_user(){
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
+
+void music_on_user(void){           // Run when the music layer is turned on
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void music_off_user(void){          // Run when music is turned off
+	PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+}
+#endif
+
+#endif
diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile
new file mode 100644
index 000000000..bd49d142c
--- /dev/null
+++ b/keyboards/preonic/keymaps/zach/Makefile
@@ -0,0 +1,29 @@
+# Zach Preonic Makefile
+# Max .hex size is about 28636 bytes
+
+# 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
+#
+TAP_DANCE_ENABLE    = yes   # Enable TapDance functionality
+BOOTMAGIC_ENABLE    = no    # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE     = no    # Mouse keys(+4700)
+EXTRAKEY_ENABLE     = no    # Audio control and System control(+450)
+CONSOLE_ENABLE      = no    # Console for debug(+400)
+COMMAND_ENABLE      = no    # 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
+USB_6KRO_ENABLE     = no    # 6key Rollover
+BACKLIGHT_ENABLE    = yes   # Enable keyboard backlight functionality
+MIDI_ENABLE         = no    # MIDI controls
+AUDIO_ENABLE        = yes   # Audio output on port C6
+VARIABLE_TRACE      = no    # Debug changes to variable values
+UNICODE_ENABLE      = yes   # Unicode
+UNICODEMAP_ENABLE   = no    # Enable extended 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.
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE    = no    # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
diff --git a/keyboards/preonic/keymaps/zach/config.h b/keyboards/preonic/keymaps/zach/config.h
new file mode 100644
index 000000000..59959524f
--- /dev/null
+++ b/keyboards/preonic/keymaps/zach/config.h
@@ -0,0 +1,95 @@
+/*
+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      0x6061
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Ortholinear Keyboards
+#define PRODUCT         The Preonic Keyboard
+#define DESCRIPTION     A compact ortholinear keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 12
+
+/* Planck PCB default pin-out */
+#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 }
+#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN B7
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+
+#define BACKLIGHT_BREATHING     // LED breathing
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 5
+
+/* 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 D1
+//#define RGBLIGHT_TIMER
+//#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
+#define PREVENT_STUCK_MODIFIERS
+//#define DYNAMIC_MACRO_ENABLE    // Enable if you need to use the macro functionality
+//#define SPACE_CADET             // Parenthesis on L/R shift
+
+
+#endif
diff --git a/keyboards/preonic/keymaps/zach/keymap.c b/keyboards/preonic/keymaps/zach/keymap.c
new file mode 100644
index 000000000..423ca4b86
--- /dev/null
+++ b/keyboards/preonic/keymaps/zach/keymap.c
@@ -0,0 +1,54 @@
+// Zach Nielsen     Custom Preonic Keyboard layout
+#include "preonic.h"
+#define PREONIC_YES                 // This is the Preonic
+#include "zach_common_functions.c"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_COLEMAK] = { /* Base Layer */
+  {KC_ESC,   KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TAB,   KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_QUOT, KC_ENT},
+  {KC_BSPC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_ENT},
+  {SHFT_CAP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
+  {CTRLB,    TD(SUP), KC_LALT, KC_LCTL, TD(LOW), KC_SPC,  KC_SPC,  TD(RAI), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+[_SWCOLE] = { /* Software Colemak */
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {_______, CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    KC_QUOT, _______},
+  {_______, CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,    _______},
+  {_______,	CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+},
+
+[_RAISE] = { /* RAISE - Numpad and Unicode symbols */
+  {KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {KC_GRV,  SUPA2,   FACE,    DISFACE, SHRUG,   PLUMIN,  IBANG,   KC_7,    KC_8,    KC_9,    KC_COLN, _______},
+  {KC_DEL,  DEGREE,  MICRO,   WOMEGA,  OMEGA,   XXXXXXX, KC_ENT,  KC_4,    KC_5,    KC_6,    KC_SLSH, KC_ASTR},
+  {_______, KC_COLN, TFLIP,   LAROW,   RAROW,   XXXXXXX, KC_SPC,  KC_1,    KC_2,    KC_3,    KC_MINS, KC_PLUS},
+  {_______, KC_PIPE, TPUT,    _______, _______, KC_TAB,  KC_TAB,  _______, KC_0,    KC_0,    KC_DOT,  KC_EQL}
+},
+
+[_LOWER] = { /* LOWER - Symbols, Paging, CtrAltDel */
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_QUES, KC_DQT,  KC_DEL},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_QUES, KC_DQT,  KC_DEL},
+  {KC_DEL,  KC_LBRC, KC_RBRC, KC_MINS, KC_UNDS, KC_HOME, KC_END,  KC_LPRN, KC_RPRN, KC_SLSH, KC_SCLN, KC_PGUP},
+  {CPYPST,  XXXXXXX, C(KC_X), KC_LABK, KC_RABK, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_BSLS, KC_COLN, KC_PGDN},
+  {_______, _______, _______, _______, _______, KC_TAB,  KC_TAB,  _______, _______, _______, _______, _______}
+},
+
+[_ADJUST] = { /* ADJUST - Macros, Layer Switching, Function Keys */
+  {UNIWIN,  XXXXXXX, XXXXXXX, RANDIG,  RANDIG,  KC_INS,  XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, AU_TOG, MU_TOG},
+  {UNILIN,  SUPA2,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,    KC_F2,   KC_F3,   KC_F4,  XXXXXXX},
+  {XXXXXXX, DEGREE,  IBANG,   LAROW,   RAROW,   SWCOLE,  COLEMAK, KC_F5,    KC_F6,   KC_F7,   KC_F8,  BL_INC},
+  {_______, CADKEY,  MICRO,   WOMEGA,  OMEGA,   XXXXXXX, XXXXXXX, KC_F9,    KC_F10,  KC_F11,  KC_F12, BL_DEC},
+  {_______, _______, _______, _______, _______, RESET,   RESET,   _______,  XXXXXXX, MUV_DE,  MUV_IN, BL_TOGG}
+},
+
+[_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */
+  {_______, XXXXXXX, XXXXXXX, FINGER,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______},
+  {_______, TFLIP,   XXXXXXX, XXXXXXX, IBANG,   roman7,  XXXXXXX, XXXXXXX, ROMAN7,  XXXXXXX, XXXXXXX, _______},
+  {KC_DEL,  TPUT,    FACE,    DISFACE, SHRUG,   roman4,  roman5,  roman6,  ROMAN4,  ROMAN5,  ROMAN6,  _______},
+  {XXXXXXX, PENIS,   BOOBS,   LAROW,   RAROW,   roman1,  roman2,  roman3,  ROMAN1,  ROMAN2,  ROMAN3,  XXXXXXX},
+  {_______, _______, _______, _______, _______, KC_SPC,  KC_SPC,  _______, _______, _______, _______, _______}
+}
+};
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
new file mode 100644
index 000000000..f01929f5d
--- /dev/null
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -0,0 +1,538 @@
+#ifndef ZACH_COMMON_FUNCTIONS
+#define ZACH_COMMON_FUNCTIONS
+#include "eeconfig.h"
+#include "action_layer.h"
+#include "keymap_colemak.h"
+#include "extra_functions.c"
+extern keymap_config_t keymap_config;
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+#define C(n)    RCTL(n)
+#define CADKEY  RCTL(RALT(KC_DEL))
+
+void tap(uint16_t keycode){
+    register_code(keycode);
+    unregister_code(keycode);
+};
+
+void persistant_default_layer_set(uint16_t default_layer){
+    eeconfig_update_default_layer(default_layer);
+    default_layer_set(default_layer);
+};
+
+// Automatic number generation of important keywords
+enum my_keycodes{
+    // Layer numbers
+    _COLEMAK = 0,
+    _SWCOLE,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+    _UNICODES,
+    // These use process_record_user()
+    COLEMAK = SAFE_RANGE,
+    SWCOLE,
+    LOWER,
+    RAISE,
+    SHFT_CAP,
+    CTRLB,
+    CPYPST,
+    FACE,
+    UNIWIN,
+    UNILIN,
+    DISFACE,
+    TFLIP,
+    TPUT,
+    SHRUG,
+    PENIS,
+    BOOBS,
+    Sil_Pas,
+    Sil_Usr,
+    UltiU,
+    UltiP,
+    TappyR,
+    TappyL,
+    RANDIG,
+    FINGER,
+    // Tap_Dance nums
+    RAI = 0,
+    LOW,
+    SUP
+};
+
+#ifdef AUDIO_ENABLE
+#include "audio.h"
+float tone_startup[][2]         = SONG(STARTUP_SOUND);
+float tone_goodbye[][2]         = SONG(GOODBYE_SOUND);
+float tone_colemak[][2]         = SONG(COLEMAK_SOUND);
+float tone_swcole[][2]          = SONG(QWERTY_SOUND);
+float tone_capslock_on[][2]     = SONG(CAPS_LOCK_ON_SOUND);
+float tone_capslock_off[][2]    = SONG(CAPS_LOCK_OFF_SOUND);
+float tone_ctrl_mod[][2]        = SONG(COIN_SOUND);
+float tone_copy[][2]            = SONG(SCROLL_LOCK_ON_SOUND);
+float tone_paste[][2]           = SONG(SCROLL_LOCK_OFF_SOUND);
+float uniwin[][2]               = SONG(UNICODE_WINDOWS);
+float unilin[][2]               = SONG(UNICODE_LINUX);
+#endif
+
+#ifdef TAP_DANCE_ENABLE
+#define TAPPING_TERM 200
+
+uint8_t Lstate = 0, Rstate = 0;
+uint32_t Ltimer = 0, Rtimer = 0;
+uint32_t Ltimes[3], Rtimes[4];   // Ratio of tap times should be about 1.335 (L/R)
+void rhythm_parse(void){
+    int L = Ltimes[0] + Ltimes[1] + Ltimes[2];  // Start to end time
+    int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3];
+    if(abs(R-L) > 10){
+        tap(KC_N); tap(KC_O);
+        return;
+    } else {
+        L = (L / 3)*100;                    // Average time per tap * 100
+        R = (R / 4);
+        if(abs(abs(L/R)-133) > 1){
+            tap(KC_N); tap(KC_O);
+            tap(KC_P); tap(KC_E);
+            return;
+        } else {
+            tap(KC_O); tap(KC_K);
+            return;
+        }
+    }
+};
+
+void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap
+  switch(state->count){      // Only turn the layer on once
+    case 1:
+        layer_off(_UNICODES);
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        break;
+  }
+};
+void dance_raise_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release
+  switch(state->count){
+    case 1:         // Normal action. Turn off layers
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        layer_off(_UNICODES);
+        break;
+  }
+};
+/////////////////////////////////////////////////////////////////////
+void dance_lower_press(qk_tap_dance_state_t *state, void *user_data){// Called on tap
+  switch(state->count){
+    case 1:         // Turn on lower
+        layer_off(_UNICODES);
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        break;
+  }
+};
+void dance_lower_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release
+  switch(state->count){
+    case 1:         // Normal action. Turn off layers
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        layer_off(_UNICODES);
+        break;
+    case 2:         // Turn on _UNICODES layer
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+        layer_on(_UNICODES);
+        #ifdef AUDIO_ENABLE
+            PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0);
+        #endif
+        break;
+  }
+};
+/////////////////////////////////////////////////////////////////////
+void dance_super_press(qk_tap_dance_state_t *state, void *user_data){   // Called on down
+    if(state->count == 1){
+        register_code(KC_LGUI);
+    }
+}
+void dance_super_done(qk_tap_dance_state_t *state, void *user_data){    // Called on timeout
+  switch(state->count){
+    case 2:
+        register_code(KC_LGUI);
+        tap(KC_L);
+        unregister_code(KC_LGUI);
+        break;
+  }
+}
+void dance_super_lift(qk_tap_dance_state_t *state, void *user_data){        // Called on up
+    unregister_code(KC_LGUI);
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+    [RAI] = ACTION_TAP_DANCE_FN_ADVANCED(dance_raise_press, NULL, dance_raise_lift),
+    [LOW] = ACTION_TAP_DANCE_FN_ADVANCED(dance_lower_press, NULL, dance_lower_lift),
+    [SUP] = ACTION_TAP_DANCE_FN_ADVANCED(dance_super_press, dance_super_done, dance_super_lift)
+};
+#endif
+
+#ifdef UNICODE_ENABLE
+// Unicode shortcuts
+#define IBANG   UC(0x203D)
+#define RAROW   UC(0x2192)
+#define LAROW   UC(0x2190)
+#define DEGREE  UC(0x00B0)
+#define OMEGA   UC(0x03A9)
+#define WOMEGA  UC(0x03C9)
+#define MICRO   UC(0x00B5)
+#define PLUMIN  UC(0x00B1)
+#define SUPA2   UC(0x00B2)
+#define ROMAN1  UC(0x2160)
+#define ROMAN2  UC(0x2161)
+#define ROMAN3  UC(0x2162)
+#define ROMAN4  UC(0x2163)
+#define ROMAN5  UC(0x2164)
+#define ROMAN6  UC(0x2165)
+#define ROMAN7  UC(0x2166)
+#define roman1  UC(0x2170)
+#define roman2  UC(0x2171)
+#define roman3  UC(0x2172)
+#define roman4  UC(0x2173)
+#define roman5  UC(0x2174)
+#define roman6  UC(0x2175)
+#define roman7  UC(0x2176)
+
+#ifdef UNICODEMAP_ENABLE        // For Unicode characters larger than 0x8000. Send with X(<unicode>)
+enum Ext_Unicode{
+    PENGUIN = 0,
+    BOAR,
+    MONKEY,
+    DRAGON,
+    CHICK,
+    TUMBLER
+};
+const uint32_t PROGMEM unicode_map[] = {
+    [PENGUIN]   = 0x1F427,
+    [BOAR]      = 0x1F417,
+    [MONKEY]    = 0x1F412,
+    [DRAGON]    = 0x1F409,
+    [CHICK]     = 0x1F425,
+    [TUMBLER]   = 0x1F943
+};
+#define PENGY   X(PENGUIN)
+#define BOARY   X(BOAR)
+#define MNKY    X(MONKEY)
+#define DRGN    X(DRAGON)
+#define DUCK    X(CHICK)
+#define TMBL    X(TUMBLER)
+#endif
+
+#endif
+
+static uint16_t key_timer;
+static uint8_t  caps_status = 0;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case COLEMAK:
+        if(record->event.pressed){
+            persistant_default_layer_set(1UL<<_COLEMAK);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    case SWCOLE:
+        if(record->event.pressed){
+            persistant_default_layer_set(1UL<<_SWCOLE);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(tone_swcole, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    #ifndef TAP_DANCE_ENABLE   
+    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 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;
+    #endif
+    case SHFT_CAP: 
+        if(record->event.pressed){
+            key_timer = timer_read();               // if the key is being pressed, we start the timer.
+            register_code(KC_LSHIFT);
+        } else {                                    // this means the key was just released (tap or "held down")
+            if(timer_elapsed(key_timer) < 152){     // Time in ms, the threshold we pick for counting something as a tap.
+                tap(KC_CAPS);
+                if(caps_status == 0){
+                    caps_status = 1;
+                    #ifdef AUDIO_ENABLE
+                        PLAY_NOTE_ARRAY(tone_capslock_on, false, 0);
+                    #endif
+                } else {
+                    caps_status = 0;
+                    #ifdef AUDIO_ENABLE
+                        PLAY_NOTE_ARRAY(tone_capslock_off, false, 0);
+                    #endif
+                }
+            }
+            unregister_code(KC_LSHIFT);
+        }
+        return false;
+        break;
+    case CTRLB:                                     // Control-B on tap (bold)
+        if(record->event.pressed){
+            key_timer = timer_read();               // if the key is being pressed, we start the timer.
+            register_code(KC_LCTL);
+        } else {                                    // this means the key was just released (tap or "held down")
+            if (timer_elapsed(key_timer) < 152) {   // Time in ms, the threshold we pick for counting something as a tap.
+                tap(KC_B);
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0);
+                #endif
+                #ifdef BACKLIGHT_BREATHING
+                    breathing_speed_set(2);
+                    breathing_pulse();
+                #endif
+            }
+            unregister_code(KC_LCTL);
+        }
+        return false;
+        break;
+    case CPYPST:                                    // One key copy/paste
+        if(record->event.pressed){
+            key_timer = timer_read();
+        } else {
+            if (timer_elapsed(key_timer) > 152) {   // Hold, copy
+                register_code(KC_LCTL);
+                tap(KC_C);
+                unregister_code(KC_LCTL);
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_copy, false, 0);
+                #endif
+            } else {                                // Tap, paste
+                register_code(KC_LCTL);
+                tap(KC_V);
+                unregister_code(KC_LCTL);
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_paste, false, 0);
+                #endif
+            }
+        }
+        return false;
+        break;
+    #ifdef UNICODE_ENABLE
+    case UNIWIN:
+        if(record->event.pressed){
+            set_unicode_input_mode(UC_WIN);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(uniwin, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    case UNILIN:
+        if(record->event.pressed){
+            set_unicode_input_mode(UC_LNX);
+            #ifdef AUDIO_ENABLE
+              PLAY_NOTE_ARRAY(unilin, false, 0);
+            #endif
+        }
+        return false;
+        break;
+    case DISFACE:       // ಠ_ಠ
+        if(record->event.pressed){
+            process_unicode((0x0CA0|QK_UNICODE), record);   // Eye
+            register_code(KC_RSFT);
+            tap(KC_MINS);
+            unregister_code(KC_RSFT);
+            process_unicode((0x0CA0|QK_UNICODE), record);   // Eye
+        }
+        return false;
+        break;
+    case TFLIP:         // (╯°□°)╯ ︵ ┻━┻
+        if(record->event.pressed){
+            register_code(KC_RSFT);
+            tap(KC_9);
+            unregister_code(KC_RSFT);
+            process_unicode((0x256F|QK_UNICODE), record);   // Arm
+            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
+            process_unicode((0x25A1|QK_UNICODE), record);   // Mouth
+            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
+            register_code(KC_RSFT);
+            tap(KC_0);
+            unregister_code(KC_RSFT);
+            process_unicode((0x256F|QK_UNICODE), record);   // Arm
+            tap(KC_SPC);
+            process_unicode((0x0361|QK_UNICODE), record);   // Flippy
+            tap(KC_SPC);
+            process_unicode((0x253B|QK_UNICODE), record);   // Table
+            process_unicode((0x2501|QK_UNICODE), record);   // Table
+            process_unicode((0x253B|QK_UNICODE), record);   // Table
+        }
+        return false;
+        break;
+    case TPUT:          // ┬──┬ ノ( ゜-゜ノ)
+        if(record->event.pressed){
+            process_unicode((0x252C|QK_UNICODE), record);   // Table
+            process_unicode((0x2500|QK_UNICODE), record);   // Table
+            process_unicode((0x2500|QK_UNICODE), record);   // Table
+            process_unicode((0x252C|QK_UNICODE), record);   // Table
+            tap(KC_SPC);
+            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
+            register_code(KC_RSFT);
+            tap(KC_9);
+            unregister_code(KC_RSFT);
+            tap(KC_SPC);
+            process_unicode((0x309C|QK_UNICODE), record);   // Eye
+            tap(KC_MINS);
+            process_unicode((0x309C|QK_UNICODE), record);   // Eye
+            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
+            register_code(KC_RSFT);
+            tap(KC_0);
+            unregister_code(KC_RSFT);
+        }
+        return false;
+        break;
+    case SHRUG:         // ¯\_(ツ)_/¯
+        if(record->event.pressed){
+            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
+            tap(KC_BSLS);                                   // Arm
+            register_code(KC_RSFT);
+            tap(KC_UNDS);                                   // Arm
+            tap(KC_LPRN);                                   // Head
+            unregister_code(KC_RSFT);
+            process_unicode((0x30C4|QK_UNICODE), record);   // Face
+            register_code(KC_RSFT);
+            tap(KC_RPRN);                                   // Head
+            tap(KC_UNDS);                                   // Arm
+            unregister_code(KC_RSFT);
+            tap(KC_SLSH);                                   // Arm
+            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
+        }
+        return false;
+        break;
+    #endif
+    case FACE:          // (o_O)
+        if(record->event.pressed){
+            register_code(KC_RSFT);
+            tap(KC_LPRN);
+            unregister_code(KC_RSFT);
+            tap(KC_O);
+            register_code(KC_RSFT);
+            tap(KC_UNDS);
+            tap(KC_O);
+            tap(KC_RPRN);
+            unregister_code(KC_RSFT);
+        }
+        return false;
+        break;
+    #ifdef TAP_DANCE_ENABLE
+    case TappyR:
+        if(record->event.pressed){
+            if(timer_elapsed32(Rtimer) > 1052){
+                Rstate = 0;
+            }
+          switch(Rstate){
+            case 0:
+                Rtimer = timer_read32();
+                Rstate++;
+                break;
+            case 1:
+                Rtimes[0] = timer_elapsed32(Rtimer);
+                Rtimer = timer_read32();
+                Rstate++;
+                break;
+            case 2:
+                Rtimes[1] = timer_elapsed32(Rtimer);
+                Rtimer = timer_read32();
+                Rstate++;
+                break;
+            case 3:
+                Rtimes[2] = timer_elapsed32(Rtimer);
+                Rstate = 0;
+                break;
+            }
+            if(Rstate == 0 && Lstate == 0) rhythm_parse();
+        }
+        return false;
+        break;
+    case TappyL:
+        if(record->event.pressed){
+            if(timer_elapsed32(Ltimer) > 1052){
+                Lstate = 0;
+            }
+          switch(Lstate){
+            case 0:
+                Ltimer = timer_read32();
+                Lstate++;
+                break;
+            case 1:
+                Ltimes[0] = timer_elapsed32(Ltimer);
+                Ltimer = timer_read32();
+                Lstate++;
+                break;
+            case 2:
+                Ltimes[1] = timer_elapsed32(Ltimer);
+                Lstate = 0;
+                break;
+            }
+            if(Rstate == 0 && Lstate == 0) rhythm_parse();
+        }
+        return false;
+        break;
+    #endif
+    #endif
+    case RANDIG:
+        if (record->event.pressed) {
+            tap_random_base64();
+        }
+        return false;
+        break;
+  }
+  return true;
+};
+
+#ifdef AUDIO_ENABLE
+void matrix_init_user(void){        // Run once at startup
+    #ifdef AUDIO_ENABLE
+        _delay_ms(50); // gets rid of tick
+        PLAY_NOTE_ARRAY(tone_startup, false, 0);
+    #endif
+}
+
+void play_goodbye_tone(void){
+  PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+  _delay_ms(150);
+}
+
+void shutdown_user(){
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
+
+void music_on_user(void){           // Run when the music layer is turned on
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void music_off_user(void){          // Run when music is turned off
+	PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+}
+#endif
+
+#endif

From 4c0aa02b2e476a8f939586a0da2f28f2a44c83c3 Mon Sep 17 00:00:00 2001
From: Zach Nielsen <nielsen.zac@gmail.com>
Date: Thu, 10 Nov 2016 12:59:55 -0800
Subject: [PATCH 014/163] Missed some stuff. Added a song (stole it from
 reddit).

---
 keyboards/planck/keymaps/zach/Makefile        |  2 +-
 keyboards/planck/keymaps/zach/config.h        |  3 +
 .../keymaps/zach/zach_common_functions.c      | 61 +------------------
 keyboards/preonic/keymaps/zach/Makefile       |  2 +-
 .../keymaps/zach/zach_common_functions.c      | 61 +------------------
 quantum/audio/song_list.h                     | 12 ++++
 6 files changed, 19 insertions(+), 122 deletions(-)

diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile
index b0009147a..977f1a901 100644
--- a/keyboards/planck/keymaps/zach/Makefile
+++ b/keyboards/planck/keymaps/zach/Makefile
@@ -16,7 +16,7 @@ USB_6KRO_ENABLE     = no    # 6key Rollover
 BACKLIGHT_ENABLE    = no    # Enable keyboard backlight functionality
 MIDI_ENABLE         = no    # MIDI controls
 AUDIO_ENABLE        = no    # Audio output on port C6
-VARIABLE_TRACE      = no    # Debug changes to variable values
+#VARIABLE_TRACE      = no    # Debug changes to variable values
 UNICODE_ENABLE      = yes   # Unicode
 UNICODEMAP_ENABLE   = yes   # Enable extended unicode
 BLUETOOTH_ENABLE    = no    # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/planck/keymaps/zach/config.h b/keyboards/planck/keymaps/zach/config.h
index 1be800545..7deb9ebfe 100644
--- a/keyboards/planck/keymaps/zach/config.h
+++ b/keyboards/planck/keymaps/zach/config.h
@@ -53,8 +53,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 //#define LOCKING_SUPPORT_ENABLE
+#undef LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
 //#define LOCKING_RESYNC_ENABLE
+#undef LOCKING_RESYNC_ENABLE
 
 /* key combination for command */
 #define IS_COMMAND() ( \
@@ -70,6 +72,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_DEBUG
 /* disable print */
 //#define NO_PRINT
+#undef NO_PRINT
 
 /* disable action features */
 //#define NO_ACTION_LAYER
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index f01929f5d..7d14dcf3f 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -3,7 +3,6 @@
 #include "eeconfig.h"
 #include "action_layer.h"
 #include "keymap_colemak.h"
-#include "extra_functions.c"
 extern keymap_config_t keymap_config;
 
 // Fillers to make layering more clear
@@ -249,7 +248,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
-    #ifndef TAP_DANCE_ENABLE   
     case RAISE:
         if(record->event.pressed){
             layer_on(_RAISE);
@@ -270,7 +268,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
-    #endif
     case SHFT_CAP: 
         if(record->event.pressed){
             key_timer = timer_read();               // if the key is being pressed, we start the timer.
@@ -441,62 +438,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
-    #ifdef TAP_DANCE_ENABLE
-    case TappyR:
-        if(record->event.pressed){
-            if(timer_elapsed32(Rtimer) > 1052){
-                Rstate = 0;
-            }
-          switch(Rstate){
-            case 0:
-                Rtimer = timer_read32();
-                Rstate++;
-                break;
-            case 1:
-                Rtimes[0] = timer_elapsed32(Rtimer);
-                Rtimer = timer_read32();
-                Rstate++;
-                break;
-            case 2:
-                Rtimes[1] = timer_elapsed32(Rtimer);
-                Rtimer = timer_read32();
-                Rstate++;
-                break;
-            case 3:
-                Rtimes[2] = timer_elapsed32(Rtimer);
-                Rstate = 0;
-                break;
-            }
-            if(Rstate == 0 && Lstate == 0) rhythm_parse();
-        }
-        return false;
-        break;
-    case TappyL:
-        if(record->event.pressed){
-            if(timer_elapsed32(Ltimer) > 1052){
-                Lstate = 0;
-            }
-          switch(Lstate){
-            case 0:
-                Ltimer = timer_read32();
-                Lstate++;
-                break;
-            case 1:
-                Ltimes[0] = timer_elapsed32(Ltimer);
-                Ltimer = timer_read32();
-                Lstate++;
-                break;
-            case 2:
-                Ltimes[1] = timer_elapsed32(Ltimer);
-                Lstate = 0;
-                break;
-            }
-            if(Rstate == 0 && Lstate == 0) rhythm_parse();
-        }
-        return false;
-        break;
-    #endif
-    #endif
     case RANDIG:
         if (record->event.pressed) {
             tap_random_base64();
@@ -507,7 +448,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return true;
 };
 
-#ifdef AUDIO_ENABLE
 void matrix_init_user(void){        // Run once at startup
     #ifdef AUDIO_ENABLE
         _delay_ms(50); // gets rid of tick
@@ -515,6 +455,7 @@ void matrix_init_user(void){        // Run once at startup
     #endif
 }
 
+#ifdef AUDIO_ENABLE
 void play_goodbye_tone(void){
   PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
   _delay_ms(150);
diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile
index bd49d142c..f0a84abac 100644
--- a/keyboards/preonic/keymaps/zach/Makefile
+++ b/keyboards/preonic/keymaps/zach/Makefile
@@ -16,7 +16,7 @@ USB_6KRO_ENABLE     = no    # 6key Rollover
 BACKLIGHT_ENABLE    = yes   # Enable keyboard backlight functionality
 MIDI_ENABLE         = no    # MIDI controls
 AUDIO_ENABLE        = yes   # Audio output on port C6
-VARIABLE_TRACE      = no    # Debug changes to variable values
+#VARIABLE_TRACE      = no    # Debug changes to variable values
 UNICODE_ENABLE      = yes   # Unicode
 UNICODEMAP_ENABLE   = no    # Enable extended unicode
 BLUETOOTH_ENABLE    = no    # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index f01929f5d..7d14dcf3f 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -3,7 +3,6 @@
 #include "eeconfig.h"
 #include "action_layer.h"
 #include "keymap_colemak.h"
-#include "extra_functions.c"
 extern keymap_config_t keymap_config;
 
 // Fillers to make layering more clear
@@ -249,7 +248,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
-    #ifndef TAP_DANCE_ENABLE   
     case RAISE:
         if(record->event.pressed){
             layer_on(_RAISE);
@@ -270,7 +268,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
-    #endif
     case SHFT_CAP: 
         if(record->event.pressed){
             key_timer = timer_read();               // if the key is being pressed, we start the timer.
@@ -441,62 +438,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         return false;
         break;
-    #ifdef TAP_DANCE_ENABLE
-    case TappyR:
-        if(record->event.pressed){
-            if(timer_elapsed32(Rtimer) > 1052){
-                Rstate = 0;
-            }
-          switch(Rstate){
-            case 0:
-                Rtimer = timer_read32();
-                Rstate++;
-                break;
-            case 1:
-                Rtimes[0] = timer_elapsed32(Rtimer);
-                Rtimer = timer_read32();
-                Rstate++;
-                break;
-            case 2:
-                Rtimes[1] = timer_elapsed32(Rtimer);
-                Rtimer = timer_read32();
-                Rstate++;
-                break;
-            case 3:
-                Rtimes[2] = timer_elapsed32(Rtimer);
-                Rstate = 0;
-                break;
-            }
-            if(Rstate == 0 && Lstate == 0) rhythm_parse();
-        }
-        return false;
-        break;
-    case TappyL:
-        if(record->event.pressed){
-            if(timer_elapsed32(Ltimer) > 1052){
-                Lstate = 0;
-            }
-          switch(Lstate){
-            case 0:
-                Ltimer = timer_read32();
-                Lstate++;
-                break;
-            case 1:
-                Ltimes[0] = timer_elapsed32(Ltimer);
-                Ltimer = timer_read32();
-                Lstate++;
-                break;
-            case 2:
-                Ltimes[1] = timer_elapsed32(Ltimer);
-                Lstate = 0;
-                break;
-            }
-            if(Rstate == 0 && Lstate == 0) rhythm_parse();
-        }
-        return false;
-        break;
-    #endif
-    #endif
     case RANDIG:
         if (record->event.pressed) {
             tap_random_base64();
@@ -507,7 +448,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return true;
 };
 
-#ifdef AUDIO_ENABLE
 void matrix_init_user(void){        // Run once at startup
     #ifdef AUDIO_ENABLE
         _delay_ms(50); // gets rid of tick
@@ -515,6 +455,7 @@ void matrix_init_user(void){        // Run once at startup
     #endif
 }
 
+#ifdef AUDIO_ENABLE
 void play_goodbye_tone(void){
   PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
   _delay_ms(150);
diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index 8022ca672..623f24f32 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -3,6 +3,10 @@
 #ifndef SONG_LIST_H
 #define SONG_LIST_H
 
+#define COIN_SOUND \
+    E__NOTE(_A5  ),\
+    HD_NOTE(_E6  ),
+
 #define ODE_TO_JOY                                          \
     Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \
     Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \
@@ -122,4 +126,12 @@
     E__NOTE(_E5),          \
     E__NOTE(_D5),
 
+#define UNICODE_WINDOWS \
+    E__NOTE(_B5),       \
+    S__NOTE(_E6),
+
+#define UNICODE_LINUX \
+    E__NOTE(_E6),     \
+    S__NOTE(_B5),
+
 #endif

From f388bb5bdacb39a5309ca7594940184bbf35e84b Mon Sep 17 00:00:00 2001
From: nielsenz <nielsenz@oregonstate.edu>
Date: Thu, 10 Nov 2016 13:39:46 -0800
Subject: [PATCH 015/163] Removed some common functions from my keymap

---
 keyboards/planck/keymaps/zach/keymap.c                 | 8 ++++----
 keyboards/planck/keymaps/zach/zach_common_functions.c  | 9 ---------
 keyboards/preonic/keymaps/zach/keymap.c                | 4 ++--
 keyboards/preonic/keymaps/zach/zach_common_functions.c | 9 ---------
 4 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/keyboards/planck/keymaps/zach/keymap.c b/keyboards/planck/keymaps/zach/keymap.c
index d3cde5bb9..710477df5 100644
--- a/keyboards/planck/keymaps/zach/keymap.c
+++ b/keyboards/planck/keymaps/zach/keymap.c
@@ -33,16 +33,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 },
 
 [_ADJUST] = { /* ADJUST - Macros, Layer Switching, Function Keys */
-  {UNIWIN,  Sil_Usr, Sil_Pas, PENGY,   DUCK,    KC_INS,  KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   XXXXXXX},
-  {UNILIN,  UltiU,   UltiP,   RANDIG,  RANDIG,  SWCOLE,  COLEMAK, KC_F5,   KC_F6,   KC_F7,   KC_F8,   XXXXXXX},
+  {UNIWIN,  XXXXXXX, XXXXXXX, PENGY,   DUCK,    KC_INS,  KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   XXXXXXX},
+  {UNILIN,  XXXXXXX, XXXXXXX, RANDIG,  RANDIG,  SWCOLE,  COLEMAK, KC_F5,   KC_F6,   KC_F7,   KC_F8,   XXXXXXX},
   {_______, CADKEY,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX},
   {_______, _______, _______, _______, _______, RESET,   RESET,   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
 },
 
 [_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */
-  {_______, TFLIP,   XXXXXXX, FINGER,  IBANG,   roman7,  XXXXXXX, XXXXXXX, ROMAN7,  TappyL,  TappyR,  _______},
+  {_______, TFLIP,   XXXXXXX, XXXXXXX, IBANG,   roman7,  XXXXXXX, XXXXXXX, ROMAN7,  XXXXXXX, XXXXXXX, _______},
   {KC_DEL,  TPUT,    FACE,    DISFACE, SHRUG,   roman4,  roman5,  roman6,  ROMAN4,  ROMAN5,  ROMAN6,  _______},
-  {XXXXXXX, PENIS,   BOOBS,   LAROW,   RAROW,   roman1,  roman2,  roman3,  ROMAN1,  ROMAN2,  ROMAN3,  XXXXXXX},
+  {XXXXXXX, XXXXXXX, XXXXXXX, LAROW,   RAROW,   roman1,  roman2,  roman3,  ROMAN1,  ROMAN2,  ROMAN3,  XXXXXXX},
   {_______, _______, _______, _______, _______, KC_SPC,  KC_SPC,  _______, _______, _______, _______, _______}
 }
 };
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index 7d14dcf3f..1f907e6cb 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -45,16 +45,7 @@ enum my_keycodes{
     TFLIP,
     TPUT,
     SHRUG,
-    PENIS,
-    BOOBS,
-    Sil_Pas,
-    Sil_Usr,
-    UltiU,
-    UltiP,
-    TappyR,
-    TappyL,
     RANDIG,
-    FINGER,
     // Tap_Dance nums
     RAI = 0,
     LOW,
diff --git a/keyboards/preonic/keymaps/zach/keymap.c b/keyboards/preonic/keymaps/zach/keymap.c
index 423ca4b86..6ce37840b 100644
--- a/keyboards/preonic/keymaps/zach/keymap.c
+++ b/keyboards/preonic/keymaps/zach/keymap.c
@@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 },
 
 [_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */
-  {_______, XXXXXXX, XXXXXXX, FINGER,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______},
+  {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______},
   {_______, TFLIP,   XXXXXXX, XXXXXXX, IBANG,   roman7,  XXXXXXX, XXXXXXX, ROMAN7,  XXXXXXX, XXXXXXX, _______},
   {KC_DEL,  TPUT,    FACE,    DISFACE, SHRUG,   roman4,  roman5,  roman6,  ROMAN4,  ROMAN5,  ROMAN6,  _______},
-  {XXXXXXX, PENIS,   BOOBS,   LAROW,   RAROW,   roman1,  roman2,  roman3,  ROMAN1,  ROMAN2,  ROMAN3,  XXXXXXX},
+  {XXXXXXX, XXXXXXX, XXXXXXX, LAROW,   RAROW,   roman1,  roman2,  roman3,  ROMAN1,  ROMAN2,  ROMAN3,  XXXXXXX},
   {_______, _______, _______, _______, _______, KC_SPC,  KC_SPC,  _______, _______, _______, _______, _______}
 }
 };
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index 7d14dcf3f..1f907e6cb 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -45,16 +45,7 @@ enum my_keycodes{
     TFLIP,
     TPUT,
     SHRUG,
-    PENIS,
-    BOOBS,
-    Sil_Pas,
-    Sil_Usr,
-    UltiU,
-    UltiP,
-    TappyR,
-    TappyL,
     RANDIG,
-    FINGER,
     // Tap_Dance nums
     RAI = 0,
     LOW,

From 80c5ada3394c5ad8087df00ef878eb2cbcd87d70 Mon Sep 17 00:00:00 2001
From: Zach Nielsen <nielsen.zac@gmail.com>
Date: Thu, 10 Nov 2016 13:47:07 -0800
Subject: [PATCH 016/163] Missed removing a function

---
 .../keymaps/zach/zach_common_functions.c      | 23 -------------------
 .../keymaps/zach/zach_common_functions.c      | 23 -------------------
 2 files changed, 46 deletions(-)

diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index 1f907e6cb..b77f2b241 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -70,29 +70,6 @@ float unilin[][2]               = SONG(UNICODE_LINUX);
 #ifdef TAP_DANCE_ENABLE
 #define TAPPING_TERM 200
 
-uint8_t Lstate = 0, Rstate = 0;
-uint32_t Ltimer = 0, Rtimer = 0;
-uint32_t Ltimes[3], Rtimes[4];   // Ratio of tap times should be about 1.335 (L/R)
-void rhythm_parse(void){
-    int L = Ltimes[0] + Ltimes[1] + Ltimes[2];  // Start to end time
-    int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3];
-    if(abs(R-L) > 10){
-        tap(KC_N); tap(KC_O);
-        return;
-    } else {
-        L = (L / 3)*100;                    // Average time per tap * 100
-        R = (R / 4);
-        if(abs(abs(L/R)-133) > 1){
-            tap(KC_N); tap(KC_O);
-            tap(KC_P); tap(KC_E);
-            return;
-        } else {
-            tap(KC_O); tap(KC_K);
-            return;
-        }
-    }
-};
-
 void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap
   switch(state->count){      // Only turn the layer on once
     case 1:
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index 1f907e6cb..b77f2b241 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -70,29 +70,6 @@ float unilin[][2]               = SONG(UNICODE_LINUX);
 #ifdef TAP_DANCE_ENABLE
 #define TAPPING_TERM 200
 
-uint8_t Lstate = 0, Rstate = 0;
-uint32_t Ltimer = 0, Rtimer = 0;
-uint32_t Ltimes[3], Rtimes[4];   // Ratio of tap times should be about 1.335 (L/R)
-void rhythm_parse(void){
-    int L = Ltimes[0] + Ltimes[1] + Ltimes[2];  // Start to end time
-    int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3];
-    if(abs(R-L) > 10){
-        tap(KC_N); tap(KC_O);
-        return;
-    } else {
-        L = (L / 3)*100;                    // Average time per tap * 100
-        R = (R / 4);
-        if(abs(abs(L/R)-133) > 1){
-            tap(KC_N); tap(KC_O);
-            tap(KC_P); tap(KC_E);
-            return;
-        } else {
-            tap(KC_O); tap(KC_K);
-            return;
-        }
-    }
-};
-
 void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap
   switch(state->count){      // Only turn the layer on once
     case 1:

From 592b90dd221d3847d359b9a4dbd258b9ceb2b3ce Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Tue, 13 Dec 2016 18:05:45 -0800
Subject: [PATCH 017/163] Changes

---
 keyboards/planck/keymaps/xyverz/keymap.c     |  10 +-
 keyboards/preonic/keymaps/xyverz/keymap.c    | 196 +++++++------------
 keyboards/preonic/keymaps/xyverz/makefile.mk |   1 -
 3 files changed, 72 insertions(+), 135 deletions(-)
 delete mode 100644 keyboards/preonic/keymaps/xyverz/makefile.mk

diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c
index bbb83faf1..94ace2af5 100644
--- a/keyboards/planck/keymaps/xyverz/keymap.c
+++ b/keyboards/planck/keymaps/xyverz/keymap.c
@@ -44,14 +44,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * | Brite| Ctrl | Alt  | GUI  |Lower | Bksp |Space |Raise | Left | Down |  Up  |Right |
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
   {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
-  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Colemak
@@ -62,14 +62,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * | Brite| Ctrl | Alt  | GUI  |Lower | Bksp |Space |Raise | Left | Down |  Up  |Right |
  * `-----------------------------------------------------------------------------------'
  */
 [_COLEMAK] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
   {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
-  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Dvorak
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH},
   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS},
   {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT},
-  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Lower
diff --git a/keyboards/preonic/keymaps/xyverz/keymap.c b/keyboards/preonic/keymaps/xyverz/keymap.c
index bc4692f3e..b22401460 100644
--- a/keyboards/preonic/keymaps/xyverz/keymap.c
+++ b/keyboards/preonic/keymaps/xyverz/keymap.c
@@ -14,22 +14,16 @@
 #define _DVORAK 2
 #define _LOWER 3
 #define _RAISE 4
-#define _MUSIC 5
 #define _ADJUST 16
 
-// Macro name shortcuts
-#define QWERTY M(_QWERTY)
-#define COLEMAK M(_COLEMAK)
-#define DVORAK M(_DVORAK)
-#define LOWER M(_LOWER)
-#define RAISE M(_RAISE)
-#define M_BL 5
-#define AUD_OFF M(6)
-#define AUD_ON M(7)
-#define MUS_OFF M(8)
-#define MUS_ON M(9)
-#define VC_IN M(10)
-#define VC_DE M(11)
+enum preonic_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  BACKLIT
+};
 
 // Fillers to make layering more clear
 #define _______ KC_TRNS
@@ -47,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Shift|
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl |  Alt | Left |Right |Lower |    Space    |Raise |  Up  | Down |  GUI |Enter |
+ * | Ctrl | Alt  | Left |Right |Lower | Bksp |Space |Raise |  Up  | Down |  GUI |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
@@ -55,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL},
   {KC_MINS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
-  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Colemak
@@ -66,17 +60,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  | Shift|
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * | Ctrl | Alt  | Left |Right |Lower | Bksp |Space |Raise |  Up  | Down |  GUI |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_COLEMAK] = {
   {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_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL},
   {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
-  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Dvorak
@@ -89,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  | Shift|
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt  | Left |Right |Lower |    Space    |Raise |  Up  | Down |  GUI |Enter |
+ * | Ctrl | Alt  | Left |Right |Lower | Bksp |Space |Raise |  Up  | Down |  GUI |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_DVORAK] = {
@@ -97,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH},
   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS},
   {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT},
-  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_LGUI, KC_ENT }
+  {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
 
 /* Lower
@@ -110,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | Mute | Vol- | Vol+ |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite|      | Home |  End |      |     Ins     |      | PgUp | PgDN |      |Enter |
+ * | Brite|      | Home |  End |      |  Del |  Ins |      | PgUp | PgDN |      |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_LOWER] = {
@@ -118,7 +112,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_DEL},
   {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______},
-  {M(M_BL), _______, KC_HOME, KC_END,  _______, KC_INS,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______}
+  {BACKLIT, _______, KC_HOME, KC_END,  _______, KC_DEL,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______}
 },
 
 /* Raise
@@ -131,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | Prev | Play | Next |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite|      | Home |  End |      |     Ins     |      | PgUp | PgDN |      |Enter |
+ * | Brite|      | Home |  End |      |  Del |  Ins |      | PgUp | PgDN |      |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_RAISE] = {
@@ -139,18 +133,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_DEL},
   {KC_CAPS, 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_MPRV, KC_MPLY, KC_MNXT, _______, _______},
-  {M(M_BL), _______, KC_HOME, KC_END,  _______, KC_INS,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______}
-},
-
-/* Music (reserved for process_action_user)
- *
- */
-[_MUSIC] = {
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
-  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER,   XXXXXXX, XXXXXXX, RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
+  {BACKLIT, _______, KC_HOME, KC_END,  _______, KC_DEL,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______}
 },
 
 /* Adjust (Lower + Raise)
@@ -169,32 +152,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_ADJUST] = {
   {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12},
   {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
-  {_______, _______, _______, AUD_ON,  AUD_OFF, AG_NORM, AG_SWAP,  QWERTY, COLEMAK, DVORAK,  _______, _______},
-  {_______, VC_DE,   VC_IN,   MUS_ON,  MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},
+  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 }
 
 
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
 };
 
 #ifdef AUDIO_ENABLE
-float start_up[][2] = {
-  {440.0*pow(2.0,(14)/12.0), 20},
-  {440.0*pow(2.0,(26)/12.0), 8},
-  {440.0*pow(2.0,(18)/12.0), 20},
-  {440.0*pow(2.0,(26)/12.0), 8}
+float tone_startup[][2] = {
+  {NOTE_B5, 20},
+  {NOTE_B6, 8},
+  {NOTE_DS6, 20},
+  {NOTE_B6, 8}
 };
 
 float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
 float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
 float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
 
-float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
-float goodbye[][2] = SONG(GOODBYE_SOUND);
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+
+float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND);
 #endif
 
 void persistant_default_layer_set(uint16_t default_layer) {
@@ -202,34 +182,36 @@ void persistant_default_layer_set(uint16_t default_layer) {
   default_layer_set(default_layer);
 }
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case _QWERTY:
+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:
+        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:
+        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:
+        case LOWER:
           if (record->event.pressed) {
             layer_on(_LOWER);
             update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -237,8 +219,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             layer_off(_LOWER);
             update_tri_layer(_LOWER, _RAISE, _ADJUST);
           }
+          return false;
           break;
-        case _RAISE:
+        case RAISE:
           if (record->event.pressed) {
             layer_on(_RAISE);
             update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -246,8 +229,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             layer_off(_RAISE);
             update_tri_layer(_LOWER, _RAISE, _ADJUST);
           }
+          return false;
           break;
-        case M_BL:
+        case BACKLIT:
           if (record->event.pressed) {
             register_code(KC_RSFT);
             #ifdef BACKLIGHT_ENABLE
@@ -256,87 +240,41 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
           } else {
             unregister_code(KC_RSFT);
           }
-        break;
-        case 6:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              audio_off();
-            #endif
-          }
-        break;
-        case 7:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              audio_on();
-              PLAY_NOTE_ARRAY(start_up, false, 0);
-            #endif
-          }
-        break;
-        case 8:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              layer_off(_MUSIC);
-              stop_all_notes();
-            #endif
-          }
-        break;
-        case 9:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-              layer_on(_MUSIC);
-            #endif
-          }
-        break;
-        case 10:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              voice_iterate();
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-            #endif
-          }
-        break;
-        case 11:
-          if (record->event.pressed) {
-            #ifdef AUDIO_ENABLE
-              voice_deiterate();
-              PLAY_NOTE_ARRAY(music_scale, false, 0);
-            #endif
-          }
-        break;
+          return false;
+          break;
       }
-    return MACRO_NONE;
+    return true;
 };
 
-
 void matrix_init_user(void) {
-  #ifdef AUDIO_ENABLE
-    _delay_ms(20); // gets rid of tick
-    PLAY_NOTE_ARRAY(start_up, false, 0);
-  #endif
+    #ifdef AUDIO_ENABLE
+        startup_user();
+    #endif
 }
 
 #ifdef AUDIO_ENABLE
 
-uint8_t starting_note = 0x0C;
-int offset = 7;
-
-void process_action_user(keyrecord_t *record) {
-
-  if (IS_LAYER_ON(_MUSIC)) {
-    if (record->event.pressed) {
-        play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
-    } else {
-        stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
-    }
-  }
-
+void startup_user()
+{
+    _delay_ms(20); // gets rid of tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
 }
 
-void play_goodbye_tone()
+void shutdown_user()
 {
-  PLAY_NOTE_ARRAY(goodbye, false, 0);
-  _delay_ms(150);
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
+
+void music_on_user(void)
+{
+    music_scale_user();
+}
+
+void music_scale_user(void)
+{
+    PLAY_NOTE_ARRAY(music_scale, false, 0);
 }
 
 #endif
diff --git a/keyboards/preonic/keymaps/xyverz/makefile.mk b/keyboards/preonic/keymaps/xyverz/makefile.mk
deleted file mode 100644
index 628167ff6..000000000
--- a/keyboards/preonic/keymaps/xyverz/makefile.mk
+++ /dev/null
@@ -1 +0,0 @@
-AUDIO_ENABLE = yes
\ No newline at end of file

From 79343f1c6cde28c454eac0a577d0d7dbf3aa2f17 Mon Sep 17 00:00:00 2001
From: xyverz <xyverz@gmail.com>
Date: Sun, 8 Jan 2017 21:44:31 -0800
Subject: [PATCH 018/163] Usaility changes to keymap, tidying up a bit.

---
 keyboards/preonic/keymaps/xyverz/keymap.c | 24 +++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/keyboards/preonic/keymaps/xyverz/keymap.c b/keyboards/preonic/keymaps/xyverz/keymap.c
index b22401460..b4d18f9a2 100644
--- a/keyboards/preonic/keymaps/xyverz/keymap.c
+++ b/keyboards/preonic/keymaps/xyverz/keymap.c
@@ -54,11 +54,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Colemak
  * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Del  |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * | Bksp |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  | Shift|
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -66,9 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_COLEMAK] = {
-  {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_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
   {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
   {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
 },
@@ -98,9 +98,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |  |   |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | Mute | Vol- | Vol+ |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -109,8 +109,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_LOWER] = {
   {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_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL},
-  {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE},
+  {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______},
   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______},
   {BACKLIT, _______, KC_HOME, KC_END,  _______, KC_DEL,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______}
 },
@@ -119,9 +119,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |  \   |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | Prev | Play | Next |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -130,8 +130,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_RAISE] = {
   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL},
-  {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSLS},
+  {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, _______},
   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MPRV, KC_MPLY, KC_MNXT, _______, _______},
   {BACKLIT, _______, KC_HOME, KC_END,  _______, KC_DEL,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______}
 },

From 7a9a5d0e626aaaff96b99f251d048d24e07289f9 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Mon, 9 Jan 2017 19:08:46 -0800
Subject: [PATCH 019/163] Add files via upload

tidying up the keymap
---
 keyboards/atreus/keymaps/xyverz/keymap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/keyboards/atreus/keymaps/xyverz/keymap.c b/keyboards/atreus/keymaps/xyverz/keymap.c
index f976b0531..66fdebb50 100644
--- a/keyboards/atreus/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus/keymaps/xyverz/keymap.c
@@ -28,25 +28,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   [_DV] = { /* Dvorak */
     {KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_NO,   KC_F,    KC_G,    KC_C,    KC_R,    KC_L   },
     {KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_NO,   KC_D,    KC_H,    KC_T,    KC_N,    KC_S   },
-    {SFT_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, CTL_T(KC_BSPC),  KC_B,  KC_M,  KC_W,  KC_V,   SFT_T(KC_Z) },
+    {SFT_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, CTL_T(KC_DEL),  KC_B,  KC_M,  KC_W,  KC_V,   SFT_T(KC_Z) },
     {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_EQL}
   },
   [_QW] = { /* Qwerty */
     {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_NO,   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P   },
     {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN},
-    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_BSPC), KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
-    {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT}
+    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
+    {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_EQL}
   },
   [_CM] = { /* Colemak */
     {KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_NO,   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN},
     {KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_NO,   KC_H,    KC_N,    KC_E,    KC_I,    KC_O   },
-    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_BSPC), KC_K, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
-    {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT}
+    {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_K, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)  },
+    {KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_EQL}
   },
   [_L1] = { /* LAYER 1 */
     {KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0   },
     {KC_TAB,  KC_INS,  KC_UP,   KC_DEL,  KC_HOME, KC_NO,   KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS},
-    {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS},
+    {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_BSLS},
     {KC_TRNS, KC_GRV,  KC_LGUI, KC_TRNS, KC_DEL,  KC_LALT, KC_SPC,  KC_TRNS, KC_LBRC, KC_RBRC, KC_ENT }
   },
   [_L2] = { /* LAYER 2 */

From 1074642c3685816852f0fe58ccdf59a83fca9f47 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Fri, 13 Jan 2017 01:51:52 -0800
Subject: [PATCH 020/163] initial commit of my Atreus62 keymap

---
 keyboards/atreus62/keymaps/xyverz/keymap.c | 93 ++++++++++++++++++++++
 1 file changed, 93 insertions(+)
 create mode 100644 keyboards/atreus62/keymaps/xyverz/keymap.c

diff --git a/keyboards/atreus62/keymaps/xyverz/keymap.c b/keyboards/atreus62/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..cf59cd609
--- /dev/null
+++ b/keyboards/atreus62/keymaps/xyverz/keymap.c
@@ -0,0 +1,93 @@
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include "atreus62.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _DV 0
+#define _QW 1
+#define _CM 2
+#define _L1 3
+#define _L2 4
+
+// Macro name shortcuts
+#define DVORAK M(_DV)
+#define QWERTY M(_QW)
+#define COLEMAK M(_CM)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_DV] = { /* dvorak */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_EQL  },
+        { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_TRNS, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
+        { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_TRNS, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS },
+        { KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LGUI, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, MO(_L1), KC_BSPC, KC_ENT,  KC_SPC,  MO(_L2), KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+    },
+    
+    [_QW] = { /* qwerty */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS },
+        { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_TRNS, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL  },
+        { KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_TRNS, 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_LGUI, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, MO(_L1), KC_BSPC, KC_ENT,  KC_SPC,  MO(_L2), KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+    },
+    
+    [_CM] = { /* colemak */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS },
+        { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_TRNS, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL  },
+        { KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_TRNS, 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_LGUI, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, MO(_L1), KC_BSPC, KC_ENT,  KC_SPC,  MO(_L2), KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+    },
+    [_L1] = {
+        { KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_BSPC },
+        { KC_TRNS, KC_F11,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,  KC_BSLS },
+        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS },
+        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS },
+        { KC_TRNS, KC_TRNS, KC_HOME, KC_END,  KC_TRNS, KC_DEL,  KC_TRNS, KC_INS,  KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS }
+    },
+    [_L2] = {
+        { KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_BSPC },
+        { KC_TRNS, KC_F11,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,  KC_PIPE },
+        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS },
+        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS },
+        { KC_TRNS, KC_TRNS, KC_HOME, KC_END,  KC_TRNS, KC_DEL,  KC_TRNS, KC_INS,  KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS }
+    },
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _DV:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_DV);
+          }
+          break;
+        case _QW:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_QW);
+          }
+          break;
+        case _CM:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_CM);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};

From c8a0ab18676ff0f4ca92eaafba84e481406b7912 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Thu, 19 Jan 2017 06:49:59 -0800
Subject: [PATCH 021/163] Changes to Atreus62 keymap, adding Let's Split
 keymap.

---
 keyboards/atreus62/keymaps/xyverz/keymap.c | 159 +++++++++++++++------
 1 file changed, 112 insertions(+), 47 deletions(-)

diff --git a/keyboards/atreus62/keymaps/xyverz/keymap.c b/keyboards/atreus62/keymaps/xyverz/keymap.c
index cf59cd609..e2d8126f4 100644
--- a/keyboards/atreus62/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus62/keymaps/xyverz/keymap.c
@@ -1,6 +1,34 @@
+/* This is the Atreus62 keyboard layout by Xyverz aka u/Zrevyx on r/mk
+   I've blatantly stolen what works for me from the Planck and Preonic
+   layouts and modified this file to fit me. Initial credet goes to
+   u/profet23 for the doing all the work and adding this keyboard to
+   QMK in the first place.
+
+   I've got Dvorak, Qwerty, and Colemak layouts at this time, with the
+   possibility of adding more in the future.
+
+   The bottom row is fairly Kinesis-ish since the Contour and Advantage
+   keyboards have been my daily drivers for the last 17 years. I hope
+   You can get some enjoyment out of this layout should you chose it!
+
+CHANGELOG:
+
+ 0.1 - Initial commit. Based off of Profet's default keymap.
+ 0.2 - Converted to a more Planck/Preonic keymap style file with 
+       persistent layers enabled. Renamed layers to reflect OLKB maps.
+       Added a TODO list.
+
+TODO:
+
+ * Make the layout more efficient, even if it means changing the RAISE
+   and LOWER functionality.
+ * Add legends in comments for each layer. Maybe.
+ * Add a gaming layer.
+
+*/
+
 // this is the style you want to emulate.
 // This is the canonical layout file for the Quantum project. If you want to add another keyboard,
-
 #include "atreus62.h"
 #include "action_layer.h"
 #include "eeconfig.h"
@@ -9,54 +37,69 @@
 // 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 _DV 0
-#define _QW 1
-#define _CM 2
-#define _L1 3
-#define _L2 4
+#define _DVORAK 0
+#define _QWERTY 1
+#define _COLEMAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
 
-// Macro name shortcuts
-#define DVORAK M(_DV)
-#define QWERTY M(_QW)
-#define COLEMAK M(_CM)
+enum atreus52_keycodes {
+  DVORAK = SAFE_RANGE,
+  QWERTY,
+  COLEMAK,
+  LOWER,
+  RAISE
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [_DV] = { /* dvorak */
-        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_EQL  },
-        { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_TRNS, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
-        { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_TRNS, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS },
+    [_DVORAK] = { /* dvorak */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS },
+        { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    _______, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
+        { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    _______, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS },
         { KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LGUI, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
-        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, MO(_L1), KC_BSPC, KC_ENT,  KC_SPC,  MO(_L2), KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_ENT,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
     },
     
-    [_QW] = { /* qwerty */
-        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS },
-        { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_TRNS, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL  },
-        { KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_TRNS, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT },
+    [_QWERTY] = { /* qwerty */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS },
+        { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    _______, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL  },
+        { 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_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LGUI, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
-        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, MO(_L1), KC_BSPC, KC_ENT,  KC_SPC,  MO(_L2), KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_ENT,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
     },
     
-    [_CM] = { /* colemak */
-        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS },
-        { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_TRNS, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL  },
-        { KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_TRNS, KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT },
+    [_COLEMAK] = { /* colemak */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS },
+        { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    _______, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL  },
+        { KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    _______, KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT },
         { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LGUI, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
-        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, MO(_L1), KC_BSPC, KC_ENT,  KC_SPC,  MO(_L2), KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_ENT,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL}
     },
-    [_L1] = {
-        { KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_BSPC },
-        { KC_TRNS, KC_F11,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,  KC_BSLS },
-        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS },
-        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS },
-        { KC_TRNS, KC_TRNS, KC_HOME, KC_END,  KC_TRNS, KC_DEL,  KC_TRNS, KC_INS,  KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS }
+    [_LOWER] = {
+        { KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12  },
+        { KC_TILD, KC_GRV,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PIPE },
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______ },
+        { _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  _______, KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ }
     },
-    [_L2] = {
-        { KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_BSPC },
-        { KC_TRNS, KC_F11,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,  KC_PIPE },
-        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS },
-        { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS },
-        { KC_TRNS, KC_TRNS, KC_HOME, KC_END,  KC_TRNS, KC_DEL,  KC_TRNS, KC_INS,  KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS }
+    [_RAISE] = {
+        { KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12  },
+        { KC_TILD, KC_GRV,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS },
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_EQL,  KC_LBRC, KC_RBRC, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______ },
+        { _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  _______, KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ }
+    },
+    [_ADJUST] = {
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+        { _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
     },
 
 };
@@ -70,24 +113,46 @@ void persistant_default_layer_set(uint16_t default_layer) {
   default_layer_set(default_layer);
 }
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case _DV:
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+        case QWERTY:
           if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_DV);
+            persistant_default_layer_set(1UL<<_QWERTY);
           }
+          return false;
           break;
-        case _QW:
+        case COLEMAK:
           if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_QW);
+            persistant_default_layer_set(1UL<<_COLEMAK);
           }
+          return false;
           break;
-        case _CM:
+        case DVORAK:
           if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_CM);
+            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;
       }
-    return MACRO_NONE;
+    return true;
 };

From 80bc59858539383713c9d9f771ae293b1153674f Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Thu, 19 Jan 2017 06:51:24 -0800
Subject: [PATCH 022/163] Added Let's Split

---
 keyboards/lets_split/keymaps/xyverz/keymap.c | 191 +++++++++++++++++++
 1 file changed, 191 insertions(+)
 create mode 100644 keyboards/lets_split/keymaps/xyverz/keymap.c

diff --git a/keyboards/lets_split/keymaps/xyverz/keymap.c b/keyboards/lets_split/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..62ee4b41d
--- /dev/null
+++ b/keyboards/lets_split/keymaps/xyverz/keymap.c
@@ -0,0 +1,191 @@
+#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 planck_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 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower | Bksp |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,\
+  KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower | Bksp |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_RSFT, \
+  KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |  /   |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  | Shift|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | Left |Right |Lower | Bksp |Space |Raise |  Up  | Down |  GUI |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_SLSH, \
+  KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, \
+  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT, \
+  KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | Mute | Vol- | Vol+ |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite|      | Home |  End |      |  Del |  Ins |      | PgUp | PgDN |      |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, \
+  _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | Prev | Play | Next |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite|      | Home |  End |      |  Del |  Ins |      | PgUp | PgDN |      |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_CAPS, 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_MPRV, KC_MPLY, KC_MNXT, _______, _______, \
+  _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = KEYMAP ( \
+  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \
+  _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+
+
+};
+
+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) {
+        persistant_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        persistant_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        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;
+  }
+  return true;
+}
\ No newline at end of file

From 18cc05e2f7d09f9faac37ee504bd111e70a52764 Mon Sep 17 00:00:00 2001
From: Rovanion Luckey <rovanion.luckey@gmail.com>
Date: Tue, 24 Jan 2017 10:02:56 +0100
Subject: [PATCH 023/163] Added instructions for how to build and flash the
 firmware with teensy_cli.

---
 keyboards/ergodox/readme.md | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md
index ca3eeba59..d7eed8f43 100644
--- a/keyboards/ergodox/readme.md
+++ b/keyboards/ergodox/readme.md
@@ -1,6 +1,6 @@
 # The Easy Way
 
-If you have an ErgoDox EZ, the absolute easiest way for you to customize your firmware is using the [graphical configurator](http://configure.ergodox-ez.com), which uses QMK under the hood. 
+If you have an ErgoDox EZ, the absolute easiest way for you to customize your firmware is using the [graphical configurator](http://configure.ergodox-ez.com), which uses QMK under the hood.
 
 If you can find firmware someone else has made that does what you want, that
 is the easiest way to customize your ErgoDox.  It requires no programming
@@ -69,12 +69,13 @@ files.  Check them out with:
 
 The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
 
-Linux users need to modify udev rules as described on the Teensy Linux page.
-Some distributions provide a binary, maybe called `teensy-loader-cli`).
+Linux users need to modify udev rules as described on the Teensy Linux page (which page?).
+Some distributions provide a binary, maybe called `teensy-loader-cli`.
 
 To flash the firmware:
 
-  - Build the firmware with `make keymapname`, for example `make default` 
+  - Build the firmware with `make keymapname`, for example `make default`
+
   - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
     `ergodox_ez_default.hex`
 
@@ -87,6 +88,15 @@ To flash the firmware:
 
   - Click the button in the Teensy app to download the firmware.
 
+To flash with ´teensy-loader-cli´:
+
+  - Build the firmware with `make keymapname`, for example `make default`
+
+  - Run ´<path/to/>teensy_loader_cli --mcu=atmega32u4 -w ergodox_ez_<keymap>.hex´
+
+  - Press the Reset button by inserting a paperclip gently into the reset hole
+    in the top right corder.
+
 ## ErgoDox Infinity
 
 The Infinity is two completely independent keyboards, and needs to be flashed

From 4f163b006e95852e374a71449c121c8aa47ab5a5 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Mon, 30 Jan 2017 00:00:09 -0800
Subject: [PATCH 024/163] First revision of the XK-66 keyboard.

---
 keyboards/handwired/xk66/Makefile             |   3 +
 keyboards/handwired/xk66/config.h             | 162 ++++++++++++++++++
 .../handwired/xk66/keymaps/default/Makefile   |  21 +++
 .../handwired/xk66/keymaps/default/config.h   |   8 +
 .../handwired/xk66/keymaps/default/keymap.c   |  90 ++++++++++
 .../handwired/xk66/keymaps/default/readme.md  |   1 +
 keyboards/handwired/xk66/readme.md            |  28 +++
 keyboards/handwired/xk66/rules.mk             |  67 ++++++++
 keyboards/handwired/xk66/xk66.c               |   8 +
 keyboards/handwired/xk66/xk66.h               |  25 +++
 10 files changed, 413 insertions(+)
 create mode 100644 keyboards/handwired/xk66/Makefile
 create mode 100644 keyboards/handwired/xk66/config.h
 create mode 100644 keyboards/handwired/xk66/keymaps/default/Makefile
 create mode 100644 keyboards/handwired/xk66/keymaps/default/config.h
 create mode 100644 keyboards/handwired/xk66/keymaps/default/keymap.c
 create mode 100644 keyboards/handwired/xk66/keymaps/default/readme.md
 create mode 100644 keyboards/handwired/xk66/readme.md
 create mode 100644 keyboards/handwired/xk66/rules.mk
 create mode 100644 keyboards/handwired/xk66/xk66.c
 create mode 100644 keyboards/handwired/xk66/xk66.h

diff --git a/keyboards/handwired/xk66/Makefile b/keyboards/handwired/xk66/Makefile
new file mode 100644
index 000000000..bd09e5885
--- /dev/null
+++ b/keyboards/handwired/xk66/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../../Makefile
+endif
diff --git a/keyboards/handwired/xk66/config.h b/keyboards/handwired/xk66/config.h
new file mode 100644
index 000000000..02ff2a6bf
--- /dev/null
+++ b/keyboards/handwired/xk66/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    Xyverz
+#define PRODUCT         XK-66
+#define DESCRIPTION     A hand-wired 66-key keyboard by Xyverz
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * 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 { B5, B4, D7, D6, D4 }
+#define MATRIX_COL_PINS { B6, F7, F6, F5, F4, F1, F0, D1, D0, B7, B3, B2, B1, B0 }
+#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/handwired/xk66/keymaps/default/Makefile b/keyboards/handwired/xk66/keymaps/default/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/handwired/xk66/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/handwired/xk66/keymaps/default/config.h b/keyboards/handwired/xk66/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/handwired/xk66/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/handwired/xk66/keymaps/default/keymap.c b/keyboards/handwired/xk66/keymaps/default/keymap.c
new file mode 100644
index 000000000..61b3bd97f
--- /dev/null
+++ b/keyboards/handwired/xk66/keymaps/default/keymap.c
@@ -0,0 +1,90 @@
+#include "xk66.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 _DV 0
+#define _QW 1
+#define _CM 2
+#define _FL 3
+
+// Macro name shortcuts
+#define QWERTY M(_QW)
+#define DVORAK M(_DV)
+#define COLEMAK M(_CM)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_DV] = KEYMAP ( /* Dvorak */
+        KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_BSPC, \
+        KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,  KC_BSLS, \
+        MO(_FL), KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,          KC_ENT,  \
+        KC_LSFT,          KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,          \
+        KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_BSPC, KC_SPC,           KC_UP,   KC_DOWN, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)
+       ),
+
+[_QW] = KEYMAP ( /* Qwerty */
+        KC_ESC,  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_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, \
+        MO(_FL), 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_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_BSPC, KC_SPC,           KC_UP,   KC_DOWN, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)
+       ),
+
+[_CM] = KEYMAP ( /* Colemak */
+        KC_ESC,  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_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \
+        MO(_FL), KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    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_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_BSPC, KC_SPC,           KC_UP,   KC_DOWN, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)
+       ),
+
+[_FL] = KEYMAP ( /* Function Layer 1 */
+        KC_GRV,  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_MPRV, KC_MPLY, KC_MNXT, _______, _______, QWERTY,  DVORAK,  COLEMAK, _______, _______,          _______, \
+        KC_CAPS,          _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______,          \
+        RESET,   _______, _______, KC_HOME, KC_END,  KC_DEL,  KC_INS,           KC_PGUP, KC_PGDN, _______, _______, _______, _______
+       ),
+
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _DV:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_DV);
+          }
+          break;
+        case _QW:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_QW);
+          }
+          break;
+        case _CM:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_CM);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboards/handwired/xk66/keymaps/default/readme.md b/keyboards/handwired/xk66/keymaps/default/readme.md
new file mode 100644
index 000000000..6940fdd7c
--- /dev/null
+++ b/keyboards/handwired/xk66/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for handwired/xk66
\ No newline at end of file
diff --git a/keyboards/handwired/xk66/readme.md b/keyboards/handwired/xk66/readme.md
new file mode 100644
index 000000000..2aac6bde3
--- /dev/null
+++ b/keyboards/handwired/xk66/readme.md
@@ -0,0 +1,28 @@
+handwired/xk66 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/handwired/xk66 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/handwired/xk66/rules.mk b/keyboards/handwired/xk66/rules.mk
new file mode 100644
index 000000000..707a5385b
--- /dev/null
+++ b/keyboards/handwired/xk66/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 ?= yes      # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
+CONSOLE_ENABLE ?= yes        # Console for debug(+400)
+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
diff --git a/keyboards/handwired/xk66/xk66.c b/keyboards/handwired/xk66/xk66.c
new file mode 100644
index 000000000..3c3e31949
--- /dev/null
+++ b/keyboards/handwired/xk66/xk66.c
@@ -0,0 +1,8 @@
+#include "xk66.h"
+
+void matrix_init_kb(void) {
+	// put your keyboard start-up code here
+	// runs once when the firmware starts up
+
+	matrix_init_user();
+}
diff --git a/keyboards/handwired/xk66/xk66.h b/keyboards/handwired/xk66/xk66.h
new file mode 100644
index 000000000..38fe129e4
--- /dev/null
+++ b/keyboards/handwired/xk66/xk66.h
@@ -0,0 +1,25 @@
+#ifndef XK66_H
+#define XK66_H
+
+#include "quantum.h"
+#include "led.h"
+
+
+// This a shortcut to help you visually see your 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, K06, K07, K08, K09, K0a, K0b, K0c, K0d, \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, K1d, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b,      K2d, \
+    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c,      \
+    K40, K41, K42, K43, K44, K45, K46,      K48, K49, K4a, K4b, K4c, K4d  \
+) { \
+    { K00, K01,   K02, K03, K04, K05, K06, K07,   K08, K09, K0a, K0b, K0c,   K0d   }, \
+    { K10, K11,   K12, K13, K14, K15, K16, K17,   K18, K19, K1a, K1b, K1c,   K1d   }, \
+    { K20, K21,   K22, K23, K24, K25, K26, K27,   K28, K29, K2a, K2b, KC_NO, K2d   }, \
+    { K30, KC_NO, K32, K33, K34, K35, K36, K37,   K38, K39, K3a, K3b, K3c,   KC_NO }, \
+    { K40, K41,   K42, K43, K44, K45, K46, KC_NO, K48, K49, K4a, K4b, K4c,   K4d   } \
+}
+
+#endif
\ No newline at end of file

From d1fb51976aeef8eeea5975c5bf75b6b1aa649826 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Mon, 6 Feb 2017 11:53:48 +0100
Subject: [PATCH 025/163] Added new keymap to the Satan GH60 keyboard.

Added new keymap `Admiral Strokers` to the Satan keyboard. This is an
ISO based layout with tap for brackets/ curly on shft and ctl keys.
Furthermore, there is added arrows and media/volume/special/f-keys layer
on the TAB button when you hold.
---
 .../satan/keymaps/admiralStrokers/Makefile    |  26 +++
 .../satan/keymaps/admiralStrokers/config.h    |  96 +++++++++
 .../satan/keymaps/admiralStrokers/keymap.c    | 189 ++++++++++++++++++
 .../satan/keymaps/admiralStrokers/readme.md   |  13 ++
 4 files changed, 324 insertions(+)
 create mode 100644 keyboards/satan/keymaps/admiralStrokers/Makefile
 create mode 100644 keyboards/satan/keymaps/admiralStrokers/config.h
 create mode 100644 keyboards/satan/keymaps/admiralStrokers/keymap.c
 create mode 100644 keyboards/satan/keymaps/admiralStrokers/readme.md

diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile
new file mode 100644
index 000000000..18d2280d6
--- /dev/null
+++ b/keyboards/satan/keymaps/admiralStrokers/Makefile
@@ -0,0 +1,26 @@
+# 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 	= 	no  # 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   # Enables your LED to breathe while your computer is sleeping.
+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
+UNICODEMAP_ENABLE	=		no	 # This allows sending unicode symbols using X(<unicode>) in your keymap.
+UNICODE_ENABLE 		=		no   # Unicode
+UCIS_ENABLE 			=		no	 # Keep in mind that not all will work (See WinCompose for details on Windows).
+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
+
+VARIABLE_TRACE		=		no	 # Use this to debug changes to variable values
+API_SYSEX_ENABLE	=		no	 # This enables using the Quantum SYSEX API to send strings
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
diff --git a/keyboards/satan/keymaps/admiralStrokers/config.h b/keyboards/satan/keymaps/admiralStrokers/config.h
new file mode 100644
index 000000000..d0338fb7e
--- /dev/null
+++ b/keyboards/satan/keymaps/admiralStrokers/config.h
@@ -0,0 +1,96 @@
+/*
+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_ADMSTROK
+#define CONFIG_H_ADMSTROK
+
+#include "config_common.h"
+#include "../../config.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0003
+#define MANUFACTURER    SATAN
+#define PRODUCT         GH60
+#define DESCRIPTION     QMK keyboard firmware for Satan GH60 with WS2812 support
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN B6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* 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)) \
+)
+
+/* Backlight configuration */
+#define BACKLIGHT_LEVELS 4
+
+/* Underlight configuration */
+#define RGB_DI_PIN E2
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 8     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+#define DISABLE_SPACE_CADET_ROLLOVER
+
+
+
+/*
+ * 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/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
new file mode 100644
index 000000000..487deb086
--- /dev/null
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -0,0 +1,189 @@
+#include "satan.h"
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// general keydefs
+		#define norm 0		// Default layer
+		#define elev 1		// Layer directional keys
+		#define supr 2		// F-keys and mediakeys
+		#define spac 3
+		#define FNO1 4		//
+		#define FNO2 5		//
+		#define FNO3 6		//
+		#define MAC0 M(0)	//
+		#define MAC1 M(1)	//
+		#define MAC2 M(2)	//
+		#define MAC3 M(3)	//
+		#define MAC4 M(4)	//
+		#define MAC5 M(5)	//
+		#define MAC6 M(6)	//
+		#define MAC7 M(7)	//
+		#define MAC8 M(8)	//
+		#define MAC9 M(9)	//
+		#define GRAV KC_GRV //
+		#define MEDI F(FNO1)//
+
+// General shortenings
+		#define ESCA KC_ESC
+		#define MINS KC_MINS
+		#define EQUL KC_EQL
+		#define BSPC KC_BSPC
+		#define DELE KC_DEL
+		#define LBRC KC_LBRC
+		#define RBRC KC_RBRC
+		#define ALTR KC_RALT
+		#define SCLN KC_SCLN
+		#define QUOT KC_QUOT
+		#define NUHS KC_NUHS
+		#define ENTE KC_ENT
+		#define NUBS KC_NUBS	// Less/ greater sign
+		#define COMM KC_COMM	// Comma
+		#define FSTO KC_DOT		// Full stop
+		#define SLSH KC_SLSH
+		#define ALTL KC_LALT
+		#define GUIL KC_LGUI
+		#define GUIR KC_RGUI
+		#define MENO KC_MENU
+// The F-row/layer:
+		#define FK01 KC_F1
+		#define FK02 KC_F2
+		#define FK03 KC_F3
+		#define FK04 KC_F4
+		#define FK05 KC_F5
+		#define FK06 KC_F6
+		#define FK07 KC_F7
+		#define FK08 KC_F8
+		#define FK09 KC_F9
+		#define FK10 KC_F10
+		#define FK11 KC_F11
+		#define FK12 KC_F12
+		#define FK13 KC_F13
+		#define FK14 KC_F14
+// Special Actions and Media Keys
+		#define INSE KC_INS  	// Insert here
+		#define HOME KC_HOME 	// Go to beginning of line
+		#define ENDI  KC_END 	// go to end of line
+		#define PSCR  KC_PSCR 	// Print Screen
+		#define SLCK  KC_SLCK 	// go to end of line
+		#define PGDN  KC_PGDN 	// go to end of line
+		#define PGUP  KC_PGUP 	// go to end of line
+		#define PLPS KC_MPLY 	// Play/Pause
+		#define PAUS KC_PAUS 	// Pause button
+		#define MUTE KC_MUTE 	// Mute sound
+		#define VOLU KC_VOLU 	// Volume increase
+		#define VOLD KC_VOLD 	// Volume decrease
+		#define MNXT KC_MNXT 	// next track
+		#define MPRV KC_MPRV 	// prev track
+		#define MSTP KC_MSTP 	// stop playing
+		#define MSEL KC_MSEL 	// Select media (Start playing it)
+		#define MAIL KC_MAIL 	// Open default mail app
+		#define CALC KC_CALC 	// Open default calculator app
+		#define MYCM KC_MYCM 	// Open default file manager
+		//#define LILO KC_XXXXXX	// Reserved for later
+		//#define LIHI KC_XXXXXX	// Reserved for later
+
+
+// dual-role shortcuts
+		#define DUTB LT(elev, KC_TAB) 	// `tabs` layer on hold and tab on tap
+		#define DUSP LT(spac, KC_SPACE)	// `spce` layer on hold and space on tap
+		#define LOCK LGUI(KC_L)			// lock computer (win)
+
+// Space Admiral Strokers
+		#define SADL MAC0 				// Hold for lshift and { on tap
+		#define SADR MAC1				// Hold for rshift and } on tap
+		#define CADL MAC2				// Hold for lctrl and [ on tap
+		#define CADR MAC3				// Hold for rctrl and ] on tap
+
+// arrow cluster duality bottom right corner
+		#define ARLF ALT_T(KC_LEFT) // Left arrow
+		#define ARRT CTL_T(KC_RIGHT)// Right arrow
+		#define ARUP SFT_T(KC_UP)	// Up arrow
+		#define ARDN GUI_T(KC_DOWN) // Down arrow
+
+// brackets
+		#define NOCL RALT(KC_7)    // [
+		#define NOCR RALT(KC_0)    // ]
+		#define NOPL LSFT(KC_8)    // (
+		#define NOPR LSFT(KC_9)    // )
+		#define NOAL KC_NUBS       // <
+		#define NOAR LSFT(KC_NUBS) // >
+		#define NOBL RALT(KC_8)    // [
+		#define NOBR RALT(KC_9)    // ]
+
+// increase readability
+		#define XXXX	KC_TRNS
+		#define DEAD 	KC_NO
+		#define SCAN	KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB
+
+[ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped)
+        GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\
+        DUTB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LBRC, RBRC, DEAD,\
+        ALTR, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLN, QUOT, NUHS, ENTE,\
+				SADL, NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, COMM, FSTO, SLSH, SADR, DEAD,\
+				CADL, ALTL, GUIL,           		DUSP,             	    GUIR, MEDI, MENO, CADR),
+
+[ elev ] = KEYMAP( // The f-Row (with f13-14), Special keys and media keys
+				LOCK, FK01, FK02, FK03, FK04, FK05, FK06, FK07, FK08, FK09, FK10, FK11, FK12, FK13, FK14,\
+				XXXX, XXXX, XXXX, XXXX, MAIL, XXXX, XXXX, HOME, INSE, PSCR, SLCK, PAUS, PGUP, XXXX,\
+			    XXXX, XXXX, XXXX, XXXX, MYCM, XXXX, XXXX, MPRV, PAUS, MNXT, XXXX, XXXX, PGDN, ENDI,\
+				XXXX, XXXX, XXXX, XXXX, CALC, XXXX, XXXX, XXXX, MUTE, VOLD, VOLU, XXXX, ARUP, DEAD,\
+				XXXX, XXXX, XXXX, 					PLPS,			  		XXXX, ARLF, ARDN, ARRT),
+
+[ spac ] = KEYMAP( // The space controls (by pressing space)
+				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+			    XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\
+				XXXX, XXXX, XXXX, 					XXXX,			        XXXX, XXXX, XXXX, XXXX),
+
+[ supr ] = KEYMAP( // Additional layer for later use.
+				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+			    XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\
+				XXXX, XXXX, XXXX, 					XXXX,			  		XXXX, XXXX, XXXX, XXXX),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
+		static uint16_t key_timer;
+    switch(id) {
+        case 0: //MAC0 - Hold for lshift and { on tap
+					if (record->event.pressed) {
+						key_timer = timer_read();
+						return MACRO(D(LSFT), END );
+					} else {
+						return (timer_elapsed(key_timer) < 150) ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END);
+					}; break;
+			  case 1:	//MAC1 - Hold for rshift and } on tap
+					if (record->event.pressed) {
+						key_timer = timer_read();
+						return MACRO(D(RSFT), END );
+					} else {
+						return (timer_elapsed(key_timer) < 150) ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END);
+					}; break;
+        case 2: //MAC2 - Hold for lctrl and [ on tap
+						if (record->event.pressed) {
+							key_timer = timer_read();
+							return MACRO(D(LCTL), END );
+						} else {return (timer_elapsed(key_timer) < 150) ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END);
+						}; break;
+       	case 3: //MAC3 - Hold for rctrl and ] on tap
+						if (record->event.pressed) {
+							key_timer = timer_read();
+							return MACRO(D(RCTL), END );
+						} else {
+							return (timer_elapsed(key_timer) < 150) ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END);
+						}; break;
+      	case 4: //MAC4
+						if (record->event.pressed) { } else { }; break;
+       	case 5: //MAC5
+						if (record->event.pressed) { } else { }; break;
+       	case 6: //MAC6
+						if (record->event.pressed) { } else { }; break;
+    } return MACRO_NONE;
+};
+/*
+		Later use:
+		void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { }
+		enum function_id { };
+		const uint16_t PROGMEM fn_actions[] = { };
+
+*/
diff --git a/keyboards/satan/keymaps/admiralStrokers/readme.md b/keyboards/satan/keymaps/admiralStrokers/readme.md
new file mode 100644
index 000000000..9b30caf34
--- /dev/null
+++ b/keyboards/satan/keymaps/admiralStrokers/readme.md
@@ -0,0 +1,13 @@
+# Admiral Strokers keymap
+## For the  Satan GH60 PCB
+The Admiral STN60 is a layout for users of the satan GH60, optimized with some nice	features such as mod tap for brackets (Similar to Space Cadett), space mod for F-row/  layer with easy to access media and control keys. The layout below is just as an example and is ISO based, ANSI and JIS layouts will be included later.
+
+``````
+[ _tmp ] = KEYMAP(	// Copy this to get started. SCAN is scandinavian layout specific.
+XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
+XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\
+XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, SCAN, XXXX,\
+XXXX, SCAN, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\
+XXXX, XXXX, XXXX, 					XXXX,		   SCAN, XXXX, XXXX, XXXX, XXXX),\
+
+```

From 060f075fd1961b9835eece4bb6882b238fa68610 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Tue, 7 Feb 2017 22:14:56 -0800
Subject: [PATCH 026/163] Added another handwired board, the Atreus50. Added a
 layer for WOW to my Atreus62.

---
 keyboards/atreus62/keymaps/xyverz/keymap.c    |  23 +++-
 keyboards/handwired/atreus50/Makefile         |   3 +
 keyboards/handwired/atreus50/atreus50.c       |   1 +
 keyboards/handwired/atreus50/atreus50.h       |  18 +++
 keyboards/handwired/atreus50/config.h         |  58 ++++++++
 .../atreus50/keymaps/default/Makefile         |  21 +++
 .../atreus50/keymaps/default/keymap.c         | 128 ++++++++++++++++++
 keyboards/handwired/atreus50/rules.mk         |  56 ++++++++
 8 files changed, 305 insertions(+), 3 deletions(-)
 create mode 100644 keyboards/handwired/atreus50/Makefile
 create mode 100644 keyboards/handwired/atreus50/atreus50.c
 create mode 100644 keyboards/handwired/atreus50/atreus50.h
 create mode 100644 keyboards/handwired/atreus50/config.h
 create mode 100644 keyboards/handwired/atreus50/keymaps/default/Makefile
 create mode 100644 keyboards/handwired/atreus50/keymaps/default/keymap.c
 create mode 100644 keyboards/handwired/atreus50/rules.mk

diff --git a/keyboards/atreus62/keymaps/xyverz/keymap.c b/keyboards/atreus62/keymaps/xyverz/keymap.c
index e2d8126f4..7b7c69f57 100644
--- a/keyboards/atreus62/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus62/keymaps/xyverz/keymap.c
@@ -40,14 +40,16 @@ TODO:
 #define _DVORAK 0
 #define _QWERTY 1
 #define _COLEMAK 2
-#define _LOWER 3
-#define _RAISE 4
+#define _WOW 3
+#define _LOWER 4
+#define _RAISE 5
 #define _ADJUST 16
 
 enum atreus52_keycodes {
   DVORAK = SAFE_RANGE,
   QWERTY,
   COLEMAK,
+  WOW,
   LOWER,
   RAISE
 };
@@ -80,6 +82,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LGUI, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
         { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_ENT,  KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL}
     },
+
+    [_WOW] = { /* Dvorak with minor modifications for playing World of Warcraft */
+        { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS },
+        { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    _______, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
+        { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    _______, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS },
+        { KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LALT, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, CTL_T(KC_ENT), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
+    },
+    
     [_LOWER] = {
         { KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12  },
         { KC_TILD, KC_GRV,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PIPE },
@@ -97,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     [_ADJUST] = {
         { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
         { _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
-        { _______, _______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, WOW     },
         { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
         { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
     },
@@ -133,6 +144,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
           }
           return false;
           break;
+        case WOW:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_WOW);
+          }
+          return false;
+          break;
         case LOWER:
           if (record->event.pressed) {
             layer_on(_LOWER);
diff --git a/keyboards/handwired/atreus50/Makefile b/keyboards/handwired/atreus50/Makefile
new file mode 100644
index 000000000..bd09e5885
--- /dev/null
+++ b/keyboards/handwired/atreus50/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../../Makefile
+endif
diff --git a/keyboards/handwired/atreus50/atreus50.c b/keyboards/handwired/atreus50/atreus50.c
new file mode 100644
index 000000000..dd0dbdaac
--- /dev/null
+++ b/keyboards/handwired/atreus50/atreus50.c
@@ -0,0 +1 @@
+#include "atreus50.h"
diff --git a/keyboards/handwired/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h
new file mode 100644
index 000000000..5d27109cc
--- /dev/null
+++ b/keyboards/handwired/atreus50/atreus50.h
@@ -0,0 +1,18 @@
+#ifndef ATREUS50_H
+#define ATREUS50_H
+
+#include "quantum.h"
+
+#define KEYMAP( \
+	K000, K001, K002, K003, K004, K005,       K007, K008, K009, K010, K011, K012, \
+	K100, K101, K102, K103, K104, K105,       K107, K108, K109, K110, K111, K112, \
+	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+	K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312  \
+) { \
+	{ K000,  K001,  K002,  K003,  K004,  K005,  KC_NO, K007,  K008,  K009,  K010,  K011,  K012 }, \
+	{ K100,  K101,  K102,  K103,  K104,  K105,  KC_NO, K107,  K108,  K109,  K110,  K111,  K112 }, \
+	{ K200,  K201,  K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212 }, \
+	{ K300,  K301,  K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312 }  \
+}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/config.h b/keyboards/handwired/atreus50/config.h
new file mode 100644
index 000000000..0248032a0
--- /dev/null
+++ b/keyboards/handwired/atreus50/config.h
@@ -0,0 +1,58 @@
+#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    qmkbuilder
+#define PRODUCT         Atreus50
+#define DESCRIPTION     Keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 13
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* prevent stuck modifiers */
+#define PREVENT_STUCK_MODIFIERS
+
+
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 0
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/keymaps/default/Makefile b/keyboards/handwired/atreus50/keymaps/default/Makefile
new file mode 100644
index 000000000..43fee2668
--- /dev/null
+++ b/keyboards/handwired/atreus50/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 = yes      # 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/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
new file mode 100644
index 000000000..b3dc17cb1
--- /dev/null
+++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c
@@ -0,0 +1,128 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "atreus50.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 _DVORAK 0
+#define _QWERTY 1
+#define _COLEMAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum planck_keycodes {
+  DVORAK = SAFE_RANGE,
+  QWERTY,
+  COLEMAK,
+  LOWER,
+  RAISE,
+  BACKLIT
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_DVORAK] = { /* dvorak */
+        { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    _______, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
+        { KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    _______, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS },
+        { KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_ENT,  KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_LGUI, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+    },
+    
+    [_QWERTY] = { /* qwerty */
+        { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    _______, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL  },
+        { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    _______, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT },
+        { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_ENT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_LGUI, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
+    },
+    
+    [_COLEMAK] = { /* colemak */
+        { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    _______, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL  },
+        { 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_ENT,  KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
+        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_LGUI, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL}
+    },
+    
+    [_LOWER] = {
+        { KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______ },
+        { KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
+        { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  _______, KC_F12,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______ },
+        { _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  _______, KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ }
+    },
+    [_RAISE] = {
+        { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______ },
+        { KC_CAPS, 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_MPRV, KC_MPLY, KC_MNXT, _______, _______ },
+        { _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  _______, KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ }
+    },
+    [_ADJUST] = {
+        { KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12  },
+        { _______, RESET,   _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
+    },
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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) {
+            persistant_default_layer_set(1UL<<_QWERTY);
+          }
+          return false;
+          break;
+        case COLEMAK:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_COLEMAK);
+          }
+          return false;
+          break;
+        case DVORAK:
+          if (record->event.pressed) {
+            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;
+      }
+    return true;
+};
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk
new file mode 100644
index 000000000..1f8e943be
--- /dev/null
+++ b/keyboards/handwired/atreus50/rules.mk
@@ -0,0 +1,56 @@
+# 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
+
+
+# Boot Section Size in *bytes*
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+#   comment out to disable the options.
+#
+BOOTMAGIC_ENABLE ?= yes	# Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes	# Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes	# Audio control and System control(+450)
+CONSOLE_ENABLE ?= 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 ?= no  # Enable keyboard backlight functionality
+AUDIO_ENABLE ?= no
+RGBLIGHT_ENABLE ?= no
\ No newline at end of file

From 4d7105c2cf47c7604b54cdf488b4eb9d08c1f1cf Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Fri, 10 Feb 2017 23:30:08 -0800
Subject: [PATCH 027/163] Added RGB Underglow to my Preonic

---
 keyboards/preonic/keymaps/xyverz/Makefile | 23 +++++++++++++++++
 keyboards/preonic/keymaps/xyverz/config.h | 21 ++++++++++++++++
 keyboards/preonic/keymaps/xyverz/keymap.c | 30 +++++++++++------------
 3 files changed, 59 insertions(+), 15 deletions(-)
 create mode 100644 keyboards/preonic/keymaps/xyverz/Makefile
 create mode 100644 keyboards/preonic/keymaps/xyverz/config.h

diff --git a/keyboards/preonic/keymaps/xyverz/Makefile b/keyboards/preonic/keymaps/xyverz/Makefile
new file mode 100644
index 000000000..ea5f6c164
--- /dev/null
+++ b/keyboards/preonic/keymaps/xyverz/Makefile
@@ -0,0 +1,23 @@
+# 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 = no        # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = no         # Commands for debug and configuration
+NKRO_ENABLE = yes           # 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
+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 = yes       # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+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/preonic/keymaps/xyverz/config.h b/keyboards/preonic/keymaps/xyverz/config.h
new file mode 100644
index 000000000..4e12921fe
--- /dev/null
+++ b/keyboards/preonic/keymaps/xyverz/config.h
@@ -0,0 +1,21 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// Number of backlight levels
+#undef  BACKLIGHT_LEVELS
+#define BACKLIGHT_LEVELS 3
+
+/* ws2812 RGB LED */
+#undef RGB_DI_PIN
+#define RGB_DI_PIN B3
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 11     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+
+#endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/xyverz/keymap.c b/keyboards/preonic/keymaps/xyverz/keymap.c
index b4d18f9a2..c8457cda1 100644
--- a/keyboards/preonic/keymaps/xyverz/keymap.c
+++ b/keyboards/preonic/keymaps/xyverz/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_QWERTY] = {
   {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TAB,  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_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL },
   {KC_MINS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
   {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_COLEMAK] = {
   {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL},
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL },
   {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
   {KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   GUI_T(KC_BSPC), KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_ENT }
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Dvorak
  * ,-----------------------------------------------------------------------------------.
- * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  \   |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |  /   |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_DVORAK] = {
-  {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS},
   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH},
   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS},
   {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT},
@@ -96,7 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Lower
  * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |  |   |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_LOWER] = {
-  {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_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______},
   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE},
   {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______},
   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______},
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Raise
  * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |  \   |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_RAISE] = {
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______},
   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSLS},
   {KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, _______},
   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MPRV, KC_MPLY, KC_MNXT, _______, _______},
@@ -140,20 +140,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |      | Reset|      |      |      |      |      |      |      |      |      |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |      |      |      |      |      |AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      |
+ * |      |RGB ON| MODE | HUE+ | HUE- | SAT+ | SAT- | VAL+ | VAL- |      |      |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
 [_ADJUST] = {
-  {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12},
-  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
-  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},
-  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
+  {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12 },
+  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},
+  {_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 }
 

From 134c354fc502b43798add95b7b154b2bc520e4e6 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sat, 11 Feb 2017 21:54:05 -0800
Subject: [PATCH 028/163] Adding a config file so that I can get RGB underglow
 for my Let's Split

---
 keyboards/lets_split/keymaps/xyverz/config.h | 37 ++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 keyboards/lets_split/keymaps/xyverz/config.h

diff --git a/keyboards/lets_split/keymaps/xyverz/config.h b/keyboards/lets_split/keymaps/xyverz/config.h
new file mode 100644
index 000000000..87808a97a
--- /dev/null
+++ b/keyboards/lets_split/keymaps/xyverz/config.h
@@ -0,0 +1,37 @@
+/*
+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/>.
+*/
+
+
+#define USE_SERIAL
+
+#define MASTER_LEFT
+// #define _MASTER_RIGHT
+// #define EE_HANDS
+
+#ifdef SUBPROJECT_rev1
+    #include "../../rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "../../rev2/config.h"
+    /* RGB Underglow */
+    #undef RGBLED_NUM
+    #define RGBLIGHT_ANIMATIONS
+    #define RGBLED_NUM 8
+#endif
+#ifdef SUBPROJECT_rev2fliphalf
+	#include "../../rev2fliphalf/config.h"
+#endif

From 489415009491847ac1855ef5586e2fdcf303aa19 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sat, 11 Feb 2017 21:54:58 -0800
Subject: [PATCH 029/163] Changes to the keymap to accommodate the RGB
 Underglow lighting.

---
 keyboards/lets_split/keymaps/xyverz/keymap.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/keyboards/lets_split/keymaps/xyverz/keymap.c b/keyboards/lets_split/keymaps/xyverz/keymap.c
index 62ee4b41d..d52eb40ae 100644
--- a/keyboards/lets_split/keymaps/xyverz/keymap.c
+++ b/keyboards/lets_split/keymaps/xyverz/keymap.c
@@ -126,15 +126,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |
+ * |      |RGB ON| MODE | HUE+ | HUE- | SAT+ | SAT- | VAL+ | VAL- |      |      |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
 [_ADJUST] = KEYMAP ( \
-  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \
-  _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12 , \
+  _______, RESET,   _______, _______, _______, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
+  _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, \
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
 )
 
@@ -188,4 +188,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       break;
   }
   return true;
-}
\ No newline at end of file
+}

From 64f9779fe54facecdef9d1a6a7c1d893f79ca20e Mon Sep 17 00:00:00 2001
From: lambdalisue <lambdalisue@hashnote.net>
Date: Tue, 14 Feb 2017 14:12:54 +0900
Subject: [PATCH 030/163] Add TAPPING_FORCE_HOLD to regulate behaviour

See #889 for the detail.
---
 doc/keymap.md                    | 3 +++
 tmk_core/common/action_tapping.c | 9 +++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/doc/keymap.md b/doc/keymap.md
index 6f2a663fc..2b0d2cd95 100644
--- a/doc/keymap.md
+++ b/doc/keymap.md
@@ -549,6 +549,9 @@ Layer switching with tap key:
 
 [dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
 
+When user hold a key after tap, it repeat the tapped key rather to hold a modifier key.
+If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`.
+See https://github.com/qmk/qmk_firmware/issues/889 for the detail.
 
 ### 4.2 Tap Toggle
 This is a feature to assign both toggle layer and momentary switch layer action to just same one physical key. It works as momentary layer switch when holding a key but toggle switch with several taps.
diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c
index e16e11be7..66044d8bc 100644
--- a/tmk_core/common/action_tapping.c
+++ b/tmk_core/common/action_tapping.c
@@ -228,6 +228,7 @@ bool process_tapping(keyrecord_t *keyp)
         if (WITHIN_TAPPING_TERM(event)) {
             if (event.pressed) {
                 if (IS_TAPPING_KEY(event.key)) {
+#ifndef TAPPING_FORCE_HOLD
                     if (!tapping_key.tap.interrupted && tapping_key.tap.count > 0) {
                         // sequential tap.
                         keyp->tap = tapping_key.tap;
@@ -237,11 +238,11 @@ bool process_tapping(keyrecord_t *keyp)
                         tapping_key = *keyp;
                         debug_tapping_key();
                         return true;
-                    } else {
-                        // FIX: start new tap again
-                        tapping_key = *keyp;
-                        return true;
                     }
+#endif
+                    // FIX: start new tap again
+                    tapping_key = *keyp;
+                    return true;
                 } else if (is_tap_key(event.key)) {
                     // Sequential tap can be interfered with other tap key.
                     debug("Tapping: Start with interfering other tap.\n");

From ea20a064b98b962a723a1ae03ebc27e3f8897321 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Wed, 15 Feb 2017 20:14:32 -0800
Subject: [PATCH 031/163] Added my keymap to the Kinesis project.

---
 keyboards/kinesis/keymaps/xyverz/Makefile  |  21 ++
 keyboards/kinesis/keymaps/xyverz/config.h  |   8 +
 keyboards/kinesis/keymaps/xyverz/keymap.c  | 226 +++++++++++++++++++++
 keyboards/kinesis/keymaps/xyverz/readme.md |   1 +
 4 files changed, 256 insertions(+)
 create mode 100644 keyboards/kinesis/keymaps/xyverz/Makefile
 create mode 100644 keyboards/kinesis/keymaps/xyverz/config.h
 create mode 100644 keyboards/kinesis/keymaps/xyverz/keymap.c
 create mode 100644 keyboards/kinesis/keymaps/xyverz/readme.md

diff --git a/keyboards/kinesis/keymaps/xyverz/Makefile b/keyboards/kinesis/keymaps/xyverz/Makefile
new file mode 100644
index 000000000..1da780b84
--- /dev/null
+++ b/keyboards/kinesis/keymaps/xyverz/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 = yes      # 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
diff --git a/keyboards/kinesis/keymaps/xyverz/config.h b/keyboards/kinesis/keymaps/xyverz/config.h
new file mode 100644
index 000000000..8893d122e
--- /dev/null
+++ b/keyboards/kinesis/keymaps/xyverz/config.h
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..7c5148ac2
--- /dev/null
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -0,0 +1,226 @@
+#include "kinesis.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+#define _DV 0 // Dvorak layer
+#define _QW 1 // Qwerty layer
+#define _CM 2 // Colemak layer
+#define _LO 3 // Media Layer
+#define _RA 4 // Keypad Layer
+
+// Macro name shortcuts
+#define DVORAK M(_DV)
+#define QWERTY M(_QW)
+#define COLEMAK M(_CM)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+/****************************************************************************************************
+*
+* Keymap: Default Layer in Qwerty
+*
+* ,-------------------------------------------------------------------------------------------------------------------.
+* | Esc    |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F8  |  F9  |  F10 |  F12 | PSCR | SLCK | PAUS |  FN0 |  BOOT  |
+* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+* | =+     |  1!  |  2@  |  3#  |  4$  |  5%  |                           |  6^  |  7&  |  8*  |  9(  |  0)  | -_     |
+* |--------+------+------+------+------+------|                           +------+------+------+------+------+--------|
+* | Tab    |   Q  |   W  |   E  |   R  |   T  |                           |   Y  |   U  |   I  |   O  |   P  | \|     |
+* |--------+------+------+------+------+------|                           |------+------+------+------+------+--------|
+* | Caps   |   A  |   S  |   D  |   F  |   G  |                           |   H  |   J  |   K  |   L  |  ;:  | '"     |
+* |--------+------+------+------+------+------|                           |------+------+------+------+------+--------|
+* | Shift  |   Z  |   X  |   C  |   V  |   B  |                           |   N  |   M  |  ,.  |  .>  |  /?  | Shift  |
+* `--------+------+------+------+------+-------                           `------+------+------+------+------+--------'
+*          | `~   | INS  | Left | Right|                                         | Up   | Down |  [{  |  ]}  |
+*          `---------------------------'                                         `---------------------------'
+*                                        ,-------------.         ,-------------.
+*                                        | Ctrl | Alt  |         | Gui  | Ctrl |
+*                                 ,------|------|------|         |------+------+------.
+*                                 |      |      | Home |         | PgUp |      |      |
+*                                 | BkSp | Del  |------|         |------|Return| Space|
+*                                 |      |      | End  |         | PgDn |      |      |
+*                                 `--------------------'         `--------------------'
+*/
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_DV] = KEYMAP(
+           // Left Hand
+           KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,
+           KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,
+           KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,
+           KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,
+           KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,
+                    KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
+           // Left Thumb
+                    KC_LCTL, KC_LALT,
+                             KC_HOME,
+           KC_BSPC, LT(_LO, KC_DEL),  KC_END,
+
+           // Right Hand
+           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
+           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS,
+           KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH,
+           KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,
+           KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,
+                    KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
+           // Right Thumb
+           KC_RGUI, KC_RCTL,
+           KC_PGUP,
+           KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
+    ),
+
+[_QW] = KEYMAP(
+           // Left Hand
+           KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,
+           KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,
+           KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
+           KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
+           KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
+                    KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
+           // Left Thumb
+                    KC_LCTL, KC_LALT,
+                             KC_HOME,
+           KC_BSPC, LT(_LO, KC_DEL),  KC_END,
+
+           // Right Hand
+           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
+           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS,
+           KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL ,
+           KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
+           KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+                    KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
+           // Right Thumb
+           KC_RGUI, KC_RCTL,
+           KC_PGUP,
+           KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
+    ),
+
+[_CM] = KEYMAP(
+           // Left Hand
+           KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,
+           KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,
+           KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,
+           KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,
+           KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
+                    KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
+           // Left Thumb
+                    KC_LCTL, KC_LALT,
+                             KC_HOME,
+           KC_BSPC, LT(_LO, KC_DEL),  KC_END,
+
+           // Right Hand
+           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
+           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
+           KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL,
+           KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT,
+           KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+                    KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
+           // Right Thumb
+           KC_RGUI, KC_RCTL,
+           KC_PGUP,
+           KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
+    ),
+
+[_LO] = KEYMAP(
+           // Left Hand
+           _______, _______, _______, _______, _______, _______, _______, _______, _______,
+           KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,
+           _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+           _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______,
+           _______, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL,
+                    _______, _______, _______, _______,
+           // Left Thumb
+                    _______, _______,
+                             _______,
+           _______, _______, _______,
+
+           // Right Hand
+           _______, _______, _______, _______, _______, _______, _______, _______, _______,
+           KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12,
+           _______, _______, _______, _______, _______, _______,
+           _______, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+           _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+                    _______, _______, _______, _______,
+           // Right Thumb
+           _______, _______,
+           _______,
+           _______, _______, _______
+    ),
+
+[_RA] = KEYMAP(
+           // Left Hand
+           _______, _______, _______, _______, _______, _______, _______, _______, _______,
+           KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,
+           _______, _______, _______, _______, _______, _______,
+           _______, _______, QWERTY,  COLEMAK, DVORAK,  _______,
+           _______, _______, _______, _______, _______, _______,
+                    _______, _______, _______, _______,
+           // Left Thumb
+                    _______, _______,
+                             _______,
+           _______, _______, _______,
+
+           // Right Hand */
+           _______, _______, _______, RESET,   _______, _______, _______, _______, _______,
+           KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12,
+           _______, _______, _______, _______, _______, _______,
+           _______, _______, KC_EQL,  KC_LBRC, KC_RBRC, _______,
+           _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
+                    _______, _______, _______, _______,
+           // Right Thumb
+           _______, _______,
+           _______,
+           _______, _______, _______
+    )
+
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _DV:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_DV);
+          }
+          break;
+        case _QW:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_QW);
+          }
+          break;
+        case _CM:
+          if (record->event.pressed) {
+            persistant_default_layer_set(1UL<<_CM);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+};
diff --git a/keyboards/kinesis/keymaps/xyverz/readme.md b/keyboards/kinesis/keymaps/xyverz/readme.md
new file mode 100644
index 000000000..da033be1e
--- /dev/null
+++ b/keyboards/kinesis/keymaps/xyverz/readme.md
@@ -0,0 +1 @@
+# The default keymap for kinesis-advantage

From 1dabceb19782f5856afe66a499020699604b2319 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Wed, 15 Feb 2017 21:56:48 -0800
Subject: [PATCH 032/163] minor adjustments.

---
 keyboards/kinesis/keymaps/xyverz/keymap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index 7c5148ac2..fb2d3bc06 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -54,25 +54,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_DV] = KEYMAP(
            // Left Hand
            KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,
-           KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,
+           KC_RBRC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,
            KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,
            KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,
            KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,
                     KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
            // Left Thumb
-                    KC_LCTL, KC_LALT,
+                    CTL_T(KC_ESC), KC_LALT,
                              KC_HOME,
            KC_BSPC, LT(_LO, KC_DEL),  KC_END,
 
            // Right Hand
            KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
-           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS,
-           KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH,
+           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC,
+           KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSLS,
            KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,
            KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,
-                    KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
+                    KC_UP,   KC_DOWN, KC_SLSH, KC_EQL,
            // Right Thumb
-           KC_RGUI, KC_RCTL,
+           KC_RGUI, CTL_T(KC_ESC),
            KC_PGUP,
            KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
     ),

From 80d5649f25f7cdd7596eb453576dca9eb680a5cd Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Wed, 15 Feb 2017 22:54:52 -0800
Subject: [PATCH 033/163] More refinements to my Kinesis keymap. Added a
 readme.md file.

---
 keyboards/kinesis/keymaps/xyverz/keymap.c  | 195 +++++++++++++++------
 keyboards/kinesis/keymaps/xyverz/readme.md | 131 +++++++++++++-
 2 files changed, 270 insertions(+), 56 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index fb2d3bc06..b8e06fe30 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -7,8 +7,8 @@ extern keymap_config_t keymap_config;
 #define _DV 0 // Dvorak layer
 #define _QW 1 // Qwerty layer
 #define _CM 2 // Colemak layer
-#define _LO 3 // Media Layer
-#define _RA 4 // Keypad Layer
+#define _MD 3 // Media Layer
+#define _KP 4 // Keypad Layer
 
 // Macro name shortcuts
 #define DVORAK M(_DV)
@@ -23,30 +23,115 @@ extern keymap_config_t keymap_config;
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
 
-/****************************************************************************************************
-*
-* Keymap: Default Layer in Qwerty
-*
-* ,-------------------------------------------------------------------------------------------------------------------.
-* | Esc    |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F8  |  F9  |  F10 |  F12 | PSCR | SLCK | PAUS |  FN0 |  BOOT  |
-* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
-* | =+     |  1!  |  2@  |  3#  |  4$  |  5%  |                           |  6^  |  7&  |  8*  |  9(  |  0)  | -_     |
-* |--------+------+------+------+------+------|                           +------+------+------+------+------+--------|
-* | Tab    |   Q  |   W  |   E  |   R  |   T  |                           |   Y  |   U  |   I  |   O  |   P  | \|     |
-* |--------+------+------+------+------+------|                           |------+------+------+------+------+--------|
-* | Caps   |   A  |   S  |   D  |   F  |   G  |                           |   H  |   J  |   K  |   L  |  ;:  | '"     |
-* |--------+------+------+------+------+------|                           |------+------+------+------+------+--------|
-* | Shift  |   Z  |   X  |   C  |   V  |   B  |                           |   N  |   M  |  ,.  |  .>  |  /?  | Shift  |
-* `--------+------+------+------+------+-------                           `------+------+------+------+------+--------'
-*          | `~   | INS  | Left | Right|                                         | Up   | Down |  [{  |  ]}  |
-*          `---------------------------'                                         `---------------------------'
-*                                        ,-------------.         ,-------------.
-*                                        | Ctrl | Alt  |         | Gui  | Ctrl |
-*                                 ,------|------|------|         |------+------+------.
-*                                 |      |      | Home |         | PgUp |      |      |
-*                                 | BkSp | Del  |------|         |------|Return| Space|
-*                                 |      |      | End  |         | PgDn |      |      |
-*                                 `--------------------'         `--------------------'
+/*
+
+        Function Keys on All Layers (Keypad toggles):
+	,-----------------------------------------------------------------.
+	|  ESC |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   F7   |  F8   |
+ 	`-----------------------------------------------------------------'
+        ,-----------------------------------------------------------------.
+        |  F9  |  F10 |  F11 |  F12 | PScr | SLck | Paus | Keypad | RESET |
+        `-----------------------------------------------------------------'
+
+        Dvorak layer:
+	,-------------------------------------------.,-------------------------------------------.
+	|   ]    |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  |   [    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Tab    |   '  |   ,  |   .  |   P  |   Y  ||   F  |   G  |   C  |   R  |   L  |   \    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| CapsLk |   A  |   O  |   E  |   U  |   I  ||   D  |   H  |   T  |   N  |   S  |   -    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| LShift |   Z  |   X  |   C  |   V  |   X  ||   B  |   M  |   W  |   V  |   Z  | RShift |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   /  |   =  |
+	         `---------------------------'              `---------------------------'
+	                             ,--------------.,--------------.
+	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                      ,------|-------|------||------+-------+-------.
+	                      |      |  Del  | Home || PgUp | Enter |       |
+	                      | BkSp |   /   |------||------|   /   | Space |
+	                      |      | Media | End  || PgDn | KeyPd |       |
+	                      `---------------------'`----------------------'
+
+        QWERTY layer:
+	,-------------------------------------------.,-------------------------------------------.
+	|   =    |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  |   -    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Tab    |   Q  |   W  |   E  |   R  |   T  ||   Y  |   U  |   I  |   O  |   P  |   \    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| CapsLk |   A  |   S  |   D  |   F  |   G  ||   H  |   J  |   K  |   L  |   ;  |   '    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| LShift |   Z  |   X  |   C  |   V  |   B  ||   N  |   M  |   ,  |   .  |   /  | RShift |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
+	         `---------------------------'              `---------------------------'
+	                             ,--------------.,--------------.
+	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                      ,------|-------|------||------+-------+-------.
+	                      |      |  Del  | Home || PgUp | Enter |       |
+	                      | BkSp |   /   |------||------|   /   | Space |
+	                      |      | Media | End  || PgDn | KeyPd |       |
+	                      `---------------------'`----------------------'
+	 
+        Colemak layer:
+	,-------------------------------------------.,-------------------------------------------.
+	|   =    |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  |   -    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Tab    |   Q  |   W  |   F  |   P  |   G  ||   J  |   L  |   U  |   Y  |   ;  |   \    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| BkSpc  |   A  |   R  |   S  |   T  |   D  ||   H  |   N  |   E  |   I  |   O  |   '    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| LShift |   Z  |   X  |   C  |   V  |   B  ||   K  |   M  |   ,  |   .  |   /  | RShift |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
+	         `---------------------------'              `---------------------------'
+	                             ,--------------.,--------------.
+	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                      ,------|-------|------||------+-------+-------.
+	                      |      |  Del  | Home || PgUp | Enter |       |
+	                      | BkSp |   /   |------||------|   /   | Space |
+	                      |      | Media | End  || PgDn | KeyPd |       |
+	                      `---------------------'`----------------------'
+
+        Media layer:
+	,-------------------------------------------.,-------------------------------------------.
+	|   F11  |  F1  |  F2  |  F3  |  F4  |  F5  ||  F6  |  F7  |  F8  |  F9  |  F10 |  F12   |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |      |      |      |      ||      |      |      |      |      |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |      |      |      |      ||      | Mute | Vol- | Vol+ |      |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |      |      |      |      || Stop | Prev | Play | Next | Sel  |        |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |      |      |      |      |              |      |      |      |      |
+	         `---------------------------'              `---------------------------'
+	                              ,-------------.,-------------.
+	                              |      |      ||      |      |
+	                       ,------|------|------||------+------+------.
+	                       |      |      |      ||      |      |      |
+	                       |      |      |------||------|      |      |
+	                       |      |      |      ||      |      |      |
+	                       `--------------------'`--------------------'
+
+        Keypad layer:
+	,-------------------------------------------.,-------------------------------------------.
+	| Power  |      |      |      |      |      ||      | NmLk | KP = | KP / | KP * |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Sleep  |      |      |      |      |      ||      | KP 7 | KP 8 | KP 9 | KP - |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Wake   |      |      |      |      |      ||      | KP 4 | KP 5 | KP 6 | KP + |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |QWERTY|Colemk|Dvorak|      ||      | KP 1 | KP 2 | KP 3 |KP Ent|        |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
+	         `---------------------------'              `----------------------------------'
+	                              ,-------------.,-------------.
+	                              |      |      ||      |      |
+	                       ,------|------|------||------+------+------.
+	                       |      |      |      ||      |      |      |
+	                       |      |      |------||------|      | KP 0 |
+	                       |      |      |      ||      |      |      |
+	                       `--------------------'`--------------------'
 */
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -62,10 +147,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            // Left Thumb
                     CTL_T(KC_ESC), KC_LALT,
                              KC_HOME,
-           KC_BSPC, LT(_LO, KC_DEL),  KC_END,
+           KC_BSPC, LT(_MD, KC_DEL),  KC_END,
 
            // Right Hand
-           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
+           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP),  RESET,
            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC,
            KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSLS,
            KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,
@@ -74,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            // Right Thumb
            KC_RGUI, CTL_T(KC_ESC),
            KC_PGUP,
-           KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
+           KC_PGDN, LT(_KP, KC_ENT),  KC_SPC
     ),
 
 [_QW] = KEYMAP(
@@ -86,21 +171,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
                     KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
            // Left Thumb
-                    KC_LCTL, KC_LALT,
+                    CTL_T(KC_ESC), KC_LALT,
                              KC_HOME,
-           KC_BSPC, LT(_LO, KC_DEL),  KC_END,
+           KC_BSPC, LT(_MD, KC_DEL),  KC_END,
 
            // Right Hand
-           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
+           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP),  RESET,
            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS,
            KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL ,
            KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
            KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
                     KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
            // Right Thumb
-           KC_RGUI, KC_RCTL,
+           KC_RGUI, CTL_T(KC_ESC),
            KC_PGUP,
-           KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
+           KC_PGDN, LT(_KP, KC_ENT),  KC_SPC
     ),
 
 [_CM] = KEYMAP(
@@ -112,30 +197,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
                     KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
            // Left Thumb
-                    KC_LCTL, KC_LALT,
+                    CTL_T(KC_ESC), KC_LALT,
                              KC_HOME,
-           KC_BSPC, LT(_LO, KC_DEL),  KC_END,
+           KC_BSPC, LT(_MD, KC_DEL),  KC_END,
 
            // Right Hand
-           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, MO(_LO),  MO(_RA),
+           KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_SLCK, KC_PAUS, TG(_KP),  RESET,
            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
            KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL,
            KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT,
            KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
                     KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
            // Right Thumb
-           KC_RGUI, KC_RCTL,
+           KC_RGUI, CTL_T(KC_ESC),
            KC_PGUP,
-           KC_PGDN, LT(_RA, KC_ENT),  KC_SPC
+           KC_PGDN, LT(_KP, KC_ENT),  KC_SPC
     ),
 
-[_LO] = KEYMAP(
+[_MD] = KEYMAP(
            // Left Hand
            _______, _______, _______, _______, _______, _______, _______, _______, _______,
            KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,
-           _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
-           _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______,
-           _______, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL,
+           _______, _______, _______, _______, _______, _______,
+           _______, _______, _______, _______, _______, _______,
+           _______, _______, _______, _______, _______, _______,
                     _______, _______, _______, _______,
            // Left Thumb
                     _______, _______,
@@ -146,8 +231,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______, _______, _______, _______, _______, _______, _______,
            KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12,
            _______, _______, _______, _______, _______, _______,
-           _______, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______,
            _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+           KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______,
                     _______, _______, _______, _______,
            // Right Thumb
            _______, _______,
@@ -155,12 +240,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______
     ),
 
-[_RA] = KEYMAP(
+[_KP] = KEYMAP(
            // Left Hand
            _______, _______, _______, _______, _______, _______, _______, _______, _______,
-           KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,
-           _______, _______, _______, _______, _______, _______,
-           _______, _______, QWERTY,  COLEMAK, DVORAK,  _______,
+           KC_PWR,  _______, _______, _______, _______, _______,
+           KC_SLEP, _______, _______, _______, _______, _______,
+           KC_WAKE, _______, QWERTY,  COLEMAK, DVORAK,  _______,
            _______, _______, _______, _______, _______, _______,
                     _______, _______, _______, _______,
            // Left Thumb
@@ -169,16 +254,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______,
 
            // Right Hand */
-           _______, _______, _______, RESET,   _______, _______, _______, _______, _______,
-           KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12,
-           _______, _______, _______, _______, _______, _______,
-           _______, _______, KC_EQL,  KC_LBRC, KC_RBRC, _______,
-           _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
-                    _______, _______, _______, _______,
+           _______, _______, _______, _______, _______, _______, _______, _______, _______,
+           _______, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, _______,
+           _______, KC_P7,   KC_P8,   KC_P9,   KC_PMNS, _______,
+           _______, KC_P4,   KC_P5,   KC_P6,   KC_PPLS, _______,
+           _______, KC_P1,   KC_P2,   KC_P3,   KC_PENT, _______,
+                    _______, _______, KC_PDOT, KC_PENT,
            // Right Thumb
            _______, _______,
            _______,
-           _______, _______, _______
+           _______, _______, KC_P0
     )
 
 };
diff --git a/keyboards/kinesis/keymaps/xyverz/readme.md b/keyboards/kinesis/keymaps/xyverz/readme.md
index da033be1e..3433a94c5 100644
--- a/keyboards/kinesis/keymaps/xyverz/readme.md
+++ b/keyboards/kinesis/keymaps/xyverz/readme.md
@@ -1 +1,130 @@
-# The default keymap for kinesis-advantage
+# Xyverz's Kinesis Keymap
+
+## About this keymap:
+
+The Dvorak layout shown here stems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my QMK Kinesis.
+
+The QWERTY layout shown here is based entirely on the Kinesis Advantage layout. The Colemak layout is merely an adaptation of that.
+
+I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts.
+
+## Still to do:
+
+ * Need to figure out a better position for the ESC key.
+ * Come up with a function for the empty keys shown in the alpha layers below.
+ * Fix the CapsLock, NumLock, and ScrLck LEDs.
+
+### Function Keys on All Layers (keypad toggles):
+	,-----------------------------------------------------------------.
+	|  ESC |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   F7   |  F8   |
+ 	`-----------------------------------------------------------------'
+        ,-----------------------------------------------------------------.
+        |  F9  |  F10 |  F11 |  F12 | PScr | SLck | Paus | Keypad | RESET |
+        `-----------------------------------------------------------------'
+
+### Layer 0: Dvorak layer
+
+	,-------------------------------------------.,-------------------------------------------.
+	|   ]    |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  |   [    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Tab    |   '  |   ,  |   .  |   P  |   Y  ||   F  |   G  |   C  |   R  |   L  |   \    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| CapsLk |   A  |   O  |   E  |   U  |   I  ||   D  |   H  |   T  |   N  |   S  |   -    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| LShift |   Z  |   X  |   C  |   V  |   X  ||   B  |   M  |   W  |   V  |   Z  | RShift |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   /  |   =  |
+	         `---------------------------'              `---------------------------'
+	                             ,--------------.,--------------.
+	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                      ,------|-------|------||------+-------+-------.
+	                      |      |  Del  | Home || PgUp | Enter |       |
+	                      | BkSp |   /   |------||------|   /   | Space |
+	                      |      | Media | End  || PgDn | KeyPd |       |
+	                      `---------------------'`----------------------'
+
+### Layer 1: QWERTY layer
+
+	,-------------------------------------------.,-------------------------------------------.
+	|   =    |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  |   -    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Tab    |   Q  |   W  |   E  |   R  |   T  ||   Y  |   U  |   I  |   O  |   P  |   \    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| CapsLk |   A  |   S  |   D  |   F  |   G  ||   H  |   J  |   K  |   L  |   ;  |   '    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| LShift |   Z  |   X  |   C  |   V  |   B  ||   N  |   M  |   ,  |   .  |   /  | RShift |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
+	         `---------------------------'              `---------------------------'
+	                             ,--------------.,--------------.
+	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                      ,------|-------|------||------+-------+-------.
+	                      |      |  Del  | Home || PgUp | Enter |       |
+	                      | BkSp |   /   |------||------|   /   | Space |
+	                      |      | Media | End  || PgDn | KeyPd |       |
+	                      `---------------------'`----------------------'
+	 
+### Keymap 2: Colemak layer
+
+	,-------------------------------------------.,-------------------------------------------.
+	|   =    |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  |   -    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Tab    |   Q  |   W  |   F  |   P  |   G  ||   J  |   L  |   U  |   Y  |   ;  |   \    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| BkSpc  |   A  |   R  |   S  |   T  |   D  ||   H  |   N  |   E  |   I  |   O  |   '    |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| LShift |   Z  |   X  |   C  |   V  |   B  ||   K  |   M  |   ,  |   .  |   /  | RShift |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
+	         `---------------------------'              `---------------------------'
+	                             ,--------------.,--------------.
+	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                      ,------|-------|------||------+-------+-------.
+	                      |      |  Del  | Home || PgUp | Enter |       |
+	                      | BkSp |   /   |------||------|   /   | Space |
+	                      |      | Media | End  || PgDn | KeyPd |       |
+	                      `---------------------'`----------------------'
+
+### layer 3 : Media layer
+
+	,-------------------------------------------.,-------------------------------------------.
+	|   F11  |  F1  |  F2  |  F3  |  F4  |  F5  ||  F6  |  F7  |  F8  |  F9  |  F10 |  F12   |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |      |      |      |      ||      |      |      |      |      |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |      |      |      |      ||      | Mute | Vol- | Vol+ |      |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |      |      |      |      || Stop | Prev | Play | Next | Sel  |        |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |      |      |      |      |              |      |      |      |      |
+	         `---------------------------'              `---------------------------'
+	                              ,-------------.,-------------.
+	                              |      |      ||      |      |
+	                       ,------|------|------||------+------+------.
+	                       |      |      |      ||      |      |      |
+	                       |      |      |------||------|      |      |
+	                       |      |      |      ||      |      |      |
+	                       `--------------------'`--------------------'
+
+
+
+### Keymap 4: Keypad layer
+
+	,-------------------------------------------.,-------------------------------------------.
+	| Power  |      |      |      |      |      ||      | NmLk | KP = | KP / | KP * |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Sleep  |      |      |      |      |      ||      | KP 7 | KP 8 | KP 9 | KP - |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	| Wake   |      |      |      |      |      ||      | KP 4 | KP 5 | KP 6 | KP + |        |
+	|--------+------+------+------+------+------||------+------+------+------+------+--------|
+	|        |      |QWERTY|Colemk|Dvorak|      ||      | KP 1 | KP 2 | KP 3 |KP Ent|        |
+	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
+	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
+	         `---------------------------'              `----------------------------------'
+	                              ,-------------.,-------------.
+	                              |      |      ||      |      |
+	                       ,------|------|------||------+------+------.
+	                       |      |      |      ||      |      |      |
+	                       |      |      |------||------|      | KP 0 |
+	                       |      |      |      ||      |      |      |
+	                       `--------------------'`--------------------'

From 6fa6e6c4c6d772de6898bdd2ad303c5667339555 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Wed, 15 Feb 2017 23:01:27 -0800
Subject: [PATCH 034/163] Fixed inaccuracies in keymap comments and the readme.

---
 keyboards/kinesis/keymaps/xyverz/keymap.c  |  4 ++--
 keyboards/kinesis/keymaps/xyverz/readme.md | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index b8e06fe30..f3184c140 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -119,9 +119,9 @@ extern keymap_config_t keymap_config;
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
 	| Sleep  |      |      |      |      |      ||      | KP 7 | KP 8 | KP 9 | KP - |        |
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
-	| Wake   |      |      |      |      |      ||      | KP 4 | KP 5 | KP 6 | KP + |        |
+	| Wake   |      |QWERTY|Colemk|Dvorak|      ||      | KP 4 | KP 5 | KP 6 | KP + |        |
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
-	|        |      |QWERTY|Colemk|Dvorak|      ||      | KP 1 | KP 2 | KP 3 |KP Ent|        |
+	|        |      |      |      |      |      ||      | KP 1 | KP 2 | KP 3 |KP Ent|        |
 	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
 	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
 	         `---------------------------'              `----------------------------------'
diff --git a/keyboards/kinesis/keymaps/xyverz/readme.md b/keyboards/kinesis/keymaps/xyverz/readme.md
index 3433a94c5..06cd67477 100644
--- a/keyboards/kinesis/keymaps/xyverz/readme.md
+++ b/keyboards/kinesis/keymaps/xyverz/readme.md
@@ -18,9 +18,9 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	,-----------------------------------------------------------------.
 	|  ESC |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   F7   |  F8   |
  	`-----------------------------------------------------------------'
-        ,-----------------------------------------------------------------.
-        |  F9  |  F10 |  F11 |  F12 | PScr | SLck | Paus | Keypad | RESET |
-        `-----------------------------------------------------------------'
+	,-----------------------------------------------------------------.
+	|  F9  |  F10 |  F11 |  F12 | PScr | SLck | Paus | Keypad | RESET |
+	`-----------------------------------------------------------------'
 
 ### Layer 0: Dvorak layer
 
@@ -115,9 +115,9 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
 	| Sleep  |      |      |      |      |      ||      | KP 7 | KP 8 | KP 9 | KP - |        |
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
-	| Wake   |      |      |      |      |      ||      | KP 4 | KP 5 | KP 6 | KP + |        |
+	| Wake   |      |QWERTY|Colemk|Dvorak|      ||      | KP 4 | KP 5 | KP 6 | KP + |        |
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
-	|        |      |QWERTY|Colemk|Dvorak|      ||      | KP 1 | KP 2 | KP 3 |KP Ent|        |
+	|        |      |      |      |      |      ||      | KP 1 | KP 2 | KP 3 |KP Ent|        |
 	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
 	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
 	         `---------------------------'              `----------------------------------'

From ca1ec7b121c973fae614e69093f40ee9ba25e629 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Thu, 16 Feb 2017 13:48:54 -0800
Subject: [PATCH 035/163] Fixed the TODO list.

---
 keyboards/kinesis/keymaps/xyverz/readme.md | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/readme.md b/keyboards/kinesis/keymaps/xyverz/readme.md
index 06cd67477..11aedec54 100644
--- a/keyboards/kinesis/keymaps/xyverz/readme.md
+++ b/keyboards/kinesis/keymaps/xyverz/readme.md
@@ -10,9 +10,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 
 ## Still to do:
 
- * Need to figure out a better position for the ESC key.
- * Come up with a function for the empty keys shown in the alpha layers below.
- * Fix the CapsLock, NumLock, and ScrLck LEDs.
+ * Implement the CapsLock, NumLock, and ScrLck LEDs on the off-chance that I decide to actually solder some to the keyboard.
 
 ### Function Keys on All Layers (keypad toggles):
 	,-----------------------------------------------------------------.

From 5ae1411fc387a682d3e22f5cddfe1102e3312af5 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Thu, 16 Feb 2017 20:49:02 -0800
Subject: [PATCH 036/163] Expand MIDI key codes

---
 quantum/quantum_keycodes.h | 114 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 113 insertions(+), 1 deletion(-)

diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 63b626926..3728fa366 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -107,10 +107,122 @@ enum quantum_keycodes {
     MUV_IN,
     MUV_DE,
 
-    // Midi mode on/off
+#ifdef MIDI_ENABLE
+    // Midi
     MIDI_ON,
     MIDI_OFF,
 
+    MIDI_TONE_MIN,
+
+    MI_C = MIDI_TONE_MIN,
+    MI_Cs,
+    MI_Db = MI_Cs,
+    MI_D,
+    MI_Ds,
+    MI_Eb = MI_Ds,
+    MI_E,
+    MI_F,
+    MI_Fs,
+    MI_Gb = MI_Fs,
+    MI_G,
+    MI_Gs,
+    MI_Ab = MI_Gs,
+    MI_A,
+    MI_As,
+    MI_Bb = MI_As,
+    MI_B,
+
+    MI_C_1,
+    MI_Cs_1,
+    MI_Db_1 = MI_Cs_1,
+    MI_D_1,
+    MI_Ds_1,
+    MI_Eb_1 = MI_Ds_1,
+    MI_E_1,
+    MI_F_1,
+    MI_Fs_1,
+    MI_Gb_1 = MI_Fs_1,
+    MI_G_1,
+    MI_Gs_1,
+    MI_Ab_1 = MI_Gs_1,
+    MI_A_1,
+    MI_As_1,
+    MI_Bb_1 = MI_As_1,
+    MI_B_1,
+
+    MI_C_2,
+    MI_Cs_2,
+    MI_Db_2 = MI_Cs_2,
+    MI_D_2,
+    MI_Ds_2,
+    MI_Eb_2 = MI_Ds_2,
+    MI_E_2,
+    MI_F_2,
+    MI_Fs_2,
+    MI_Gb_2 = MI_Fs_2,
+    MI_G_2,
+    MI_Gs_2,
+    MI_Ab_2 = MI_Gs_2,
+    MI_A_2,
+    MI_As_2,
+    MI_Bb_2 = MI_As_2,
+    MI_B_2,
+
+    MIDI_TONE_MAX = MI_B_2,
+
+    MIDI_OCTAVE_MIN,
+    MI_OCT_N2 = MIDI_OCTAVE_MIN,
+    MI_OCT_N1,
+    MI_OCT_0,
+    MI_OCT_1,
+    MI_OCT_2,
+    MI_OCT_3,
+    MI_OCT_4,
+    MI_OCT_5,
+    MI_OCT_6,
+    MI_OCT_7,
+    MIDI_OCTAVE_MAX = MI_OCT_7,
+    MI_OCTD, // octave down
+    MI_OCTU, // octave up
+
+    MIDI_VELOCITY_MIN,
+    MI_VEL_1 = MIDI_VELOCITY_MIN,
+    MI_VEL_2,
+    MI_VEL_3,
+    MI_VEL_5,
+    MI_VEL_6,
+    MI_VEL_7,
+    MI_VEL_8,
+    MI_VEL_9,
+    MI_VEL_10,
+    MIDI_VELOCITY_MAX = MI_VEL_10,
+    MI_VELD, // velocity down
+    MI_VELU, // velocity up
+
+    MIDI_CHANNEL_MIN,
+    MI_CH1 = MIDI_CHANNEL_MIN,
+    MI_CH2,
+    MI_CH3,
+    MI_CH4,
+    MI_CH5,
+    MI_CH6,
+    MI_CH7,
+    MI_CH8,
+    MI_CH9,
+    MI_CH10,
+    MI_CH11,
+    MI_CH12,
+    MI_CH13,
+    MI_CH14,
+    MI_CH15,
+    MI_CH16,
+    MIDI_CHANNEL_MAX = MI_CH16,
+    MI_CHD, // previous channel
+    MI_CHU, // next channel
+
+    MI_SUS, // sustain
+#endif
+
     // Backlight functionality
     BL_0,
     BL_1,

From e405ab4bc6ff47d189d99c4d51aadf60a642d82a Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 03:12:13 -0800
Subject: [PATCH 037/163] initial implementation of polyphony using variable
 length array of notes on

---
 quantum/process_keycode/process_midi.c | 199 ++++++++++++++++++++++++-
 quantum/process_keycode/process_midi.h |   3 +
 quantum/quantum_keycodes.h             |   1 +
 tmk_core/protocol/lufa/lufa.c          |  13 +-
 tmk_core/protocol/lufa/lufa.h          |   2 +-
 5 files changed, 211 insertions(+), 7 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 577dad43a..bc48b3905 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,10 +1,204 @@
 #include "process_midi.h"
 
+#if 0
 bool midi_activated = false;
 uint8_t midi_starting_note = 0x0C;
 int midi_offset = 7;
+#endif
 
-bool process_midi(uint16_t keycode, keyrecord_t *record) {
+typedef union {
+  uint16_t raw;
+  struct {
+    uint8_t octave   :4;
+    uint8_t velocity :4;
+    uint8_t channel  :4;
+  };
+} midi_config_t;
+
+midi_config_t midi_config;
+
+#define MIDI_INVALID_NOTE 0xFF
+
+#if 0
+typedef struct {
+    uint64_t low;
+    uint64_t high;
+} uint128_t;
+
+#if 0
+static void right_shift_uint128_t(uint128_t* val, uint8_t shift)
+{
+    uint64_t high_mask = ~0 >> (64 - shift);
+    uint64_t high_bits = (val->high & high_mask) << (64 - shift);
+    val->high = val->high >> shift;
+    val->low = (val->low >> shift) | high_bits;
+}
+#endif
+
+static uint64_t left_shift_uint64_t(uint64_t val, uint8_t shift)
+{
+    dprintf("left_shift_uint64_t(val, %c) ...\n", val, shift);
+    while (shift > 16u) {
+        dprintf("  left_shift_uint64_t: val=?, shift=%c\n", val, shift);
+        val <<= 16;
+        shift -= 16;
+    }
+    dprintf("  left_shift_uint64_t: val=?, shift=%c\n", val, shift);
+    val <<= shift;
+    return val;
+}
+
+static void set_bit_uint128_t(uint128_t* val, uint8_t shift)
+{
+    uint64_t x = 1u;
+
+    if (shift < 64)
+    {
+        x = left_shift_uint64_t(x, shift);
+        dprintf("x: %d\n", x);
+        dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, 0, x);
+        val->low = val->low | left_shift_uint64_t(1u, shift);
+    }
+    else
+    {
+        x = left_shift_uint64_t(x, shift - 64);
+        dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, x, 0);
+        val->high = val->high | left_shift_uint64_t(1u, shift - 64);
+    }
+}
+
+static void clear_bit_uint128_t(uint128_t* val, uint8_t shift)
+{
+    if (shift < 64)
+    {
+        val->low = val->low & ~left_shift_uint64_t(1u, shift);
+    }
+    else
+    {
+        val->high = val->high & ~left_shift_uint64_t(1u, shift - 64);
+    }
+}
+
+static bool is_bit_set_uint128_t(const uint128_t* val, uint8_t shift)
+{
+    if (shift < 64)
+    {
+        return !!(val->low & (1u << shift));
+    }
+    else
+    {
+        return !!(val->high & (1u << (shift - 64)));
+    }
+}
+
+uint128_t note_status = { 0, 0 };
+#endif
+
+
+#define MIDI_MAX_NOTES_ON 10
+
+typedef struct {
+    uint8_t note;
+    uint8_t tone;
+} midi_notes_on_array_entry_t;
+
+typedef struct {
+    uint8_t length;
+    midi_notes_on_array_entry_t values[MIDI_MAX_NOTES_ON];
+} midi_notes_on_array_t;
+
+static midi_notes_on_array_t notes_on;
+
+inline uint8_t compute_velocity(uint8_t setting)
+{
+    return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1));
+}
+
+void midi_init(void)
+{
+    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
+    midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN);
+    midi_config.channel = 0;
+    notes_on.length = 0;
+}
+
+bool process_midi(uint16_t keycode, keyrecord_t *record)
+{
+    switch (keycode) {
+        case MIDI_TONE_MIN ... MIDI_TONE_MAX:
+        {
+            uint8_t channel = midi_config.channel;
+            uint8_t tone = keycode - MIDI_TONE_MIN;
+            uint8_t velocity = compute_velocity(midi_config.velocity);
+            if (record->event.pressed && notes_on.length < MIDI_MAX_NOTES_ON) {
+                uint8_t note = 12 * midi_config.octave + tone;
+                midi_send_noteon(&midi_device, channel, note, velocity);
+                dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
+                notes_on.values[notes_on.length].note = note;
+                notes_on.values[notes_on.length].tone = tone;
+                notes_on.length++;
+            }
+            else {
+                for (uint8_t i = 0; i < notes_on.length; i++) {
+                    uint8_t note = notes_on.values[i].note;
+                    if (tone == notes_on.values[i].tone) {
+                        midi_send_noteoff(&midi_device, channel, note, velocity);
+                        dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+
+                        for (uint8_t j=i; j < notes_on.length - 1; j++)
+                        {
+                            notes_on.values[j] = notes_on.values[j + 1];
+                        }
+
+                        notes_on.length--;
+                        break;
+                    }
+                }
+            }
+            return false;
+        }
+        case MIDI_OCTAVE_MIN ... MIDI_OCTAVE_MAX:
+            if (record->event.pressed)
+                midi_config.octave = keycode - MIDI_OCTAVE_MIN;
+            return false;
+        case MI_OCTD:
+            if (record->event.pressed && midi_config.octave > 0)
+                midi_config.octave--;
+            return false;
+        case MI_OCTU:
+            if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN))
+                midi_config.octave++;
+            return false;
+        case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX:
+            if (record->event.pressed)
+                midi_config.velocity = keycode - MIDI_VELOCITY_MIN;
+            return false;
+        case MI_VELD:
+            if (record->event.pressed && midi_config.velocity > 0)
+                midi_config.velocity--;
+            return false;
+        case MI_VELU:
+            if (record->event.pressed)
+                midi_config.velocity++;
+            return false;
+        case MIDI_CHANNEL_MIN ... MIDI_CHANNEL_MAX:
+            if (record->event.pressed)
+                midi_config.channel = keycode - MIDI_CHANNEL_MIN;
+            return false;
+        case MI_CHD:
+            if (record->event.pressed)
+                midi_config.channel--;
+            return false;
+        case MI_CHU:
+            if (record->event.pressed)
+                midi_config.channel++;
+            return false;
+        case MI_SUS:
+            //TODO
+            return false;
+    };
+
+#if 0
     if (keycode == MI_ON && record->event.pressed) {
       midi_activated = true;
 #ifdef AUDIO_ENABLE
@@ -64,5 +258,6 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
       if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
         return false;
     }
-  return true;
+#endif
+    return true;
 }
diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h
index acd4fc1b1..b0e0aeb83 100644
--- a/quantum/process_keycode/process_midi.h
+++ b/quantum/process_keycode/process_midi.h
@@ -2,6 +2,9 @@
 #define PROCESS_MIDI_H
 
 #include "quantum.h"
+#include "midi.h"
+
+void midi_init(void);
 
 bool process_midi(uint16_t keycode, keyrecord_t *record);
 
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 3728fa366..a024a9639 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -189,6 +189,7 @@ enum quantum_keycodes {
     MI_VEL_1 = MIDI_VELOCITY_MIN,
     MI_VEL_2,
     MI_VEL_3,
+    MI_VEL_4,
     MI_VEL_5,
     MI_VEL_6,
     MI_VEL_7,
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index ba49284c9..fb60658df 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -1101,16 +1101,21 @@ void cc_callback(MidiDevice * device,
     uint8_t chan, uint8_t num, uint8_t val);
 void sysex_callback(MidiDevice * device,
     uint16_t start, uint8_t length, uint8_t * data);
+
+void setup_midi(void)
+{
+	midi_init();
+	midi_device_init(&midi_device);
+    midi_device_set_send_func(&midi_device, usb_send_func);
+    midi_device_set_pre_input_process_func(&midi_device, usb_get_midi);
+}
 #endif
 
 int main(void)  __attribute__ ((weak));
 int main(void)
 {
-
 #ifdef MIDI_ENABLE
-    midi_device_init(&midi_device);
-    midi_device_set_send_func(&midi_device, usb_send_func);
-    midi_device_set_pre_input_process_func(&midi_device, usb_get_midi);
+    setup_midi();
 #endif
 
     setup_mcu();
diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h
index a049fd43c..a51573786 100644
--- a/tmk_core/protocol/lufa/lufa.h
+++ b/tmk_core/protocol/lufa/lufa.h
@@ -49,7 +49,7 @@
 #include <LUFA/Drivers/USB/USB.h>
 #include "host.h"
 #ifdef MIDI_ENABLE
-  #include "midi.h"
+  #include "process_midi.h"
 #endif
 #ifdef __cplusplus
 extern "C" {

From f2b2e05f126403c8a6f0fc3d542beddac7974e9b Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 03:13:43 -0800
Subject: [PATCH 038/163] clean up commented code

---
 quantum/process_keycode/process_midi.c | 137 -------------------------
 1 file changed, 137 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index bc48b3905..acaae7c30 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -19,82 +19,6 @@ midi_config_t midi_config;
 
 #define MIDI_INVALID_NOTE 0xFF
 
-#if 0
-typedef struct {
-    uint64_t low;
-    uint64_t high;
-} uint128_t;
-
-#if 0
-static void right_shift_uint128_t(uint128_t* val, uint8_t shift)
-{
-    uint64_t high_mask = ~0 >> (64 - shift);
-    uint64_t high_bits = (val->high & high_mask) << (64 - shift);
-    val->high = val->high >> shift;
-    val->low = (val->low >> shift) | high_bits;
-}
-#endif
-
-static uint64_t left_shift_uint64_t(uint64_t val, uint8_t shift)
-{
-    dprintf("left_shift_uint64_t(val, %c) ...\n", val, shift);
-    while (shift > 16u) {
-        dprintf("  left_shift_uint64_t: val=?, shift=%c\n", val, shift);
-        val <<= 16;
-        shift -= 16;
-    }
-    dprintf("  left_shift_uint64_t: val=?, shift=%c\n", val, shift);
-    val <<= shift;
-    return val;
-}
-
-static void set_bit_uint128_t(uint128_t* val, uint8_t shift)
-{
-    uint64_t x = 1u;
-
-    if (shift < 64)
-    {
-        x = left_shift_uint64_t(x, shift);
-        dprintf("x: %d\n", x);
-        dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, 0, x);
-        val->low = val->low | left_shift_uint64_t(1u, shift);
-    }
-    else
-    {
-        x = left_shift_uint64_t(x, shift - 64);
-        dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, x, 0);
-        val->high = val->high | left_shift_uint64_t(1u, shift - 64);
-    }
-}
-
-static void clear_bit_uint128_t(uint128_t* val, uint8_t shift)
-{
-    if (shift < 64)
-    {
-        val->low = val->low & ~left_shift_uint64_t(1u, shift);
-    }
-    else
-    {
-        val->high = val->high & ~left_shift_uint64_t(1u, shift - 64);
-    }
-}
-
-static bool is_bit_set_uint128_t(const uint128_t* val, uint8_t shift)
-{
-    if (shift < 64)
-    {
-        return !!(val->low & (1u << shift));
-    }
-    else
-    {
-        return !!(val->high & (1u << (shift - 64)));
-    }
-}
-
-uint128_t note_status = { 0, 0 };
-#endif
-
-
 #define MIDI_MAX_NOTES_ON 10
 
 typedef struct {
@@ -198,66 +122,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             return false;
     };
 
-#if 0
-    if (keycode == MI_ON && record->event.pressed) {
-      midi_activated = true;
-#ifdef AUDIO_ENABLE
-      music_scale_user();
-#endif
-      return false;
-    }
-
-    if (keycode == MI_OFF && record->event.pressed) {
-      midi_activated = false;
-      midi_send_cc(&midi_device, 0, 0x7B, 0);
-      return false;
-    }
-
-    if (midi_activated) {
-      if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
-          if (record->event.pressed) {
-              midi_starting_note++; // Change key
-              midi_send_cc(&midi_device, 0, 0x7B, 0);
-          }
-          return false;
-      }
-      if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
-          if (record->event.pressed) {
-              midi_starting_note--; // Change key
-              midi_send_cc(&midi_device, 0, 0x7B, 0);
-          }
-          return false;
-      }
-      if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-          midi_offset++; // Change scale
-          midi_send_cc(&midi_device, 0, 0x7B, 0);
-          return false;
-      }
-      if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-          midi_offset--; // Change scale
-          midi_send_cc(&midi_device, 0, 0x7B, 0);
-          return false;
-      }
-      // basic
-      // uint8_t note = (midi_starting_note + SCALE[record->event.key.col + midi_offset])+12*(MATRIX_ROWS - record->event.key.row);
-      // advanced
-      // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+12*(MATRIX_ROWS - record->event.key.row);
-      // guitar
-      uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+5*(MATRIX_ROWS - record->event.key.row);
-      // violin
-      // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+7*(MATRIX_ROWS - record->event.key.row);
-
-      if (record->event.pressed) {
-        // midi_send_noteon(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteon(&midi_device, 0, note, 127);
-      } else {
-        // midi_send_noteoff(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteoff(&midi_device, 0, note, 127);
-      }
-
-      if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
-        return false;
-    }
-#endif
     return true;
 }

From a4163466cb09144a96e2ea7bc697af1af8a5e770 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 03:40:49 -0800
Subject: [PATCH 039/163] Alternative version with a tone array

tone array:
   text	   data	    bss	    dec	    hex	filename
      0	  25698	      0	  25698	   6462	satan_newsboytko.hex
0x6480 bytes written into 0x7000 bytes memory (89.73%).

note on array:
   text	   data	    bss	    dec	    hex	filename
      0	  25802	      0	  25802	   64ca	satan_newsboytko.hex
0x6500 bytes written into 0x7000 bytes memory (90.18%).
---
 quantum/process_keycode/process_midi.c | 109 +++++++++++++++++++++++++
 1 file changed, 109 insertions(+)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index acaae7c30..4fbb28816 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -19,6 +19,10 @@ midi_config_t midi_config;
 
 #define MIDI_INVALID_NOTE 0xFF
 
+#define MIDI_USE_NOTE_ON_ARRAY
+
+#ifdef MIDI_USE_NOTE_ON_ARRAY
+
 #define MIDI_MAX_NOTES_ON 10
 
 typedef struct {
@@ -33,6 +37,15 @@ typedef struct {
 
 static midi_notes_on_array_t notes_on;
 
+#else
+
+#define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1)
+static uint8_t tone_status[MIDI_TONE_COUNT];
+
+#endif
+
+
+
 inline uint8_t compute_velocity(uint8_t setting)
 {
     return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1));
@@ -43,7 +56,14 @@ void midi_init(void)
     midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
     midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN);
     midi_config.channel = 0;
+    #ifdef MIDI_USE_NOTE_ON_ARRAY
     notes_on.length = 0;
+    #else
+    for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++)
+    {
+        tone_status[i] = MIDI_INVALID_NOTE;
+    }
+    #endif
 }
 
 bool process_midi(uint16_t keycode, keyrecord_t *record)
@@ -54,15 +74,31 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             uint8_t channel = midi_config.channel;
             uint8_t tone = keycode - MIDI_TONE_MIN;
             uint8_t velocity = compute_velocity(midi_config.velocity);
+            #ifdef MIDI_USE_NOTE_ON_ARRAY
             if (record->event.pressed && notes_on.length < MIDI_MAX_NOTES_ON) {
+            #else
+            if (record->event.pressed) {
+            #endif
                 uint8_t note = 12 * midi_config.octave + tone;
                 midi_send_noteon(&midi_device, channel, note, velocity);
                 dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
+
+                #ifdef MIDI_USE_NOTE_ON_ARRAY
+                
                 notes_on.values[notes_on.length].note = note;
                 notes_on.values[notes_on.length].tone = tone;
                 notes_on.length++;
+                
+                #else
+
+                tone_status[tone] = note;
+
+                #endif
             }
             else {
+                
+                #ifdef MIDI_USE_NOTE_ON_ARRAY
+
                 for (uint8_t i = 0; i < notes_on.length; i++) {
                     uint8_t note = notes_on.values[i].note;
                     if (tone == notes_on.values[i].tone) {
@@ -78,6 +114,18 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
                         break;
                     }
                 }
+
+                #else
+
+                uint8_t note = tone_status[tone];
+                if (note != MIDI_INVALID_NOTE)
+                {
+                    midi_send_noteoff(&midi_device, channel, note, velocity);
+                    dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+                }
+                tone_status[tone] = MIDI_INVALID_NOTE;
+
+                #endif
             }
             return false;
         }
@@ -122,5 +170,66 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             return false;
     };
 
+#if 0
+    if (keycode == MI_ON && record->event.pressed) {
+      midi_activated = true;
+#ifdef AUDIO_ENABLE
+      music_scale_user();
+#endif
+      return false;
+    }
+
+    if (keycode == MI_OFF && record->event.pressed) {
+      midi_activated = false;
+      midi_send_cc(&midi_device, 0, 0x7B, 0);
+      return false;
+    }
+
+    if (midi_activated) {
+      if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
+          if (record->event.pressed) {
+              midi_starting_note++; // Change key
+              midi_send_cc(&midi_device, 0, 0x7B, 0);
+          }
+          return false;
+      }
+      if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
+          if (record->event.pressed) {
+              midi_starting_note--; // Change key
+              midi_send_cc(&midi_device, 0, 0x7B, 0);
+          }
+          return false;
+      }
+      if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
+          midi_offset++; // Change scale
+          midi_send_cc(&midi_device, 0, 0x7B, 0);
+          return false;
+      }
+      if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
+          midi_offset--; // Change scale
+          midi_send_cc(&midi_device, 0, 0x7B, 0);
+          return false;
+      }
+      // basic
+      // uint8_t note = (midi_starting_note + SCALE[record->event.key.col + midi_offset])+12*(MATRIX_ROWS - record->event.key.row);
+      // advanced
+      // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+12*(MATRIX_ROWS - record->event.key.row);
+      // guitar
+      uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+5*(MATRIX_ROWS - record->event.key.row);
+      // violin
+      // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+7*(MATRIX_ROWS - record->event.key.row);
+
+      if (record->event.pressed) {
+        // midi_send_noteon(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127);
+        midi_send_noteon(&midi_device, 0, note, 127);
+      } else {
+        // midi_send_noteoff(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127);
+        midi_send_noteoff(&midi_device, 0, note, 127);
+      }
+
+      if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
+        return false;
+    }
+#endif
     return true;
 }

From f67aefc522dd8b72711e7fc5280e1cae1470d1c5 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 03:43:30 -0800
Subject: [PATCH 040/163] remove disabled code

---
 quantum/process_keycode/process_midi.c | 129 -------------------------
 1 file changed, 129 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 4fbb28816..2ce7418ea 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,11 +1,5 @@
 #include "process_midi.h"
 
-#if 0
-bool midi_activated = false;
-uint8_t midi_starting_note = 0x0C;
-int midi_offset = 7;
-#endif
-
 typedef union {
   uint16_t raw;
   struct {
@@ -19,33 +13,9 @@ midi_config_t midi_config;
 
 #define MIDI_INVALID_NOTE 0xFF
 
-#define MIDI_USE_NOTE_ON_ARRAY
-
-#ifdef MIDI_USE_NOTE_ON_ARRAY
-
-#define MIDI_MAX_NOTES_ON 10
-
-typedef struct {
-    uint8_t note;
-    uint8_t tone;
-} midi_notes_on_array_entry_t;
-
-typedef struct {
-    uint8_t length;
-    midi_notes_on_array_entry_t values[MIDI_MAX_NOTES_ON];
-} midi_notes_on_array_t;
-
-static midi_notes_on_array_t notes_on;
-
-#else
-
 #define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1)
 static uint8_t tone_status[MIDI_TONE_COUNT];
 
-#endif
-
-
-
 inline uint8_t compute_velocity(uint8_t setting)
 {
     return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1));
@@ -74,49 +44,13 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             uint8_t channel = midi_config.channel;
             uint8_t tone = keycode - MIDI_TONE_MIN;
             uint8_t velocity = compute_velocity(midi_config.velocity);
-            #ifdef MIDI_USE_NOTE_ON_ARRAY
-            if (record->event.pressed && notes_on.length < MIDI_MAX_NOTES_ON) {
-            #else
             if (record->event.pressed) {
-            #endif
                 uint8_t note = 12 * midi_config.octave + tone;
                 midi_send_noteon(&midi_device, channel, note, velocity);
                 dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
-
-                #ifdef MIDI_USE_NOTE_ON_ARRAY
-                
-                notes_on.values[notes_on.length].note = note;
-                notes_on.values[notes_on.length].tone = tone;
-                notes_on.length++;
-                
-                #else
-
                 tone_status[tone] = note;
-
-                #endif
             }
             else {
-                
-                #ifdef MIDI_USE_NOTE_ON_ARRAY
-
-                for (uint8_t i = 0; i < notes_on.length; i++) {
-                    uint8_t note = notes_on.values[i].note;
-                    if (tone == notes_on.values[i].tone) {
-                        midi_send_noteoff(&midi_device, channel, note, velocity);
-                        dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
-
-                        for (uint8_t j=i; j < notes_on.length - 1; j++)
-                        {
-                            notes_on.values[j] = notes_on.values[j + 1];
-                        }
-
-                        notes_on.length--;
-                        break;
-                    }
-                }
-
-                #else
-
                 uint8_t note = tone_status[tone];
                 if (note != MIDI_INVALID_NOTE)
                 {
@@ -124,8 +58,6 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
                     dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
                 }
                 tone_status[tone] = MIDI_INVALID_NOTE;
-
-                #endif
             }
             return false;
         }
@@ -170,66 +102,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             return false;
     };
 
-#if 0
-    if (keycode == MI_ON && record->event.pressed) {
-      midi_activated = true;
-#ifdef AUDIO_ENABLE
-      music_scale_user();
-#endif
-      return false;
-    }
-
-    if (keycode == MI_OFF && record->event.pressed) {
-      midi_activated = false;
-      midi_send_cc(&midi_device, 0, 0x7B, 0);
-      return false;
-    }
-
-    if (midi_activated) {
-      if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
-          if (record->event.pressed) {
-              midi_starting_note++; // Change key
-              midi_send_cc(&midi_device, 0, 0x7B, 0);
-          }
-          return false;
-      }
-      if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
-          if (record->event.pressed) {
-              midi_starting_note--; // Change key
-              midi_send_cc(&midi_device, 0, 0x7B, 0);
-          }
-          return false;
-      }
-      if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-          midi_offset++; // Change scale
-          midi_send_cc(&midi_device, 0, 0x7B, 0);
-          return false;
-      }
-      if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-          midi_offset--; // Change scale
-          midi_send_cc(&midi_device, 0, 0x7B, 0);
-          return false;
-      }
-      // basic
-      // uint8_t note = (midi_starting_note + SCALE[record->event.key.col + midi_offset])+12*(MATRIX_ROWS - record->event.key.row);
-      // advanced
-      // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+12*(MATRIX_ROWS - record->event.key.row);
-      // guitar
-      uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+5*(MATRIX_ROWS - record->event.key.row);
-      // violin
-      // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+7*(MATRIX_ROWS - record->event.key.row);
-
-      if (record->event.pressed) {
-        // midi_send_noteon(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteon(&midi_device, 0, note, 127);
-      } else {
-        // midi_send_noteoff(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteoff(&midi_device, 0, note, 127);
-      }
-
-      if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
-        return false;
-    }
-#endif
     return true;
 }

From 7c5e510fe2e57d1b3c0f98612f1f89d413c07525 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 04:25:17 -0800
Subject: [PATCH 041/163] add support for pedal cc messages

---
 quantum/process_keycode/process_midi.c | 61 +++++++++++++++++++++-----
 quantum/quantum_keycodes.h             | 11 ++---
 2 files changed, 57 insertions(+), 15 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 2ce7418ea..f7a8b6650 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -62,43 +62,84 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             return false;
         }
         case MIDI_OCTAVE_MIN ... MIDI_OCTAVE_MAX:
-            if (record->event.pressed)
+            if (record->event.pressed) {
                 midi_config.octave = keycode - MIDI_OCTAVE_MIN;
+                dprintf("midi octave %d\n", midi_config.octave);
+            }
             return false;
         case MI_OCTD:
-            if (record->event.pressed && midi_config.octave > 0)
+            if (record->event.pressed && midi_config.octave > 0) {
                 midi_config.octave--;
+                dprintf("midi octave %d\n", midi_config.octave);
+            }
             return false;
         case MI_OCTU:
-            if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN))
+            if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) {
                 midi_config.octave++;
+                dprintf("midi octave %d\n", midi_config.octave);
+            }
             return false;
         case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX:
-            if (record->event.pressed)
+            if (record->event.pressed) {
                 midi_config.velocity = keycode - MIDI_VELOCITY_MIN;
+                dprintf("midi velocity %d\n", midi_config.velocity);
+            }
             return false;
         case MI_VELD:
-            if (record->event.pressed && midi_config.velocity > 0)
+            if (record->event.pressed && midi_config.velocity > 0) {
                 midi_config.velocity--;
+                dprintf("midi velocity %d\n", midi_config.velocity);
+            }
             return false;
         case MI_VELU:
-            if (record->event.pressed)
+            if (record->event.pressed) {
                 midi_config.velocity++;
+                dprintf("midi velocity %d\n", midi_config.velocity);
+            }
             return false;
         case MIDI_CHANNEL_MIN ... MIDI_CHANNEL_MAX:
-            if (record->event.pressed)
+            if (record->event.pressed) {
                 midi_config.channel = keycode - MIDI_CHANNEL_MIN;
+                dprintf("midi channel %d\n", midi_config.channel);
+            }
             return false;
         case MI_CHD:
-            if (record->event.pressed)
+            if (record->event.pressed) {
                 midi_config.channel--;
+                dprintf("midi channel %d\n", midi_config.channel);
+            }
             return false;
         case MI_CHU:
-            if (record->event.pressed)
+            if (record->event.pressed) {
                 midi_config.channel++;
+                dprintf("midi channel %d\n", midi_config.channel);
+            }
+            return false;
+        case MI_OFF:
+            if (record->event.pressed) {
+                midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0);
+                dprintf("midi off\n");
+            }
             return false;
         case MI_SUS:
-            //TODO
+            midi_send_cc(&midi_device, midi_config.channel, 0x40, record->event.pressed ? 127 : 0);
+            dprintf("midi sustain %d\n", record->event.pressed);
+            return false;
+        case MI_PORT:
+            midi_send_cc(&midi_device, midi_config.channel, 0x41, record->event.pressed ? 127 : 0);
+            dprintf("midi portamento %d\n", record->event.pressed);
+            return false;
+        case MI_SOST:
+            midi_send_cc(&midi_device, midi_config.channel, 0x42, record->event.pressed ? 127 : 0);
+            dprintf("midi sostenuto %d\n", record->event.pressed);
+            return false;
+        case MI_SOFT:
+            midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
+            dprintf("midi soft %d\n", record->event.pressed);
+            return false;
+        case MI_LEG:
+            midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
+            dprintf("midi legato %d\n", record->event.pressed);
             return false;
     };
 
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index a024a9639..f2b9509b5 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -109,8 +109,6 @@ enum quantum_keycodes {
 
 #ifdef MIDI_ENABLE
     // Midi
-    MIDI_ON,
-    MIDI_OFF,
 
     MIDI_TONE_MIN,
 
@@ -221,7 +219,13 @@ enum quantum_keycodes {
     MI_CHD, // previous channel
     MI_CHU, // next channel
 
+    MI_OFF, // all notes off
+
     MI_SUS, // sustain
+    MI_PORT, // portamento
+    MI_SOST, // sostenuto
+    MI_SOFT, // soft
+    MI_LEG,  // legato
 #endif
 
     // Backlight functionality
@@ -394,9 +398,6 @@ enum quantum_keycodes {
 #define BL_ON  BL_9
 #define BL_OFF BL_0
 
-#define MI_ON MIDI_ON
-#define MI_OFF MIDI_OFF
-
 // GOTO layer - 16 layers max
 // when:
 // ON_PRESS    = 1

From dd8f8e6baeb1549735403edf2a2f04f07edb4bf2 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 05:32:55 -0800
Subject: [PATCH 042/163] implement modulation

---
 quantum/process_keycode/process_midi.c |  58 ++++++-
 quantum/process_keycode/process_midi.h | 201 +------------------------
 quantum/quantum_keycodes.h             |   6 +-
 tmk_core/protocol/lufa/lufa.c          |   2 +-
 4 files changed, 61 insertions(+), 206 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index f7a8b6650..d09aa0b38 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,4 +1,5 @@
 #include "process_midi.h"
+#include "timer.h"
 
 typedef union {
   uint16_t raw;
@@ -6,6 +7,7 @@ typedef union {
     uint8_t octave   :4;
     uint8_t velocity :4;
     uint8_t channel  :4;
+    uint8_t modulation_interval  :4;
   };
 } midi_config_t;
 
@@ -16,6 +18,10 @@ midi_config_t midi_config;
 #define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1)
 static uint8_t tone_status[MIDI_TONE_COUNT];
 
+static uint8_t midi_modulation;
+static int8_t midi_modulation_step;
+static uint16_t midi_modulation_timer;
+
 inline uint8_t compute_velocity(uint8_t setting)
 {
     return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1));
@@ -26,14 +32,40 @@ void midi_init(void)
     midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
     midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN);
     midi_config.channel = 0;
-    #ifdef MIDI_USE_NOTE_ON_ARRAY
-    notes_on.length = 0;
-    #else
+    midi_config.modulation_interval = 8;
+
     for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++)
     {
         tone_status[i] = MIDI_INVALID_NOTE;
     }
-    #endif
+
+    midi_modulation = 0;
+    midi_modulation_step = 0;
+    midi_modulation_timer = 0;
+}
+
+void midi_task(void)
+{
+    if (timer_elapsed(midi_modulation_timer) < midi_config.modulation_interval)
+        return;
+    midi_modulation_timer = timer_read();
+
+    if (midi_modulation_step != 0)
+    {
+        dprintf("midi modulation %d\n", midi_modulation);
+        midi_send_cc(&midi_device, midi_config.channel, 0x1, midi_modulation);
+
+        if (midi_modulation_step < 0 && midi_modulation < -midi_modulation_step) {
+            midi_modulation = 0;
+            midi_modulation_step = 0;
+            return;
+        }
+
+        midi_modulation += midi_modulation_step;
+
+        if (midi_modulation > 127)
+            midi_modulation = 127;
+    }
 }
 
 bool process_midi(uint16_t keycode, keyrecord_t *record)
@@ -141,6 +173,24 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
             dprintf("midi legato %d\n", record->event.pressed);
             return false;
+        case MI_MOD:
+            midi_modulation_step = record->event.pressed ? 1 : -1;
+            return false;
+        case MI_MODSD:
+            if (record->event.pressed) {
+                midi_config.modulation_interval++;
+                // prevent overflow
+                if (midi_config.modulation_interval == 0)
+                    midi_config.modulation_interval--;
+                dprintf("midi modulation interval %d\n", midi_config.modulation_interval);
+            }
+            return false;
+        case MI_MODSU:
+            if (record->event.pressed && midi_config.modulation_interval > 0) {
+                midi_config.modulation_interval--;
+                dprintf("midi modulation interval %d\n", midi_config.modulation_interval);
+            }
+            return false;
     };
 
     return true;
diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h
index b0e0aeb83..66ce60b0e 100644
--- a/quantum/process_keycode/process_midi.h
+++ b/quantum/process_keycode/process_midi.h
@@ -5,206 +5,7 @@
 #include "midi.h"
 
 void midi_init(void);
-
+void midi_task(void);
 bool process_midi(uint16_t keycode, keyrecord_t *record);
 
-#define MIDI(n) ((n) | 0x6000)
-#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000
-
-#define CHNL(note, channel) (note + (channel << 8))
-
-#define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \
-                           0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
-                           0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \
-                           0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \
-                           0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
-
-#define N_CN1  (0x600C + (12 * -1) + 0 )
-#define N_CN1S (0x600C + (12 * -1) + 1 )
-#define N_DN1F (0x600C + (12 * -1) + 1 )
-#define N_DN1  (0x600C + (12 * -1) + 2 )
-#define N_DN1S (0x600C + (12 * -1) + 3 )
-#define N_EN1F (0x600C + (12 * -1) + 3 )
-#define N_EN1  (0x600C + (12 * -1) + 4 )
-#define N_FN1  (0x600C + (12 * -1) + 5 )
-#define N_FN1S (0x600C + (12 * -1) + 6 )
-#define N_GN1F (0x600C + (12 * -1) + 6 )
-#define N_GN1  (0x600C + (12 * -1) + 7 )
-#define N_GN1S (0x600C + (12 * -1) + 8 )
-#define N_AN1F (0x600C + (12 * -1) + 8 )
-#define N_AN1  (0x600C + (12 * -1) + 9 )
-#define N_AN1S (0x600C + (12 * -1) + 10)
-#define N_BN1F (0x600C + (12 * -1) + 10)
-#define N_BN1  (0x600C + (12 * -1) + 11)
-#define N_C0   (0x600C + (12 *  0) + 0 )
-#define N_C0S  (0x600C + (12 *  0) + 1 )
-#define N_D0F  (0x600C + (12 *  0) + 1 )
-#define N_D0   (0x600C + (12 *  0) + 2 )
-#define N_D0S  (0x600C + (12 *  0) + 3 )
-#define N_E0F  (0x600C + (12 *  0) + 3 )
-#define N_E0   (0x600C + (12 *  0) + 4 )
-#define N_F0   (0x600C + (12 *  0) + 5 )
-#define N_F0S  (0x600C + (12 *  0) + 6 )
-#define N_G0F  (0x600C + (12 *  0) + 6 )
-#define N_G0   (0x600C + (12 *  0) + 7 )
-#define N_G0S  (0x600C + (12 *  0) + 8 )
-#define N_A0F  (0x600C + (12 *  0) + 8 )
-#define N_A0   (0x600C + (12 *  0) + 9 )
-#define N_A0S  (0x600C + (12 *  0) + 10)
-#define N_B0F  (0x600C + (12 *  0) + 10)
-#define N_B0   (0x600C + (12 *  0) + 11)
-#define N_C1   (0x600C + (12 *  1) + 0 )
-#define N_C1S  (0x600C + (12 *  1) + 1 )
-#define N_D1F  (0x600C + (12 *  1) + 1 )
-#define N_D1   (0x600C + (12 *  1) + 2 )
-#define N_D1S  (0x600C + (12 *  1) + 3 )
-#define N_E1F  (0x600C + (12 *  1) + 3 )
-#define N_E1   (0x600C + (12 *  1) + 4 )
-#define N_F1   (0x600C + (12 *  1) + 5 )
-#define N_F1S  (0x600C + (12 *  1) + 6 )
-#define N_G1F  (0x600C + (12 *  1) + 6 )
-#define N_G1   (0x600C + (12 *  1) + 7 )
-#define N_G1S  (0x600C + (12 *  1) + 8 )
-#define N_A1F  (0x600C + (12 *  1) + 8 )
-#define N_A1   (0x600C + (12 *  1) + 9 )
-#define N_A1S  (0x600C + (12 *  1) + 10)
-#define N_B1F  (0x600C + (12 *  1) + 10)
-#define N_B1   (0x600C + (12 *  1) + 11)
-#define N_C2   (0x600C + (12 *  2) + 0 )
-#define N_C2S  (0x600C + (12 *  2) + 1 )
-#define N_D2F  (0x600C + (12 *  2) + 1 )
-#define N_D2   (0x600C + (12 *  2) + 2 )
-#define N_D2S  (0x600C + (12 *  2) + 3 )
-#define N_E2F  (0x600C + (12 *  2) + 3 )
-#define N_E2   (0x600C + (12 *  2) + 4 )
-#define N_F2   (0x600C + (12 *  2) + 5 )
-#define N_F2S  (0x600C + (12 *  2) + 6 )
-#define N_G2F  (0x600C + (12 *  2) + 6 )
-#define N_G2   (0x600C + (12 *  2) + 7 )
-#define N_G2S  (0x600C + (12 *  2) + 8 )
-#define N_A2F  (0x600C + (12 *  2) + 8 )
-#define N_A2   (0x600C + (12 *  2) + 9 )
-#define N_A2S  (0x600C + (12 *  2) + 10)
-#define N_B2F  (0x600C + (12 *  2) + 10)
-#define N_B2   (0x600C + (12 *  2) + 11)
-#define N_C3   (0x600C + (12 *  3) + 0 )
-#define N_C3S  (0x600C + (12 *  3) + 1 )
-#define N_D3F  (0x600C + (12 *  3) + 1 )
-#define N_D3   (0x600C + (12 *  3) + 2 )
-#define N_D3S  (0x600C + (12 *  3) + 3 )
-#define N_E3F  (0x600C + (12 *  3) + 3 )
-#define N_E3   (0x600C + (12 *  3) + 4 )
-#define N_F3   (0x600C + (12 *  3) + 5 )
-#define N_F3S  (0x600C + (12 *  3) + 6 )
-#define N_G3F  (0x600C + (12 *  3) + 6 )
-#define N_G3   (0x600C + (12 *  3) + 7 )
-#define N_G3S  (0x600C + (12 *  3) + 8 )
-#define N_A3F  (0x600C + (12 *  3) + 8 )
-#define N_A3   (0x600C + (12 *  3) + 9 )
-#define N_A3S  (0x600C + (12 *  3) + 10)
-#define N_B3F  (0x600C + (12 *  3) + 10)
-#define N_B3   (0x600C + (12 *  3) + 11)
-#define N_C4   (0x600C + (12 *  4) + 0 )
-#define N_C4S  (0x600C + (12 *  4) + 1 )
-#define N_D4F  (0x600C + (12 *  4) + 1 )
-#define N_D4   (0x600C + (12 *  4) + 2 )
-#define N_D4S  (0x600C + (12 *  4) + 3 )
-#define N_E4F  (0x600C + (12 *  4) + 3 )
-#define N_E4   (0x600C + (12 *  4) + 4 )
-#define N_F4   (0x600C + (12 *  4) + 5 )
-#define N_F4S  (0x600C + (12 *  4) + 6 )
-#define N_G4F  (0x600C + (12 *  4) + 6 )
-#define N_G4   (0x600C + (12 *  4) + 7 )
-#define N_G4S  (0x600C + (12 *  4) + 8 )
-#define N_A4F  (0x600C + (12 *  4) + 8 )
-#define N_A4   (0x600C + (12 *  4) + 9 )
-#define N_A4S  (0x600C + (12 *  4) + 10)
-#define N_B4F  (0x600C + (12 *  4) + 10)
-#define N_B4   (0x600C + (12 *  4) + 11)
-#define N_C5   (0x600C + (12 *  5) + 0 )
-#define N_C5S  (0x600C + (12 *  5) + 1 )
-#define N_D5F  (0x600C + (12 *  5) + 1 )
-#define N_D5   (0x600C + (12 *  5) + 2 )
-#define N_D5S  (0x600C + (12 *  5) + 3 )
-#define N_E5F  (0x600C + (12 *  5) + 3 )
-#define N_E5   (0x600C + (12 *  5) + 4 )
-#define N_F5   (0x600C + (12 *  5) + 5 )
-#define N_F5S  (0x600C + (12 *  5) + 6 )
-#define N_G5F  (0x600C + (12 *  5) + 6 )
-#define N_G5   (0x600C + (12 *  5) + 7 )
-#define N_G5S  (0x600C + (12 *  5) + 8 )
-#define N_A5F  (0x600C + (12 *  5) + 8 )
-#define N_A5   (0x600C + (12 *  5) + 9 )
-#define N_A5S  (0x600C + (12 *  5) + 10)
-#define N_B5F  (0x600C + (12 *  5) + 10)
-#define N_B5   (0x600C + (12 *  5) + 11)
-#define N_C6   (0x600C + (12 *  6) + 0 )
-#define N_C6S  (0x600C + (12 *  6) + 1 )
-#define N_D6F  (0x600C + (12 *  6) + 1 )
-#define N_D6   (0x600C + (12 *  6) + 2 )
-#define N_D6S  (0x600C + (12 *  6) + 3 )
-#define N_E6F  (0x600C + (12 *  6) + 3 )
-#define N_E6   (0x600C + (12 *  6) + 4 )
-#define N_F6   (0x600C + (12 *  6) + 5 )
-#define N_F6S  (0x600C + (12 *  6) + 6 )
-#define N_G6F  (0x600C + (12 *  6) + 6 )
-#define N_G6   (0x600C + (12 *  6) + 7 )
-#define N_G6S  (0x600C + (12 *  6) + 8 )
-#define N_A6F  (0x600C + (12 *  6) + 8 )
-#define N_A6   (0x600C + (12 *  6) + 9 )
-#define N_A6S  (0x600C + (12 *  6) + 10)
-#define N_B6F  (0x600C + (12 *  6) + 10)
-#define N_B6   (0x600C + (12 *  6) + 11)
-#define N_C7   (0x600C + (12 *  7) + 0 )
-#define N_C7S  (0x600C + (12 *  7) + 1 )
-#define N_D7F  (0x600C + (12 *  7) + 1 )
-#define N_D7   (0x600C + (12 *  7) + 2 )
-#define N_D7S  (0x600C + (12 *  7) + 3 )
-#define N_E7F  (0x600C + (12 *  7) + 3 )
-#define N_E7   (0x600C + (12 *  7) + 4 )
-#define N_F7   (0x600C + (12 *  7) + 5 )
-#define N_F7S  (0x600C + (12 *  7) + 6 )
-#define N_G7F  (0x600C + (12 *  7) + 6 )
-#define N_G7   (0x600C + (12 *  7) + 7 )
-#define N_G7S  (0x600C + (12 *  7) + 8 )
-#define N_A7F  (0x600C + (12 *  7) + 8 )
-#define N_A7   (0x600C + (12 *  7) + 9 )
-#define N_A7S  (0x600C + (12 *  7) + 10)
-#define N_B7F  (0x600C + (12 *  7) + 10)
-#define N_B7   (0x600C + (12 *  7) + 11)
-#define N_C8   (0x600C + (12 *  8) + 0 )
-#define N_C8S  (0x600C + (12 *  8) + 1 )
-#define N_D8F  (0x600C + (12 *  8) + 1 )
-#define N_D8   (0x600C + (12 *  8) + 2 )
-#define N_D8S  (0x600C + (12 *  8) + 3 )
-#define N_E8F  (0x600C + (12 *  8) + 3 )
-#define N_E8   (0x600C + (12 *  8) + 4 )
-#define N_F8   (0x600C + (12 *  8) + 5 )
-#define N_F8S  (0x600C + (12 *  8) + 6 )
-#define N_G8F  (0x600C + (12 *  8) + 6 )
-#define N_G8   (0x600C + (12 *  8) + 7 )
-#define N_G8S  (0x600C + (12 *  8) + 8 )
-#define N_A8F  (0x600C + (12 *  8) + 8 )
-#define N_A8   (0x600C + (12 *  8) + 9 )
-#define N_A8S  (0x600C + (12 *  8) + 10)
-#define N_B8F  (0x600C + (12 *  8) + 10)
-#define N_B8   (0x600C + (12 *  8) + 11)
-#define N_C8   (0x600C + (12 *  8) + 0 )
-#define N_C8S  (0x600C + (12 *  8) + 1 )
-#define N_D8F  (0x600C + (12 *  8) + 1 )
-#define N_D8   (0x600C + (12 *  8) + 2 )
-#define N_D8S  (0x600C + (12 *  8) + 3 )
-#define N_E8F  (0x600C + (12 *  8) + 3 )
-#define N_E8   (0x600C + (12 *  8) + 4 )
-#define N_F8   (0x600C + (12 *  8) + 5 )
-#define N_F8S  (0x600C + (12 *  8) + 6 )
-#define N_G8F  (0x600C + (12 *  8) + 6 )
-#define N_G8   (0x600C + (12 *  8) + 7 )
-#define N_G8S  (0x600C + (12 *  8) + 8 )
-#define N_A8F  (0x600C + (12 *  8) + 8 )
-#define N_A8   (0x600C + (12 *  8) + 9 )
-#define N_A8S  (0x600C + (12 *  8) + 10)
-#define N_B8F  (0x600C + (12 *  8) + 10)
-#define N_B8   (0x600C + (12 *  8) + 11)
-
 #endif
\ No newline at end of file
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index f2b9509b5..4423d25ef 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -224,8 +224,12 @@ enum quantum_keycodes {
     MI_SUS, // sustain
     MI_PORT, // portamento
     MI_SOST, // sostenuto
-    MI_SOFT, // soft
+    MI_SOFT, // soft pedal
     MI_LEG,  // legato
+
+    MI_MOD, // modulation
+    MI_MODSD, // decrease modulation speed
+    MI_MODSU, // increase modulation speed
 #endif
 
     // Backlight functionality
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index fb60658df..bd2498057 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -1180,7 +1180,7 @@ int main(void)
 
 #ifdef MIDI_ENABLE
         midi_device_process(&midi_device);
-        // MIDI_Task();
+        midi_task();
 #endif
 
 #if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE)

From 5e6097f0154403dccb9b5658390c84441aa509bc Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 06:19:48 -0800
Subject: [PATCH 043/163] add keycodes for transpose range

---
 quantum/process_keycode/process_midi.c | 37 +++++++++++++++++++++-----
 quantum/quantum_keycodes.h             | 18 +++++++++++++
 2 files changed, 48 insertions(+), 7 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index d09aa0b38..4d60aefb1 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -2,12 +2,13 @@
 #include "timer.h"
 
 typedef union {
-  uint16_t raw;
+  uint32_t raw;
   struct {
-    uint8_t octave   :4;
-    uint8_t velocity :4;
-    uint8_t channel  :4;
-    uint8_t modulation_interval  :4;
+    uint8_t octave              :4;
+    int8_t transpose            :4;
+    uint8_t velocity            :4;
+    uint8_t channel             :4;
+    uint8_t modulation_interval :4;
   };
 } midi_config_t;
 
@@ -29,7 +30,8 @@ inline uint8_t compute_velocity(uint8_t setting)
 
 void midi_init(void)
 {
-    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
+    midi_config.octave = MI_OCT_2 - MIDI_OCTAVE_MIN;
+    midi_config.transpose = 0;
     midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN);
     midi_config.channel = 0;
     midi_config.modulation_interval = 8;
@@ -77,7 +79,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             uint8_t tone = keycode - MIDI_TONE_MIN;
             uint8_t velocity = compute_velocity(midi_config.velocity);
             if (record->event.pressed) {
-                uint8_t note = 12 * midi_config.octave + tone;
+                uint8_t note = 12 * midi_config.octave + tone + midi_config.transpose;
                 midi_send_noteon(&midi_device, channel, note, velocity);
                 dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
                 tone_status[tone] = note;
@@ -111,6 +113,27 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
                 dprintf("midi octave %d\n", midi_config.octave);
             }
             return false;
+        case MIDI_TRANSPOSE_MIN ... MIDI_TRANSPOSE_MAX:
+            if (record->event.pressed) {
+                midi_config.transpose = keycode - MI_TRNS_0;
+                dprintf("midi transpose %d\n", midi_config.transpose);
+            }
+            return false;
+        case MI_TRNSD:
+            if (record->event.pressed && midi_config.transpose > (MIDI_TRANSPOSE_MIN - MI_TRNS_0)) {
+                midi_config.transpose--;
+                dprintf("midi transpose %d\n", midi_config.transpose);
+            }
+            return false;
+        case MI_TRNSU:
+            if (record->event.pressed && midi_config.transpose < (MIDI_TRANSPOSE_MAX - MI_TRNS_0)) {
+                const bool positive = midi_config.transpose > 0;
+                midi_config.transpose++;
+                if (positive && midi_config.transpose < 0)
+                    midi_config.transpose--;
+                dprintf("midi transpose %d\n", midi_config.transpose);
+            }
+            return false;
         case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX:
             if (record->event.pressed) {
                 midi_config.velocity = keycode - MIDI_VELOCITY_MIN;
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 4423d25ef..30cc9abdb 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -183,6 +183,24 @@ enum quantum_keycodes {
     MI_OCTD, // octave down
     MI_OCTU, // octave up
 
+    MIDI_TRANSPOSE_MIN,
+    MI_TRNS_N6 = MIDI_TRANSPOSE_MIN,
+    MI_TRNS_N5,
+    MI_TRNS_N4,
+    MI_TRNS_N3,
+    MI_TRNS_N2,
+    MI_TRNS_N1,
+    MI_TRNS_0,
+    MI_TRNS_1,
+    MI_TRNS_2,
+    MI_TRNS_3,
+    MI_TRNS_4,
+    MI_TRNS_5,
+    MI_TRNS_6,
+    MIDI_TRANSPOSE_MAX = MI_TRNS_6,
+    MI_TRNSD, // transpose down
+    MI_TRNSU, // transpose up
+
     MIDI_VELOCITY_MIN,
     MI_VEL_1 = MIDI_VELOCITY_MIN,
     MI_VEL_2,

From ae0752dff552a07fb52e08c7057979959959d247 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Feb 2017 21:07:07 -0800
Subject: [PATCH 044/163] expose midi_config

---
 quantum/process_keycode/process_midi.c | 23 ++++++-----------------
 quantum/process_keycode/process_midi.h | 18 ++++++++++++++++++
 2 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 4d60aefb1..9190fa047 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,22 +1,6 @@
 #include "process_midi.h"
 #include "timer.h"
 
-typedef union {
-  uint32_t raw;
-  struct {
-    uint8_t octave              :4;
-    int8_t transpose            :4;
-    uint8_t velocity            :4;
-    uint8_t channel             :4;
-    uint8_t modulation_interval :4;
-  };
-} midi_config_t;
-
-midi_config_t midi_config;
-
-#define MIDI_INVALID_NOTE 0xFF
-
-#define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1)
 static uint8_t tone_status[MIDI_TONE_COUNT];
 
 static uint8_t midi_modulation;
@@ -70,6 +54,11 @@ void midi_task(void)
     }
 }
 
+uint8_t midi_compute_note(uint16_t keycode)
+{
+    return 12 * midi_config.octave + (keycode - MIDI_TONE_MIN) + midi_config.transpose;
+}
+
 bool process_midi(uint16_t keycode, keyrecord_t *record)
 {
     switch (keycode) {
@@ -79,7 +68,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
             uint8_t tone = keycode - MIDI_TONE_MIN;
             uint8_t velocity = compute_velocity(midi_config.velocity);
             if (record->event.pressed) {
-                uint8_t note = 12 * midi_config.octave + tone + midi_config.transpose;
+                uint8_t note = midi_compute_note(keycode);
                 midi_send_noteon(&midi_device, channel, note, velocity);
                 dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
                 tone_status[tone] = note;
diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h
index 66ce60b0e..ffd41579f 100644
--- a/quantum/process_keycode/process_midi.h
+++ b/quantum/process_keycode/process_midi.h
@@ -4,8 +4,26 @@
 #include "quantum.h"
 #include "midi.h"
 
+typedef union {
+  uint32_t raw;
+  struct {
+    uint8_t octave              :4;
+    int8_t transpose            :4;
+    uint8_t velocity            :4;
+    uint8_t channel             :4;
+    uint8_t modulation_interval :4;
+  };
+} midi_config_t;
+
+midi_config_t midi_config;
+
 void midi_init(void);
 void midi_task(void);
 bool process_midi(uint16_t keycode, keyrecord_t *record);
 
+#define MIDI_INVALID_NOTE 0xFF
+#define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1)
+
+uint8_t midi_compute_note(uint16_t keycode);
+
 #endif
\ No newline at end of file

From d1fe24ad9f85768774ae50465c71f3757a33cc00 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Feb 2017 17:18:05 -0800
Subject: [PATCH 045/163] Allow customization of the number of tone keycodes
 and add example keymap

---
 keyboards/satan/keymaps/midi/Makefile  | 21 +++++++
 keyboards/satan/keymaps/midi/config.h  | 11 ++++
 keyboards/satan/keymaps/midi/keymap.c  | 60 ++++++++++++++++++
 keyboards/satan/keymaps/midi/readme.md |  1 +
 quantum/quantum_keycodes.h             | 84 ++++++++++++++++++++++++++
 quantum/template/config.h              |  3 +
 6 files changed, 180 insertions(+)
 create mode 100644 keyboards/satan/keymaps/midi/Makefile
 create mode 100644 keyboards/satan/keymaps/midi/config.h
 create mode 100644 keyboards/satan/keymaps/midi/keymap.c
 create mode 100644 keyboards/satan/keymaps/midi/readme.md

diff --git a/keyboards/satan/keymaps/midi/Makefile b/keyboards/satan/keymaps/midi/Makefile
new file mode 100644
index 000000000..5cbda96ce
--- /dev/null
+++ b/keyboards/satan/keymaps/midi/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 = yes       # Enable keyboard backlight functionality
+MIDI_ENABLE = yes            # 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
diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h
new file mode 100644
index 000000000..e345d40c9
--- /dev/null
+++ b/keyboards/satan/keymaps/midi/config.h
@@ -0,0 +1,11 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+/* override number of MIDI tone keycodes (each octave adds 12 bytes) */
+#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c
new file mode 100644
index 000000000..ac9725933
--- /dev/null
+++ b/keyboards/satan/keymaps/midi/keymap.c
@@ -0,0 +1,60 @@
+#include "satan.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _ML 1
+
+// readability
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap _BL: (Base Layer) Default Layer
+   * ,-----------------------------------------------------------.
+   * |Esc | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+   * |-----------------------------------------------------------|
+   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |
+   * |-----------------------------------------------------------|
+   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+   * |-----------------------------------------------------------|
+   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
+   * |-----------------------------------------------------------|
+   * |Ctrl|Gui |Alt |      Space            |Alt |Gui |FN  |Ctrl |
+   * `-----------------------------------------------------------'
+   */
+[_BL] = KEYMAP_ANSI(
+  KC_ESC,  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_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_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_LCTL, KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, TG(_ML), KC_RCTL),
+
+/* Keymap _ML: MIDI Layer
+   * ,------------------------------------------------------------------------.
+   * | Exit |    |    |    |    |    |    |    |    |    |    |    |    |     |
+   * |------------------------------------------------------------------------|
+   * |  Ch+ |    | C# | D# |    | F# | G# | A# |    | C# | D# |    |    |     |
+   * |------------------------------------------------------------------------|
+   * |  Mod  | C  | D  | E  | F  | G  | A  | B  | C  | D  | E  | F  |>>OnStage|
+   * |------------------------------------------------------------------------|
+   * | Sustain |Oct-|Oct+|Mod-|Mod+|    |    |    |Tns-|Tns+|Tns0|   Sustain  |
+   * |------------------------------------------------------------------------|
+   * |     |     |     |         All notes off        |     |     |     |     |
+   * `------------------------------------------------------------------------'
+   *
+   * Foot switches:
+   *                ,--------.         ,--------.
+   *                |        |         |        |
+   *                |        |         |        |
+   *                `--------'         `--------'
+   */
+[_ML] = KEYMAP_ANSI(
+  TG(_ML), MI_VEL_1, MI_VEL_2, MI_VEL_3, MI_VEL_4, MI_VEL_5, MI_VEL_6, MI_VEL_7, MI_VEL_8, MI_VEL_9, MI_VEL_10, XXXXXXX, XXXXXXX, XXXXXXX, \
+  MI_CHU,  XXXXXXX, MI_Cs,   MI_Ds,   XXXXXXX, MI_Fs,   MI_Gs,   MI_As,   XXXXXXX, MI_Cs_1, MI_Ds_1, XXXXXXX, XXXXXXX, XXXXXXX, \
+  MI_MOD,  MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C_1,  MI_D_1,  MI_E_1,  MI_F_1,           _______, \
+  MI_SUS,  MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0,             MI_SUS, \
+  _______, _______, _______,                          MI_OFF,                               _______, _______, _______, _______),
+};
\ No newline at end of file
diff --git a/keyboards/satan/keymaps/midi/readme.md b/keyboards/satan/keymaps/midi/readme.md
new file mode 100644
index 000000000..87844a854
--- /dev/null
+++ b/keyboards/satan/keymaps/midi/readme.md
@@ -0,0 +1 @@
+# Satan GH60 layout demonstrating MIDI key mapping
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 30cc9abdb..6d1438051 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -2,6 +2,12 @@
 #ifndef QUANTUM_KEYCODES_H
 #define QUANTUM_KEYCODES_H
 
+#ifdef MIDI_ENABLE
+#ifndef MIDI_TONE_KEYCODE_OCTAVES
+#define MIDI_TONE_KEYCODE_OCTAVES 3
+#endif
+#endif
+
 enum quantum_keycodes {
     // Ranges used in shortucuts - not to be used directly
     QK_TMK                = 0x0000,
@@ -112,6 +118,7 @@ enum quantum_keycodes {
 
     MIDI_TONE_MIN,
 
+#if MIDI_TONE_KEYCODE_OCTAVES > 0
     MI_C = MIDI_TONE_MIN,
     MI_Cs,
     MI_Db = MI_Cs,
@@ -129,7 +136,9 @@ enum quantum_keycodes {
     MI_As,
     MI_Bb = MI_As,
     MI_B,
+#endif
 
+#if MIDI_TONE_KEYCODE_OCTAVES > 1
     MI_C_1,
     MI_Cs_1,
     MI_Db_1 = MI_Cs_1,
@@ -147,7 +156,9 @@ enum quantum_keycodes {
     MI_As_1,
     MI_Bb_1 = MI_As_1,
     MI_B_1,
+#endif
 
+#if MIDI_TONE_KEYCODE_OCTAVES > 2
     MI_C_2,
     MI_Cs_2,
     MI_Db_2 = MI_Cs_2,
@@ -165,8 +176,81 @@ enum quantum_keycodes {
     MI_As_2,
     MI_Bb_2 = MI_As_2,
     MI_B_2,
+#endif
 
+#if MIDI_TONE_KEYCODE_OCTAVES > 3
+    MI_C_3,
+    MI_Cs_3,
+    MI_Db_3 = MI_Cs_3,
+    MI_D_3,
+    MI_Ds_3,
+    MI_Eb_3 = MI_Ds_3,
+    MI_E_3,
+    MI_F_3,
+    MI_Fs_3,
+    MI_Gb_3 = MI_Fs_3,
+    MI_G_3,
+    MI_Gs_3,
+    MI_Ab_3 = MI_Gs_3,
+    MI_A_3,
+    MI_As_3,
+    MI_Bb_3 = MI_As_3,
+    MI_B_3,
+#endif
+
+#if MIDI_TONE_KEYCODE_OCTAVES > 4
+    MI_C_4,
+    MI_Cs_4,
+    MI_Db_4 = MI_Cs_4,
+    MI_D_4,
+    MI_Ds_4,
+    MI_Eb_4 = MI_Ds_4,
+    MI_E_4,
+    MI_F_4,
+    MI_Fs_4,
+    MI_Gb_4 = MI_Fs_4,
+    MI_G_4,
+    MI_Gs_4,
+    MI_Ab_4 = MI_Gs_4,
+    MI_A_4,
+    MI_As_4,
+    MI_Bb_4 = MI_As_4,
+    MI_B_4,
+#endif
+
+#if MIDI_TONE_KEYCODE_OCTAVES > 5
+    MI_C_5,
+    MI_Cs_5,
+    MI_Db_5 = MI_Cs_5,
+    MI_D_5,
+    MI_Ds_5,
+    MI_Eb_5 = MI_Ds_5,
+    MI_E_5,
+    MI_F_5,
+    MI_Fs_5,
+    MI_Gb_5 = MI_Fs_5,
+    MI_G_5,
+    MI_Gs_5,
+    MI_Ab_5 = MI_Gs_5,
+    MI_A_5,
+    MI_As_5,
+    MI_Bb_5 = MI_As_5,
+    MI_B_5,
+#endif
+
+#if MIDI_TONE_KEYCODE_OCTAVES > 5
+    MIDI_TONE_MAX = MI_B_5,
+#elif MIDI_TONE_KEYCODE_OCTAVES > 4
+    MIDI_TONE_MAX = MI_B_4,
+#elif MIDI_TONE_KEYCODE_OCTAVES > 3
+    MIDI_TONE_MAX = MI_B_3,
+#elif MIDI_TONE_KEYCODE_OCTAVES > 2
     MIDI_TONE_MAX = MI_B_2,
+#elif MIDI_TONE_KEYCODE_OCTAVES > 1
+    MIDI_TONE_MAX = MI_B_1,
+#elif MIDI_TONE_KEYCODE_OCTAVES > 0
+    MIDI_TONE_MAX = MI_B,
+#endif
 
     MIDI_OCTAVE_MIN,
     MI_OCT_N2 = MIDI_OCTAVE_MIN,
diff --git a/quantum/template/config.h b/quantum/template/config.h
index c61c4a618..d0bee0d89 100644
--- a/quantum/template/config.h
+++ b/quantum/template/config.h
@@ -159,4 +159,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
+/* override number of MIDI tone keycodes (each octave adds 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
 #endif

From ed15973a3ffff6e18e62f81654632b97961f18d2 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Feb 2017 17:45:08 -0800
Subject: [PATCH 046/163] Document size added by MIDI_ENABLE (~3800 bytes
 according to my experiments)

satan/keymaps/midi

MIDI_ENABLE = no

   text	   data	    bss	    dec	    hex	filename
      0	  17080	      0	  17080	   42b8	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_TONE_KEYCODE_OCTAVES 3 // default

   text	   data	    bss	    dec	    hex	filename
      0	  20846	      0	  20846	   516e	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_TONE_KEYCODE_OCTAVES 2 // fewer octaves

   text	   data	    bss	    dec	    hex	filename
      0	  20846	      0	  20846	   516e	satan_midi.hex
---
 keyboards/satan/keymaps/midi/Makefile     | 2 +-
 keyboards/satan/keymaps/midi/config.h     | 2 +-
 keyboards/satan/keymaps/midi/keymap.c     | 2 ++
 quantum/process_keycode/process_midi.c    | 2 ++
 quantum/template/config.h                 | 2 +-
 quantum/template/keymaps/default/Makefile | 2 +-
 6 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/keyboards/satan/keymaps/midi/Makefile b/keyboards/satan/keymaps/midi/Makefile
index 5cbda96ce..4e2d9d2f7 100644
--- a/keyboards/satan/keymaps/midi/Makefile
+++ b/keyboards/satan/keymaps/midi/Makefile
@@ -9,7 +9,7 @@ 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 = yes       # Enable keyboard backlight functionality
-MIDI_ENABLE = yes            # MIDI controls
+MIDI_ENABLE = yes            # MIDI support (+3800)
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h
index e345d40c9..0dbdb5cbc 100644
--- a/keyboards/satan/keymaps/midi/config.h
+++ b/keyboards/satan/keymaps/midi/config.h
@@ -5,7 +5,7 @@
 
 // place overrides here
 
-/* override number of MIDI tone keycodes (each octave adds 12 bytes) */
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
 #define MIDI_TONE_KEYCODE_OCTAVES 2
 
 #endif
\ No newline at end of file
diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c
index ac9725933..004690f41 100644
--- a/keyboards/satan/keymaps/midi/keymap.c
+++ b/keyboards/satan/keymaps/midi/keymap.c
@@ -32,6 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   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_LCTL, KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, TG(_ML), KC_RCTL),
 
+#ifdef MIDI_ENABLE
 /* Keymap _ML: MIDI Layer
    * ,------------------------------------------------------------------------.
    * | Exit |    |    |    |    |    |    |    |    |    |    |    |    |     |
@@ -57,4 +58,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   MI_MOD,  MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C_1,  MI_D_1,  MI_E_1,  MI_F_1,           _______, \
   MI_SUS,  MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0,             MI_SUS, \
   _______, _______, _______,                          MI_OFF,                               _______, _______, _______, _______),
+#endif
 };
\ No newline at end of file
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 9190fa047..5530ea97c 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,3 +1,5 @@
+#define MIDI_TONE_KEYCODE_OCTAVES 2
+
 #include "process_midi.h"
 #include "timer.h"
 
diff --git a/quantum/template/config.h b/quantum/template/config.h
index d0bee0d89..cd6dfa2c6 100644
--- a/quantum/template/config.h
+++ b/quantum/template/config.h
@@ -159,7 +159,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-/* override number of MIDI tone keycodes (each octave adds 12 bytes) */
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
 //#define MIDI_TONE_KEYCODE_OCTAVES 1
 
 #endif
diff --git a/quantum/template/keymaps/default/Makefile b/quantum/template/keymaps/default/Makefile
index f4671a9d1..24442db37 100644
--- a/quantum/template/keymaps/default/Makefile
+++ b/quantum/template/keymaps/default/Makefile
@@ -9,7 +9,7 @@ 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
+MIDI_ENABLE = no            # MIDI support (+3800)
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID

From 64eecfc5303788bd82bf2fb466ec4a6f1bd0c028 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Feb 2017 22:23:06 -0800
Subject: [PATCH 047/163] fix typos in keymap

---
 keyboards/satan/keymaps/midi/keymap.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c
index 004690f41..397fe097b 100644
--- a/keyboards/satan/keymaps/midi/keymap.c
+++ b/keyboards/satan/keymaps/midi/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |-----------------------------------------------------------|
    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
    * |-----------------------------------------------------------|
-   * |Ctrl|Gui |Alt |      Space            |Alt |Gui |FN  |Ctrl |
+   * |Ctrl|Gui |Alt |      Space            |Alt |Gui |Midi|Ctrl |
    * `-----------------------------------------------------------'
    */
 [_BL] = KEYMAP_ANSI(
@@ -39,18 +39,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |------------------------------------------------------------------------|
    * |  Ch+ |    | C# | D# |    | F# | G# | A# |    | C# | D# |    |    |     |
    * |------------------------------------------------------------------------|
-   * |  Mod  | C  | D  | E  | F  | G  | A  | B  | C  | D  | E  | F  |>>OnStage|
+   * |  Mod  | C  | D  | E  | F  | G  | A  | B  | C  | D  | E  | F  |         |
    * |------------------------------------------------------------------------|
    * | Sustain |Oct-|Oct+|Mod-|Mod+|    |    |    |Tns-|Tns+|Tns0|   Sustain  |
    * |------------------------------------------------------------------------|
    * |     |     |     |         All notes off        |     |     |     |     |
    * `------------------------------------------------------------------------'
-   *
-   * Foot switches:
-   *                ,--------.         ,--------.
-   *                |        |         |        |
-   *                |        |         |        |
-   *                `--------'         `--------'
    */
 [_ML] = KEYMAP_ANSI(
   TG(_ML), MI_VEL_1, MI_VEL_2, MI_VEL_3, MI_VEL_4, MI_VEL_5, MI_VEL_6, MI_VEL_7, MI_VEL_8, MI_VEL_9, MI_VEL_10, XXXXXXX, XXXXXXX, XXXXXXX, \

From 525be99ee938aa6e48448d7dd6ea6e6fe50bb36d Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 25 Feb 2017 15:02:43 -0800
Subject: [PATCH 048/163] Split MIDI functionality into MIDI_BASIC and
 MIDI_ADVANCED

MIDI_ENABLE = no

   text	   data	    bss	    dec	    hex	filename
      0	  17080	      0	  17080	   42b8	satan_midi.hex

MIDI_ENABLE = yes
MIDI_BASIC undefined
MIDI_ADVANCED undefined

   text	   data	    bss	    dec	    hex	filename
      0	  19494	      0	  19494	   4c26	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_BASIC
MIDI_ADVANCED undefined

   text	   data	    bss	    dec	    hex	filename
      0	  19788	      0	  19788	   4d4c	satan_midi.hex

MIDI_ENABLE = yes
MIDI_BASIC undefined
#define MIDI_ADVANCED

   text	   data	    bss	    dec	    hex	filename
      0	  20846	      0	  20846	   516e	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_BASIC
#define MIDI_ADVANCED

   text	   data	    bss	    dec	    hex	filename
      0	  21140	      0	  21140	   5294	satan_midi.hex
---
 build_keyboard.mk                       |  1 +
 keyboards/satan/keymaps/midi/config.h   | 17 ++++++++++++++++-
 keyboards/satan/keymaps/midi/keymap.c   |  4 ++--
 quantum/process_keycode/process_midi.c  |  9 ++++++---
 quantum/process_keycode/process_music.c | 22 ++++++++++++++++++++++
 quantum/quantum.c                       |  4 ++--
 quantum/quantum_keycodes.h              | 13 ++++++++++---
 quantum/template/config.h               | 17 +++++++++++++++++
 tmk_core/protocol/lufa/lufa.c           |  4 ++++
 9 files changed, 80 insertions(+), 11 deletions(-)

diff --git a/build_keyboard.mk b/build_keyboard.mk
index 4a6fc0980..eea8d5919 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -141,6 +141,7 @@ endif
 
 ifeq ($(strip $(MIDI_ENABLE)), yes)
     OPT_DEFS += -DMIDI_ENABLE
+	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
 	SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
 endif
 
diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h
index 0dbdb5cbc..59250b49e 100644
--- a/keyboards/satan/keymaps/midi/config.h
+++ b/keyboards/satan/keymaps/midi/config.h
@@ -3,7 +3,22 @@
 
 #include "../../config.h"
 
-// place overrides here
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+#define MIDI_ADVANCED
 
 /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
 #define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c
index 397fe097b..349391c3b 100644
--- a/keyboards/satan/keymaps/midi/keymap.c
+++ b/keyboards/satan/keymaps/midi/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   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_LCTL, KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, TG(_ML), KC_RCTL),
 
-#ifdef MIDI_ENABLE
+#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
 /* Keymap _ML: MIDI Layer
    * ,------------------------------------------------------------------------.
    * | Exit |    |    |    |    |    |    |    |    |    |    |    |    |     |
@@ -51,6 +51,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   MI_CHU,  XXXXXXX, MI_Cs,   MI_Ds,   XXXXXXX, MI_Fs,   MI_Gs,   MI_As,   XXXXXXX, MI_Cs_1, MI_Ds_1, XXXXXXX, XXXXXXX, XXXXXXX, \
   MI_MOD,  MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C_1,  MI_D_1,  MI_E_1,  MI_F_1,           _______, \
   MI_SUS,  MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0,             MI_SUS, \
-  _______, _______, _______,                          MI_OFF,                               _______, _______, _______, _______),
+  _______, _______, _______,                          MI_ALLOFF,                            _______, _______, _______, _______),
 #endif
 };
\ No newline at end of file
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 5530ea97c..161f04a24 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,6 +1,7 @@
-#define MIDI_TONE_KEYCODE_OCTAVES 2
-
 #include "process_midi.h"
+
+#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
+
 #include "timer.h"
 
 static uint8_t tone_status[MIDI_TONE_COUNT];
@@ -161,7 +162,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
                 dprintf("midi channel %d\n", midi_config.channel);
             }
             return false;
-        case MI_OFF:
+        case MI_ALLOFF:
             if (record->event.pressed) {
                 midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0);
                 dprintf("midi off\n");
@@ -209,3 +210,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
 
     return true;
 }
+
+#endif // MIDI_ADVANCED
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c
index 1e2648bff..ac906b628 100644
--- a/quantum/process_keycode/process_music.c
+++ b/quantum/process_keycode/process_music.c
@@ -17,6 +17,7 @@ static uint16_t music_sequence_interval = 100;
 
 bool process_music(uint16_t keycode, keyrecord_t *record) {
 
+	#ifdef AUDIO_ENABLE
     if (keycode == AU_ON && record->event.pressed) {
       audio_on();
       return false;
@@ -38,6 +39,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
         }
       return false;
     }
+	#endif // AUDIO_ENABLE
 
     if (keycode == MU_ON && record->event.pressed) {
         music_on();
@@ -61,6 +63,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
         return false;
     }
 
+	#ifdef AUDIO_ENABLE
     if (keycode == MUV_IN && record->event.pressed) {
         voice_iterate();
         music_scale_user();
@@ -72,11 +75,14 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
         music_scale_user();
         return false;
     }
+	#endif // AUDIO_ENABLE
 
     if (music_activated) {
 
       if (keycode == KC_LCTL && record->event.pressed) { // Start recording
+		#ifdef AUDIO_ENABLE
         stop_all_notes();
+        #endif
         music_sequence_recording = true;
         music_sequence_recorded = false;
         music_sequence_playing = false;
@@ -85,7 +91,9 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       }
 
       if (keycode == KC_LALT && record->event.pressed) { // Stop recording/playing
+        #ifdef AUDIO_ENABLE
         stop_all_notes();
+        #endif
         if (music_sequence_recording) { // was recording
           music_sequence_recorded = true;
         }
@@ -95,7 +103,9 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       }
 
       if (keycode == KC_LGUI && record->event.pressed && music_sequence_recorded) { // Start playing
+        #ifdef AUDIO_ENABLE
         stop_all_notes();
+        #endif
         music_sequence_recording = false;
         music_sequence_playing = true;
         music_sequence_position = 0;
@@ -116,6 +126,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       }
       #define MUSIC_MODE_GUITAR
 
+      #ifdef AUDIO_ENABLE
       #ifdef MUSIC_MODE_CHROMATIC
       float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(MATRIX_ROWS - record->event.key.row));
       #elif defined(MUSIC_MODE_GUITAR)
@@ -125,15 +136,20 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       #else
       float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + SCALE[record->event.key.col + music_offset])/12.0+(MATRIX_ROWS - record->event.key.row));
       #endif
+      #endif // AUDIO_ENABLE
 
       if (record->event.pressed) {
+      	#ifdef AUDIO_ENABLE
         play_note(freq, 0xF);
         if (music_sequence_recording) {
           music_sequence[music_sequence_count] = freq;
           music_sequence_count++;
         }
+        #endif
       } else {
+      	#ifdef AUDIO_ENABLE
         stop_note(freq);
+        #endif
       }
 
       if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
@@ -161,15 +177,19 @@ void music_on(void) {
 
 void music_off(void) {
     music_activated = 0;
+    #ifdef AUDIO_ENABLE
     stop_all_notes();
+    #endif
 }
 
 
 __attribute__ ((weak))
 void music_on_user() {}
 
+#ifdef AUDIO_ENABLE
 __attribute__ ((weak))
 void audio_on_user() {}
+#endif
 
 __attribute__ ((weak))
 void music_scale_user() {}
@@ -178,8 +198,10 @@ void matrix_scan_music(void) {
   if (music_sequence_playing) {
     if ((music_sequence_timer == 0) || (timer_elapsed(music_sequence_timer) > music_sequence_interval)) {
       music_sequence_timer = timer_read();
+      #ifdef AUDIO_ENABLE
       stop_note(music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)]);
       play_note(music_sequence[music_sequence_position], 0xF);
+      #endif
       music_sequence_position = (music_sequence_position + 1) % music_sequence_count;
     }
   }
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 4a6d0355f..83fa87708 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -150,10 +150,10 @@ bool process_record_quantum(keyrecord_t *record) {
 
   if (!(
     process_record_kb(keycode, record) &&
-  #ifdef MIDI_ENABLE
+  #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
     process_midi(keycode, record) &&
   #endif
-  #ifdef AUDIO_ENABLE
+  #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
     process_music(keycode, record) &&
   #endif
   #ifdef TAP_DANCE_ENABLE
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 6d1438051..3b82b7208 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -2,7 +2,7 @@
 #ifndef QUANTUM_KEYCODES_H
 #define QUANTUM_KEYCODES_H
 
-#ifdef MIDI_ENABLE
+#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
 #ifndef MIDI_TONE_KEYCODE_OCTAVES
 #define MIDI_TONE_KEYCODE_OCTAVES 3
 #endif
@@ -116,6 +116,12 @@ enum quantum_keycodes {
 #ifdef MIDI_ENABLE
     // Midi
 
+#ifdef MIDI_BASIC
+    MI_ON,  // send midi notes when music mode is enabled
+    MI_OFF, // don't send midi notes when music mode is enabled
+#endif
+
+#ifdef MIDI_ADVANCED
     MIDI_TONE_MIN,
 
 #if MIDI_TONE_KEYCODE_OCTAVES > 0
@@ -321,7 +327,7 @@ enum quantum_keycodes {
     MI_CHD, // previous channel
     MI_CHU, // next channel
 
-    MI_OFF, // all notes off
+    MI_ALLOFF, // all notes off
 
     MI_SUS, // sustain
     MI_PORT, // portamento
@@ -332,7 +338,8 @@ enum quantum_keycodes {
     MI_MOD, // modulation
     MI_MODSD, // decrease modulation speed
     MI_MODSU, // increase modulation speed
-#endif
+#endif // MIDI_ADVANCED
+#endif // MIDI_ENABLE
 
     // Backlight functionality
     BL_0,
diff --git a/quantum/template/config.h b/quantum/template/config.h
index cd6dfa2c6..54db4f242 100644
--- a/quantum/template/config.h
+++ b/quantum/template/config.h
@@ -159,6 +159,23 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
 /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
 //#define MIDI_TONE_KEYCODE_OCTAVES 1
 
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index bd2498057..651a0f347 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -1104,7 +1104,9 @@ void sysex_callback(MidiDevice * device,
 
 void setup_midi(void)
 {
+#ifdef MIDI_ADVANCED
 	midi_init();
+#endif
 	midi_device_init(&midi_device);
     midi_device_set_send_func(&midi_device, usb_send_func);
     midi_device_set_pre_input_process_func(&midi_device, usb_get_midi);
@@ -1180,8 +1182,10 @@ int main(void)
 
 #ifdef MIDI_ENABLE
         midi_device_process(&midi_device);
+#ifdef MIDI_ADVANCED
         midi_task();
 #endif
+#endif
 
 #if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE)
         rgblight_task();

From 1000799d1ef594bf9f48076986ec300ef9e536db Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 25 Feb 2017 19:25:33 -0800
Subject: [PATCH 049/163] Factor basic note processing into respective
 processors

---
 build_keyboard.mk                       |   1 +
 quantum/process_keycode/process_audio.c |  62 +++++++++++
 quantum/process_keycode/process_audio.h |  11 ++
 quantum/process_keycode/process_midi.c  |  28 ++++-
 quantum/process_keycode/process_midi.h  |  13 ++-
 quantum/process_keycode/process_music.c | 141 ++++++++++--------------
 quantum/process_keycode/process_music.h |   5 +-
 quantum/quantum.c                       |   3 +
 quantum/quantum.h                       |   7 +-
 9 files changed, 186 insertions(+), 85 deletions(-)
 create mode 100644 quantum/process_keycode/process_audio.c
 create mode 100644 quantum/process_keycode/process_audio.h

diff --git a/build_keyboard.mk b/build_keyboard.mk
index eea8d5919..07dfe85b4 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -157,6 +157,7 @@ endif
 ifeq ($(strip $(AUDIO_ENABLE)), yes)
     OPT_DEFS += -DAUDIO_ENABLE
 	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
+	SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
 	SRC += $(QUANTUM_DIR)/audio/audio.c
 	SRC += $(QUANTUM_DIR)/audio/voices.c
 	SRC += $(QUANTUM_DIR)/audio/luts.c
diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c
new file mode 100644
index 000000000..5b5da546e
--- /dev/null
+++ b/quantum/process_keycode/process_audio.c
@@ -0,0 +1,62 @@
+#include "process_audio.h"
+#include "audio.h"
+
+static float compute_freq_for_midi_note(uint8_t note)
+{
+    // https://en.wikipedia.org/wiki/MIDI_tuning_standard
+    return pow(2.0, (note - 69) / 12.0) * 440.0f;
+}
+
+bool process_audio(uint16_t keycode, keyrecord_t *record) {
+
+    if (keycode == AU_ON && record->event.pressed) {
+      audio_on();
+      return false;
+    }
+
+    if (keycode == AU_OFF && record->event.pressed) {
+      audio_off();
+      return false;
+    }
+
+    if (keycode == AU_TOG && record->event.pressed) {
+        if (is_audio_on())
+        {
+            audio_off();
+        }
+        else
+        {
+            audio_on();
+        }
+      return false;
+    }
+
+    if (keycode == MUV_IN && record->event.pressed) {
+        voice_iterate();
+        music_scale_user();
+        return false;
+    }
+
+    if (keycode == MUV_DE && record->event.pressed) {
+        voice_deiterate();
+        music_scale_user();
+        return false;
+    }
+
+    return true
+}
+
+void process_audio_noteon(uint8_t note) {
+    play_note(compute_freq_for_midi_note(note), 0xF);
+}
+
+void process_audio_noteoff(uint8_t note) {
+    stop_note(compute_freq_for_midi_note(note));
+}
+
+void process_audio_stop_all_notes(void) {
+    stop_all_notes();
+}
+
+__attribute__ ((weak))
+void audio_on_user() {}
\ No newline at end of file
diff --git a/quantum/process_keycode/process_audio.h b/quantum/process_keycode/process_audio.h
new file mode 100644
index 000000000..59a17725a
--- /dev/null
+++ b/quantum/process_keycode/process_audio.h
@@ -0,0 +1,11 @@
+#ifndef PROCESS_AUDIO_H
+#define PROCESS_AUDIO_H
+
+bool process_audio(uint16_t keycode, keyrecord_t *record);
+void process_audio_noteon(uint8_t note);
+void process_audio_noteoff(uint8_t note);
+void process_audio_stop_all_notes(void);
+
+void audio_on_user(void);
+
+#endif
\ No newline at end of file
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 161f04a24..214bba902 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,6 +1,28 @@
 #include "process_midi.h"
 
-#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
+#ifdef MIDI_ENABLE
+#include "midi.h"
+
+#ifdef MIDI_BASIC
+
+void process_midi_basic_noteon(uint8_t note) 
+{
+    midi_send_noteon(&midi_device, 0, note, 128);
+}
+
+void process_midi_basic_noteoff(uint8_t note)
+{
+    midi_send_noteoff(&midi_device, 0, note, 0);
+}
+
+void process_midi_basic_stop_all_notes(void)
+{
+    midi_send_cc(&midi_device, 0, 0x7B, 0);
+}
+
+#endif // MIDI_BASIC
+
+#ifdef MIDI_ADVANCED
 
 #include "timer.h"
 
@@ -165,7 +187,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
         case MI_ALLOFF:
             if (record->event.pressed) {
                 midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0);
-                dprintf("midi off\n");
+                dprintf("midi all notes off\n");
             }
             return false;
         case MI_SUS:
@@ -212,3 +234,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
 }
 
 #endif // MIDI_ADVANCED
+
+#endif // MIDI_ENABLE
diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h
index ffd41579f..0f559ec23 100644
--- a/quantum/process_keycode/process_midi.h
+++ b/quantum/process_keycode/process_midi.h
@@ -2,8 +2,16 @@
 #define PROCESS_MIDI_H
 
 #include "quantum.h"
-#include "midi.h"
 
+#ifdef MIDI_ENABLE
+
+#ifdef MIDI_BASIC
+void process_midi_basic_noteon(uint8_t note);
+void process_midi_basic_noteoff(uint8_t note);
+void process_midi_basic_stop_all_notes(void);
+#endif
+
+#ifdef MIDI_ADVANCED
 typedef union {
   uint32_t raw;
   struct {
@@ -25,5 +33,8 @@ bool process_midi(uint16_t keycode, keyrecord_t *record);
 #define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1)
 
 uint8_t midi_compute_note(uint16_t keycode);
+#endif // MIDI_ADVANCED
+
+#endif // MIDI_ENABLE
 
 #endif
\ No newline at end of file
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c
index ac906b628..a1e270df1 100644
--- a/quantum/process_keycode/process_music.c
+++ b/quantum/process_keycode/process_music.c
@@ -1,5 +1,14 @@
 #include "process_music.h"
 
+#ifdef AUDIO_ENABLE
+#include "process_audio.h"
+#endif
+#if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
+#include "process_midi.h"
+#endif
+
+#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
+
 bool music_activated = false;
 uint8_t music_starting_note = 0x0C;
 int music_offset = 7;
@@ -8,39 +17,42 @@ int music_offset = 7;
 static bool music_sequence_recording = false;
 static bool music_sequence_recorded = false;
 static bool music_sequence_playing = false;
-static float music_sequence[16] = {0};
+static uint8_t music_sequence[16] = {0};
 static uint8_t music_sequence_count = 0;
 static uint8_t music_sequence_position = 0;
 
 static uint16_t music_sequence_timer = 0;
 static uint16_t music_sequence_interval = 100;
 
+static void music_noteon(uint8_t note) {
+    #ifdef AUDIO_ENABLE
+    process_audio_noteon(note);
+    #endif
+    #if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
+    process_midi_basic_noteon(note);
+    #endif
+}
+
+static void music_noteoff(uint8_t note) {
+    #ifdef AUDIO_ENABLE
+    process_audio_noteoff(note);
+    #endif
+    #if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
+    process_midi_basic_noteoff(note);
+    #endif
+}
+
+static void music_all_notes_off(void) {
+    #ifdef AUDIO_ENABLE
+    process_audio_stop_all_notes();
+    #endif
+    #if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
+    process_midi_basic_stop_all_notes();
+    #endif
+}
+
 bool process_music(uint16_t keycode, keyrecord_t *record) {
 
-	#ifdef AUDIO_ENABLE
-    if (keycode == AU_ON && record->event.pressed) {
-      audio_on();
-      return false;
-    }
-
-    if (keycode == AU_OFF && record->event.pressed) {
-      audio_off();
-      return false;
-    }
-
-    if (keycode == AU_TOG && record->event.pressed) {
-        if (is_audio_on())
-        {
-            audio_off();
-        }
-        else
-        {
-            audio_on();
-        }
-      return false;
-    }
-	#endif // AUDIO_ENABLE
-
     if (keycode == MU_ON && record->event.pressed) {
         music_on();
         return false;
@@ -63,26 +75,10 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
         return false;
     }
 
-	#ifdef AUDIO_ENABLE
-    if (keycode == MUV_IN && record->event.pressed) {
-        voice_iterate();
-        music_scale_user();
-        return false;
-    }
-
-    if (keycode == MUV_DE && record->event.pressed) {
-        voice_deiterate();
-        music_scale_user();
-        return false;
-    }
-	#endif // AUDIO_ENABLE
-
     if (music_activated) {
 
       if (keycode == KC_LCTL && record->event.pressed) { // Start recording
-		#ifdef AUDIO_ENABLE
-        stop_all_notes();
-        #endif
+        music_all_notes_off();
         music_sequence_recording = true;
         music_sequence_recorded = false;
         music_sequence_playing = false;
@@ -91,9 +87,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       }
 
       if (keycode == KC_LALT && record->event.pressed) { // Stop recording/playing
-        #ifdef AUDIO_ENABLE
-        stop_all_notes();
-        #endif
+        music_all_notes_off();
         if (music_sequence_recording) { // was recording
           music_sequence_recorded = true;
         }
@@ -103,9 +97,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       }
 
       if (keycode == KC_LGUI && record->event.pressed && music_sequence_recorded) { // Start playing
-        #ifdef AUDIO_ENABLE
-        stop_all_notes();
-        #endif
+        music_all_notes_off();
         music_sequence_recording = false;
         music_sequence_playing = true;
         music_sequence_position = 0;
@@ -124,32 +116,27 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
             music_sequence_interval+=10;
         return false;
       }
+
       #define MUSIC_MODE_GUITAR
 
-      #ifdef AUDIO_ENABLE
       #ifdef MUSIC_MODE_CHROMATIC
-      float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(MATRIX_ROWS - record->event.key.row));
+      uint8_t note = (music_starting_note + record->event.key.col + music_offset - 3)+12*(MATRIX_ROWS - record->event.key.row);
       #elif defined(MUSIC_MODE_GUITAR)
-      float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(float)(MATRIX_ROWS - record->event.key.row + 7)*5.0/12);
+      uint8_t note = (music_starting_note + record->event.key.col + music_offset + 32)+5*(MATRIX_ROWS - record->event.key.row);
       #elif defined(MUSIC_MODE_VIOLIN)
-      float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(float)(MATRIX_ROWS - record->event.key.row + 5)*7.0/12);
+      uint8_t note = (music_starting_note + record->event.key.col + music_offset + 32)+7*(MATRIX_ROWS - record->event.key.row);
       #else
-      float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + SCALE[record->event.key.col + music_offset])/12.0+(MATRIX_ROWS - record->event.key.row));
+      uint8_t note = (music_starting_note + SCALE[record->event.key.col + music_offset] - 3)+12*(MATRIX_ROWS - record->event.key.row);
       #endif
-      #endif // AUDIO_ENABLE
 
       if (record->event.pressed) {
-      	#ifdef AUDIO_ENABLE
-        play_note(freq, 0xF);
+        music_noteon(note);
         if (music_sequence_recording) {
-          music_sequence[music_sequence_count] = freq;
+          music_sequence[music_sequence_count] = note;
           music_sequence_count++;
         }
-        #endif
       } else {
-      	#ifdef AUDIO_ENABLE
-        stop_note(freq);
-        #endif
+        music_noteoff(note);
       }
 
       if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
@@ -177,32 +164,26 @@ void music_on(void) {
 
 void music_off(void) {
     music_activated = 0;
-    #ifdef AUDIO_ENABLE
-    stop_all_notes();
-    #endif
+    music_all_notes_off();
 }
 
-
-__attribute__ ((weak))
-void music_on_user() {}
-
-#ifdef AUDIO_ENABLE
-__attribute__ ((weak))
-void audio_on_user() {}
-#endif
-
-__attribute__ ((weak))
-void music_scale_user() {}
-
 void matrix_scan_music(void) {
   if (music_sequence_playing) {
     if ((music_sequence_timer == 0) || (timer_elapsed(music_sequence_timer) > music_sequence_interval)) {
       music_sequence_timer = timer_read();
-      #ifdef AUDIO_ENABLE
-      stop_note(music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)]);
-      play_note(music_sequence[music_sequence_position], 0xF);
-      #endif
+      uint8_t prev_note = music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)];
+      uint8_t next_note = music_sequence[music_sequence_position];
+      music_noteoff(prev_note);
+      music_noteon(next_note);
       music_sequence_position = (music_sequence_position + 1) % music_sequence_count;
     }
   }
 }
+
+__attribute__ ((weak))
+void music_on_user() {}
+
+__attribute__ ((weak))
+void music_scale_user() {}
+
+#endif // defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
\ No newline at end of file
diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h
index 318b3e387..69913b276 100644
--- a/quantum/process_keycode/process_music.h
+++ b/quantum/process_keycode/process_music.h
@@ -3,6 +3,8 @@
 
 #include "quantum.h"
 
+#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
+
 bool process_music(uint16_t keycode, keyrecord_t *record);
 
 bool is_music_on(void);
@@ -10,7 +12,6 @@ void music_toggle(void);
 void music_on(void);
 void music_off(void);
 
-void audio_on_user(void);
 void music_on_user(void);
 void music_scale_user(void);
 
@@ -24,4 +25,6 @@ void matrix_scan_music(void);
                            0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
 #endif
 
+#endif // defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
+
 #endif
\ No newline at end of file
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 83fa87708..7a27a568a 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -153,6 +153,9 @@ bool process_record_quantum(keyrecord_t *record) {
   #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
     process_midi(keycode, record) &&
   #endif
+  #ifdef AUDIO_ENABLE
+    process_audio(keycode, record) &&
+  #endif
   #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
     process_music(keycode, record) &&
   #endif
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 580d51202..77732d43f 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -35,11 +35,16 @@ extern uint32_t default_layer_state;
 
 #ifdef MIDI_ENABLE
 	#include <lufa.h>
+#ifdef MIDI_ADVANCED
 	#include "process_midi.h"
 #endif
+#endif // MIDI_ENABLE
 
 #ifdef AUDIO_ENABLE
- 	#include "audio.h"
+ 	#include "process_audio.h"
+#endif
+
+#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
 	#include "process_music.h"
 #endif
 

From ea14ed122fb5c1b3be5f5d6edda9b39b151692e5 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 25 Feb 2017 19:37:33 -0800
Subject: [PATCH 050/163] Add basic layer to sample MIDI keycap

---
 keyboards/satan/keymaps/midi/keymap.c   | 23 ++++++++++++++++++++++-
 quantum/process_keycode/process_audio.c |  2 +-
 quantum/process_keycode/process_music.c |  3 ++-
 3 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c
index 349391c3b..8378b4e4b 100644
--- a/keyboards/satan/keymaps/midi/keymap.c
+++ b/keyboards/satan/keymaps/midi/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   KC_LCTL, KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, TG(_ML), KC_RCTL),
 
 #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
-/* Keymap _ML: MIDI Layer
+/* Keymap _ML: MIDI Layer (Advanced)
    * ,------------------------------------------------------------------------.
    * | Exit |    |    |    |    |    |    |    |    |    |    |    |    |     |
    * |------------------------------------------------------------------------|
@@ -52,5 +52,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   MI_MOD,  MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C_1,  MI_D_1,  MI_E_1,  MI_F_1,           _______, \
   MI_SUS,  MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0,             MI_SUS, \
   _______, _______, _______,                          MI_ALLOFF,                            _______, _______, _______, _______),
+#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
+/* Keymap _ML: MIDI Layer (Advanced)
+   * ,------------------------------------------------------------------------.
+   * | Exit |    |    |    |    |    |    |    |    |    |    |    |    |     |
+   * |------------------------------------------------------------------------|
+   * |      |    |    |    |    |    |    |    |    |    |    |    |    |     |
+   * |------------------------------------------------------------------------|
+   * |       |    |    |    |    |    |    |    |    |    |    |    |         |
+   * |------------------------------------------------------------------------|
+   * |         |MuOn|MuOf|MiOn|MiOf|    |    |    |    |    |    |            |
+   * |------------------------------------------------------------------------|
+   * |     |     |     |                              |     |     |     |     |
+   * `------------------------------------------------------------------------'
+   */
+
+[_ML] = KEYMAP_ANSI(
+  TG(_ML), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, \
+  _______, MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______, _______,                   _______, \
+  _______, _______, _______,                          _______,                              _______, _______, _______, _______),
 #endif
 };
\ No newline at end of file
diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c
index 5b5da546e..d45242c9e 100644
--- a/quantum/process_keycode/process_audio.c
+++ b/quantum/process_keycode/process_audio.c
@@ -28,7 +28,7 @@ bool process_audio(uint16_t keycode, keyrecord_t *record) {
         {
             audio_on();
         }
-      return false;
+        return false;
     }
 
     if (keycode == MUV_IN && record->event.pressed) {
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c
index a1e270df1..43bcf973e 100644
--- a/quantum/process_keycode/process_music.c
+++ b/quantum/process_keycode/process_music.c
@@ -142,7 +142,8 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
       if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
         return false;
     }
-  return true;
+
+    return true;
 }
 
 bool is_music_on(void) {

From a64ae1066250d3aafb6e9670bf617237ec4338e7 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 25 Feb 2017 20:41:13 -0800
Subject: [PATCH 051/163] Update existing keymaps

Update existing keymaps to enable MIDI_BASIC functionality.  Also added
an option MIDI_ENABLE_STRICT to be strict about keycode use (which also
reduces memory footprint at runtime)
---
 keyboards/planck/keymaps/dbroqua/config.h     | 29 +++++++++++++++++++
 keyboards/planck/keymaps/default/config.h     | 29 +++++++++++++++++++
 .../planck/keymaps/experimental/config.h      | 23 +++++++++++++++
 keyboards/planck/keymaps/impossible/config.h  | 29 +++++++++++++++++++
 keyboards/planck/keymaps/jeebak/config.h      | 29 +++++++++++++++++++
 keyboards/planck/keymaps/jhenahan/config.h    | 23 +++++++++++++++
 keyboards/planck/keymaps/premek/config.h      | 29 +++++++++++++++++++
 keyboards/planck/keymaps/sgoodwin/config.h    | 29 +++++++++++++++++++
 keyboards/planck/keymaps/smt/config.h         | 29 +++++++++++++++++++
 .../planck/keymaps/thermal_printer/config.h   | 23 +++++++++++++++
 keyboards/planck/keymaps/unicode/config.h     | 29 +++++++++++++++++++
 keyboards/planck/keymaps/xyverz/config.h      | 29 +++++++++++++++++++
 .../preonic/keymaps/CMD-Preonic/config.h      | 29 +++++++++++++++++++
 keyboards/preonic/keymaps/default/config.h    | 29 +++++++++++++++++++
 keyboards/preonic/keymaps/smt/config.h        | 29 +++++++++++++++++++
 keyboards/satan/keymaps/midi/config.h         |  3 ++
 keyboards/subatomic/keymaps/default/config.h  | 29 +++++++++++++++++++
 quantum/process_keycode/process_audio.c       |  4 +--
 quantum/process_keycode/process_music.c       |  2 +-
 quantum/process_keycode/process_music.h       |  1 +
 quantum/quantum.c                             |  4 +--
 quantum/quantum_keycodes.h                    | 28 +++++++++---------
 quantum/template/config.h                     |  3 ++
 23 files changed, 472 insertions(+), 19 deletions(-)
 create mode 100644 keyboards/planck/keymaps/dbroqua/config.h
 create mode 100644 keyboards/planck/keymaps/default/config.h
 create mode 100644 keyboards/planck/keymaps/impossible/config.h
 create mode 100644 keyboards/planck/keymaps/jeebak/config.h
 create mode 100644 keyboards/planck/keymaps/premek/config.h
 create mode 100644 keyboards/planck/keymaps/sgoodwin/config.h
 create mode 100644 keyboards/planck/keymaps/smt/config.h
 create mode 100644 keyboards/planck/keymaps/unicode/config.h
 create mode 100644 keyboards/planck/keymaps/xyverz/config.h
 create mode 100644 keyboards/preonic/keymaps/CMD-Preonic/config.h
 create mode 100644 keyboards/preonic/keymaps/default/config.h
 create mode 100644 keyboards/preonic/keymaps/smt/config.h
 create mode 100644 keyboards/subatomic/keymaps/default/config.h

diff --git a/keyboards/planck/keymaps/dbroqua/config.h b/keyboards/planck/keymaps/dbroqua/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/dbroqua/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/default/config.h b/keyboards/planck/keymaps/default/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/default/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/experimental/config.h b/keyboards/planck/keymaps/experimental/config.h
index cc093bee4..492490ca1 100644
--- a/keyboards/planck/keymaps/experimental/config.h
+++ b/keyboards/planck/keymaps/experimental/config.h
@@ -14,4 +14,27 @@
 #define RGBLIGHT_HUE_STEP 10
 #define RGBLIGHT_SAT_STEP 17
 
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
 #endif
diff --git a/keyboards/planck/keymaps/impossible/config.h b/keyboards/planck/keymaps/impossible/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/impossible/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/jeebak/config.h b/keyboards/planck/keymaps/jeebak/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/jeebak/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/jhenahan/config.h b/keyboards/planck/keymaps/jhenahan/config.h
index cd3adc41c..1e42b92b9 100644
--- a/keyboards/planck/keymaps/jhenahan/config.h
+++ b/keyboards/planck/keymaps/jhenahan/config.h
@@ -6,4 +6,27 @@
 #define FORCE_NKRO
 #define WORKMAN_SOUND COLEMAK_SOUND
 
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
 #endif
diff --git a/keyboards/planck/keymaps/premek/config.h b/keyboards/planck/keymaps/premek/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/premek/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/sgoodwin/config.h b/keyboards/planck/keymaps/sgoodwin/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/sgoodwin/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/smt/config.h b/keyboards/planck/keymaps/smt/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/smt/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/thermal_printer/config.h b/keyboards/planck/keymaps/thermal_printer/config.h
index 430b6493c..bcd098930 100644
--- a/keyboards/planck/keymaps/thermal_printer/config.h
+++ b/keyboards/planck/keymaps/thermal_printer/config.h
@@ -20,4 +20,27 @@
             sei(); \
         } while(0)
 
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
  #endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/unicode/config.h b/keyboards/planck/keymaps/unicode/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/unicode/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/xyverz/config.h b/keyboards/planck/keymaps/xyverz/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/planck/keymaps/xyverz/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/CMD-Preonic/config.h b/keyboards/preonic/keymaps/CMD-Preonic/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/preonic/keymaps/CMD-Preonic/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/default/config.h b/keyboards/preonic/keymaps/default/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/preonic/keymaps/default/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/smt/config.h b/keyboards/preonic/keymaps/smt/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/preonic/keymaps/smt/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h
index 59250b49e..8e10b04ec 100644
--- a/keyboards/satan/keymaps/midi/config.h
+++ b/keyboards/satan/keymaps/midi/config.h
@@ -7,6 +7,9 @@
  * MIDI options
  */
 
+/* Prevent use of disabled MIDI features in the keymap */
+#define MIDI_ENABLE_STRICT 1
+
 /* enable basic MIDI features:
    - MIDI notes can be sent when in Music mode is on
 */
diff --git a/keyboards/subatomic/keymaps/default/config.h b/keyboards/subatomic/keymaps/default/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/subatomic/keymaps/default/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#endif
\ No newline at end of file
diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c
index d45242c9e..71c0297ee 100644
--- a/quantum/process_keycode/process_audio.c
+++ b/quantum/process_keycode/process_audio.c
@@ -1,5 +1,5 @@
-#include "process_audio.h"
 #include "audio.h"
+#include "process_audio.h"
 
 static float compute_freq_for_midi_note(uint8_t note)
 {
@@ -43,7 +43,7 @@ bool process_audio(uint16_t keycode, keyrecord_t *record) {
         return false;
     }
 
-    return true
+    return true;
 }
 
 void process_audio_noteon(uint8_t note) {
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c
index 43bcf973e..4b86b91f0 100644
--- a/quantum/process_keycode/process_music.c
+++ b/quantum/process_keycode/process_music.c
@@ -42,7 +42,7 @@ static void music_noteoff(uint8_t note) {
     #endif
 }
 
-static void music_all_notes_off(void) {
+void music_all_notes_off(void) {
     #ifdef AUDIO_ENABLE
     process_audio_stop_all_notes();
     #endif
diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h
index 69913b276..a36514a44 100644
--- a/quantum/process_keycode/process_music.h
+++ b/quantum/process_keycode/process_music.h
@@ -14,6 +14,7 @@ void music_off(void);
 
 void music_on_user(void);
 void music_scale_user(void);
+void music_all_notes_off(void);
 
 void matrix_scan_music(void);
 
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 7a27a568a..a4a12061b 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -95,8 +95,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 void reset_keyboard(void) {
   clear_keyboard();
-#ifdef AUDIO_ENABLE
-  stop_all_notes();
+#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_ENABLE_BASIC))
+  music_all_notes_off();
   shutdown_user();
 #endif
   wait_ms(250);
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 3b82b7208..56228f276 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -1,8 +1,11 @@
-
 #ifndef QUANTUM_KEYCODES_H
 #define QUANTUM_KEYCODES_H
 
-#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
+#ifndef MIDI_ENABLE_STRICT
+#define MIDI_ENABLE_STRICT 0
+#endif
+
+#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_ADVANCED))
 #ifndef MIDI_TONE_KEYCODE_OCTAVES
 #define MIDI_TONE_KEYCODE_OCTAVES 3
 #endif
@@ -113,18 +116,16 @@ enum quantum_keycodes {
     MUV_IN,
     MUV_DE,
 
-#ifdef MIDI_ENABLE
     // Midi
-
-#ifdef MIDI_BASIC
+#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
     MI_ON,  // send midi notes when music mode is enabled
     MI_OFF, // don't send midi notes when music mode is enabled
 #endif
 
-#ifdef MIDI_ADVANCED
+#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_ADVANCED))
     MIDI_TONE_MIN,
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 0
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 0
     MI_C = MIDI_TONE_MIN,
     MI_Cs,
     MI_Db = MI_Cs,
@@ -144,7 +145,7 @@ enum quantum_keycodes {
     MI_B,
 #endif
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 1
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 1
     MI_C_1,
     MI_Cs_1,
     MI_Db_1 = MI_Cs_1,
@@ -164,7 +165,7 @@ enum quantum_keycodes {
     MI_B_1,
 #endif
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 2
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 2
     MI_C_2,
     MI_Cs_2,
     MI_Db_2 = MI_Cs_2,
@@ -184,7 +185,7 @@ enum quantum_keycodes {
     MI_B_2,
 #endif
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 3
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 3
     MI_C_3,
     MI_Cs_3,
     MI_Db_3 = MI_Cs_3,
@@ -204,7 +205,7 @@ enum quantum_keycodes {
     MI_B_3,
 #endif
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 4
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 4
     MI_C_4,
     MI_Cs_4,
     MI_Db_4 = MI_Cs_4,
@@ -224,7 +225,7 @@ enum quantum_keycodes {
     MI_B_4,
 #endif
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 5
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 5
     MI_C_5,
     MI_Cs_5,
     MI_Db_5 = MI_Cs_5,
@@ -244,7 +245,7 @@ enum quantum_keycodes {
     MI_B_5,
 #endif
 
-#if MIDI_TONE_KEYCODE_OCTAVES > 5
+#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 5
     MIDI_TONE_MAX = MI_B_5,
 #elif MIDI_TONE_KEYCODE_OCTAVES > 4
     MIDI_TONE_MAX = MI_B_4,
@@ -339,7 +340,6 @@ enum quantum_keycodes {
     MI_MODSD, // decrease modulation speed
     MI_MODSU, // increase modulation speed
 #endif // MIDI_ADVANCED
-#endif // MIDI_ENABLE
 
     // Backlight functionality
     BL_0,
diff --git a/quantum/template/config.h b/quantum/template/config.h
index 54db4f242..7393097e1 100644
--- a/quantum/template/config.h
+++ b/quantum/template/config.h
@@ -163,6 +163,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * MIDI options
  */
 
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
 /* enable basic MIDI features:
    - MIDI notes can be sent when in Music mode is on
 */

From b911e1966f6e9077df01c01d77b4e2018b582eb0 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 25 Feb 2017 21:13:47 -0800
Subject: [PATCH 052/163] Fix redundant process_music.c in sources

---
 build_keyboard.mk | 38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/build_keyboard.mk b/build_keyboard.mk
index 07dfe85b4..82464d583 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -23,9 +23,9 @@ ifdef master
 	MASTER = $(master)
 endif
 
-ifeq ($(MASTER),right)	
+ifeq ($(MASTER),right)
 	OPT_DEFS += -DMASTER_IS_ON_RIGHT
-else 
+else
 	ifneq ($(MASTER),left)
 $(error MASTER does not have a valid value(left/right))
 	endif
@@ -38,7 +38,7 @@ KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
 
 ifneq ("$(wildcard $(KEYBOARD_C))","")
     include $(KEYBOARD_PATH)/rules.mk
-else 
+else
     $(error "$(KEYBOARD_C)" does not exist)
 endif
 
@@ -49,7 +49,7 @@ ifneq ($(SUBPROJECT),)
     ifneq ("$(wildcard $(SUBPROJECT_C))","")
         OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
         include $(SUBPROJECT_PATH)/rules.mk
-    else 
+    else
         $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
     endif
 endif
@@ -83,7 +83,7 @@ ifneq ($(SUBPROJECT),)
 	endif
 endif
 
-# Save the defines and includes here, so we don't include any keymap specific ones 
+# Save the defines and includes here, so we don't include any keymap specific ones
 PROJECT_DEFS := $(OPT_DEFS)
 PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
 PROJECT_CONFIG := $(CONFIG_H)
@@ -139,12 +139,27 @@ ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
     MIDI_ENABLE=yes
 endif
 
+MUSIC_ENABLE := 0
+
+ifeq ($(strip $(AUDIO_ENABLE)), yes)
+    OPT_DEFS += -DAUDIO_ENABLE
+    MUSIC_ENABLE := 1
+	SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
+	SRC += $(QUANTUM_DIR)/audio/audio.c
+	SRC += $(QUANTUM_DIR)/audio/voices.c
+	SRC += $(QUANTUM_DIR)/audio/luts.c
+endif
+
 ifeq ($(strip $(MIDI_ENABLE)), yes)
     OPT_DEFS += -DMIDI_ENABLE
-	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
+	MUSIC_ENABLE := 1
 	SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
 endif
 
+ifeq ($(MUSIC_ENABLE), 1)
+	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
+endif
+
 ifeq ($(strip $(COMBO_ENABLE)), yes)
     OPT_DEFS += -DCOMBO_ENABLE
 	SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
@@ -154,15 +169,6 @@ ifeq ($(strip $(VIRTSER_ENABLE)), yes)
     OPT_DEFS += -DVIRTSER_ENABLE
 endif
 
-ifeq ($(strip $(AUDIO_ENABLE)), yes)
-    OPT_DEFS += -DAUDIO_ENABLE
-	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
-	SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
-	SRC += $(QUANTUM_DIR)/audio/audio.c
-	SRC += $(QUANTUM_DIR)/audio/voices.c
-	SRC += $(QUANTUM_DIR)/audio/luts.c
-endif
-
 ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
     OPT_DEFS += -DFAUXCLICKY_ENABLE
 	SRC += $(QUANTUM_DIR)/fauxclicky.c
@@ -252,7 +258,7 @@ endif
 
 OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
 $(KEYMAP_OUTPUT)_SRC := $(SRC)
-$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" 
+$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
 $(KEYMAP_OUTPUT)_INC :=  $(VPATH) $(EXTRAINCDIRS)
 $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
 $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC)

From 976c856966841cd0be6e514c6365c73164f5b96d Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 25 Feb 2017 21:38:35 -0800
Subject: [PATCH 053/163] Update size estimates in the Makefile

MIDI_ENABLE = no

   text    data     bss     dec     hex filename
      0   17080       0   17080    42b8 satan_midi.hex

MIDI_ENABLE = yes
MIDI_BASIC undefined
MIDI_ADVANCED undefined

   text    data     bss     dec     hex filename
      0   19494       0   19494    4c26 satan_midi.hex

      +2414 bytes (vs. MIDI_ENABLE = no)

MIDI_ENABLE = yes
      0   20846       0   20846    516e satan_midi.hex

      +1352 bytes (vs. MIDI_ENABLE = yes, MIDI_BASIC off, MIDI_ADVANCED
off)

MIDI_ENABLE = yes
#define MIDI_BASIC
#define MIDI_ADVANCED

   text    data     bss     dec     hex filename
      0   21292       0   21292    532c satan_midi.hex

      +1798 bytes (vs. MIDI_ENABLE = yes, MIDI_BASIC off, MIDI_ADVANCED
off)

Conclusion:
    +2400 to 4200, depending on config
---
 keyboards/satan/keymaps/midi/Makefile | 2 +-
 quantum/template/rules.mk             | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/keyboards/satan/keymaps/midi/Makefile b/keyboards/satan/keymaps/midi/Makefile
index 4e2d9d2f7..89c34b394 100644
--- a/keyboards/satan/keymaps/midi/Makefile
+++ b/keyboards/satan/keymaps/midi/Makefile
@@ -9,7 +9,7 @@ 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 = yes       # Enable keyboard backlight functionality
-MIDI_ENABLE = yes            # MIDI support (+3800)
+MIDI_ENABLE = yes            # MIDI support (+2400 to 4200, depending on config)
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/quantum/template/rules.mk b/quantum/template/rules.mk
index bad3387bf..a1f9377d8 100644
--- a/quantum/template/rules.mk
+++ b/quantum/template/rules.mk
@@ -61,7 +61,7 @@ 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
+MIDI_ENABLE ?= no            # MIDI support (+2400 to 4200, depending on config)
 UNICODE_ENABLE ?= no         # Unicode
 BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE ?= no           # Audio output on port C6

From 871ac5058acb413a3393a54cb5b33f0b52c630cf Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sun, 26 Feb 2017 19:45:57 -0800
Subject: [PATCH 054/163] Minor changes to the keymap: Moved thumb-cluster ESC
 to Media and Keypad layers

---
 keyboards/kinesis/keymaps/xyverz/keymap.c | 30 +++++++++++------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index f3184c140..39b835b53 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -46,7 +46,7 @@ extern keymap_config_t keymap_config;
 	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   /  |   =  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
-	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                             | LCtl  | LAlt || RGUI | RCtl  |
 	                      ,------|-------|------||------+-------+-------.
 	                      |      |  Del  | Home || PgUp | Enter |       |
 	                      | BkSp |   /   |------||------|   /   | Space |
@@ -66,7 +66,7 @@ extern keymap_config_t keymap_config;
 	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
-	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                             | LCtl  | LAlt || RGUI | RCtl  |
 	                      ,------|-------|------||------+-------+-------.
 	                      |      |  Del  | Home || PgUp | Enter |       |
 	                      | BkSp |   /   |------||------|   /   | Space |
@@ -86,7 +86,7 @@ extern keymap_config_t keymap_config;
 	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
-	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                             | LCtl  | LAlt || RGUI | RCtl  |
 	                      ,------|-------|------||------+-------+-------.
 	                      |      |  Del  | Home || PgUp | Enter |       |
 	                      | BkSp |   /   |------||------|   /   | Space |
@@ -106,7 +106,7 @@ extern keymap_config_t keymap_config;
 	         |      |      |      |      |              |      |      |      |      |
 	         `---------------------------'              `---------------------------'
 	                              ,-------------.,-------------.
-	                              |      |      ||      |      |
+	                              | ESC  |      ||      | ESC  |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      |      |
@@ -126,7 +126,7 @@ extern keymap_config_t keymap_config;
 	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
 	         `---------------------------'              `----------------------------------'
 	                              ,-------------.,-------------.
-	                              |      |      ||      |      |
+	                              | ESC  |      ||      | ESC  |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      | KP 0 |
@@ -145,7 +145,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,
                     KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
            // Left Thumb
-                    CTL_T(KC_ESC), KC_LALT,
+                    KC_LCTL, KC_LALT,
                              KC_HOME,
            KC_BSPC, LT(_MD, KC_DEL),  KC_END,
 
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,
                     KC_UP,   KC_DOWN, KC_SLSH, KC_EQL,
            // Right Thumb
-           KC_RGUI, CTL_T(KC_ESC),
+           KC_RGUI, KC_RCTL,
            KC_PGUP,
            KC_PGDN, LT(_KP, KC_ENT),  KC_SPC
     ),
@@ -171,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
                     KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
            // Left Thumb
-                    CTL_T(KC_ESC), KC_LALT,
+                    KC_LCTL, KC_LALT,
                              KC_HOME,
            KC_BSPC, LT(_MD, KC_DEL),  KC_END,
 
@@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
                     KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
            // Right Thumb
-           KC_RGUI, CTL_T(KC_ESC),
+           KC_RGUI, KC_RCTL,
            KC_PGUP,
            KC_PGDN, LT(_KP, KC_ENT),  KC_SPC
     ),
@@ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
                     KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
            // Left Thumb
-                    CTL_T(KC_ESC), KC_LALT,
+                    KC_LCTL, KC_LALT,
                              KC_HOME,
            KC_BSPC, LT(_MD, KC_DEL),  KC_END,
 
@@ -209,7 +209,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
                     KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,
            // Right Thumb
-           KC_RGUI, CTL_T(KC_ESC),
+           KC_RGUI, KC_RCTL,
            KC_PGUP,
            KC_PGDN, LT(_KP, KC_ENT),  KC_SPC
     ),
@@ -223,7 +223,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______, _______, _______, _______,
                     _______, _______, _______, _______,
            // Left Thumb
-                    _______, _______,
+                    KC_ESC,  _______,
                              _______,
            _______, _______, _______,
 
@@ -235,7 +235,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______,
                     _______, _______, _______, _______,
            // Right Thumb
-           _______, _______,
+           _______, KC_ESC,
            _______,
            _______, _______, _______
     ),
@@ -249,7 +249,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______, _______, _______, _______,
                     _______, _______, _______, _______,
            // Left Thumb
-                    _______, _______,
+                    KC_ESC,  _______,
                              _______,
            _______, _______, _______,
 
@@ -261,7 +261,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, KC_P1,   KC_P2,   KC_P3,   KC_PENT, _______,
                     _______, _______, KC_PDOT, KC_PENT,
            // Right Thumb
-           _______, _______,
+           _______, KC_ESC,
            _______,
            _______, _______, KC_P0
     )

From d91e09f1169ebe7611f41f3a1a80151f18ee9247 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sun, 26 Feb 2017 19:49:10 -0800
Subject: [PATCH 055/163] Updates to the README.md

---
 keyboards/kinesis/keymaps/xyverz/readme.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/readme.md b/keyboards/kinesis/keymaps/xyverz/readme.md
index 11aedec54..cfd631a5b 100644
--- a/keyboards/kinesis/keymaps/xyverz/readme.md
+++ b/keyboards/kinesis/keymaps/xyverz/readme.md
@@ -34,7 +34,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   /  |   =  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
-	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                             | LCtl  | LAlt || RGUI | RCtl  |
 	                      ,------|-------|------||------+-------+-------.
 	                      |      |  Del  | Home || PgUp | Enter |       |
 	                      | BkSp |   /   |------||------|   /   | Space |
@@ -55,7 +55,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
-	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                             | LCtl  | LAlt || RGUI | RCtl  |
 	                      ,------|-------|------||------+-------+-------.
 	                      |      |  Del  | Home || PgUp | Enter |       |
 	                      | BkSp |   /   |------||------|   /   | Space |
@@ -76,7 +76,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
-	                             |Ctr/ESC| LAlt || RGUI |Ctr/ESC|
+	                             | LCtl  | LAlt || RGUI | RCtl  |
 	                      ,------|-------|------||------+-------+-------.
 	                      |      |  Del  | Home || PgUp | Enter |       |
 	                      | BkSp |   /   |------||------|   /   | Space |
@@ -97,7 +97,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |      |      |      |      |              |      |      |      |      |
 	         `---------------------------'              `---------------------------'
 	                              ,-------------.,-------------.
-	                              |      |      ||      |      |
+	                              | ESC  |      ||      | ESC  |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      |      |
@@ -120,7 +120,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
 	         `---------------------------'              `----------------------------------'
 	                              ,-------------.,-------------.
-	                              |      |      ||      |      |
+	                              | ESC  |      ||      | ESC  |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      | KP 0 |

From d11962aeb27c73b87f8154d7f2cee747c8858d09 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Thu, 2 Mar 2017 11:40:06 -0800
Subject: [PATCH 056/163] fix 'stop_all_notes' naming to be more consistent

---
 quantum/process_keycode/process_audio.c   | 2 +-
 quantum/process_keycode/process_audio.h   | 2 +-
 quantum/process_keycode/process_midi.c    | 2 +-
 quantum/process_keycode/process_midi.h    | 2 +-
 quantum/process_keycode/process_music.c   | 4 ++--
 quantum/template/keymaps/default/Makefile | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c
index 71c0297ee..0b6380ed3 100644
--- a/quantum/process_keycode/process_audio.c
+++ b/quantum/process_keycode/process_audio.c
@@ -54,7 +54,7 @@ void process_audio_noteoff(uint8_t note) {
     stop_note(compute_freq_for_midi_note(note));
 }
 
-void process_audio_stop_all_notes(void) {
+void process_audio_all_notes_off(void) {
     stop_all_notes();
 }
 
diff --git a/quantum/process_keycode/process_audio.h b/quantum/process_keycode/process_audio.h
index 59a17725a..7ac15b733 100644
--- a/quantum/process_keycode/process_audio.h
+++ b/quantum/process_keycode/process_audio.h
@@ -4,7 +4,7 @@
 bool process_audio(uint16_t keycode, keyrecord_t *record);
 void process_audio_noteon(uint8_t note);
 void process_audio_noteoff(uint8_t note);
-void process_audio_stop_all_notes(void);
+void process_audio_all_notes_off(void);
 
 void audio_on_user(void);
 
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 214bba902..700c6ce8e 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -15,7 +15,7 @@ void process_midi_basic_noteoff(uint8_t note)
     midi_send_noteoff(&midi_device, 0, note, 0);
 }
 
-void process_midi_basic_stop_all_notes(void)
+void process_midi_all_notes_off(void)
 {
     midi_send_cc(&midi_device, 0, 0x7B, 0);
 }
diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h
index 0f559ec23..58b7650c6 100644
--- a/quantum/process_keycode/process_midi.h
+++ b/quantum/process_keycode/process_midi.h
@@ -8,7 +8,7 @@
 #ifdef MIDI_BASIC
 void process_midi_basic_noteon(uint8_t note);
 void process_midi_basic_noteoff(uint8_t note);
-void process_midi_basic_stop_all_notes(void);
+void process_midi_all_notes_off(void);
 #endif
 
 #ifdef MIDI_ADVANCED
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c
index 4b86b91f0..f89a04ee3 100644
--- a/quantum/process_keycode/process_music.c
+++ b/quantum/process_keycode/process_music.c
@@ -44,10 +44,10 @@ static void music_noteoff(uint8_t note) {
 
 void music_all_notes_off(void) {
     #ifdef AUDIO_ENABLE
-    process_audio_stop_all_notes();
+    process_audio_all_notes_off();
     #endif
     #if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
-    process_midi_basic_stop_all_notes();
+    process_midi_all_notes_off();
     #endif
 }
 
diff --git a/quantum/template/keymaps/default/Makefile b/quantum/template/keymaps/default/Makefile
index 24442db37..29f11bbc7 100644
--- a/quantum/template/keymaps/default/Makefile
+++ b/quantum/template/keymaps/default/Makefile
@@ -9,7 +9,7 @@ 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 support (+3800)
+MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID

From 0734f569409974624b40735fcd498dac9adba2d2 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Thu, 2 Mar 2017 12:28:12 -0800
Subject: [PATCH 057/163] add debug messages to audio

---
 quantum/audio/audio.c | 294 +++++++++++++++++++++---------------------
 1 file changed, 150 insertions(+), 144 deletions(-)

diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index 2a315fd16..e1e81fd2b 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -89,15 +89,15 @@ void audio_init()
     }
     audio_config.raw = eeconfig_read_audio();
 
-	// Set port PC6 (OC3A and /OC4A) as output
+    // Set port PC6 (OC3A and /OC4A) as output
     DDRC |= _BV(PORTC6);
 
     DISABLE_AUDIO_COUNTER_3_ISR;
 
-	// TCCR3A / TCCR3B: Timer/Counter #3 Control Registers
-	// Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6
-	// Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A)
-	// Clock Select (CS3n) = 0b010 = Clock / 8
+    // TCCR3A / TCCR3B: Timer/Counter #3 Control Registers
+    // Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6
+    // Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A)
+    // Clock Select (CS3n) = 0b010 = Clock / 8
     TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
     TCCR3B = (1 << WGM33)  | (1 << WGM32)  | (0 << CS32)  | (1 << CS31) | (0 << CS30);
 
@@ -106,6 +106,8 @@ void audio_init()
 
 void stop_all_notes()
 {
+    dprintf("audio stop all notes");
+
     if (!audio_initialized) {
         audio_init();
     }
@@ -128,6 +130,8 @@ void stop_all_notes()
 
 void stop_note(float freq)
 {
+    dprintf("audio stop note freq=%d", (int)freq);
+
     if (playing_note) {
         if (!audio_initialized) {
             audio_init();
@@ -183,159 +187,161 @@ float vibrato(float average_freq) {
 
 ISR(TIMER3_COMPA_vect)
 {
-	float freq;
+    float freq;
 
-	if (playing_note) {
-		if (voices > 0) {
-			if (polyphony_rate > 0) {
-				if (voices > 1) {
-					voice_place %= voices;
-					if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) {
-						voice_place = (voice_place + 1) % voices;
-						place = 0.0;
-					}
-				}
+    if (playing_note) {
+        if (voices > 0) {
+            if (polyphony_rate > 0) {
+                if (voices > 1) {
+                    voice_place %= voices;
+                    if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) {
+                        voice_place = (voice_place + 1) % voices;
+                        place = 0.0;
+                    }
+                }
 
-				#ifdef VIBRATO_ENABLE
-					if (vibrato_strength > 0) {
-						freq = vibrato(frequencies[voice_place]);
-					} else {
-						freq = frequencies[voice_place];
-					}
-				#else
-					freq = frequencies[voice_place];
-				#endif
-			} else {
-				if (glissando) {
-					if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) {
-						frequency = frequency * pow(2, 440/frequency/12/2);
-					} else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) {
-						frequency = frequency * pow(2, -440/frequency/12/2);
-					} else {
-						frequency = frequencies[voices - 1];
-					}
-				} else {
-					frequency = frequencies[voices - 1];
-				}				
+                #ifdef VIBRATO_ENABLE
+                    if (vibrato_strength > 0) {
+                        freq = vibrato(frequencies[voice_place]);
+                    } else {
+                        freq = frequencies[voice_place];
+                    }
+                #else
+                    freq = frequencies[voice_place];
+                #endif
+            } else {
+                if (glissando) {
+                    if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) {
+                        frequency = frequency * pow(2, 440/frequency/12/2);
+                    } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) {
+                        frequency = frequency * pow(2, -440/frequency/12/2);
+                    } else {
+                        frequency = frequencies[voices - 1];
+                    }
+                } else {
+                    frequency = frequencies[voices - 1];
+                }
 
-				#ifdef VIBRATO_ENABLE
-					if (vibrato_strength > 0) {
-						freq = vibrato(frequency);
-					} else {
-						freq = frequency;
-					}
-				#else
-					freq = frequency;
-				#endif
-			}
+                #ifdef VIBRATO_ENABLE
+                    if (vibrato_strength > 0) {
+                        freq = vibrato(frequency);
+                    } else {
+                        freq = frequency;
+                    }
+                #else
+                    freq = frequency;
+                #endif
+            }
 
-			if (envelope_index < 65535) {
-				envelope_index++;
-			}
+            if (envelope_index < 65535) {
+                envelope_index++;
+            }
 
-			freq = voice_envelope(freq);
+            freq = voice_envelope(freq);
 
-			if (freq < 30.517578125) {
-				freq = 30.52;
-			}
+            if (freq < 30.517578125) {
+                freq = 30.52;
+            }
 
-			TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER));
-			TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre);
-		}
-	}
+            TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER));
+            TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre);
+        }
+    }
 
-	if (playing_notes) {
-		if (note_frequency > 0) {
-			#ifdef VIBRATO_ENABLE
-				if (vibrato_strength > 0) {
-					freq = vibrato(note_frequency);
-				} else {
-					freq = note_frequency;
-				}
-			#else
-					freq = note_frequency;
-			#endif
+    if (playing_notes) {
+        if (note_frequency > 0) {
+            #ifdef VIBRATO_ENABLE
+                if (vibrato_strength > 0) {
+                    freq = vibrato(note_frequency);
+                } else {
+                    freq = note_frequency;
+                }
+            #else
+                    freq = note_frequency;
+            #endif
 
-			if (envelope_index < 65535) {
-				envelope_index++;
-			}
-			freq = voice_envelope(freq);
+            if (envelope_index < 65535) {
+                envelope_index++;
+            }
+            freq = voice_envelope(freq);
 
-			TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER));
-			TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre);
-		} else {
-			TIMER_3_PERIOD = 0;
-			TIMER_3_DUTY_CYCLE = 0;
-		}
+            TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER));
+            TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre);
+        } else {
+            TIMER_3_PERIOD = 0;
+            TIMER_3_DUTY_CYCLE = 0;
+        }
 
-		note_position++;
-		bool end_of_note = false;
-		if (TIMER_3_PERIOD > 0) {
-			end_of_note = (note_position >= (note_length / TIMER_3_PERIOD * 0xFFFF));
-		} else {
-			end_of_note = (note_position >= (note_length * 0x7FF));
-		}
+        note_position++;
+        bool end_of_note = false;
+        if (TIMER_3_PERIOD > 0) {
+            end_of_note = (note_position >= (note_length / TIMER_3_PERIOD * 0xFFFF));
+        } else {
+            end_of_note = (note_position >= (note_length * 0x7FF));
+        }
 
-		if (end_of_note) {
-			current_note++;
-			if (current_note >= notes_count) {
-				if (notes_repeat) {
-					current_note = 0;
-				} else {
-					DISABLE_AUDIO_COUNTER_3_ISR;
-					DISABLE_AUDIO_COUNTER_3_OUTPUT;
-					playing_notes = false;
-					return;
-				}
-			}
-			if (!note_resting && (notes_rest > 0)) {
-				note_resting = true;
-				note_frequency = 0;
-				note_length = notes_rest;
-				current_note--;
-			} else {
-				note_resting = false;
-				envelope_index = 0;
-				note_frequency = (*notes_pointer)[current_note][0];
-				note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100);
-			}
+        if (end_of_note) {
+            current_note++;
+            if (current_note >= notes_count) {
+                if (notes_repeat) {
+                    current_note = 0;
+                } else {
+                    DISABLE_AUDIO_COUNTER_3_ISR;
+                    DISABLE_AUDIO_COUNTER_3_OUTPUT;
+                    playing_notes = false;
+                    return;
+                }
+            }
+            if (!note_resting && (notes_rest > 0)) {
+                note_resting = true;
+                note_frequency = 0;
+                note_length = notes_rest;
+                current_note--;
+            } else {
+                note_resting = false;
+                envelope_index = 0;
+                note_frequency = (*notes_pointer)[current_note][0];
+                note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100);
+            }
 
-			note_position = 0;
-		}
-	}
+            note_position = 0;
+        }
+    }
 
-	if (!audio_config.enable) {
-		playing_notes = false;
-		playing_note = false;
-	}
+    if (!audio_config.enable) {
+        playing_notes = false;
+        playing_note = false;
+    }
 }
 
 void play_note(float freq, int vol) {
 
+    dprintf("audio play note freq=%d vol=%d", (int)freq, vol);
+
     if (!audio_initialized) {
         audio_init();
     }
 
-	if (audio_config.enable && voices < 8) {
-	    DISABLE_AUDIO_COUNTER_3_ISR;
+    if (audio_config.enable && voices < 8) {
+        DISABLE_AUDIO_COUNTER_3_ISR;
 
-	    // Cancel notes if notes are playing
-	    if (playing_notes)
-	        stop_all_notes();
+        // Cancel notes if notes are playing
+        if (playing_notes)
+            stop_all_notes();
 
-	    playing_note = true;
+        playing_note = true;
 
-	    envelope_index = 0;
+        envelope_index = 0;
 
-	    if (freq > 0) {
-	        frequencies[voices] = freq;
-	        volumes[voices] = vol;
-	        voices++;
-	    }
+        if (freq > 0) {
+            frequencies[voices] = freq;
+            volumes[voices] = vol;
+            voices++;
+        }
 
         ENABLE_AUDIO_COUNTER_3_ISR;
         ENABLE_AUDIO_COUNTER_3_OUTPUT;
-	}
+    }
 
 }
 
@@ -346,37 +352,37 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest)
         audio_init();
     }
 
-	if (audio_config.enable) {
+    if (audio_config.enable) {
 
-	    DISABLE_AUDIO_COUNTER_3_ISR;
+        DISABLE_AUDIO_COUNTER_3_ISR;
 
-		// Cancel note if a note is playing
-	    if (playing_note)
-	        stop_all_notes();
+        // Cancel note if a note is playing
+        if (playing_note)
+            stop_all_notes();
 
-	    playing_notes = true;
+        playing_notes = true;
 
-	    notes_pointer = np;
-	    notes_count = n_count;
-	    notes_repeat = n_repeat;
-	    notes_rest = n_rest;
+        notes_pointer = np;
+        notes_count = n_count;
+        notes_repeat = n_repeat;
+        notes_rest = n_rest;
 
-	    place = 0;
-	    current_note = 0;
+        place = 0;
+        current_note = 0;
 
         note_frequency = (*notes_pointer)[current_note][0];
         note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100);
-	    note_position = 0;
+        note_position = 0;
 
 
         ENABLE_AUDIO_COUNTER_3_ISR;
         ENABLE_AUDIO_COUNTER_3_OUTPUT;
-	}
+    }
 
 }
 
 bool is_playing_notes(void) {
-	return playing_notes;
+    return playing_notes;
 }
 
 bool is_audio_on(void) {

From 515b4dd1f7c941f9e96790f7433015fc9bd385bf Mon Sep 17 00:00:00 2001
From: "Trevor Joynson (trevorj)" <github@skywww.net>
Date: Thu, 2 Mar 2017 18:21:45 -0800
Subject: [PATCH 058/163] Allow to specify serial to dfu-util flash

---
 tmk_core/chibios.mk | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
index 062a712bd..eb0c40138 100644
--- a/tmk_core/chibios.mk
+++ b/tmk_core/chibios.mk
@@ -143,8 +143,13 @@ MCUFLAGS = -mcpu=$(MCU)
 
 DEBUG = gdb
 
+DFU_ARGS =
+ifneq ("$(SERIAL)","")
+	DFU_ARGS += -S $(SERIAL)
+endif
+
 # List any extra directories to look for libraries here.
 EXTRALIBDIRS = $(RULESPATH)/ld
 
 dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter
-	dfu-util -D $(BUILD_DIR)/$(TARGET).bin
\ No newline at end of file
+	dfu-util $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin

From 68808b22c09c020e33287480fc9c1ed9f42af059 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Fri, 3 Mar 2017 19:27:24 -0800
Subject: [PATCH 059/163] Final tweaks to my Kinesis keymap and readme

---
 keyboards/kinesis/keymaps/xyverz/keymap.c  | 21 ++++++---------------
 keyboards/kinesis/keymaps/xyverz/readme.md | 14 +++++++-------
 2 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index 39b835b53..62f47773c 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -19,10 +19,6 @@ extern keymap_config_t keymap_config;
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
 
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
 /*
 
         Function Keys on All Layers (Keypad toggles):
@@ -106,7 +102,7 @@ extern keymap_config_t keymap_config;
 	         |      |      |      |      |              |      |      |      |      |
 	         `---------------------------'              `---------------------------'
 	                              ,-------------.,-------------.
-	                              | ESC  |      ||      | ESC  |
+	                              |      |      ||      |      |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      |      |
@@ -126,7 +122,7 @@ extern keymap_config_t keymap_config;
 	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
 	         `---------------------------'              `----------------------------------'
 	                              ,-------------.,-------------.
-	                              | ESC  |      ||      | ESC  |
+	                              |      |      ||      |      |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      | KP 0 |
@@ -223,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______, _______, _______, _______,
                     _______, _______, _______, _______,
            // Left Thumb
-                    KC_ESC,  _______,
+                    _______, _______,
                              _______,
            _______, _______, _______,
 
@@ -235,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______,
                     _______, _______, _______, _______,
            // Right Thumb
-           _______, KC_ESC,
+           _______, _______,
            _______,
            _______, _______, _______
     ),
@@ -249,7 +245,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, _______, _______, _______, _______, _______,
                     _______, _______, _______, _______,
            // Left Thumb
-                    KC_ESC,  _______,
+                    _______, _______,
                              _______,
            _______, _______, _______,
 
@@ -261,7 +257,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            _______, KC_P1,   KC_P2,   KC_P3,   KC_PENT, _______,
                     _______, _______, KC_PDOT, KC_PENT,
            // Right Thumb
-           _______, KC_ESC,
+           _______, _______,
            _______,
            _______, _______, KC_P0
     )
@@ -304,8 +300,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 void matrix_init_user(void) {
 
 };
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-};
diff --git a/keyboards/kinesis/keymaps/xyverz/readme.md b/keyboards/kinesis/keymaps/xyverz/readme.md
index cfd631a5b..a10d7c2ba 100644
--- a/keyboards/kinesis/keymaps/xyverz/readme.md
+++ b/keyboards/kinesis/keymaps/xyverz/readme.md
@@ -14,10 +14,10 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 
 ### Function Keys on All Layers (keypad toggles):
 	,-----------------------------------------------------------------.
-	|  ESC |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   F7   |  F8   |
+	|  Esc |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   F7   |  F8   |
  	`-----------------------------------------------------------------'
 	,-----------------------------------------------------------------.
-	|  F9  |  F10 |  F11 |  F12 | PScr | SLck | Paus | Keypad | RESET |
+	|  F9  |  F10 |  F11 |  F12 | PScr | SLck | Paus | Keypad | Reset |
 	`-----------------------------------------------------------------'
 
 ### Layer 0: Dvorak layer
@@ -31,7 +31,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
 	| LShift |   Z  |   X  |   C  |   V  |   X  ||   B  |   M  |   W  |   V  |   Z  | RShift |
 	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
-	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   /  |   =  |
+	         |   `  |  Ins | Left | Rght |              |  Up  |  Dn  |   /  |   =  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
 	                             | LCtl  | LAlt || RGUI | RCtl  |
@@ -52,7 +52,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
 	| LShift |   Z  |   X  |   C  |   V  |   B  ||   N  |   M  |   ,  |   .  |   /  | RShift |
 	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
-	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
+	         |   `  |  Ins | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
 	                             | LCtl  | LAlt || RGUI | RCtl  |
@@ -73,7 +73,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	|--------+------+------+------+------+------||------+------+------+------+------+--------|
 	| LShift |   Z  |   X  |   C  |   V  |   B  ||   K  |   M  |   ,  |   .  |   /  | RShift |
 	`--------+------+------+------+------+------'`------+------+------+------+------+--------'
-	         |   `  |  INS | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
+	         |   `  |  Ins | Left | Rght |              |  Up  |  Dn  |   [  |   ]  |
 	         `---------------------------'              `---------------------------'
 	                             ,--------------.,--------------.
 	                             | LCtl  | LAlt || RGUI | RCtl  |
@@ -97,7 +97,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |      |      |      |      |              |      |      |      |      |
 	         `---------------------------'              `---------------------------'
 	                              ,-------------.,-------------.
-	                              | ESC  |      ||      | ESC  |
+	                              |      |      ||      |      |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      |      |
@@ -120,7 +120,7 @@ I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar t
 	         |      |      |      |      |              |      |      | KP . |KP Ent|      |
 	         `---------------------------'              `----------------------------------'
 	                              ,-------------.,-------------.
-	                              | ESC  |      ||      | ESC  |
+	                              |      |      ||      |      |
 	                       ,------|------|------||------+------+------.
 	                       |      |      |      ||      |      |      |
 	                       |      |      |------||------|      | KP 0 |

From fbbf618a46efad60da0724211145f9e9401b96b4 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sun, 5 Mar 2017 03:48:10 -0800
Subject: [PATCH 060/163] Removed preceeding underscore from MASTER_RIGHT in
 config.h

---
 keyboards/lets_split/keymaps/xyverz/config.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/lets_split/keymaps/xyverz/config.h b/keyboards/lets_split/keymaps/xyverz/config.h
index 87808a97a..1b5be030e 100644
--- a/keyboards/lets_split/keymaps/xyverz/config.h
+++ b/keyboards/lets_split/keymaps/xyverz/config.h
@@ -19,7 +19,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define USE_SERIAL
 
 #define MASTER_LEFT
-// #define _MASTER_RIGHT
+// #define MASTER_RIGHT
 // #define EE_HANDS
 
 #ifdef SUBPROJECT_rev1

From 1968ec4c24137eb413a80ae5031e09c09bad4138 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 7 Mar 2017 19:40:18 +0100
Subject: [PATCH 061/163] changed definitions on keymap.c in admiral strokers

Made a few changes to my own keymaps. (organisation)
---
 .../satan/keymaps/admiralStrokers/keymap.c    | 213 +++++++++---------
 1 file changed, 109 insertions(+), 104 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 487deb086..97a0f225d 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -1,117 +1,117 @@
 #include "satan.h"
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // general keydefs
-		#define norm 0		// Default layer
-		#define elev 1		// Layer directional keys
-		#define supr 2		// F-keys and mediakeys
-		#define spac 3
-		#define FNO1 4		//
-		#define FNO2 5		//
-		#define FNO3 6		//
-		#define MAC0 M(0)	//
-		#define MAC1 M(1)	//
-		#define MAC2 M(2)	//
-		#define MAC3 M(3)	//
-		#define MAC4 M(4)	//
-		#define MAC5 M(5)	//
-		#define MAC6 M(6)	//
-		#define MAC7 M(7)	//
-		#define MAC8 M(8)	//
-		#define MAC9 M(9)	//
-		#define GRAV KC_GRV //
-		#define MEDI F(FNO1)//
+#define norm 0		// Default layer
+#define elev 1		// Layer directional keys
+#define supr 2		// F-keys and mediakeys
+#define spac 3
+#define FNO1 4		//
+#define FNO2 5		//
+#define FNO3 6				//
+#define MAC0 M(0)	//
+#define MAC1 M(1)	//
+#define MAC2 M(2)	//
+#define MAC3 M(3)	//
+#define MAC4 M(4)	//
+#define MAC5 M(5)	//
+#define MAC6 M(6)	//
+#define MAC7 M(7)	//
+#define MAC8 M(8)	//
+#define MAC9 M(9)	//
+#define GRAV KC_GRV //
+#define MEDI F(FNO1)//
 
 // General shortenings
-		#define ESCA KC_ESC
-		#define MINS KC_MINS
-		#define EQUL KC_EQL
-		#define BSPC KC_BSPC
-		#define DELE KC_DEL
-		#define LBRC KC_LBRC
-		#define RBRC KC_RBRC
-		#define ALTR KC_RALT
-		#define SCLN KC_SCLN
-		#define QUOT KC_QUOT
-		#define NUHS KC_NUHS
-		#define ENTE KC_ENT
-		#define NUBS KC_NUBS	// Less/ greater sign
-		#define COMM KC_COMM	// Comma
-		#define FSTO KC_DOT		// Full stop
-		#define SLSH KC_SLSH
-		#define ALTL KC_LALT
-		#define GUIL KC_LGUI
-		#define GUIR KC_RGUI
-		#define MENO KC_MENU
+#define ESCA KC_ESC
+#define MINS KC_MINS
+#define EQUL KC_EQL
+#define BSPC KC_BSPC
+#define DELE KC_DEL
+#define LBRC KC_LBRC
+#define RBRC KC_RBRC
+#define ALTR KC_RALT
+#define SCLN KC_SCLN
+#define QUOT KC_QUOT
+#define NUHS KC_NUHS
+#define ENTE KC_ENT
+#define NUBS KC_NUBS	// Less/ greater sign
+#define COMM KC_COMM	// Comma
+#define FSTO KC_DOT		// Full stop
+#define SLSH KC_SLSH
+#define ALTL KC_LALT
+#define GUIL KC_LGUI
+#define GUIR KC_RGUI
+#define MENO KC_MENU
 // The F-row/layer:
-		#define FK01 KC_F1
-		#define FK02 KC_F2
-		#define FK03 KC_F3
-		#define FK04 KC_F4
-		#define FK05 KC_F5
-		#define FK06 KC_F6
-		#define FK07 KC_F7
-		#define FK08 KC_F8
-		#define FK09 KC_F9
-		#define FK10 KC_F10
-		#define FK11 KC_F11
-		#define FK12 KC_F12
-		#define FK13 KC_F13
-		#define FK14 KC_F14
+#define FK01 KC_F1
+#define FK02 KC_F2
+#define FK03 KC_F3
+#define FK04 KC_F4
+#define FK05 KC_F5
+#define FK06 KC_F6
+#define FK07 KC_F7
+#define FK08 KC_F8
+#define FK09 KC_F9
+#define FK10 KC_F10
+#define FK11 KC_F11
+#define FK12 KC_F12
+#define FK13 KC_F13
+#define FK14 KC_F14
 // Special Actions and Media Keys
-		#define INSE KC_INS  	// Insert here
-		#define HOME KC_HOME 	// Go to beginning of line
-		#define ENDI  KC_END 	// go to end of line
-		#define PSCR  KC_PSCR 	// Print Screen
-		#define SLCK  KC_SLCK 	// go to end of line
-		#define PGDN  KC_PGDN 	// go to end of line
-		#define PGUP  KC_PGUP 	// go to end of line
-		#define PLPS KC_MPLY 	// Play/Pause
-		#define PAUS KC_PAUS 	// Pause button
-		#define MUTE KC_MUTE 	// Mute sound
-		#define VOLU KC_VOLU 	// Volume increase
-		#define VOLD KC_VOLD 	// Volume decrease
-		#define MNXT KC_MNXT 	// next track
-		#define MPRV KC_MPRV 	// prev track
-		#define MSTP KC_MSTP 	// stop playing
-		#define MSEL KC_MSEL 	// Select media (Start playing it)
-		#define MAIL KC_MAIL 	// Open default mail app
-		#define CALC KC_CALC 	// Open default calculator app
-		#define MYCM KC_MYCM 	// Open default file manager
-		//#define LILO KC_XXXXXX	// Reserved for later
-		//#define LIHI KC_XXXXXX	// Reserved for later
+#define INSE KC_INS  	// Insert here
+#define HOME KC_HOME 	// Go to beginning of line
+#define ENDI  KC_END 	// go to end of line
+#define PSCR  KC_PSCR 	// Print Screen
+#define SLCK  KC_SLCK 	// go to end of line
+#define PGDN  KC_PGDN 	// go to end of line
+#define PGUP  KC_PGUP 	// go to end of line
+#define PLPS KC_MPLY 	// Play/Pause
+#define PAUS KC_PAUS 	// Pause button
+#define MUTE KC_MUTE 	// Mute sound
+#define VOLU KC_VOLU 	// Volume increase
+#define VOLD KC_VOLD 	// Volume decrease
+#define MNXT KC_MNXT 	// next track
+#define MPRV KC_MPRV 	// prev track
+#define MSTP KC_MSTP 	// stop playing
+#define MSEL KC_MSEL 	// Select media (Start playing it)
+#define MAIL KC_MAIL 	// Open default mail app
+#define CALC KC_CALC 	// Open default calculator app
+#define MYCM KC_MYCM 	// Open default file manager
+//#define LILO KC_XXXXXX	// Reserved for later
+//#define LIHI KC_XXXXXX	// Reserved for later
 
 
 // dual-role shortcuts
-		#define DUTB LT(elev, KC_TAB) 	// `tabs` layer on hold and tab on tap
-		#define DUSP LT(spac, KC_SPACE)	// `spce` layer on hold and space on tap
-		#define LOCK LGUI(KC_L)			// lock computer (win)
+#define DUTB LT(elev, KC_TAB) 	// `tabs` layer on hold and tab on tap
+#define DUSP LT(spac, KC_SPACE)	// `spce` layer on hold and space on tap
+#define LOCK LGUI(KC_L)			// lock computer (win)
 
 // Space Admiral Strokers
-		#define SADL MAC0 				// Hold for lshift and { on tap
-		#define SADR MAC1				// Hold for rshift and } on tap
-		#define CADL MAC2				// Hold for lctrl and [ on tap
-		#define CADR MAC3				// Hold for rctrl and ] on tap
+#define SADL MAC0 				// Hold for lshift and { on tap
+#define SADR MAC1				// Hold for rshift and } on tap
+#define CADL MAC2				// Hold for lctrl and [ on tap
+#define CADR MAC3				// Hold for rctrl and ] on tap
 
 // arrow cluster duality bottom right corner
-		#define ARLF ALT_T(KC_LEFT) // Left arrow
-		#define ARRT CTL_T(KC_RIGHT)// Right arrow
-		#define ARUP SFT_T(KC_UP)	// Up arrow
-		#define ARDN GUI_T(KC_DOWN) // Down arrow
+#define ARLF ALT_T(KC_LEFT) // Left arrow
+#define ARRT CTL_T(KC_RIGHT)// Right arrow
+#define ARUP SFT_T(KC_UP)	// Up arrow
+#define ARDN GUI_T(KC_DOWN) // Down arrow
 
 // brackets
-		#define NOCL RALT(KC_7)    // [
-		#define NOCR RALT(KC_0)    // ]
-		#define NOPL LSFT(KC_8)    // (
-		#define NOPR LSFT(KC_9)    // )
-		#define NOAL KC_NUBS       // <
-		#define NOAR LSFT(KC_NUBS) // >
-		#define NOBL RALT(KC_8)    // [
-		#define NOBR RALT(KC_9)    // ]
+#define NOCL RALT(KC_7)    // [
+#define NOCR RALT(KC_0)    // ]
+#define NOPL LSFT(KC_8)    // (
+#define NOPR LSFT(KC_9)    // )
+#define NOAL KC_NUBS       // <
+#define NOAR LSFT(KC_NUBS) // >
+#define NOBL RALT(KC_8)    // [
+#define NOBR RALT(KC_9)    // ]
 
 // increase readability
-		#define XXXX	KC_TRNS
-		#define DEAD 	KC_NO
-		#define SCAN	KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB
+#define XXXX	KC_TRNS
+#define DEAD 	KC_NO
+#define SCAN	KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB
 
 [ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped)
         GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\
@@ -143,40 +143,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
-		static uint16_t key_timer;
+	static uint16_t key_timer;
+	bool checkTime(){
+		return (timer_elapsed(key_timer) < 150) ? true : false;
+	}
+
+
     switch(id) {
         case 0: //MAC0 - Hold for lshift and { on tap
 					if (record->event.pressed) {
 						key_timer = timer_read();
 						return MACRO(D(LSFT), END );
 					} else {
-						return (timer_elapsed(key_timer) < 150) ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END);
+						return checktime() ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END);
 					}; break;
 			  case 1:	//MAC1 - Hold for rshift and } on tap
 					if (record->event.pressed) {
 						key_timer = timer_read();
 						return MACRO(D(RSFT), END );
 					} else {
-						return (timer_elapsed(key_timer) < 150) ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END);
+						return checktime()  ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END);
 					}; break;
         case 2: //MAC2 - Hold for lctrl and [ on tap
 						if (record->event.pressed) {
 							key_timer = timer_read();
 							return MACRO(D(LCTL), END );
-						} else {return (timer_elapsed(key_timer) < 150) ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END);
+						} else {return checktime() ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END);
 						}; break;
        	case 3: //MAC3 - Hold for rctrl and ] on tap
 						if (record->event.pressed) {
 							key_timer = timer_read();
 							return MACRO(D(RCTL), END );
 						} else {
-							return (timer_elapsed(key_timer) < 150) ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END);
+							return checktime() ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END);
 						}; break;
-      	case 4: //MAC4
+      	case 4: //MAC4 reserved for later.
 						if (record->event.pressed) { } else { }; break;
-       	case 5: //MAC5
+       	case 5: //MAC5 reserved for later.
 						if (record->event.pressed) { } else { }; break;
-       	case 6: //MAC6
+       	case 6: //MAC6 reserved for later.
 						if (record->event.pressed) { } else { }; break;
     } return MACRO_NONE;
 };

From 5ae0cfeef5134b8ba9d1f2bff0c105d4e18b064c Mon Sep 17 00:00:00 2001
From: Stephen Tudor <smt@smt.io>
Date: Thu, 9 Mar 2017 13:58:33 -0500
Subject: [PATCH 062/163] Add smt keymap for Satan 'GH60'

---
 keyboards/satan/keymaps/smt/Makefile  |  21 +++
 keyboards/satan/keymaps/smt/keymap.c  | 204 ++++++++++++++++++++++++++
 keyboards/satan/keymaps/smt/readme.md |   1 +
 3 files changed, 226 insertions(+)
 create mode 100644 keyboards/satan/keymaps/smt/Makefile
 create mode 100644 keyboards/satan/keymaps/smt/keymap.c
 create mode 100644 keyboards/satan/keymaps/smt/readme.md

diff --git a/keyboards/satan/keymaps/smt/Makefile b/keyboards/satan/keymaps/smt/Makefile
new file mode 100644
index 000000000..2a7ff2779
--- /dev/null
+++ b/keyboards/satan/keymaps/smt/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 = yes       # 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
diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
new file mode 100644
index 000000000..1dfa9495b
--- /dev/null
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -0,0 +1,204 @@
+#include "satan.h"
+
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// 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
+
+enum planck_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK
+};
+
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Custom macros
+#define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
+#define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
+#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
+#define ALT_GRV     ALT_T(KC_GRV)               // Tap for Backtick, hold for Alt
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap _QWERTY: (Base Layer) Default Layer
+   * ,-----------------------------------------------------------.
+   * |Esc~| 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+   * |-----------------------------------------------------------|
+   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |
+   * |-----------------------------------------------------------|
+   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+   * |-----------------------------------------------------------|
+   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
+   * |-----------------------------------------------------------|
+   * |Ctrl|Gui |Alt |      Space/Fn         |Alt |Gui |Fn  |Ctrl |
+   * `-----------------------------------------------------------'
+   */
+[_QWERTY] = KEYMAP_ANSI(
+  F(0),    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, \
+  HPR_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, \
+  CTL_ESC, 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,         SFT_ENT, \
+  KC_LCTL, KC_LGUI,KC_LALT,                LT(_RAISE, KC_SPC),                     KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+
+  /* Keymap _COLEMAK: (Base Layer) Default Layer
+   * ,-----------------------------------------------------------.
+   * |Esc~| 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+   * |-----------------------------------------------------------|
+   * |Tab  |  Q|  W|  F|  P|  G|  J|  L|  U|  Y|  ;|  [|  ]|  \  |
+   * |-----------------------------------------------------------|
+   * |CAPS   |  A|  R|  S|  T|  D|  H|  N|  E|  I|  O|  '|Return |
+   * |-----------------------------------------------------------|
+   * |Shift   |  Z|  X|  C|  V|  B|  K|  M|  ,|  .|  /|Shift     |
+   * |-----------------------------------------------------------|
+   * |Ctrl|Gui |Alt |      Space/Fn         |Alt |Gui |Fn  |Ctrl |
+   * `-----------------------------------------------------------'
+   */
+[_COLEMAK] = KEYMAP_ANSI(
+  F(0),    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, \
+  HPR_TAB, KC_Q,   KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_LBRC, KC_RBRC,KC_BSLS, \
+  CTL_ESC, KC_A,   KC_R,   KC_S,   KC_T,   KC_D,   KC_H,   KC_N,   KC_E,   KC_I,   KC_O   ,KC_QUOT,         KC_ENT,  \
+  KC_LSFT,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
+  KC_LCTL, KC_LGUI,KC_LALT,                LT(_RAISE, KC_SPC),                     KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+
+  /* Keymap _DVORAK: (Base Layer) Default Layer
+   * ,-----------------------------------------------------------.
+   * |Esc~| 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  [|  ]|Backsp |
+   * |-----------------------------------------------------------|
+   * |HypTb|  '|  ,|  .|  P|  Y|  F|  G|  C|  R|  L|  /|  =|  \  |
+   * |-----------------------------------------------------------|
+   * |CtrlEsc|  A|  O|  E|  U|  I|  D|  H|  T|  N|  S|  -|Return |
+   * |-----------------------------------------------------------|
+   * |Shift   |  ;|  Q|  J|  K|  X|  B|  M|  W|  V|  Z|ShiftEnter|
+   * |-----------------------------------------------------------|
+   * |Ctrl|Gui |Alt |      Space/Fn         |Alt |Gui |Fn  |Ctrl |
+   * `-----------------------------------------------------------'
+   */
+[_DVORAK] = KEYMAP_ANSI(
+  F(0),    KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_LBRC, KC_RBRC,KC_BSPC, \
+  HPR_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_SLSH, KC_EQL, KC_BSLS, \
+  CTL_ESC, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_MINS,         KC_ENT,  \
+  KC_LSFT,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
+  KC_LCTL, KC_LGUI,KC_LALT,                LT(_RAISE, KC_SPC),                     KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+
+  /* Keymap _LOWER: Function Layer
+   * ,-----------------------------------------------------------.
+   * |   | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+   * |-----------------------------------------------------------|
+   * |     |Hom| UP|End|   |   |   |   |   |   |   |Vo-|Vo+|     |
+   * |-----------------------------------------------------------|
+   * |      |LFT| DN| RT|   |   |LFT| DN| UP| RT|   |Pg+|        |
+   * |-----------------------------------------------------------|
+   * |        |   |   |   |   |   |   |   |   |   |Pg-|          |
+   * |-----------------------------------------------------------|
+   * |    |    |Prev|         Play           |Next|    |    |    |
+   * `-----------------------------------------------------------'
+   */
+[_LOWER] = KEYMAP_ANSI(
+  KC_GRV ,KC_F1  ,KC_F2  ,KC_F3  ,KC_F4  ,KC_F5  ,KC_F6  ,KC_F7  ,KC_F8  ,KC_F9  ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL,  \
+  _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,_______,_______,_______,_______,KC_VOLD,KC_VOLU,_______, \
+  _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,_______,KC_PGUP        ,_______, \
+  _______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGDN        ,_______, \
+  _______,_______,KC_MPRV                        ,KC_MPLY                        ,KC_MNXT,_______,_______,_______),
+
+  /* Keymap _RAISE: Function Layer
+   * ,-----------------------------------------------------------.
+   * |   |   |   |   |   |   |   |   |   |   |   |   |   | RESET |
+   * |-----------------------------------------------------------|
+   * |     |   |   |   |   |   |   |   |   |   |   |BL-|BL+|BL   |
+   * |-----------------------------------------------------------|
+   * |      |   |   |   |   |   |   |QWT|CLM|DVK|   |   |        |
+   * |-----------------------------------------------------------|
+   * |        | F1|F2 | F3|F4 | F5| F6| F7| F8|   |   |          |
+   * |-----------------------------------------------------------|
+   * |    |    |    |                        |    |    |    |    |
+   * `-----------------------------------------------------------'
+   */
+[_RAISE] = KEYMAP_ANSI(
+  #ifdef RGBLIGHT_ENABLE
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
+  _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
+  _______        ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______        ,_______, \
+  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______
+  #else
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
+  _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
+  _______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, \
+  _______,_______,_______                        ,_______                        ,_______,_______,XXXXXXX,_______
+  #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) {
+        persistant_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        persistant_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        persistant_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+enum function_id {
+    SHIFT_ESC,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [0]  = ACTION_FUNCTION(SHIFT_ESC),
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  static uint8_t shift_esc_shift_mask;
+  switch (id) {
+    case SHIFT_ESC:
+      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+      if (record->event.pressed) {
+        if (shift_esc_shift_mask) {
+          add_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          add_key(KC_ESC);
+          send_keyboard_report();
+        }
+      } else {
+        if (shift_esc_shift_mask) {
+          del_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          del_key(KC_ESC);
+          send_keyboard_report();
+        }
+      }
+      break;
+  }
+}
diff --git a/keyboards/satan/keymaps/smt/readme.md b/keyboards/satan/keymaps/smt/readme.md
new file mode 100644
index 000000000..7b706d601
--- /dev/null
+++ b/keyboards/satan/keymaps/smt/readme.md
@@ -0,0 +1 @@
+# smt's Satan GH60 layout

From b19e34c81e3e16dc75a39cdc94300fb116c9254c Mon Sep 17 00:00:00 2001
From: Stephen Tudor <smt@smt.io>
Date: Fri, 10 Mar 2017 16:10:05 -0500
Subject: [PATCH 063/163] Forsake spacefn in favor of left shift tapdance. Move
 media controls.

---
 keyboards/satan/keymaps/smt/keymap.c | 51 ++++++++++++++--------------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
index 1dfa9495b..4ac016f21 100644
--- a/keyboards/satan/keymaps/smt/keymap.c
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -24,10 +24,11 @@ enum planck_keycodes {
 #define XXXXXXX KC_NO
 
 // Custom macros
-#define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
-#define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
-#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
 #define ALT_GRV     ALT_T(KC_GRV)               // Tap for Backtick, hold for Alt
+#define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
+#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
+#define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
+#define SFT_RSE     TD(KC_LSFT, OS(_RAISE))     // Double-tap for RAISE one-shot, otherwise Left Shift
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* Keymap _QWERTY: (Base Layer) Default Layer
@@ -40,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |-----------------------------------------------------------|
    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
    * |-----------------------------------------------------------|
-   * |Ctrl|Gui |Alt |      Space/Fn         |Alt |Gui |Fn  |Ctrl |
+   * |Ctrl|Gui |Alt |         Space         |Alt |Gui |Fn  |Ctrl |
    * `-----------------------------------------------------------'
    */
 [_QWERTY] = KEYMAP_ANSI(
   F(0),    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, \
   HPR_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, \
   CTL_ESC, 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,         SFT_ENT, \
-  KC_LCTL, KC_LGUI,KC_LALT,                LT(_RAISE, KC_SPC),                     KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+  SFT_RSE,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
+  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
 
   /* Keymap _COLEMAK: (Base Layer) Default Layer
    * ,-----------------------------------------------------------.
@@ -60,15 +61,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |-----------------------------------------------------------|
    * |Shift   |  Z|  X|  C|  V|  B|  K|  M|  ,|  .|  /|Shift     |
    * |-----------------------------------------------------------|
-   * |Ctrl|Gui |Alt |      Space/Fn         |Alt |Gui |Fn  |Ctrl |
+   * |Ctrl|Gui |Alt |         Space         |Alt |Gui |Fn  |Ctrl |
    * `-----------------------------------------------------------'
    */
 [_COLEMAK] = KEYMAP_ANSI(
   F(0),    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, \
   HPR_TAB, KC_Q,   KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_LBRC, KC_RBRC,KC_BSLS, \
   CTL_ESC, KC_A,   KC_R,   KC_S,   KC_T,   KC_D,   KC_H,   KC_N,   KC_E,   KC_I,   KC_O   ,KC_QUOT,         KC_ENT,  \
-  KC_LSFT,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
-  KC_LCTL, KC_LGUI,KC_LALT,                LT(_RAISE, KC_SPC),                     KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+  SFT_RSE,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
+  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
 
   /* Keymap _DVORAK: (Base Layer) Default Layer
    * ,-----------------------------------------------------------.
@@ -80,35 +81,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |-----------------------------------------------------------|
    * |Shift   |  ;|  Q|  J|  K|  X|  B|  M|  W|  V|  Z|ShiftEnter|
    * |-----------------------------------------------------------|
-   * |Ctrl|Gui |Alt |      Space/Fn         |Alt |Gui |Fn  |Ctrl |
+   * |Ctrl|Gui |Alt |         Space         |Alt |Gui |Fn  |Ctrl |
    * `-----------------------------------------------------------'
    */
 [_DVORAK] = KEYMAP_ANSI(
   F(0),    KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_LBRC, KC_RBRC,KC_BSPC, \
   HPR_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_SLSH, KC_EQL, KC_BSLS, \
   CTL_ESC, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_MINS,         KC_ENT,  \
-  KC_LSFT,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
-  KC_LCTL, KC_LGUI,KC_LALT,                LT(_RAISE, KC_SPC),                     KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+  SFT_RSE,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
+  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
 
   /* Keymap _LOWER: Function Layer
    * ,-----------------------------------------------------------.
    * |   | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
    * |-----------------------------------------------------------|
-   * |     |Hom| UP|End|   |   |   |   |   |   |   |Vo-|Vo+|     |
+   * |     |Hom| UP|End|   |   |   |   |   |   |   |BL-|BL+|BL   |
    * |-----------------------------------------------------------|
-   * |      |LFT| DN| RT|   |   |LFT| DN| UP| RT|   |Pg+|        |
+   * |      |LFT| DN| RT|   |   |LFT| DN| UP| RT|Vo+|Pg+|        |
    * |-----------------------------------------------------------|
-   * |        |   |   |   |   |   |   |   |   |   |Pg-|          |
+   * |        |   |   |Prv|Ply|Nxt|   |   |   |Vo-|Pg-|          |
    * |-----------------------------------------------------------|
-   * |    |    |Prev|         Play           |Next|    |    |    |
+   * |    |    |    |                        |    |    |    |    |
    * `-----------------------------------------------------------'
    */
 [_LOWER] = KEYMAP_ANSI(
   KC_GRV ,KC_F1  ,KC_F2  ,KC_F3  ,KC_F4  ,KC_F5  ,KC_F6  ,KC_F7  ,KC_F8  ,KC_F9  ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL,  \
-  _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,_______,_______,_______,_______,KC_VOLD,KC_VOLU,_______, \
-  _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,_______,KC_PGUP        ,_______, \
-  _______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGDN        ,_______, \
-  _______,_______,KC_MPRV                        ,KC_MPLY                        ,KC_MNXT,_______,_______,_______),
+  _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
+  _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,KC_VOLU,KC_PGUP        ,_______, \
+  KC_LSFT        ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN        ,_______, \
+  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______),
 
   /* Keymap _RAISE: Function Layer
    * ,-----------------------------------------------------------.
@@ -126,15 +127,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_RAISE] = KEYMAP_ANSI(
   #ifdef RGBLIGHT_ENABLE
   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
   _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
-  _______        ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______        ,_______, \
-  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______
+  KC_LSFT        ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______        ,_______, \
+  _______,_______,_______                        ,_______                        ,_______,_______,XXXXXXX,_______
   #else
   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
   _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
-  _______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, \
+  KC_LSFT        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, \
   _______,_______,_______                        ,_______                        ,_______,_______,XXXXXXX,_______
   #endif
   )

From 96bde794d8b922d71f11ec2e7eb1ba0bc0ba8d2d Mon Sep 17 00:00:00 2001
From: James Barrett <jabarret@microsoft.com>
Date: Sat, 11 Mar 2017 22:09:50 -0800
Subject: [PATCH 064/163] Update readme and default layout for TADA68

Add the default function layer mappings for the keyboard.

Provide flashing instructions in the readme.
---
 .gitignore                                 |  1 +
 keyboards/tada68/keymaps/default/keymap.c  | 66 ++++------------------
 keyboards/tada68/keymaps/default/readme.md |  2 +
 keyboards/tada68/readme.md                 | 15 ++++-
 4 files changed, 26 insertions(+), 58 deletions(-)

diff --git a/.gitignore b/.gitignore
index f66a961fd..6029afce4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
 .dep
 *.o
+*.bin
 *.eep
 *.elf
 *.hex
diff --git a/keyboards/tada68/keymaps/default/keymap.c b/keyboards/tada68/keymaps/default/keymap.c
index da57c0343..f28116e0a 100644
--- a/keyboards/tada68/keymaps/default/keymap.c
+++ b/keyboards/tada68/keymaps/default/keymap.c
@@ -1,9 +1,5 @@
 #include "tada68.h"
 
-
-// Used for SHIFT_ESC
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
-
 // 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
@@ -36,63 +32,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
   /* Keymap _FL: Function Layer
    * ,----------------------------------------------------------------.
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   |  RESET|    |
+   * |   | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del    |Ins |
    * |----------------------------------------------------------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |BL-|BL+|BL   |    |
+   * |     |   |Up |   |   |   |   |   |   |   |   |   |   |     |Hme |
    * |----------------------------------------------------------------|
-   * |      |   |   |   |   |   |   |       |   |   |   |        |    |
+   * |      |<- |Dn | ->|   |   |   |   |   |   |   |   |        |End |
    * |----------------------------------------------------------------|
-   * |        | F1|F2 | F3|F4 | F5| F6| F7| F8|   |   |      |   |    |
+   * |        |   |   |Bl-|BL |BL+|   |VU-|VU+|MUT|   |MouseL|MsU|Rck |
    * |----------------------------------------------------------------|
-   * |    |    |    |                       |   |   |    |   |   |    |
+   * |    |    |    |                       |   |   |    |MsL|MsD|MsR |
    * `----------------------------------------------------------------'
    */
 [_FL] = KEYMAP_ANSI(
-  #ifdef RGBLIGHT_ENABLE
-  _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______,  \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,_______, \
-  _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, \
-  _______,_______,_______,                 _______,               _______,_______,_______,_______,_______, _______),
-  #else
-  _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______,  \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,_______, \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
-  _______,_______,_______,                 _______,               _______,_______,_______,_______,_______, _______),
-  #endif
+  _______, KC_F1 ,KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS ,  \
+  _______,_______,KC_UP, _______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,KC_HOME, \
+  _______,KC_LEFT,KC_DOWN,KC_RIGHT,_______,_______,_______,_______,_______,_______,_______,_______,        _______,KC_END, \
+  _______,_______,_______,BL_DEC, BL_TOGG,BL_INC, _______,KC_VOLD,KC_VOLU,KC_MUTE,_______,KC_BTN1, KC_MS_U, KC_BTN2, \
+  _______,_______,_______,                 _______,               _______,_______,_______,KC_MS_L,KC_MS_D, KC_MS_R),
 };
-
-/*enum function_id {
-    //SHIFT_ESC,
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  //[0]  = ACTION_FUNCTION(SHIFT_ESC),
-};
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  static uint8_t shift_esc_shift_mask;
-  switch (id) {
-    case SHIFT_ESC:
-      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
-      if (record->event.pressed) {
-        if (shift_esc_shift_mask) {
-          add_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          add_key(KC_ESC);
-          send_keyboard_report();
-        }
-      } else {
-        if (shift_esc_shift_mask) {
-          del_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          del_key(KC_ESC);
-          send_keyboard_report();
-        }
-      }
-      break;
-  }
-}*/
diff --git a/keyboards/tada68/keymaps/default/readme.md b/keyboards/tada68/keymaps/default/readme.md
index 36760d6b9..53412d7c2 100644
--- a/keyboards/tada68/keymaps/default/readme.md
+++ b/keyboards/tada68/keymaps/default/readme.md
@@ -1 +1,3 @@
 # default TADA68 layout
+
+This layout replicates the default factory layout of the TADA68.
diff --git a/keyboards/tada68/readme.md b/keyboards/tada68/readme.md
index 552fdea52..dbe2fdca1 100644
--- a/keyboards/tada68/readme.md
+++ b/keyboards/tada68/readme.md
@@ -1,4 +1,15 @@
 TADA68 keyboard firmware
-======================
+========================
 
-TODO: to be updated.
+1) from the keyboards/tada68 directory run:
+```
+$ make flashbin
+```
+
+2) hit the reset button on the TADA, the lights will start flashing.
+
+3) You'll see a new drive on your computer called TADA68. Backup the original factory `FLASH.BIN` file thats inside it.
+
+4) Delete `FLASH.BIN` from the TADA drive and copy `tada68_default.bin` that was generated at the root of the qmk directory into the TADA drive.
+
+5) Hit ESC on the keyboard. The lights will stop flashing and your firmware is loaded!
\ No newline at end of file

From cf28f7bfdaf7a2e5f8734c0936f5e48b93c9353a Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Wed, 15 Mar 2017 23:07:29 -0400
Subject: [PATCH 065/163] Add custom keycap

---
 keyboards/planck/keymaps/khord/keymap.c | 318 ++++++++++++++++++++++++
 1 file changed, 318 insertions(+)
 create mode 100644 keyboards/planck/keymaps/khord/keymap.c

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
new file mode 100644
index 000000000..478e1f822
--- /dev/null
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -0,0 +1,318 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _PLOVER 5
+#define _ADJUST 16
+
+enum planck_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  PLOVER,
+  LOWER,
+  RAISE,
+  BACKLIT,
+  EXT_PLV
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Dylan's additions
+#define C_A_DEL LALT(LCTL(KC_DEL))
+#define C_A_INS LALT(LCTL(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = {
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {BACKLIT, 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] = {
+  {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}
+},
+
+/* 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] = {
+  {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}
+},
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |TogOut|   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_PLOVER] = {
+  {KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   },
+  {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
+  {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover|      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
+  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_INS, C_A_DEL}
+}
+
+
+};
+
+#ifdef AUDIO_ENABLE
+
+float tone_startup[][2]    = SONG(SONIC_RING); //plug in
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+float tone_plover[][2]     = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND);
+float music_scale[][2]     = SONG(ZELDA_PUZZLE); //music mode
+
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+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 BACKLIT:
+      if (record->event.pressed) {
+        register_code(KC_RSFT);
+        #ifdef BACKLIGHT_ENABLE
+          backlight_step();
+        #endif
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      return false;
+      break;
+    case PLOVER:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          stop_all_notes();
+          PLAY_NOTE_ARRAY(tone_plover, false, 0);
+        #endif
+        layer_off(_RAISE);
+        layer_off(_LOWER);
+        layer_off(_ADJUST);
+        layer_on(_PLOVER);
+        if (!eeconfig_is_enabled()) {
+            eeconfig_init();
+        }
+        keymap_config.raw = eeconfig_read_keymap();
+        keymap_config.nkro = 1;
+        eeconfig_update_keymap(keymap_config.raw);
+      }
+      return false;
+      break;
+    case EXT_PLV:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
+        #endif
+        layer_off(_PLOVER);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+void matrix_init_user(void) {
+    #ifdef AUDIO_ENABLE
+        startup_user();
+    #endif
+}
+
+#ifdef AUDIO_ENABLE
+
+void startup_user()
+{
+    _delay_ms(20); // gets rid of tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void shutdown_user()
+{
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
+
+void music_on_user(void)
+{
+    music_scale_user();
+}
+
+void music_scale_user(void)
+{
+    PLAY_NOTE_ARRAY(music_scale, false, 0);
+}
+
+#endif

From 73a70a2c1c78a140ac506bbe8b91ff4a7eb70da4 Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Wed, 15 Mar 2017 23:09:17 -0400
Subject: [PATCH 066/163] Add Makefile

---
 keyboards/planck/keymaps/khord/Makefile | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 keyboards/planck/keymaps/khord/Makefile

diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile
new file mode 100644
index 000000000..457a3d01d
--- /dev/null
+++ b/keyboards/planck/keymaps/khord/Makefile
@@ -0,0 +1,3 @@
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif

From 0c0a8ee187eb27faefe4391d978283a081896399 Mon Sep 17 00:00:00 2001
From: Dylan Khor <thekhord@gmail.com>
Date: Thu, 16 Mar 2017 03:46:26 +0000
Subject: [PATCH 067/163] test

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

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 478e1f822..e6c90c26d 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_QWERTY] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
   {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_T(KC_ENT) },
   {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 },
 

From 683754bce806c634f59dd9d926491952778f913b Mon Sep 17 00:00:00 2001
From: Dylan Khor <thekhord@gmail.com>
Date: Thu, 16 Mar 2017 04:11:47 +0000
Subject: [PATCH 068/163] added custom tones

---
 quantum/audio/song_list.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index 8022ca672..400915db9 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -122,4 +122,31 @@
     E__NOTE(_E5),          \
     E__NOTE(_D5),
 
+#define COIN_SOUND \
+    E__NOTE(_A5  ),      \
+    HD_NOTE(_E6  ),
+
+#define ONE_UP_SOUND \
+    Q__NOTE(_E6  ),  \
+    Q__NOTE(_G6  ),  \
+    Q__NOTE(_E7  ),  \
+    Q__NOTE(_C7  ),  \
+    Q__NOTE(_D7  ),  \
+    Q__NOTE(_G7  ),
+
+#define SONIC_RING \
+    E__NOTE(_E6),  \
+    E__NOTE(_G6),  \
+    HD_NOTE(_C7),
+
+#define ZELDA_PUZZLE \
+    Q__NOTE(_G5),     \
+    Q__NOTE(_FS5),    \
+    Q__NOTE(_DS5),     \
+    Q__NOTE(_A4),    \
+    Q__NOTE(_GS4),     \
+    Q__NOTE(_E5),     \
+    Q__NOTE(_GS5),     \
+    HD_NOTE(_C6),
+
 #endif

From 24d174595120aa6874604eed41db7ae02b26c9be Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Thu, 16 Mar 2017 12:24:31 -0400
Subject: [PATCH 069/163] add config.h for customization

---
 keyboards/planck/keymaps/khord/config.h | 90 +++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 keyboards/planck/keymaps/khord/config.h

diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h
new file mode 100644
index 000000000..5cf96bb88
--- /dev/null
+++ b/keyboards/planck/keymaps/khord/config.h
@@ -0,0 +1,90 @@
+/*
+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 MANUFACTURER    Ortholinear Keyboards
+#define PRODUCT         The Planck Keyboard
+#define DESCRIPTION     A compact ortholinear keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/* Planck PCB default pin-out */
+#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
+#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
+#define UNUSED_PINS
+
+#define AUDIO_VOICES
+
+#define BACKLIGHT_PIN B7
+
+/* 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)) \
+)
+
+/*
+ * 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
+
+#ifdef SUBPROJECT_rev3
+    #include "rev3/config.h"
+#endif
+#ifdef SUBPROJECT_rev4
+    #include "rev4/config.h"
+#endif
+
+#endif

From 0c8f71e3c7fe258e6e084d7eec018b89a499d014 Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Thu, 16 Mar 2017 12:44:56 -0400
Subject: [PATCH 070/163] test tap dance

---
 keyboards/planck/keymaps/khord/Makefile |  1 +
 keyboards/planck/keymaps/khord/config.h |  3 +++
 keyboards/planck/keymaps/khord/keymap.c | 14 +++++++++++++-
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile
index 457a3d01d..666161d1f 100644
--- a/keyboards/planck/keymaps/khord/Makefile
+++ b/keyboards/planck/keymaps/khord/Makefile
@@ -1,3 +1,4 @@
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
 endif
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h
index 5cf96bb88..76a1f8832 100644
--- a/keyboards/planck/keymaps/khord/config.h
+++ b/keyboards/planck/keymaps/khord/config.h
@@ -62,6 +62,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
+/* Tap Dance */
+#define TAPPING_TERM 200
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index e6c90c26d..04b95c744 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -33,6 +33,18 @@ enum planck_keycodes {
   EXT_PLV
 };
 
+// Tap Dance Declarations
+enum {
+  TD_ESC_CAPS = 0
+};
+
+// Tap Dance Definitions
+qk_tap_dance_action_t tape_dance_actions[] = {
+  //Tap once for Esc, twice for Caps Lock
+  [TD_ESC_CAPS]  = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
+  // Other declarations would go here, separated by commas, if you have them
+};
+
 // Fillers to make layering more clear
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
@@ -56,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_QWERTY] = {
   {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {TD(TD_ESC_CAPS),  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_T(KC_ENT) },
   {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 },

From 6ca1c49d38ddc31c5fc9ef1c180849804fe358fd Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Thu, 16 Mar 2017 13:07:01 -0400
Subject: [PATCH 071/163] test fixes for tap dane

---
 keyboards/planck/keymaps/khord/config.h |  2 +-
 keyboards/planck/keymaps/khord/keymap.c | 21 ++++++++++-----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h
index 76a1f8832..008f3a5c2 100644
--- a/keyboards/planck/keymaps/khord/config.h
+++ b/keyboards/planck/keymaps/khord/config.h
@@ -63,7 +63,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 )
 
 /* Tap Dance */
-#define TAPPING_TERM 200
+#define TAPPING_TERM 150
 
 /*
  * Feature disable options
diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 04b95c744..50a5daa57 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -33,22 +33,15 @@ enum planck_keycodes {
   EXT_PLV
 };
 
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
 // Tap Dance Declarations
 enum {
   TD_ESC_CAPS = 0
 };
 
-// Tap Dance Definitions
-qk_tap_dance_action_t tape_dance_actions[] = {
-  //Tap once for Esc, twice for Caps Lock
-  [TD_ESC_CAPS]  = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
-  // Other declarations would go here, separated by commas, if you have them
-};
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
 // Dylan's additions
 #define C_A_DEL LALT(LCTL(KC_DEL))
 #define C_A_INS LALT(LCTL(KC_INS))
@@ -328,3 +321,9 @@ void music_scale_user(void)
 }
 
 #endif
+
+// Tap Dance Definitions
+const qk_tap_dance_action_t tape_dance_actions[] = {
+  //Tap once for Esc, twice for Caps Lock
+  [TD_ESC_CAPS]  = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
+};

From c7cddfc539f111baeff51a2f7e6272701e0f0109 Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Thu, 16 Mar 2017 13:27:26 -0400
Subject: [PATCH 072/163] test td changes

---
 keyboards/planck/keymaps/khord/Makefile |  2 +-
 keyboards/planck/keymaps/khord/keymap.c | 11 +++++------
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile
index 666161d1f..f0ed9e8dc 100644
--- a/keyboards/planck/keymaps/khord/Makefile
+++ b/keyboards/planck/keymaps/khord/Makefile
@@ -1,4 +1,4 @@
+TAP_DANCE_ENABLE = yes
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
 endif
-TAP_DANCE_ENABLE = yes
diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 50a5daa57..52467641a 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -178,6 +178,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
+
+const qk_tap_dance_action_t tape_dance_actions[] = {
+  [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
+};
+
 #ifdef AUDIO_ENABLE
 
 float tone_startup[][2]    = SONG(SONIC_RING); //plug in
@@ -321,9 +326,3 @@ void music_scale_user(void)
 }
 
 #endif
-
-// Tap Dance Definitions
-const qk_tap_dance_action_t tape_dance_actions[] = {
-  //Tap once for Esc, twice for Caps Lock
-  [TD_ESC_CAPS]  = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
-};

From 4b1d0c585977884faac28f1e7210bf528af46c9a Mon Sep 17 00:00:00 2001
From: Dylan Khor <thekhord@gmail.com>
Date: Thu, 16 Mar 2017 17:36:31 +0000
Subject: [PATCH 073/163] remove const

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

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 52467641a..64185a148 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 
 
-const qk_tap_dance_action_t tape_dance_actions[] = {
+qk_tap_dance_action_t tape_dance_actions[] = {
   [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
 };
 

From e03ddbe118740493a7adc59539c7edb47a98c799 Mon Sep 17 00:00:00 2001
From: Dylan Khor <thekhord@gmail.com>
Date: Thu, 16 Mar 2017 18:13:53 +0000
Subject: [PATCH 074/163] tap dance working for esc and arrows

---
 keyboards/planck/keymaps/khord/keymap.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 64185a148..6f19966f2 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -39,7 +39,11 @@ enum planck_keycodes {
 
 // Tap Dance Declarations
 enum {
-  TD_ESC_CAPS = 0
+  ESC_CAP = 0,
+  LFT_HOM,
+  DWN_PDN,
+  UPP_PUP,
+  RGT_END
 };
 
 // Dylan's additions
@@ -60,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
-  {TD(TD_ESC_CAPS),  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_T(KC_ENT) },
-  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+  {KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,        KC_O,        KC_P,        KC_BSPC      },
+  {TD(ESC_CAP), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,        KC_L,        KC_SCLN,     KC_QUOT      },
+  {KC_LSFT,     KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,     KC_DOT,      KC_SLSH,     SFT_T(KC_ENT)},
+  {BACKLIT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   TD(LFT_HOM), TD(DWN_PDN), TD(UPP_PUP), TD(RGT_END)  }
 },
 
 /* Colemak
@@ -179,8 +183,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 
 
-qk_tap_dance_action_t tape_dance_actions[] = {
-  [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [ESC_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
+  [LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
+  [DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
+  [UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
+  [RGT_END] = ACTION_TAP_DANCE_DOUBLE(KC_RGHT, KC_END)
 };
 
 #ifdef AUDIO_ENABLE

From e123ed8d5f4837a424d8ad58bd8664a323a76f9b Mon Sep 17 00:00:00 2001
From: jprmesh <mrachhh@gmail.com>
Date: Wed, 15 Mar 2017 13:48:31 -0700
Subject: [PATCH 075/163] Added KC_KEYMAP macro for old style keymaps in
 Atreus62

---
 keyboards/atreus62/atreus62.h | 38 +++++++++++++++++++++++++----------
 1 file changed, 27 insertions(+), 11 deletions(-)

diff --git a/keyboards/atreus62/atreus62.h b/keyboards/atreus62/atreus62.h
index eacf5b451..ca5cda8a8 100644
--- a/keyboards/atreus62/atreus62.h
+++ b/keyboards/atreus62/atreus62.h
@@ -9,18 +9,34 @@ void promicro_bootloader_jmp(bool program);
 // 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,           k06, k07, k08, k09, k0a, k0b, \
-  k10, k11, k12, k13, k14, k15,           k16, k17, k18, k19, k1a, k1b, \
-  k20, k21, k22, k23, k24, k25,           k26, k27, k28, k29, k2a, k2b, \
-  k30, k31, k32, k33, k34, k35,           k36, k37, k38, k39, k3a, k3b, \
-  k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
+    k00, k01, k02, k03, k04, k05,           k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15,           k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25,           k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34, k35,           k36, k37, k38, k39, k3a, k3b, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
 ) \
 { \
-	{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
-	{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
-	{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
-	{ k30, k31, k32, k33, k34, k35, k46,   k36, k37, k38, k39, k3a, k3b }, \
-	{ k40, k41, k42, k43, k44, k45, k47,   k48, k49, k4a, k4b, k4c, k4d } \
+    { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
+    { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
+    { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
+    { k30, k31, k32, k33, k34, k35, k46,   k36, k37, k38, k39, k3a, k3b }, \
+    { k40, k41, k42, k43, k44, k45, k47,   k48, k49, k4a, k4b, k4c, k4d } \
 }
 
-#endif
\ No newline at end of file
+// Used to create a keymap using only KC_ prefixed keys.
+#define KC_KEYMAP( \
+    k00, k01, k02, k03, k04, k05,           k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15,           k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25,           k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34, k35,           k36, k37, k38, k39, k3a, k3b, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
+) \
+{ \
+    { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO,    KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
+    { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO,    KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
+    { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO,    KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
+    { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k46, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \
+    { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \
+}
+
+#endif

From 3766f902a02da7e9355685c733f70bcff9fe5a12 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Mar 2017 15:38:03 -0700
Subject: [PATCH 076/163] boilerplate project created with new_project.sh

---
 keyboards/frosty_flake/Makefile               |   3 +
 keyboards/frosty_flake/config.h               | 162 ++++++++++++++++++
 keyboards/frosty_flake/frosty_flake.c         |  28 +++
 keyboards/frosty_flake/frosty_flake.h         |  19 ++
 .../frosty_flake/keymaps/default/Makefile     |  21 +++
 .../frosty_flake/keymaps/default/config.h     |   8 +
 .../frosty_flake/keymaps/default/keymap.c     |  44 +++++
 .../frosty_flake/keymaps/default/readme.md    |   1 +
 keyboards/frosty_flake/readme.md              |  28 +++
 keyboards/frosty_flake/rules.mk               |  68 ++++++++
 10 files changed, 382 insertions(+)
 create mode 100644 keyboards/frosty_flake/Makefile
 create mode 100644 keyboards/frosty_flake/config.h
 create mode 100644 keyboards/frosty_flake/frosty_flake.c
 create mode 100644 keyboards/frosty_flake/frosty_flake.h
 create mode 100644 keyboards/frosty_flake/keymaps/default/Makefile
 create mode 100644 keyboards/frosty_flake/keymaps/default/config.h
 create mode 100644 keyboards/frosty_flake/keymaps/default/keymap.c
 create mode 100644 keyboards/frosty_flake/keymaps/default/readme.md
 create mode 100644 keyboards/frosty_flake/readme.md
 create mode 100644 keyboards/frosty_flake/rules.mk

diff --git a/keyboards/frosty_flake/Makefile b/keyboards/frosty_flake/Makefile
new file mode 100644
index 000000000..57b2ef62e
--- /dev/null
+++ b/keyboards/frosty_flake/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h
new file mode 100644
index 000000000..9390feb94
--- /dev/null
+++ b/keyboards/frosty_flake/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         frosty_flake
+#define DESCRIPTION     A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 3
+
+/*
+ * 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 { D0, D5 }
+#define MATRIX_COL_PINS { F1, F0, B0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#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/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c
new file mode 100644
index 000000000..22979a451
--- /dev/null
+++ b/keyboards/frosty_flake/frosty_flake.c
@@ -0,0 +1,28 @@
+#include "frosty_flake.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/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h
new file mode 100644
index 000000000..90ea25ed9
--- /dev/null
+++ b/keyboards/frosty_flake/frosty_flake.h
@@ -0,0 +1,19 @@
+#ifndef FROSTY_FLAKE_H
+#define FROSTY_FLAKE_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, \
+      k10,  k11   \
+) \
+{ \
+    { k00, k01,   k02 }, \
+    { k10, KC_NO, k11 }, \
+}
+
+#endif
diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile
new file mode 100644
index 000000000..9d3df5964
--- /dev/null
+++ b/keyboards/frosty_flake/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
diff --git a/keyboards/frosty_flake/keymaps/default/config.h b/keyboards/frosty_flake/keymaps/default/config.h
new file mode 100644
index 000000000..8893d122e
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/default/config.h
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c
new file mode 100644
index 000000000..1c9e33b64
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include "frosty_flake.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Base */
+  KC_A,  KC_1,  KC_H, \
+    KC_TAB,  KC_SPC   \
+),
+};
+
+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) {
+
+}
diff --git a/keyboards/frosty_flake/keymaps/default/readme.md b/keyboards/frosty_flake/keymaps/default/readme.md
new file mode 100644
index 000000000..11bf4825f
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for frosty_flake
diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md
new file mode 100644
index 000000000..a32965061
--- /dev/null
+++ b/keyboards/frosty_flake/readme.md
@@ -0,0 +1,28 @@
+frosty_flake 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/frosty_flake 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/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk
new file mode 100644
index 000000000..bad3387bf
--- /dev/null
+++ b/keyboards/frosty_flake/rules.mk
@@ -0,0 +1,68 @@
+# 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
+FAUXCLICKY_ENABLE ?= no      # Use buzzer to emulate clicky switches

From 19fd20261b895a6848c8b15fd7365d5b87b7fd72 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sat, 18 Mar 2017 16:19:10 -0700
Subject: [PATCH 077/163] sketch out frosty flake matrix using custom matrix.c
 based on kitten paw

---
 keyboards/frosty_flake/config.h |  24 +++--
 keyboards/frosty_flake/matrix.c | 167 ++++++++++++++++++++++++++++++++
 keyboards/frosty_flake/rules.mk |   7 +-
 3 files changed, 187 insertions(+), 11 deletions(-)
 create mode 100644 keyboards/frosty_flake/matrix.c

diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h
index 9390feb94..2575a52b1 100644
--- a/keyboards/frosty_flake/config.h
+++ b/keyboards/frosty_flake/config.h
@@ -24,13 +24,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define VENDOR_ID       0xFEED
 #define PRODUCT_ID      0x6060
 #define DEVICE_VER      0x0001
-#define MANUFACTURER    You
+#define MANUFACTURER    Bathroom Epiphanies
 #define PRODUCT         frosty_flake
-#define DESCRIPTION     A custom keyboard
+#define DESCRIPTION     Frosty Flake controller for the CM Storm Quick Fire Rapid
+
+/*
+ * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
+ * Schematic is available at https://deskthority.net/w/images/a/a4/Frosty_Flake_Schematics.pdf
+ *
+ */
 
 /* key matrix size */
-#define MATRIX_ROWS 2
-#define MATRIX_COLS 3
+#define MATRIX_ROWS 8    // Row0 to Row7 in the schematic
+#define MATRIX_COLS 18   // ColA to ColR in the schematic
 
 /*
  * Keyboard Matrix Assignments
@@ -42,13 +48,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
  *
 */
-#define MATRIX_ROW_PINS { D0, D5 }
-#define MATRIX_COL_PINS { F1, F0, B0 }
-#define UNUSED_PINS
+//#define MATRIX_ROW_PINS { D5, D4, D6, D2, D1, D0 }
+//#define MATRIX_COL_PINS << n/a >>
+//#define UNUSED_PINS { B0, C4, D3 }
 
 /* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
-#define DIODE_DIRECTION COL2ROW
- 
+//#define DIODE_DIRECTION << n/a >>
+
 // #define BACKLIGHT_PIN B7
 // #define BACKLIGHT_BREATHING
 // #define BACKLIGHT_LEVELS 3
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
new file mode 100644
index 000000000..21b0d9088
--- /dev/null
+++ b/keyboards/frosty_flake/matrix.c
@@ -0,0 +1,167 @@
+//TODO(gabe): customize for frosty flake
+
+/*
+  Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+
+#ifndef DEBOUNCING_DELAY
+#   define DEBOUNCING_DELAY 5
+#endif
+static uint8_t debouncing = DEBOUNCING_DELAY;
+
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+static uint8_t read_rows(void);
+static void select_col(uint8_t col);
+
+inline uint8_t matrix_rows(void) {
+  return MATRIX_ROWS;
+}
+
+inline uint8_t matrix_cols(void) {
+  return MATRIX_COLS;
+}
+
+/* Column pin configuration
+ *
+ * col: 0    1    2    3    4    5    6    7
+ * pin: PC7  PD5  PD3  PD1  PC2  PD6  PD4  PD2
+ *
+ * Rrr pin configuration 
+ *
+ * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low
+ * active), together with 2 rrrs driven directly from the micro
+ * controller, to control the 18 rrrs. The rrrs are driven from
+ * pins B6,5,4,3,2,1,0.
+ */
+void matrix_init(void) {
+  DDRC  &= ~0b10000100;  // Row input pins
+  DDRD  &= ~0b01111110;
+  PORTC |=  0b10000100;
+  PORTD |=  0b01111110;
+
+  DDRB  |=  0b01111111;  // Column output pins
+
+  for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
+    matrix[i] = 0;
+    matrix_debouncing[i] = 0;
+  }
+  matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void) {
+  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+    select_col(col);
+    _delay_us(3);
+    uint8_t rows = read_rows();
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+      bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+      bool curr_bit = rows & (1<<row);
+      if (prev_bit != curr_bit) {
+        matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
+        debouncing = DEBOUNCING_DELAY;
+      }
+    }
+  }
+  
+  if (debouncing) {
+    if (--debouncing) {
+      _delay_ms(1);
+    }
+    else {
+      for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+        matrix[i] = matrix_debouncing[i];
+      }
+    }
+  }
+  matrix_scan_quantum();
+  return 1;
+}
+
+bool matrix_is_modified(void) {
+  if (debouncing)
+    return false;
+  else
+    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++) {
+    xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
+  }
+}
+
+uint8_t matrix_key_count(void) {
+  uint8_t count = 0;
+  for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+    count += bitpop32(matrix[i]);
+  }
+  return count;
+}
+
+static uint8_t read_rows(void) {
+  return
+    (PINC&(1<<7) ? 0 : (1<<0)) |
+    (PIND&(1<<5) ? 0 : (1<<1)) |
+    (PIND&(1<<3) ? 0 : (1<<2)) |
+    (PIND&(1<<1) ? 0 : (1<<3)) |
+    (PINC&(1<<2) ? 0 : (1<<4)) |
+    (PIND&(1<<2) ? 0 : (1<<5)) |
+    (PIND&(1<<4) ? 0 : (1<<6)) |
+    (PIND&(1<<6) ? 0 : (1<<7));
+}
+
+static void select_col(uint8_t col) {
+  switch (col) {
+  case  0: PORTB = (PORTB & ~0b01111111) | 0b01100100; break;
+  case  1: PORTB = (PORTB & ~0b01111111) | 0b01101100; break;
+  case  2: PORTB = (PORTB & ~0b01111111) | 0b01100010; break;
+  case  3: PORTB = (PORTB & ~0b01111111) | 0b01111010; break;
+  case  4: PORTB = (PORTB & ~0b01111111) | 0b01100110; break;
+  case  5: PORTB = (PORTB & ~0b01111111) | 0b01110110; break;
+  case  6: PORTB = (PORTB & ~0b01111111) | 0b01101110; break;
+  case  7: PORTB = (PORTB & ~0b01111111) | 0b01111110; break;
+  case  8: PORTB = (PORTB & ~0b01111111) | 0b01000001; break;
+  case  9: PORTB = (PORTB & ~0b01111111) | 0b00100001; break;
+  case 10: PORTB = (PORTB & ~0b01111111) | 0b01101010; break;
+  case 11: PORTB = (PORTB & ~0b01111111) | 0b01110010; break;
+  case 12: PORTB = (PORTB & ~0b01111111) | 0b01111100; break;
+  case 13: PORTB = (PORTB & ~0b01111111) | 0b01110100; break;
+  case 14: PORTB = (PORTB & ~0b01111111) | 0b01111000; break;
+  case 15: PORTB = (PORTB & ~0b01111111) | 0b01110000; break;
+  case 16: PORTB = (PORTB & ~0b01111111) | 0b01100000; break;
+  case 17: PORTB = (PORTB & ~0b01111111) | 0b01101000; break;
+  }
+}
\ No newline at end of file
diff --git a/keyboards/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk
index bad3387bf..dd2f4b6ee 100644
--- a/keyboards/frosty_flake/rules.mk
+++ b/keyboards/frosty_flake/rules.mk
@@ -1,6 +1,6 @@
 # MCU name
 #MCU = at90usb1287
-MCU = atmega32u4
+MCU = atmega32u2
 
 # Processor frequency.
 #     This will define a symbol, F_CPU, in all source code files equal to the
@@ -45,7 +45,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
 #   Atmel DFU loader 4096
 #   LUFA bootloader  4096
 #   USBaspLoader     2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
 
 
 # Build Options
@@ -66,3 +66,6 @@ UNICODE_ENABLE ?= no         # Unicode
 BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE ?= no           # Audio output on port C6
 FAUXCLICKY_ENABLE ?= no      # Use buzzer to emulate clicky switches
+
+CUSTOM_MATRIX = yes
+SRC += matrix.c
\ No newline at end of file

From ca544ecfb6dd44fb7024fbf3153e3a1d37fa691f Mon Sep 17 00:00:00 2001
From: Dylan Khor <thekhord@gmail.com>
Date: Sun, 19 Mar 2017 00:07:48 +0000
Subject: [PATCH 078/163] Don't feel like tap dancing arrows anymore

---
 keyboards/planck/keymaps/khord/keymap.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 6f19966f2..2ee57b8f4 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -64,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
-  {KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,        KC_O,        KC_P,        KC_BSPC      },
-  {TD(ESC_CAP), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,        KC_L,        KC_SCLN,     KC_QUOT      },
-  {KC_LSFT,     KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,     KC_DOT,      KC_SLSH,     SFT_T(KC_ENT)},
-  {BACKLIT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   TD(LFT_HOM), TD(DWN_PDN), TD(UPP_PUP), TD(RGT_END)  }
+  {KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R   KC_T,   KC_Y,   KC_U,  KC_I,    KC_O,    KC_P,    KC_BSPC      },
+  {TD(ESC_CAP), KC_A,    KC_S,    KC_D,    KC_F,  KC_G,   KC_H,   KC_J,  KC_K,    KC_L,    KC_SCLN, KC_QUOT      },
+  {KC_LSFT,     KC_Z,    KC_X,    KC_C,    KC_V,  KC_B,   KC_N,   KC_M,  KC_COMM, KC_DOT,  KC_SLSH, SFT_T(KC_ENT)},
+  {BACKLIT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT      }
 },
 
 /* Colemak

From 561da65606c8b27f3fecc10f41ff139d7625fd08 Mon Sep 17 00:00:00 2001
From: Dylan Khor <thekhord@gmail.com>
Date: Sun, 19 Mar 2017 00:14:43 +0000
Subject: [PATCH 079/163] Missing comma

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

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 2ee57b8f4..65ba1c417 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
-  {KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R   KC_T,   KC_Y,   KC_U,  KC_I,    KC_O,    KC_P,    KC_BSPC      },
+  {KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R,  KC_T,   KC_Y,   KC_U,  KC_I,    KC_O,    KC_P,    KC_BSPC      },
   {TD(ESC_CAP), KC_A,    KC_S,    KC_D,    KC_F,  KC_G,   KC_H,   KC_J,  KC_K,    KC_L,    KC_SCLN, KC_QUOT      },
   {KC_LSFT,     KC_Z,    KC_X,    KC_C,    KC_V,  KC_B,   KC_N,   KC_M,  KC_COMM, KC_DOT,  KC_SLSH, SFT_T(KC_ENT)},
   {BACKLIT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT      }

From d7fc2365402069a6149c9593dad82c4b4e31b78a Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 15:59:21 -0700
Subject: [PATCH 080/163] successfully read data from the matrix

---
 keyboards/frosty_flake/config.h               |   7 +-
 .../frosty_flake/keymaps/default/Makefile     |   4 +-
 .../frosty_flake/keymaps/default/keymap.c     |   7 +-
 keyboards/frosty_flake/matrix.c               | 150 ++++++++++--------
 4 files changed, 93 insertions(+), 75 deletions(-)

diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h
index 2575a52b1..507e6a6b6 100644
--- a/keyboards/frosty_flake/config.h
+++ b/keyboards/frosty_flake/config.h
@@ -30,13 +30,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /*
  * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
- * Schematic is available at https://deskthority.net/w/images/a/a4/Frosty_Flake_Schematics.pdf
+ * Ported from the Bathroom Epiphanies TMK Firmware:
+ * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers
  *
  */
 
 /* key matrix size */
-#define MATRIX_ROWS 8    // Row0 to Row7 in the schematic
-#define MATRIX_COLS 18   // ColA to ColR in the schematic
+#define MATRIX_ROWS 18
+#define MATRIX_COLS 8
 
 /*
  * Keyboard Matrix Assignments
diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile
index 9d3df5964..088766680 100644
--- a/keyboards/frosty_flake/keymaps/default/Makefile
+++ b/keyboards/frosty_flake/keymaps/default/Makefile
@@ -3,9 +3,9 @@
 #   the appropriate keymap folder that will get included automatically
 #
 BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
 EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
-CONSOLE_ENABLE = no         # Console for debug(+400)
+CONSOLE_ENABLE = yes         # Console for debug(+400)
 COMMAND_ENABLE = yes        # Commands for debug and configuration
 NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c
index 1c9e33b64..e55355566 100644
--- a/keyboards/frosty_flake/keymaps/default/keymap.c
+++ b/keyboards/frosty_flake/keymaps/default/keymap.c
@@ -28,11 +28,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 
 
 void matrix_init_user(void) {
-
+    debug_enable = true;
 }
 
 void matrix_scan_user(void) {
-
+    if (matrix_is_modified())
+        matrix_print();
 }
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -41,4 +42,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 void led_set_user(uint8_t usb_led) {
 
-}
+}
\ No newline at end of file
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
index 21b0d9088..70456ada3 100644
--- a/keyboards/frosty_flake/matrix.c
+++ b/keyboards/frosty_flake/matrix.c
@@ -1,5 +1,3 @@
-//TODO(gabe): customize for frosty flake
-
 /*
   Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
 
@@ -26,16 +24,71 @@
 #include "util.h"
 #include "matrix.h"
 
+#ifndef CONFIG_SPECIFIC_H
+#define CONFIG_SPECIFIC_H
+
+#define CONFIG_LED_IO \
+  DDRB |= (1<<7); \
+  DDRC |= (1<<5) | (1<<6);
+
+#define USB_LED_CAPS_LOCK_ON    PORTC &= ~(1<<5)
+#define USB_LED_CAPS_LOCK_OFF   PORTC |=  (1<<5)
+#define USB_LED_NUM_LOCK_ON     PORTB &= ~(1<<7)
+#define USB_LED_NUM_LOCK_OFF    PORTB |=  (1<<7)
+#define USB_LED_SCROLL_LOCK_ON  PORTC &= ~(1<<6)
+#define USB_LED_SCROLL_LOCK_OFF PORTC |=  (1<<6)
+
+#define CONFIG_MATRIX_IO   \
+  /* Column output pins */ \
+  DDRD  |=  0b01111011;    \
+  /* Row input pins */     \
+  DDRC  &= ~0b10000000;    \
+  DDRB  &= ~0b01111111;    \
+  PORTC |=  0b10000000;    \
+  PORTB |=  0b01111111;
+
+#define MATRIX_ROW_SCAN                      \
+  (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) | \
+  (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) | \
+  (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \
+  (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) | \
+  (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \
+  (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) | \
+  (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) | \
+  (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
+
+#define MATRIX_ROW_SELECT                                     \
+  case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break; \
+  case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break; \
+  case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break; \
+  case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break; \
+  case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break; \
+  case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break; \
+  case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break; \
+  case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break; \
+  case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break; \
+  case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break; \
+  case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break; \
+  case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break; \
+  case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break; \
+  case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break; \
+  case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break; \
+  case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break; \
+  case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break; \
+  case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
+
+#endif
+
 #ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 5
+#   define DEBOUNCING_DELAY 0
 #endif
 static uint8_t debouncing = DEBOUNCING_DELAY;
 
 static matrix_row_t matrix[MATRIX_ROWS];
 static matrix_row_t matrix_debouncing[MATRIX_ROWS];
 
-static uint8_t read_rows(void);
-static void select_col(uint8_t col);
+static matrix_row_t scan_row(void);
+static void select_row(uint8_t row);
 
 inline uint8_t matrix_rows(void) {
   return MATRIX_ROWS;
@@ -45,58 +98,40 @@ inline uint8_t matrix_cols(void) {
   return MATRIX_COLS;
 }
 
-/* Column pin configuration
- *
- * col: 0    1    2    3    4    5    6    7
- * pin: PC7  PD5  PD3  PD1  PC2  PD6  PD4  PD2
- *
- * Rrr pin configuration 
- *
- * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low
- * active), together with 2 rrrs driven directly from the micro
- * controller, to control the 18 rrrs. The rrrs are driven from
- * pins B6,5,4,3,2,1,0.
- */
 void matrix_init(void) {
-  DDRC  &= ~0b10000100;  // Row input pins
-  DDRD  &= ~0b01111110;
-  PORTC |=  0b10000100;
-  PORTD |=  0b01111110;
-
-  DDRB  |=  0b01111111;  // Column output pins
+  CONFIG_MATRIX_IO;
 
   for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
     matrix[i] = 0;
     matrix_debouncing[i] = 0;
   }
+
   matrix_init_quantum();
 }
 
 uint8_t matrix_scan(void) {
-  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-    select_col(col);
+  for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+    select_row(row);
     _delay_us(3);
-    uint8_t rows = read_rows();
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+    matrix_row_t row_scan = scan_row();
+    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
       bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-      bool curr_bit = rows & (1<<row);
+      bool curr_bit = row_scan & (1<<col);
       if (prev_bit != curr_bit) {
         matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
         debouncing = DEBOUNCING_DELAY;
       }
     }
   }
-  
+
   if (debouncing) {
-    if (--debouncing) {
+    if (--debouncing)
       _delay_ms(1);
-    }
-    else {
-      for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+    else
+      for (uint8_t i = 0; i < MATRIX_ROWS; i++)
         matrix[i] = matrix_debouncing[i];
-      }
-    }
   }
+
   matrix_scan_quantum();
   return 1;
 }
@@ -117,9 +152,15 @@ inline matrix_row_t matrix_get_row(uint8_t row) {
 }
 
 void matrix_print(void) {
-  print("\nr/c 0123456789ABCDEF\n");
+  print("\nr/c 01234567\n");
   for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-    xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
+    matrix_row_t row_scan = matrix_get_row(row);
+    xprintf("%02X: ", row);
+    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+      bool curr_bit = row_scan & (1<<col);
+      xprintf("%c", curr_bit ? '*' : '.');
+    }
+    print("\n");
   }
 }
 
@@ -131,37 +172,12 @@ uint8_t matrix_key_count(void) {
   return count;
 }
 
-static uint8_t read_rows(void) {
-  return
-    (PINC&(1<<7) ? 0 : (1<<0)) |
-    (PIND&(1<<5) ? 0 : (1<<1)) |
-    (PIND&(1<<3) ? 0 : (1<<2)) |
-    (PIND&(1<<1) ? 0 : (1<<3)) |
-    (PINC&(1<<2) ? 0 : (1<<4)) |
-    (PIND&(1<<2) ? 0 : (1<<5)) |
-    (PIND&(1<<4) ? 0 : (1<<6)) |
-    (PIND&(1<<6) ? 0 : (1<<7));
+static matrix_row_t scan_row(void) {
+  return MATRIX_ROW_SCAN;
 }
 
-static void select_col(uint8_t col) {
-  switch (col) {
-  case  0: PORTB = (PORTB & ~0b01111111) | 0b01100100; break;
-  case  1: PORTB = (PORTB & ~0b01111111) | 0b01101100; break;
-  case  2: PORTB = (PORTB & ~0b01111111) | 0b01100010; break;
-  case  3: PORTB = (PORTB & ~0b01111111) | 0b01111010; break;
-  case  4: PORTB = (PORTB & ~0b01111111) | 0b01100110; break;
-  case  5: PORTB = (PORTB & ~0b01111111) | 0b01110110; break;
-  case  6: PORTB = (PORTB & ~0b01111111) | 0b01101110; break;
-  case  7: PORTB = (PORTB & ~0b01111111) | 0b01111110; break;
-  case  8: PORTB = (PORTB & ~0b01111111) | 0b01000001; break;
-  case  9: PORTB = (PORTB & ~0b01111111) | 0b00100001; break;
-  case 10: PORTB = (PORTB & ~0b01111111) | 0b01101010; break;
-  case 11: PORTB = (PORTB & ~0b01111111) | 0b01110010; break;
-  case 12: PORTB = (PORTB & ~0b01111111) | 0b01111100; break;
-  case 13: PORTB = (PORTB & ~0b01111111) | 0b01110100; break;
-  case 14: PORTB = (PORTB & ~0b01111111) | 0b01111000; break;
-  case 15: PORTB = (PORTB & ~0b01111111) | 0b01110000; break;
-  case 16: PORTB = (PORTB & ~0b01111111) | 0b01100000; break;
-  case 17: PORTB = (PORTB & ~0b01111111) | 0b01101000; break;
+static void select_row(uint8_t row) {
+  switch (row) {
+    MATRIX_ROW_SELECT;
   }
 }
\ No newline at end of file

From 4a97ef6c48ce7fee2b58c6a175c1c8003267a428 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 19:55:55 -0700
Subject: [PATCH 081/163] start to define keymap; annoying because rows and
 columns are swapped from schematic

---
 keyboards/frosty_flake/frosty_flake.h         | 74 +++++++++++++++++++
 .../frosty_flake/keymaps/default/keymap.c     | 11 ++-
 keyboards/frosty_flake/matrix.c               |  4 +-
 3 files changed, 84 insertions(+), 5 deletions(-)

diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h
index 90ea25ed9..767efcbd8 100644
--- a/keyboards/frosty_flake/frosty_flake.h
+++ b/keyboards/frosty_flake/frosty_flake.h
@@ -7,6 +7,7 @@
 // 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
+#if 0
 #define KEYMAP( \
     k00, k01, k02, \
       k10,  k11   \
@@ -15,5 +16,78 @@
     { k00, k01,   k02 }, \
     { k10, KC_NO, k11 }, \
 }
+#endif
+
+/*
+  Matrix col/row mapping
+
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
+  `----'    `-------------------' `-------------------' `-------------------' `--------------'
+  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
+  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
+  |-------------------------------------------------------------------------| |--------------| |-------------------|
+  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
+  |-------------------------------------------------------------------------| '--------------' |--------------     |
+  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
+  |-------------------------------------------------------------------------|      ,----.      |-------------------|
+  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
+  |-------------------------------------------------------------------------| ,--------------. |--------------     |
+  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
+  `-------------------------------------------------------------------------' `--------------' `-------------------'
+*/
+
+#define KEYMAP( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+/*          0       1       2       3       4       5       6       7       */ \
+/* A */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* B */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* C */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* D */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* E */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* F */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* G */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* H */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* I */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* J */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KJ6,    KC_NO   }, \
+/* K */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* L */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* M */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* N */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* O */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* P */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* Q */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* R */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }  \
+}
+
+#if 0
+#define KEYMAP( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
+/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
+/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
+/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
+/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
+/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
+}
+#endif
 
 #endif
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c
index e55355566..90711732f 100644
--- a/keyboards/frosty_flake/keymaps/default/keymap.c
+++ b/keyboards/frosty_flake/keymaps/default/keymap.c
@@ -1,10 +1,13 @@
 #include "frosty_flake.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP( /* Base */
-  KC_A,  KC_1,  KC_H, \
-    KC_TAB,  KC_SPC   \
-),
+[0] = KEYMAP(\
+       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_PSCR,KC_SLCK,KC_PAUS,                        \
+       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_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+       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_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      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_P4,  KC_P5,  KC_P6,      \
+      KC_LSFT,KC_NUBS,   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_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
 };
 
 const uint16_t PROGMEM fn_actions[] = {
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
index 70456ada3..07b9f6dd6 100644
--- a/keyboards/frosty_flake/matrix.c
+++ b/keyboards/frosty_flake/matrix.c
@@ -151,11 +151,13 @@ inline matrix_row_t matrix_get_row(uint8_t row) {
   return matrix[row];
 }
 
+static const char ROW_NAMES[] = "ABCDEFGHIJKLMNOPQR";
+
 void matrix_print(void) {
   print("\nr/c 01234567\n");
   for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
     matrix_row_t row_scan = matrix_get_row(row);
-    xprintf("%02X: ", row);
+    xprintf("%c:  ", ROW_NAMES[row]);
     for (uint8_t col = 0; col < MATRIX_COLS; col++) {
       bool curr_bit = row_scan & (1<<col);
       xprintf("%c", curr_bit ? '*' : '.');

From a43ae7c92fd2c41b283d03a8543677638a7c61f1 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 20:33:41 -0700
Subject: [PATCH 082/163] Swap rows and columns to match the schematic

---
 keyboards/frosty_flake/config.h               |   4 +-
 keyboards/frosty_flake/frosty_flake.h         |  43 -----
 .../frosty_flake/keymaps/default/keymap.c     |   3 +-
 keyboards/frosty_flake/matrix.c               | 150 +++++++-----------
 4 files changed, 60 insertions(+), 140 deletions(-)

diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h
index 507e6a6b6..f03cecb3e 100644
--- a/keyboards/frosty_flake/config.h
+++ b/keyboards/frosty_flake/config.h
@@ -36,8 +36,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* key matrix size */
-#define MATRIX_ROWS 18
-#define MATRIX_COLS 8
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 18
 
 /*
  * Keyboard Matrix Assignments
diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h
index 767efcbd8..3b52df6ba 100644
--- a/keyboards/frosty_flake/frosty_flake.h
+++ b/keyboards/frosty_flake/frosty_flake.h
@@ -7,16 +7,6 @@
 // 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
-#if 0
-#define KEYMAP( \
-    k00, k01, k02, \
-      k10,  k11   \
-) \
-{ \
-    { k00, k01,   k02 }, \
-    { k10, KC_NO, k11 }, \
-}
-#endif
 
 /*
   Matrix col/row mapping
@@ -36,38 +26,6 @@
   | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
   `-------------------------------------------------------------------------' `--------------' `-------------------'
 */
-
-#define KEYMAP( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
-  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
-) \
-{ \
-/*          0       1       2       3       4       5       6       7       */ \
-/* A */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* B */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* C */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* D */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* E */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* F */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* G */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* H */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* I */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* J */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KJ6,    KC_NO   }, \
-/* K */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* L */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* M */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* N */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* O */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* P */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* Q */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* R */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }  \
-}
-
-#if 0
 #define KEYMAP( \
   KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
   KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
@@ -88,6 +46,5 @@
 /* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
 /* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
 }
-#endif
 
 #endif
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c
index 90711732f..4383f7a8d 100644
--- a/keyboards/frosty_flake/keymaps/default/keymap.c
+++ b/keyboards/frosty_flake/keymaps/default/keymap.c
@@ -35,8 +35,7 @@ void matrix_init_user(void) {
 }
 
 void matrix_scan_user(void) {
-    if (matrix_is_modified())
-        matrix_print();
+    matrix_print();
 }
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
index 07b9f6dd6..f289f506a 100644
--- a/keyboards/frosty_flake/matrix.c
+++ b/keyboards/frosty_flake/matrix.c
@@ -1,5 +1,5 @@
 /*
-  Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
+  Copyright 2017 Gabriel Young <gabeplaysdrums@live.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
@@ -24,9 +24,6 @@
 #include "util.h"
 #include "matrix.h"
 
-#ifndef CONFIG_SPECIFIC_H
-#define CONFIG_SPECIFIC_H
-
 #define CONFIG_LED_IO \
   DDRB |= (1<<7); \
   DDRC |= (1<<5) | (1<<6);
@@ -38,85 +35,40 @@
 #define USB_LED_SCROLL_LOCK_ON  PORTC &= ~(1<<6)
 #define USB_LED_SCROLL_LOCK_OFF PORTC |=  (1<<6)
 
-#define CONFIG_MATRIX_IO   \
-  /* Column output pins */ \
-  DDRD  |=  0b01111011;    \
-  /* Row input pins */     \
-  DDRC  &= ~0b10000000;    \
-  DDRB  &= ~0b01111111;    \
-  PORTC |=  0b10000000;    \
-  PORTB |=  0b01111111;
-
-#define MATRIX_ROW_SCAN                      \
-  (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) | \
-  (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) | \
-  (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \
-  (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) | \
-  (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \
-  (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) | \
-  (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) | \
-  (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
-
-#define MATRIX_ROW_SELECT                                     \
-  case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break; \
-  case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break; \
-  case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break; \
-  case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break; \
-  case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break; \
-  case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break; \
-  case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break; \
-  case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break; \
-  case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break; \
-  case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break; \
-  case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break; \
-  case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break; \
-  case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break; \
-  case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break; \
-  case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break; \
-  case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break; \
-  case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break; \
-  case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
-
-#endif
-
 #ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 0
+#   define DEBOUNCING_DELAY 5
 #endif
 static uint8_t debouncing = DEBOUNCING_DELAY;
 
 static matrix_row_t matrix[MATRIX_ROWS];
 static matrix_row_t matrix_debouncing[MATRIX_ROWS];
 
-static matrix_row_t scan_row(void);
-static void select_row(uint8_t row);
-
-inline uint8_t matrix_rows(void) {
-  return MATRIX_ROWS;
-}
-
-inline uint8_t matrix_cols(void) {
-  return MATRIX_COLS;
-}
+static matrix_row_t scan_col(void);
+static void select_col(uint8_t row);
 
 void matrix_init(void) {
-  CONFIG_MATRIX_IO;
+    /* Row output pins */
+    DDRD  |=  0b01111011;
+    /* Column input pins */
+    DDRC  &= ~0b10000000;
+    DDRB  &= ~0b01111111;
+    PORTC |=  0b10000000;
+    PORTB |=  0b01111111;
 
-  for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
-    matrix[i] = 0;
-    matrix_debouncing[i] = 0;
-  }
+    for (uint8_t i=0; i < MATRIX_ROWS; i++)
+        matrix[i] = matrix_debouncing[i] = 0;
 
-  matrix_init_quantum();
+    matrix_init_quantum();
 }
 
 uint8_t matrix_scan(void) {
-  for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-    select_row(row);
+  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+    select_col(col);
     _delay_us(3);
-    matrix_row_t row_scan = scan_row();
-    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+    matrix_row_t col_scan = scan_col();
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
       bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-      bool curr_bit = row_scan & (1<<col);
+      bool curr_bit = col_scan & (1<<row);
       if (prev_bit != curr_bit) {
         matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
         debouncing = DEBOUNCING_DELAY;
@@ -136,30 +88,17 @@ uint8_t matrix_scan(void) {
   return 1;
 }
 
-bool matrix_is_modified(void) {
-  if (debouncing)
-    return false;
-  else
-    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];
 }
 
-static const char ROW_NAMES[] = "ABCDEFGHIJKLMNOPQR";
-
 void matrix_print(void) {
-  print("\nr/c 01234567\n");
+  print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
   for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-    matrix_row_t row_scan = matrix_get_row(row);
-    xprintf("%c:  ", ROW_NAMES[row]);
+    matrix_row_t matrix_row = matrix_get_row(row);
+    xprintf("%02X: ", row);
     for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-      bool curr_bit = row_scan & (1<<col);
+      bool curr_bit = matrix_row & (1<<col);
       xprintf("%c", curr_bit ? '*' : '.');
     }
     print("\n");
@@ -168,18 +107,43 @@ void matrix_print(void) {
 
 uint8_t matrix_key_count(void) {
   uint8_t count = 0;
-  for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-    count += bitpop32(matrix[i]);
-  }
+  for (uint8_t row = 0; row < MATRIX_ROWS; row++)
+    count += bitpop32(matrix[row]);
   return count;
 }
 
-static matrix_row_t scan_row(void) {
-  return MATRIX_ROW_SCAN;
+static matrix_row_t scan_col(void) {
+    return (
+        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
+        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
+        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
+        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
+        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
+        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
+        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
+        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
+    );
 }
 
-static void select_row(uint8_t row) {
-  switch (row) {
-    MATRIX_ROW_SELECT;
-  }
+static void select_col(uint8_t col) {
+    switch (col) {
+        case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
+        case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
+        case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
+        case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
+        case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
+        case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
+        case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
+        case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
+        case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
+        case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
+        case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
+        case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
+        case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
+        case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
+        case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
+        case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
+        case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
+        case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
+    }
 }
\ No newline at end of file

From 7e9ca9a97612a5df11b4a2e466f34df0fd62564e Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 20:45:10 -0700
Subject: [PATCH 083/163] support LEDs

---
 keyboards/frosty_flake/frosty_flake.c | 40 +++++++++++++------
 keyboards/frosty_flake/matrix.c       | 55 +++++++++++----------------
 2 files changed, 51 insertions(+), 44 deletions(-)

diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c
index 22979a451..ed1736184 100644
--- a/keyboards/frosty_flake/frosty_flake.c
+++ b/keyboards/frosty_flake/frosty_flake.c
@@ -1,28 +1,46 @@
 #include "frosty_flake.h"
 
 void matrix_init_kb(void) {
-	// put your keyboard start-up code here
-	// runs once when the firmware starts up
+    // put your keyboard start-up code here
+    // runs once when the firmware starts up
 
-	matrix_init_user();
+    matrix_init_user();
 }
 
 void matrix_scan_kb(void) {
-	// put your looping keyboard code here
-	// runs every cycle (a lot)
+    // put your looping keyboard code here
+    // runs every cycle (a lot)
 
-	matrix_scan_user();
+    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
+    // put your per-action keyboard code here
+    // runs for every action, just before processing by the firmware
 
-	return process_record_user(keycode, record);
+    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
+    DDRB |= (1<<7);
+    DDRC |= (1<<5) | (1<<6);
 
-	led_set_user(usb_led);
+    print_dec(usb_led);
+
+    if (usb_led & (1<<USB_LED_CAPS_LOCK))
+        PORTC &= ~(1<<5);
+    else
+        PORTC |=  (1<<5);
+
+    if (usb_led & (1<<USB_LED_NUM_LOCK))
+        PORTB &= ~(1<<7);
+    else
+        PORTB |=  (1<<7);
+
+    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
+        PORTC &= ~(1<<6);
+    else
+        PORTC |=  (1<<6);
+
+    led_set_user(usb_led);
 }
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
index f289f506a..5d711a660 100644
--- a/keyboards/frosty_flake/matrix.c
+++ b/keyboards/frosty_flake/matrix.c
@@ -24,17 +24,6 @@
 #include "util.h"
 #include "matrix.h"
 
-#define CONFIG_LED_IO \
-  DDRB |= (1<<7); \
-  DDRC |= (1<<5) | (1<<6);
-
-#define USB_LED_CAPS_LOCK_ON    PORTC &= ~(1<<5)
-#define USB_LED_CAPS_LOCK_OFF   PORTC |=  (1<<5)
-#define USB_LED_NUM_LOCK_ON     PORTB &= ~(1<<7)
-#define USB_LED_NUM_LOCK_OFF    PORTB |=  (1<<7)
-#define USB_LED_SCROLL_LOCK_ON  PORTC &= ~(1<<6)
-#define USB_LED_SCROLL_LOCK_OFF PORTC |=  (1<<6)
-
 #ifndef DEBOUNCING_DELAY
 #   define DEBOUNCING_DELAY 5
 #endif
@@ -62,34 +51,34 @@ void matrix_init(void) {
 }
 
 uint8_t matrix_scan(void) {
-  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-    select_col(col);
-    _delay_us(3);
-    matrix_row_t col_scan = scan_col();
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-      bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-      bool curr_bit = col_scan & (1<<row);
-      if (prev_bit != curr_bit) {
-        matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
-        debouncing = DEBOUNCING_DELAY;
-      }
+    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+        select_col(col);
+        _delay_us(3);
+        matrix_row_t col_scan = scan_col();
+        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+            bool curr_bit = col_scan & (1<<row);
+            if (prev_bit != curr_bit) {
+                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
+                debouncing = DEBOUNCING_DELAY;
+            }
+        }
     }
-  }
 
-  if (debouncing) {
-    if (--debouncing)
-      _delay_ms(1);
-    else
-      for (uint8_t i = 0; i < MATRIX_ROWS; i++)
-        matrix[i] = matrix_debouncing[i];
-  }
+    if (debouncing) {
+        if (--debouncing)
+            _delay_ms(1);
+        else
+            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
+                matrix[i] = matrix_debouncing[i];
+    }
 
-  matrix_scan_quantum();
-  return 1;
+    matrix_scan_quantum();
+    return 1;
 }
 
 inline matrix_row_t matrix_get_row(uint8_t row) {
-  return matrix[row];
+    return matrix[row];
 }
 
 void matrix_print(void) {

From df874a228af52294c731348dbf271fd76bbdea68 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 20:46:56 -0700
Subject: [PATCH 084/163] fix whitespace

---
 keyboards/frosty_flake/matrix.c | 99 ++++++++++++++++-----------------
 1 file changed, 48 insertions(+), 51 deletions(-)

diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
index 5d711a660..05dffdb64 100644
--- a/keyboards/frosty_flake/matrix.c
+++ b/keyboards/frosty_flake/matrix.c
@@ -32,8 +32,41 @@ static uint8_t debouncing = DEBOUNCING_DELAY;
 static matrix_row_t matrix[MATRIX_ROWS];
 static matrix_row_t matrix_debouncing[MATRIX_ROWS];
 
-static matrix_row_t scan_col(void);
-static void select_col(uint8_t row);
+static matrix_row_t scan_col(void) {
+    return (
+        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
+        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
+        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
+        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
+        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
+        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
+        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
+        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
+    );
+}
+
+static void select_col(uint8_t col) {
+    switch (col) {
+        case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
+        case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
+        case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
+        case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
+        case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
+        case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
+        case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
+        case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
+        case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
+        case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
+        case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
+        case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
+        case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
+        case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
+        case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
+        case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
+        case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
+        case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
+    }
+}
 
 void matrix_init(void) {
     /* Row output pins */
@@ -82,57 +115,21 @@ inline matrix_row_t matrix_get_row(uint8_t row) {
 }
 
 void matrix_print(void) {
-  print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
-  for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-    matrix_row_t matrix_row = matrix_get_row(row);
-    xprintf("%02X: ", row);
-    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-      bool curr_bit = matrix_row & (1<<col);
-      xprintf("%c", curr_bit ? '*' : '.');
+    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+        matrix_row_t matrix_row = matrix_get_row(row);
+        xprintf("%02X: ", row);
+        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+            bool curr_bit = matrix_row & (1<<col);
+            xprintf("%c", curr_bit ? '*' : '.');
+        }
+        print("\n");
     }
-    print("\n");
-  }
 }
 
 uint8_t matrix_key_count(void) {
-  uint8_t count = 0;
-  for (uint8_t row = 0; row < MATRIX_ROWS; row++)
-    count += bitpop32(matrix[row]);
-  return count;
-}
-
-static matrix_row_t scan_col(void) {
-    return (
-        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
-        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
-        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
-        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
-        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
-        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
-        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
-        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
-    );
-}
-
-static void select_col(uint8_t col) {
-    switch (col) {
-        case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
-        case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
-        case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
-        case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
-        case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
-        case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
-        case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
-        case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
-        case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
-        case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
-        case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
-        case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
-        case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
-        case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
-        case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
-        case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
-        case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
-        case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
-    }
+    uint8_t count = 0;
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
+        count += bitpop32(matrix[row]);
+    return count;
 }
\ No newline at end of file

From db2da37561e836cd55f1ae279be4c8d1adbb648c Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 20:56:45 -0700
Subject: [PATCH 085/163] update docs

---
 keyboards/frosty_flake/readme.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md
index a32965061..ef0e7492b 100644
--- a/keyboards/frosty_flake/readme.md
+++ b/keyboards/frosty_flake/readme.md
@@ -1,6 +1,10 @@
 frosty_flake keyboard firmware
 ======================
 
+This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/).
+
+The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers), but has been cleaned up to match the [schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf) and gone through some minor refactoring for QMK.
+
 ## Quantum MK Firmware
 
 For the full Quantum feature list, see [the parent readme](/).

From a3a304db9ae09c3c5532c43e553cc24d3f9b29a2 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 21:11:17 -0700
Subject: [PATCH 086/163] clean up docs and provide defaults for keymap

---
 keyboards/frosty_flake/frosty_flake.c         | 17 +++++++++
 .../frosty_flake/keymaps/default/Makefile     |  4 +-
 .../frosty_flake/keymaps/default/keymap.c     | 38 +------------------
 keyboards/frosty_flake/readme.md              |  2 +-
 4 files changed, 21 insertions(+), 40 deletions(-)

diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c
index ed1736184..1cd476038 100644
--- a/keyboards/frosty_flake/frosty_flake.c
+++ b/keyboards/frosty_flake/frosty_flake.c
@@ -44,3 +44,20 @@ void led_set_kb(uint8_t usb_led) {
 
     led_set_user(usb_led);
 }
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+__attribute__ ((weak))
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+__attribute__ ((weak))
+void led_set_user(uint8_t usb_led) {
+}
\ No newline at end of file
diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile
index 088766680..9d3df5964 100644
--- a/keyboards/frosty_flake/keymaps/default/Makefile
+++ b/keyboards/frosty_flake/keymaps/default/Makefile
@@ -3,9 +3,9 @@
 #   the appropriate keymap folder that will get included automatically
 #
 BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
 EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
-CONSOLE_ENABLE = yes         # Console for debug(+400)
+CONSOLE_ENABLE = no         # Console for debug(+400)
 COMMAND_ENABLE = yes        # Commands for debug and configuration
 NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c
index 4383f7a8d..4dc7ed655 100644
--- a/keyboards/frosty_flake/keymaps/default/keymap.c
+++ b/keyboards/frosty_flake/keymaps/default/keymap.c
@@ -8,40 +8,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
       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_P4,  KC_P5,  KC_P6,      \
       KC_LSFT,KC_NUBS,   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_P1,  KC_P2,  KC_P3,KC_PENT, \
       KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
-};
-
-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) {
-    debug_enable = true;
-}
-
-void matrix_scan_user(void) {
-    matrix_print();
-}
-
-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
+};
\ No newline at end of file
diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md
index ef0e7492b..ff440e33b 100644
--- a/keyboards/frosty_flake/readme.md
+++ b/keyboards/frosty_flake/readme.md
@@ -1,7 +1,7 @@
 frosty_flake keyboard firmware
 ======================
 
-This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/).
+This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Cooler Master Quick Fire Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/).
 
 The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers), but has been cleaned up to match the [schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf) and gone through some minor refactoring for QMK.
 

From b37f510f323b532360f38afb6f0bb29bc61eaab3 Mon Sep 17 00:00:00 2001
From: Gabriel Young <gabeplaysdrums@live.com>
Date: Sun, 19 Mar 2017 21:18:15 -0700
Subject: [PATCH 087/163] clean up config

---
 keyboards/frosty_flake/config.h | 30 ++++--------------------------
 1 file changed, 4 insertions(+), 26 deletions(-)

diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h
index f03cecb3e..2c73f1074 100644
--- a/keyboards/frosty_flake/config.h
+++ b/keyboards/frosty_flake/config.h
@@ -36,39 +36,17 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 18
+#define MATRIX_ROWS 8   // Row0 - Row7 in the schematic
+#define MATRIX_COLS 18  // ColA - ColR in the schematic
 
 /*
  * 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 { D5, D4, D6, D2, D1, D0 }
-//#define MATRIX_COL_PINS << n/a >>
-//#define UNUSED_PINS { B0, C4, D3 }
-
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
-//#define DIODE_DIRECTION << n/a >>
-
-// #define BACKLIGHT_PIN B7
-// #define BACKLIGHT_BREATHING
-// #define BACKLIGHT_LEVELS 3
-
+ */
+#define UNUSED_PINS { B0, C4, D3 }
 
 /* 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 */

From 3399e392977f91b1993e1ac581ff5a054a45848b Mon Sep 17 00:00:00 2001
From: Stephen Tudor <smt@smt.io>
Date: Mon, 20 Mar 2017 07:26:28 -0400
Subject: [PATCH 088/163] Fix shift tap-dance (can't use one-shot layer)

---
 keyboards/satan/keymaps/smt/Makefile |  3 +-
 keyboards/satan/keymaps/smt/keymap.c | 43 +++++++---------------------
 2 files changed, 12 insertions(+), 34 deletions(-)

diff --git a/keyboards/satan/keymaps/smt/Makefile b/keyboards/satan/keymaps/smt/Makefile
index 2a7ff2779..afcd025e1 100644
--- a/keyboards/satan/keymaps/smt/Makefile
+++ b/keyboards/satan/keymaps/smt/Makefile
@@ -8,13 +8,14 @@ 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 = yes       # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = yes      # 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
+TAP_DANCE_ENABLE = yes      # Enable tap dance
 
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
index 4ac016f21..7f9e9c2d5 100644
--- a/keyboards/satan/keymaps/smt/keymap.c
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -20,6 +20,10 @@ enum planck_keycodes {
   DVORAK
 };
 
+enum {
+  TD_SHIFT_RAISE = 0
+};
+
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
 
@@ -28,7 +32,7 @@ enum planck_keycodes {
 #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
 #define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
 #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
-#define SFT_RSE     TD(KC_LSFT, OS(_RAISE))     // Double-tap for RAISE one-shot, otherwise Left Shift
+#define SFT_RSE     TD(TD_SHIFT_RAISE)          // Double-tap for RAISE one-shot, otherwise Left Shift
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* Keymap _QWERTY: (Base Layer) Default Layer
@@ -170,36 +174,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   return true;
 }
 
-enum function_id {
-    SHIFT_ESC,
+// Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+  // Tap/hold once for Shift, tap twice for raise layer
+  [TD_SHIFT_RAISE] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, _RAISE)
+// Other declarations would go here, separated by commas, if you have them
 };
-
-const uint16_t PROGMEM fn_actions[] = {
-  [0]  = ACTION_FUNCTION(SHIFT_ESC),
-};
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  static uint8_t shift_esc_shift_mask;
-  switch (id) {
-    case SHIFT_ESC:
-      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
-      if (record->event.pressed) {
-        if (shift_esc_shift_mask) {
-          add_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          add_key(KC_ESC);
-          send_keyboard_report();
-        }
-      } else {
-        if (shift_esc_shift_mask) {
-          del_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          del_key(KC_ESC);
-          send_keyboard_report();
-        }
-      }
-      break;
-  }
-}

From b10d95070831dde5801e930c615612dec3a6fd11 Mon Sep 17 00:00:00 2001
From: Stephen Tudor <smt@smt.io>
Date: Mon, 20 Mar 2017 07:43:24 -0400
Subject: [PATCH 089/163] Use normal backtick in ESC spot - I've mapped ESC to
 caps lock

---
 keyboards/satan/keymaps/smt/keymap.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
index 7f9e9c2d5..1a2bc9769 100644
--- a/keyboards/satan/keymaps/smt/keymap.c
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * `-----------------------------------------------------------'
    */
 [_QWERTY] = KEYMAP_ANSI(
-  F(0),    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_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, \
   HPR_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, \
   CTL_ESC, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,         KC_ENT,  \
   SFT_RSE,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * `-----------------------------------------------------------'
    */
 [_COLEMAK] = KEYMAP_ANSI(
-  F(0),    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_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, \
   HPR_TAB, KC_Q,   KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_LBRC, KC_RBRC,KC_BSLS, \
   CTL_ESC, KC_A,   KC_R,   KC_S,   KC_T,   KC_D,   KC_H,   KC_N,   KC_E,   KC_I,   KC_O   ,KC_QUOT,         KC_ENT,  \
   SFT_RSE,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * `-----------------------------------------------------------'
    */
 [_DVORAK] = KEYMAP_ANSI(
-  F(0),    KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_LBRC, KC_RBRC,KC_BSPC, \
+  KC_GRV,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_LBRC, KC_RBRC,KC_BSPC, \
   HPR_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_SLSH, KC_EQL, KC_BSLS, \
   CTL_ESC, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_MINS,         KC_ENT,  \
   SFT_RSE,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
@@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * `-----------------------------------------------------------'
    */
 [_LOWER] = KEYMAP_ANSI(
-  KC_GRV ,KC_F1  ,KC_F2  ,KC_F3  ,KC_F4  ,KC_F5  ,KC_F6  ,KC_F7  ,KC_F8  ,KC_F9  ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL,  \
+  _______,KC_F1  ,KC_F2  ,KC_F3  ,KC_F4  ,KC_F5  ,KC_F6  ,KC_F7  ,KC_F8  ,KC_F9  ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL,  \
   _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
   _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,KC_VOLU,KC_PGUP        ,_______, \
   KC_LSFT        ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN        ,_______, \

From 34c5f8094e3a07dfff344f95b29407c9efaa0e4c Mon Sep 17 00:00:00 2001
From: Stephen Tudor <smt@smt.io>
Date: Mon, 20 Mar 2017 07:43:45 -0400
Subject: [PATCH 090/163] Remove tap-dance. Raise will be accessed via holding
 shift while lower is active

---
 keyboards/satan/keymaps/smt/Makefile |  1 -
 keyboards/satan/keymaps/smt/keymap.c | 32 ++++++++++------------------
 2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/keyboards/satan/keymaps/smt/Makefile b/keyboards/satan/keymaps/smt/Makefile
index afcd025e1..0c9ae824f 100644
--- a/keyboards/satan/keymaps/smt/Makefile
+++ b/keyboards/satan/keymaps/smt/Makefile
@@ -15,7 +15,6 @@ 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
-TAP_DANCE_ENABLE = yes      # Enable tap dance
 
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
index 1a2bc9769..a21d3eb86 100644
--- a/keyboards/satan/keymaps/smt/keymap.c
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -17,11 +17,9 @@
 enum planck_keycodes {
   QWERTY = SAFE_RANGE,
   COLEMAK,
-  DVORAK
-};
-
-enum {
-  TD_SHIFT_RAISE = 0
+  DVORAK,
+  LOWER,
+  RAISE
 };
 
 #define _______ KC_TRNS
@@ -32,7 +30,6 @@ enum {
 #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
 #define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
 #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
-#define SFT_RSE     TD(TD_SHIFT_RAISE)          // Double-tap for RAISE one-shot, otherwise Left Shift
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* Keymap _QWERTY: (Base Layer) Default Layer
@@ -52,7 +49,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_MINS, KC_EQL, KC_BSPC, \
   HPR_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, \
   CTL_ESC, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,         KC_ENT,  \
-  SFT_RSE,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
+  KC_LSFT,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
   KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
 
   /* Keymap _COLEMAK: (Base Layer) Default Layer
@@ -72,7 +69,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_MINS, KC_EQL, KC_BSPC, \
   HPR_TAB, KC_Q,   KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_LBRC, KC_RBRC,KC_BSLS, \
   CTL_ESC, KC_A,   KC_R,   KC_S,   KC_T,   KC_D,   KC_H,   KC_N,   KC_E,   KC_I,   KC_O   ,KC_QUOT,         KC_ENT,  \
-  SFT_RSE,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
+  KC_LSFT,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
   KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
 
   /* Keymap _DVORAK: (Base Layer) Default Layer
@@ -92,7 +89,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_LBRC, KC_RBRC,KC_BSPC, \
   HPR_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_SLSH, KC_EQL, KC_BSLS, \
   CTL_ESC, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_MINS,         KC_ENT,  \
-  SFT_RSE,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
+  KC_LSFT,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
   KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
 
   /* Keymap _LOWER: Function Layer
@@ -112,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   _______,KC_F1  ,KC_F2  ,KC_F3  ,KC_F4  ,KC_F5  ,KC_F6  ,KC_F7  ,KC_F8  ,KC_F9  ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL,  \
   _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
   _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,KC_VOLU,KC_PGUP        ,_______, \
-  KC_LSFT        ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN        ,_______, \
+  RAISE          ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN        ,_______, \
   _______,_______,_______                        ,_______                        ,_______,_______,_______,_______),
 
   /* Keymap _RAISE: Function Layer
@@ -133,14 +130,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
   _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
-  KC_LSFT        ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______        ,_______, \
-  _______,_______,_______                        ,_______                        ,_______,_______,XXXXXXX,_______
+  _______        ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______        ,_______, \
+  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______
   #else
   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
   _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
-  KC_LSFT        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, \
-  _______,_______,_______                        ,_______                        ,_______,_______,XXXXXXX,_______
+  _______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, \
+  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______
   #endif
   )
 };
@@ -173,10 +170,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   }
   return true;
 }
-
-// Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
-  // Tap/hold once for Shift, tap twice for raise layer
-  [TD_SHIFT_RAISE] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, _RAISE)
-// Other declarations would go here, separated by commas, if you have them
-};

From d7f2bd29646c585434a8f19e7b9df0d3a6ea7bef Mon Sep 17 00:00:00 2001
From: Dylan Khor <khord@simspace.com>
Date: Mon, 20 Mar 2017 13:14:48 -0400
Subject: [PATCH 091/163] add pgup, pgdn, home, end

---
 keyboards/planck/keymaps/khord/keymap.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index 6f19966f2..b6adb603e 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter |
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | | END  | HOME |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_LOWER] = {
   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),KC_END, KC_HOME, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 
@@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter |
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |PG DN |PG UP |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_RAISE] = {
   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 

From dce3847ebb900ffebd9038da255309cbac634170 Mon Sep 17 00:00:00 2001
From: Stephen Tudor <smt@smt.io>
Date: Mon, 20 Mar 2017 14:12:43 -0400
Subject: [PATCH 092/163] Use single _FUNC layer. Move RESET and base
 layout-changing keys to _FUNC.

---
 keyboards/satan/keymaps/smt/keymap.c | 55 ++++++----------------------
 1 file changed, 12 insertions(+), 43 deletions(-)

diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
index a21d3eb86..d90849914 100644
--- a/keyboards/satan/keymaps/smt/keymap.c
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -11,15 +11,12 @@
 #define _QWERTY 0
 #define _COLEMAK 1
 #define _DVORAK 2
-#define _LOWER 3
-#define _RAISE 4
+#define _FUNC 3
 
 enum planck_keycodes {
   QWERTY = SAFE_RANGE,
   COLEMAK,
-  DVORAK,
-  LOWER,
-  RAISE
+  DVORAK
 };
 
 #define _______ KC_TRNS
@@ -50,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   HPR_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, \
   CTL_ESC, 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,         SFT_ENT, \
-  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_FUNC),KC_RCTL),
 
   /* Keymap _COLEMAK: (Base Layer) Default Layer
    * ,-----------------------------------------------------------.
@@ -70,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   HPR_TAB, KC_Q,   KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_LBRC, KC_RBRC,KC_BSLS, \
   CTL_ESC, KC_A,   KC_R,   KC_S,   KC_T,   KC_D,   KC_H,   KC_N,   KC_E,   KC_I,   KC_O   ,KC_QUOT,         KC_ENT,  \
   KC_LSFT,         KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,         SFT_ENT, \
-  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_FUNC),KC_RCTL),
 
   /* Keymap _DVORAK: (Base Layer) Default Layer
    * ,-----------------------------------------------------------.
@@ -90,55 +87,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   HPR_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_SLSH, KC_EQL, KC_BSLS, \
   CTL_ESC, KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_MINS,         KC_ENT,  \
   KC_LSFT,         KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,            SFT_ENT, \
-  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL),
+  KC_LCTL, KC_LGUI,KC_LALT,                      KC_SPC,                           KC_RALT,KC_RGUI,MO(_FUNC),KC_RCTL),
 
-  /* Keymap _LOWER: Function Layer
+  /* Keymap _FUNC: Function Layer
    * ,-----------------------------------------------------------.
    * |   | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
    * |-----------------------------------------------------------|
-   * |     |Hom| UP|End|   |   |   |   |   |   |   |BL-|BL+|BL   |
+   * |     |Hom| UP|End|   |   |   |Qwt|Cmk|Dvk|   |BL-|BL+|BL   |
    * |-----------------------------------------------------------|
    * |      |LFT| DN| RT|   |   |LFT| DN| UP| RT|Vo+|Pg+|        |
    * |-----------------------------------------------------------|
    * |        |   |   |Prv|Ply|Nxt|   |   |   |Vo-|Pg-|          |
    * |-----------------------------------------------------------|
-   * |    |    |    |                        |    |    |    |    |
+   * |RESET|    |    |                       |    |    |    |    |
    * `-----------------------------------------------------------'
    */
-[_LOWER] = KEYMAP_ANSI(
+[_FUNC] = KEYMAP_ANSI(
   _______,KC_F1  ,KC_F2  ,KC_F3  ,KC_F4  ,KC_F5  ,KC_F6  ,KC_F7  ,KC_F8  ,KC_F9  ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL,  \
-  _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \
+  _______,KC_HOME,KC_UP  ,KC_END ,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,BL_DEC ,BL_INC ,BL_TOGG, \
   _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT,KC_VOLU,KC_PGUP        ,_______, \
-  RAISE          ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN        ,_______, \
-  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______),
-
-  /* Keymap _RAISE: Function Layer
-   * ,-----------------------------------------------------------.
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   | RESET |
-   * |-----------------------------------------------------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |BL-|BL+|BL   |
-   * |-----------------------------------------------------------|
-   * |      |   |   |   |   |   |   |QWT|CLM|DVK|   |   |        |
-   * |-----------------------------------------------------------|
-   * |        | F1|F2 | F3|F4 | F5| F6| F7| F8|   |   |          |
-   * |-----------------------------------------------------------|
-   * |    |    |    |                        |    |    |    |    |
-   * `-----------------------------------------------------------'
-   */
-[_RAISE] = KEYMAP_ANSI(
-  #ifdef RGBLIGHT_ENABLE
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
-  _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
-  _______        ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______        ,_______, \
-  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______
-  #else
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET  , \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
-  _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______        ,_______, \
-  _______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, \
-  _______,_______,_______                        ,_______                        ,_______,_______,_______,_______
-  #endif
+  _______        ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN        ,_______, \
+  RESET  ,_______,_______                        ,_______                        ,_______,_______,_______,_______
   )
 };
 

From 91776772fd5600116e9d02c614813c427a3d4219 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Wed, 15 Mar 2017 16:34:10 -0400
Subject: [PATCH 093/163] Remove line for hands selection via EEPROM, reduce
 tap duration from 200ms to 150ms

---
 keyboards/lets_split/keymaps/hexwire/config.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index 983f8e352..11adbc454 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -18,7 +18,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define USE_SERIAL
 
-#define EE_HANDS
+#define TAPPING_TERM 150
 
 #undef RGBLED_NUM
 #define RGB_DI_PIN B0

From f3e3ff29a346bf917403672f8dbdf08c9f3a83f6 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Wed, 15 Mar 2017 16:34:57 -0400
Subject: [PATCH 094/163] Add Makefile in keymap dir

---
 keyboards/lets_split/keymaps/hexwire/Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/keyboards/lets_split/keymaps/hexwire/Makefile b/keyboards/lets_split/keymaps/hexwire/Makefile
index 1e3cebb14..1e5761278 100644
--- a/keyboards/lets_split/keymaps/hexwire/Makefile
+++ b/keyboards/lets_split/keymaps/hexwire/Makefile
@@ -1 +1,5 @@
 RGBLIGHT_ENABLE = yes
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif

From e5c5902e95840876f1e51c3e8e0a93311676fa27 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Thu, 23 Mar 2017 08:46:10 -0400
Subject: [PATCH 095/163] Move keymap into config file

---
 .../keymaps/hexwire/compact_keymap.h          | 23 -------------
 keyboards/lets_split/keymaps/hexwire/config.h | 32 +++++++++++++++++++
 keyboards/lets_split/keymaps/hexwire/keymap.c |  2 +-
 3 files changed, 33 insertions(+), 24 deletions(-)
 delete mode 100644 keyboards/lets_split/keymaps/hexwire/compact_keymap.h

diff --git a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h
deleted file mode 100644
index d9d063fbf..000000000
--- a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef COMPACT_KEYMAP_H
-#define COMPACT_KEYMAP_H
-
-#define COMPACT_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 \
-  ) \
-  { \
-    { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
-    { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
-    { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
-    { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
-    { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
-    { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
-    { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
-    { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
-  }
-
-#define KC_ KC_TRNS
-
-#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index 11adbc454..38b57266a 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -30,9 +30,41 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #ifdef SUBPROJECT_rev1
     #include "../../rev1/config.h"
+    #define COMPACT_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 \
+    ) \
+    { \
+      { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
+      { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
+      { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
+      { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
+      { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
+      { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
+      { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
+      { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
+    }
 #endif
 #ifdef SUBPROJECT_rev2
     #include "../../rev2/config.h"
+    #define COMPACT_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 \
+      ) \
+      { \
+        { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
+        { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
+        { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
+        { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
+        { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
+        { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
+        { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
+        { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
+      }
 #endif
 #ifdef SUBPROJECT_rev2fliphalf
 	#include "../../rev2fliphalf/config.h"
diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c
index 796a1fcab..f8370490d 100644
--- a/keyboards/lets_split/keymaps/hexwire/keymap.c
+++ b/keyboards/lets_split/keymaps/hexwire/keymap.c
@@ -1,7 +1,6 @@
 #include "lets_split.h"
 #include "action_layer.h"
 #include "eeconfig.h"
-#include "compact_keymap.h"
 
 extern keymap_config_t keymap_config;
 
@@ -25,6 +24,7 @@ enum custom_keycodes {
   ADJUST,
 };
 
+#define KC_ KC_TRNS
 #define _______ KC_TRNS
 
 #define KC_CAPW LGUI(LSFT(KC_3))        // Capture whole screen

From edfb50ea5616c9361e479ec41d1d2c3d72f2f51c Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Thu, 23 Mar 2017 09:42:32 -0400
Subject: [PATCH 096/163] Initial commit for Atreus50 with working audio

---
 keyboards/atreus50/Makefile                  |   3 +
 keyboards/atreus50/atreus50.c                |  10 +
 keyboards/atreus50/atreus50.h                |  36 +++
 keyboards/atreus50/config.h                  | 163 +++++++++++
 keyboards/atreus50/keymaps/default/Makefile  |   6 +
 keyboards/atreus50/keymaps/default/keymap.c  | 270 +++++++++++++++++++
 keyboards/atreus50/keymaps/default/readme.md |   1 +
 keyboards/atreus50/readme.md                 |  25 ++
 keyboards/atreus50/rules.mk                  |  81 ++++++
 9 files changed, 595 insertions(+)
 create mode 100644 keyboards/atreus50/Makefile
 create mode 100644 keyboards/atreus50/atreus50.c
 create mode 100644 keyboards/atreus50/atreus50.h
 create mode 100644 keyboards/atreus50/config.h
 create mode 100644 keyboards/atreus50/keymaps/default/Makefile
 create mode 100644 keyboards/atreus50/keymaps/default/keymap.c
 create mode 100644 keyboards/atreus50/keymaps/default/readme.md
 create mode 100644 keyboards/atreus50/readme.md
 create mode 100644 keyboards/atreus50/rules.mk

diff --git a/keyboards/atreus50/Makefile b/keyboards/atreus50/Makefile
new file mode 100644
index 000000000..57b2ef62e
--- /dev/null
+++ b/keyboards/atreus50/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
diff --git a/keyboards/atreus50/atreus50.c b/keyboards/atreus50/atreus50.c
new file mode 100644
index 000000000..0ec63216f
--- /dev/null
+++ b/keyboards/atreus50/atreus50.c
@@ -0,0 +1,10 @@
+#include "atreus50.h"
+
+void matrix_init_kb(void) {
+
+    // Turn status LED on
+    //DDRE |= (1<<6);
+    PORTE |= (1<<6);
+
+	matrix_init_user();
+};
\ No newline at end of file
diff --git a/keyboards/atreus50/atreus50.h b/keyboards/atreus50/atreus50.h
new file mode 100644
index 000000000..de06f255e
--- /dev/null
+++ b/keyboards/atreus50/atreus50.h
@@ -0,0 +1,36 @@
+#ifndef ATREUS50_H
+#define ATREUS50_H
+
+#include "quantum.h"
+
+// 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,           k06, k07, k08, k09, k0a, k0b, \
+  k10, k11, k12, k13, k14, k15,           k16, k17, k18, k19, k1a, k1b, \
+  k20, k21, k22, k23, k24, k25,           k26, k27, k28, k29, k2a, k2b, \
+  k30, k31, k32, k33, k34, k35, km0, km1, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+	{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
+	{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
+	{ k20, k21, k22, k23, k24, k25, km0,   k26, k27, k28, k29, k2a, k2b }, \
+	{ k30, k31, k32, k33, k34, k35, km1,   k36, k37, k38, k39, k3a, k3b } \
+}
+
+#define COMPACT_KEYMAP( \
+  k00, k01, k02, k03, k04, k05,           k06, k07, k08, k09, k0a, k0b, \
+  k10, k11, k12, k13, k14, k15,           k16, k17, k18, k19, k1a, k1b, \
+  k20, k21, k22, k23, k24, k25,           k26, k27, k28, k29, k2a, k2b, \
+  k30, k31, k32, k33, k34, k35, km0, km1, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+    { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO,    KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
+    { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO,    KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
+    { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##km0, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
+    { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##km1, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b } \
+}
+
+#define KC_ KC_TRNS
+
+#endif
diff --git a/keyboards/atreus50/config.h b/keyboards/atreus50/config.h
new file mode 100644
index 000000000..dedcc8cae
--- /dev/null
+++ b/keyboards/atreus50/config.h
@@ -0,0 +1,163 @@
+/*
+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       0xBB80
+#define PRODUCT_ID      0x040D
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Hexwire
+#define PRODUCT         Atreus 50 Keyboard
+#define DESCRIPTION     Atreus layout with extra column
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 13
+
+/* Planck PCB default pin-out */
+#define MATRIX_ROW_PINS { D3, D2, D1, D0 }
+#define MATRIX_COL_PINS { D4, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
+#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
+
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN C6
+#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
+
+
+/*
+ * 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/atreus50/keymaps/default/Makefile b/keyboards/atreus50/keymaps/default/Makefile
new file mode 100644
index 000000000..e8556d0d6
--- /dev/null
+++ b/keyboards/atreus50/keymaps/default/Makefile
@@ -0,0 +1,6 @@
+RGBLIGHT_ENABLE = no
+AUDIO_ENABLE = yes
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/atreus50/keymaps/default/keymap.c
new file mode 100644
index 000000000..0a77613c5
--- /dev/null
+++ b/keyboards/atreus50/keymaps/default/keymap.c
@@ -0,0 +1,270 @@
+#include "atreus50.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _MOVEMENT 5
+#define _ADJUST 16
+
+enum preonic_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  MOVEMENT,
+  BACKLIT
+};
+
+// 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  |  -   |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |  `   | Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_MINS, \
+  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, \
+  KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Colemak
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  |  -   |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |  `   | Ctrl | Alt  | GUI  |Lower |    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_MINS, \
+  KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,                      KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, \
+  KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Dvorak
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |  -   |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |  `   | Ctrl | Alt  | GUI  |Lower |    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_MINS, \
+  KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,                      KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
+  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,                      KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT, \
+  KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Lower
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | 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_DEL, \
+  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 \
+),
+
+/* Raise
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | 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_DEL, \
+  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 \
+),
+
+[_MOVEMENT] = KEYMAP( \
+  KC_TILD, KC_EXLM, KC_MUTE, KC_VOLD, KC_VOLU, KC_PERC,                   KC_CIRC, KC_AMPR, KC_UP, KC_LPRN, KC_RPRN, KC_DEL, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6,   KC_LEFT, KC_DOWN, KC_RIGHT, KC_RCBR, KC_PIPE, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,                    KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDOWN, KC_PGUP, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = KEYMAP( \
+  _______, RESET,   _______, _______, _______, _______,                   _______, _______, _______, _______, _______, KC_DEL, \
+  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM,                   AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
+  _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,                     MI_OFF,  _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = {
+  {NOTE_B5, 20},
+  {NOTE_B6, 8},
+  {NOTE_DS6, 20},
+  {NOTE_B6, 8}
+};
+
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+
+float music_scale[][2]     = SONG(MUSIC_SCALE_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 BACKLIT:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+          return false;
+          break;
+      }
+    return true;
+};
+
+void matrix_init_user(void) {
+    #ifdef AUDIO_ENABLE
+        startup_user();
+    #endif
+}
+
+#ifdef AUDIO_ENABLE
+
+void startup_user()
+{
+    _delay_ms(20); // gets rid of tick
+    PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void shutdown_user()
+{
+    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+    _delay_ms(150);
+    stop_all_notes();
+}
+
+void music_on_user(void)
+{
+    music_scale_user();
+}
+
+void music_scale_user(void)
+{
+    PLAY_NOTE_ARRAY(music_scale, false, 0);
+}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/atreus50/keymaps/default/readme.md b/keyboards/atreus50/keymaps/default/readme.md
new file mode 100644
index 000000000..e911968dd
--- /dev/null
+++ b/keyboards/atreus50/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default Preonic layout - largely based on the Planck's
\ No newline at end of file
diff --git a/keyboards/atreus50/readme.md b/keyboards/atreus50/readme.md
new file mode 100644
index 000000000..f0be255a0
--- /dev/null
+++ b/keyboards/atreus50/readme.md
@@ -0,0 +1,25 @@
+Preonic keyboard firmware
+======================
+DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
+
+## Quantum MK Firmware
+
+For the full Quantum feature list, see [the parent readme.md](/readme.md).
+
+## Building
+
+Download or clone the whole firmware and navigate to the keyboards/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. 
+
+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 file in the keymaps folder named `<name>.c` and see keymap document (you can find in top readme.md) and existent 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 **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboards/atreus50/rules.mk b/keyboards/atreus50/rules.mk
new file mode 100644
index 000000000..7770ea2a2
--- /dev/null
+++ b/keyboards/atreus50/rules.mk
@@ -0,0 +1,81 @@
+
+
+# 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 ?= 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.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
+
+avrdude: build
+	ls /dev/tty* > /tmp/1; \
+	echo "Reset your Pro Micro now"; \
+	while [[ -z $$USB ]]; do \
+	  sleep 1; \
+	  ls /dev/tty* > /tmp/2; \
+	  USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
+	done; \
+	avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
+
+.PHONY: avrdude

From 0520341ce48e45ddb53a8b26f8710417af6279e6 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Thu, 23 Mar 2017 11:25:21 -0400
Subject: [PATCH 097/163] Cleanup keymap

---
 keyboards/atreus50/atreus50.c                |   2 +-
 keyboards/atreus50/keymaps/default/keymap.c  | 196 +++++++++----------
 keyboards/atreus50/keymaps/default/readme.md |   1 -
 3 files changed, 89 insertions(+), 110 deletions(-)
 delete mode 100644 keyboards/atreus50/keymaps/default/readme.md

diff --git a/keyboards/atreus50/atreus50.c b/keyboards/atreus50/atreus50.c
index 0ec63216f..225a51bcc 100644
--- a/keyboards/atreus50/atreus50.c
+++ b/keyboards/atreus50/atreus50.c
@@ -7,4 +7,4 @@ void matrix_init_kb(void) {
     PORTE |= (1<<6);
 
 	matrix_init_user();
-};
\ No newline at end of file
+};
diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/atreus50/keymaps/default/keymap.c
index 0a77613c5..8ae096cd8 100644
--- a/keyboards/atreus50/keymaps/default/keymap.c
+++ b/keyboards/atreus50/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
 #define _MOVEMENT 5
 #define _ADJUST 16
 
-enum preonic_keycodes {
+enum custom_keycodes {
   QWERTY = SAFE_RANGE,
   COLEMAK,
   DVORAK,
@@ -30,123 +30,103 @@ enum preonic_keycodes {
 // Fillers to make layering more clear
 #define _______ KC_TRNS
 #define XXXXXXX KC_NO
+#define KC_X0 MT(MOD_LCTL, KC_ESC)  // Hold for Left Ctrl, Tap for ESC
+#define KC_X1 LOWER
+#define KC_X2 RAISE
+#define KC_X3 MO(_MOVEMENT)
+#define KC_X4 MT(MOD_LSFT, KC_ENT)  // Hold for Left Shift, Tap for Enter
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-/* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  -   |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |  `   | Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_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_MINS, \
-  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
-  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, \
-  KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
+  [_QWERTY] = COMPACT_KEYMAP(
+  //,----+----+----+----+----+----.         ,----+----+----+----+----+----.
+     TAB , Q  , W  , E  , R  , T  ,           Y  , U  , I  , O  , P  ,MINS,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+      X0 , A  , S  , D  , F  , G  ,           H  , J  , K  , L  ,SCLN,QUOT,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+     LSFT, Z  , X  , C  , V  , B  ,           N  , M  ,COMM,DOT ,SLSH, X4 ,
+  //|----+----+----+----+----+----|----+----|----+----+----+----+----+----|
+     GRV ,LCTL,LALT,LGUI, X1 ,SPC , X3 ,RSFT,BSPC, X2 ,LEFT,DOWN, UP ,RGHT
+  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  ),
 
-/* Colemak
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  |  -   |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |  `   | Ctrl | Alt  | GUI  |Lower |    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_MINS, \
-  KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,                      KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
-  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, \
-  KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
+  [_COLEMAK] = COMPACT_KEYMAP(
+  //,----+----+----+----+----+----.         ,----+----+----+----+----+----.
+     TAB , Q  , W  , F  , P  , G  ,           J  , L  , U  , Y  ,SCLN,MINS,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+      X0 , A  , R  , S  , T  , D  ,           H  , N  , E  , I  , O  ,QUOT,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+     LSFT, Z  , X  , C  , V  , B  ,           K  , M  ,COMM,DOT ,SLSH, X4 ,
+  //|----+----+----+----+----+----|----+----|----+----+----+----+----+----|
+     GRV ,LCTL,LALT,LGUI, X1 ,SPC , X3 ,RSFT,BSPC, X2 ,LEFT,DOWN, UP ,RGHT
+  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  ),
 
-/* Dvorak
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |  -   |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |  `   | Ctrl | Alt  | GUI  |Lower |    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_MINS, \
-  KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,                      KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
-  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,                      KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT, \
-  KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
+  [_DVORAK] = COMPACT_KEYMAP(
+  //,----+----+----+----+----+----.         ,----+----+----+----+----+----.
+     TAB ,QUOT,COMM,DOT , P  , Y  ,           F  , G  , C  , R  , L  ,MINS,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+      X0 , A  , O  , E  , U  , I  ,           D  , H  , R  , N  , S  ,SLSH,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+     LSFT,SCLN, Q  , J  , K  , X  ,           B  , M  , W  , V  , Z  , X4 ,
+  //|----+----+----+----+----+----|----+----|----+----+----+----+----+----|
+     GRV ,LCTL,LALT,LGUI, X1 ,SPC , X3 ,RSFT,BSPC, X2 ,LEFT,DOWN, UP ,RGHT
+  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  ),
 
-/* Lower
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | 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_DEL, \
-  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 \
-),
+  [_LOWER] = COMPACT_KEYMAP(
+  //,----+----+----+----+----+----.         ,----+----+----+----+----+----.
+     TILD,EXLM, AT ,HASH,DLR ,PERC,          CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+     DEL , F1 , F2 , F3 , F4 , F5 ,           F6 ,UNDS,PLUS,LCBR,RCBR,PIPE,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+         , F7 , F8 , F9 ,F10 ,F11 ,          F12 ,END ,    ,    ,    ,    ,
+  //|----+----+----+----+----+----|----+----|----+----+----+----+----+----|
+         ,    ,    ,    ,    ,    ,    ,    ,    ,    ,MNXT,VOLD,VOLU,MPLY
+  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  ),
 
-/* Raise
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | 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_DEL, \
-  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 \
-),
+  [_RAISE] = COMPACT_KEYMAP(
+  //,----+----+----+----+----+----.         ,----+----+----+----+----+----.
+     GRV , 1  , 2  , 3  , 4  , 5  ,           6  , 7  , 8  , 9  , 0  ,DEL ,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+     DEL , F1 , F2 , F3 , F4 , F5 ,           F6 ,MINS,EQL ,LBRC,RBRC,BSLS,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+         , F7 , F8 , F9 ,F10 ,F11 ,          F12 ,NUHS,NUBS,    ,    ,    ,
+  //|----+----+----+----+----+----|----+----|----+----+----+----+----+----|
+         ,    ,    ,    ,    ,    ,    ,    ,    ,    ,MNXT,VOLD,VOLU,MPLY
+  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  ),
 
-[_MOVEMENT] = KEYMAP( \
-  KC_TILD, KC_EXLM, KC_MUTE, KC_VOLD, KC_VOLU, KC_PERC,                   KC_CIRC, KC_AMPR, KC_UP, KC_LPRN, KC_RPRN, KC_DEL, \
-  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6,   KC_LEFT, KC_DOWN, KC_RIGHT, KC_RCBR, KC_PIPE, \
-  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,                    KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDOWN, KC_PGUP, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-),
+  [_MOVEMENT] = COMPACT_KEYMAP(
+  //,----+----+----+----+----+----.         ,----+----+----+----+----+----.
+     TILD,EXLM, AT ,HASH,DLR ,PERC,          CIRC,AMPR, UP ,LPRN,RPRN,DEL ,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+     DEL , F1 , F2 , F3 , F4 , F5 ,           F6 ,LEFT,DOWN,RGHT,RCBR,PIPE,
+  //|----+----+----+----+----+----|         |----+----+----+----+----+----|
+         , F7 , F8 , F9 ,F10 ,F11 ,          F12 ,END ,    ,    ,    ,    ,
+  //|----+----+----+----+----+----|----+----|----+----+----+----+----+----|
+         ,    ,    ,    ,    ,    ,    ,    ,PGDN,PGUP,MNXT,VOLD,VOLU,MPLY
+  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  ),
 
 /* Adjust (Lower + Raise)
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
+ * |------+------+------+------+------+------.             ,------+------+------+------+------+------|
+ * |      | Reset|      |      |      |      |             |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+------|             |------+------+------+------+------+------|
+ * |      |      |      |Audoff|Aud on|AGnorm|             |AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |------+------+------+------+------+------|             |------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Musoff|Mus on|      |             |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * `-------------------------------------------------------------------------------------------------'
  */
-[_ADJUST] = KEYMAP( \
-  _______, RESET,   _______, _______, _______, _______,                   _______, _______, _______, _______, _______, KC_DEL, \
-  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM,                   AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
-  _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,                     MI_OFF,  _______, _______, _______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
-)
+  [_ADJUST] = KEYMAP( \
+    _______, RESET,   _______, _______, _______, _______,                   _______, _______, _______, _______, _______, KC_DEL, \
+    _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM,                   AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
+    _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,                     MI_OFF,  _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+  )
 
 };
 
@@ -267,4 +247,4 @@ void music_scale_user(void)
     PLAY_NOTE_ARRAY(music_scale, false, 0);
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/keyboards/atreus50/keymaps/default/readme.md b/keyboards/atreus50/keymaps/default/readme.md
deleted file mode 100644
index e911968dd..000000000
--- a/keyboards/atreus50/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default Preonic layout - largely based on the Planck's
\ No newline at end of file

From 63e47a642536ca7af22ef353cf7d19677f48b013 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Thu, 23 Mar 2017 12:23:20 -0400
Subject: [PATCH 098/163] =?UTF-8?q?Add=20RGB=20support=20for=20Let?=
 =?UTF-8?q?=E2=80=99s=20Split=20v1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 keyboards/lets_split/keymaps/hexwire/config.h | 1 -
 keyboards/lets_split/rev1/config.h            | 7 +++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index 38b57266a..9c8c6d7f4 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -21,7 +21,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define TAPPING_TERM 150
 
 #undef RGBLED_NUM
-#define RGB_DI_PIN B0
 #define RGBLIGHT_ANIMATIONS
 #define RGBLED_NUM 8
 #define RGBLIGHT_HUE_STEP 8
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
index 2f5bde953..5fb87cf5d 100644
--- a/keyboards/lets_split/rev1/config.h
+++ b/keyboards/lets_split/rev1/config.h
@@ -63,6 +63,13 @@ 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 */
+#define RGB_DI_PIN D3
+#define RGBLIGHT_TIMER
+#define RGBLED_NUM 16    // Number of LEDs
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.

From 8775a13658146b7ffc90ac20579c1996bd51e909 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Thu, 23 Mar 2017 14:46:58 -0400
Subject: [PATCH 099/163] Add RGB support

---
 keyboards/atreus50/config.h                 | 2 +-
 keyboards/atreus50/keymaps/default/Makefile | 4 ++--
 keyboards/atreus50/keymaps/default/keymap.c | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/atreus50/config.h b/keyboards/atreus50/config.h
index dedcc8cae..2e34e0f89 100644
--- a/keyboards/atreus50/config.h
+++ b/keyboards/atreus50/config.h
@@ -61,7 +61,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* ws2812 RGB LED */
 #define RGB_DI_PIN C6
-#define RGBLIGHT_TIMER
+#define RGBLIGHT_ANIMATIONS
 #define RGBLED_NUM 12     // Number of LEDs
 #define RGBLIGHT_HUE_STEP 10
 #define RGBLIGHT_SAT_STEP 17
diff --git a/keyboards/atreus50/keymaps/default/Makefile b/keyboards/atreus50/keymaps/default/Makefile
index e8556d0d6..d7b0fa7fd 100644
--- a/keyboards/atreus50/keymaps/default/Makefile
+++ b/keyboards/atreus50/keymaps/default/Makefile
@@ -1,5 +1,5 @@
-RGBLIGHT_ENABLE = no
-AUDIO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+AUDIO_ENABLE = no
 
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/atreus50/keymaps/default/keymap.c
index 8ae096cd8..415405ec2 100644
--- a/keyboards/atreus50/keymaps/default/keymap.c
+++ b/keyboards/atreus50/keymaps/default/keymap.c
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-------------------------------------------------------------------------------------------------'
  */
   [_ADJUST] = KEYMAP( \
-    _______, RESET,   _______, _______, _______, _______,                   _______, _______, _______, _______, _______, KC_DEL, \
+    _______, RESET,   RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,                   RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, \
     _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM,                   AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
     _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,                     MI_OFF,  _______, _______, _______, _______, _______, \
     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \

From ddc036b69ea508750f5129d9a43fee484148716a Mon Sep 17 00:00:00 2001
From: Travis La Marr <exiva@exiva.net>
Date: Fri, 24 Mar 2017 12:53:55 -0400
Subject: [PATCH 100/163] Refactor Bluetooth Handling

Refactored Bluetooth support to make adding new Bluetooth modules
easier in the future.

* Remove `OUT_BLE` key from QMK's keymap. `OUT_BT` is all we need now
as there's no difference anymore.
* Made BLUETOOTH_ENABLE build option legacy as not to break existing
keymaps (Falls back to existing EZ Key support if on)
* Removed `ADAFRUIT_BLE_ENABLE` build option
* Created new build option `BLUETOOTH` with module option (Currently
`AdafruitEZKey` & `AdafruitBLE`)
* Moved all LUFA bluetooth key/mouse events under `BLUETOOTH_ENABLE`
ifdef with selected modules output.
---
 quantum/quantum.c                     |  8 ---
 quantum/quantum_keycodes.h            |  3 --
 tmk_core/common.mk                    | 12 +++--
 tmk_core/protocol/lufa.mk             | 12 +++--
 tmk_core/protocol/lufa/adafruit_ble.h |  4 +-
 tmk_core/protocol/lufa/lufa.c         | 77 ++++++++++++---------------
 tmk_core/protocol/lufa/outputselect.c |  6 +--
 tmk_core/protocol/lufa/outputselect.h |  1 -
 8 files changed, 57 insertions(+), 66 deletions(-)

diff --git a/quantum/quantum.c b/quantum/quantum.c
index 582f8920b..807a7084a 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -294,14 +294,6 @@ bool process_record_quantum(keyrecord_t *record) {
       return false;
       break;
     #endif
-    #ifdef ADAFRUIT_BLE_ENABLE
-    case OUT_BLE:
-      if (record->event.pressed) {
-        set_output(OUTPUT_ADAFRUIT_BLE);
-      }
-      return false;
-      break;
-    #endif
     #endif
     case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO:
       if (record->event.pressed) {
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 903d57f1e..78b02a0de 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -159,9 +159,6 @@ enum quantum_keycodes {
 #ifdef BLUETOOTH_ENABLE
     OUT_BT,
 #endif
-#ifdef ADAFRUIT_BLE_ENABLE
-    OUT_BLE,
-#endif
 
     // always leave at the end
     SAFE_RANGE
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index a86dccc61..2b0fda5f2 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -93,14 +93,18 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
     TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE
 endif
 
-ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes)
-    TMK_COMMON_DEFS += -DADAFRUIT_BLE_ENABLE
-endif
-
 ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
     TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
 endif
 
+ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
+		TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
+endif
+
+ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
+		TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
+endif
+
 ifeq ($(strip $(ONEHAND_ENABLE)), yes)
     TMK_COMMON_DEFS += -DONEHAND_ENABLE
 endif
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk
index de0cc795f..5b1577972 100644
--- a/tmk_core/protocol/lufa.mk
+++ b/tmk_core/protocol/lufa.mk
@@ -22,11 +22,16 @@ ifeq ($(strip $(MIDI_ENABLE)), yes)
 	include $(TMK_PATH)/protocol/midi.mk
 endif
 
-ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes)
-	LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
+	LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
+	$(TMK_DIR)/protocol/serial_uart.c
 endif
 
-ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
+ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
+		LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp
+endif
+
+ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
 	LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
 	$(TMK_DIR)/protocol/serial_uart.c
 endif
@@ -54,6 +59,7 @@ LUFA_OPTS += -DUSE_FLASH_DESCRIPTORS
 LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 #LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT
 LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 
+LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1
 
 # Remote wakeup fix for ATmega32U2        https://github.com/tmk/tmk_keyboard/issues/361
diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/tmk_core/protocol/lufa/adafruit_ble.h
index 351fd55ae..b3bab3ca0 100644
--- a/tmk_core/protocol/lufa/adafruit_ble.h
+++ b/tmk_core/protocol/lufa/adafruit_ble.h
@@ -3,7 +3,7 @@
  * Supports the Adafruit BLE board built around the nRF51822 chip.
  */
 #pragma once
-#ifdef ADAFRUIT_BLE_ENABLE
+#ifdef MODULE_ADAFRUIT_BLE
 #include <stdbool.h>
 #include <stdint.h>
 #include <string.h>
@@ -57,4 +57,4 @@ extern bool adafruit_ble_set_power_level(int8_t level);
 }
 #endif
 
-#endif // ADAFRUIT_BLE_ENABLE
+#endif // MODULE_ADAFRUIT_BLE
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index ba49284c9..d71748ce3 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -67,10 +67,11 @@
 #endif
 
 #ifdef BLUETOOTH_ENABLE
-    #include "bluetooth.h"
-#endif
-#ifdef ADAFRUIT_BLE_ENABLE
+  #ifdef MODULE_ADAFRUIT_BLE
     #include "adafruit_ble.h"
+  #else
+    #include "bluetooth.h"
+  #endif
 #endif
 
 #ifdef VIRTSER_ENABLE
@@ -602,18 +603,14 @@ static void send_keyboard(report_keyboard_t *report)
     uint8_t where = where_to_send();
 
 #ifdef BLUETOOTH_ENABLE
-    if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
-        bluefruit_serial_send(0xFD);
-        for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
-            bluefruit_serial_send(report->raw[i]);
-        }
-    }
-#endif
-
-#ifdef ADAFRUIT_BLE_ENABLE
-    if (where == OUTPUT_ADAFRUIT_BLE) {
-      adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
+  #ifdef MODULE_ADAFRUIT_BLE
+    adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
+  #else
+    bluefruit_serial_send(0xFD);
+    for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
+      bluefruit_serial_send(report->raw[i]);
     }
+  #endif
 #endif
 
     if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {
@@ -660,24 +657,22 @@ static void send_mouse(report_mouse_t *report)
     uint8_t where = where_to_send();
 
 #ifdef BLUETOOTH_ENABLE
-    if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
-        bluefruit_serial_send(0xFD);
-        bluefruit_serial_send(0x00);
-        bluefruit_serial_send(0x03);
-        bluefruit_serial_send(report->buttons);
-        bluefruit_serial_send(report->x);
-        bluefruit_serial_send(report->y);
-        bluefruit_serial_send(report->v); // should try sending the wheel v here
-        bluefruit_serial_send(report->h); // should try sending the wheel h here
-        bluefruit_serial_send(0x00);
-    }
-#endif
-
-#ifdef ADAFRUIT_BLE_ENABLE
-    if (where == OUTPUT_ADAFRUIT_BLE) {
+  if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
+    #ifdef MODULE_ADAFRUIT_BLE
       // FIXME: mouse buttons
       adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h);
-    }
+    #else
+      bluefruit_serial_send(0xFD);
+      bluefruit_serial_send(0x00);
+      bluefruit_serial_send(0x03);
+      bluefruit_serial_send(report->buttons);
+      bluefruit_serial_send(report->x);
+      bluefruit_serial_send(report->y);
+      bluefruit_serial_send(report->v); // should try sending the wheel v here
+      bluefruit_serial_send(report->h); // should try sending the wheel h here
+      bluefruit_serial_send(0x00);
+    #endif
+  }
 #endif
 
     if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {
@@ -727,6 +722,9 @@ static void send_consumer(uint16_t data)
 
 #ifdef BLUETOOTH_ENABLE
     if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
+      #ifdef MODULE_ADAFRUIT_BLE
+        adafruit_ble_send_consumer_key(data, 0);
+      #else
         static uint16_t last_data = 0;
         if (data == last_data) return;
         last_data = data;
@@ -740,12 +738,7 @@ static void send_consumer(uint16_t data)
         bluefruit_serial_send(0x00);
         bluefruit_serial_send(0x00);
         bluefruit_serial_send(0x00);
-    }
-#endif
-
-#ifdef ADAFRUIT_BLE_ENABLE
-    if (where == OUTPUT_ADAFRUIT_BLE) {
-      adafruit_ble_send_consumer_key(data, 0);
+      #endif
     }
 #endif
 
@@ -1130,10 +1123,6 @@ int main(void)
     // midi_send_noteoff(&midi_device, 0, 64, 127);
 #endif
 
-#ifdef BLUETOOTH_ENABLE
-    serial_init();
-#endif
-
     /* wait for USB startup & debug output */
 
 #ifdef WAIT_FOR_USB
@@ -1161,7 +1150,7 @@ int main(void)
 
     print("Keyboard start.\n");
     while (1) {
-        #if !defined(BLUETOOTH_ENABLE) && !defined(ADAFRUIT_BLE_ENABLE)
+        #if !defined(BLUETOOTH_ENABLE)
         while (USB_DeviceState == DEVICE_STATE_Suspended) {
             print("[s]");
             suspend_power_down();
@@ -1182,7 +1171,11 @@ int main(void)
         rgblight_task();
 #endif
 
-#ifdef ADAFRUIT_BLE_ENABLE
+#ifdef MODULE_ADAFRUIT_EZKEY
+    serial_init();
+#endif
+
+#ifdef MODULE_ADAFRUIT_BLE
         adafruit_ble_task();
 #endif
 
diff --git a/tmk_core/protocol/lufa/outputselect.c b/tmk_core/protocol/lufa/outputselect.c
index 5d2457bff..0df5d3b75 100644
--- a/tmk_core/protocol/lufa/outputselect.c
+++ b/tmk_core/protocol/lufa/outputselect.c
@@ -14,7 +14,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include "lufa.h"
 #include "outputselect.h"
-#ifdef ADAFRUIT_BLE_ENABLE
+#ifdef MODULE_ADAFRUIT_BLE
     #include "adafruit_ble.h"
 #endif
 
@@ -34,9 +34,9 @@ uint8_t auto_detect_output(void) {
         return OUTPUT_USB;
     }
 
-#ifdef ADAFRUIT_BLE_ENABLE
+#ifdef MODULE_ADAFRUIT_BLE
     if (adafruit_ble_is_connected()) {
-        return OUTPUT_ADAFRUIT_BLE;
+        return OUTPUT_BLUETOOTH;
     }
 #endif
 
diff --git a/tmk_core/protocol/lufa/outputselect.h b/tmk_core/protocol/lufa/outputselect.h
index 79b4dd35d..28cc3298e 100644
--- a/tmk_core/protocol/lufa/outputselect.h
+++ b/tmk_core/protocol/lufa/outputselect.h
@@ -18,7 +18,6 @@ enum outputs {
     OUTPUT_NONE,
     OUTPUT_USB,
     OUTPUT_BLUETOOTH,
-    OUTPUT_ADAFRUIT_BLE,
 
     // backward compatibility
     OUTPUT_USB_AND_BT

From 25f2295ba88627521bed63ec4e5412b983626901 Mon Sep 17 00:00:00 2001
From: Hugh Enxing <henxing@draper.com>
Date: Fri, 24 Mar 2017 14:31:02 -0400
Subject: [PATCH 101/163] Swapped placement of `Ctrl` and `Alt` keys to match
 Technomancy's default layout

---
 keyboards/atreus/keymaps/default/keymap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/keyboards/atreus/keymaps/default/keymap.c b/keyboards/atreus/keymaps/default/keymap.c
index 04ad66fed..ce92e89c9 100644
--- a/keyboards/atreus/keymaps/default/keymap.c
+++ b/keyboards/atreus/keymaps/default/keymap.c
@@ -15,8 +15,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_QW] = { /* Qwerty */
   {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_TRNS,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P    },
   {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_TRNS,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN },
-  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_LALT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH },
-  {KC_ESC, KC_TAB, KC_LGUI,  KC_LSFT, KC_BSPC,  KC_LCTL, KC_SPC,  MO(_RS), KC_MINS, KC_QUOT, KC_ENT  }
+  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_LCTL,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH },
+  {KC_ESC, KC_TAB, KC_LGUI,  KC_LSFT, KC_BSPC,  KC_LALT, KC_SPC,  MO(_RS), KC_MINS, KC_QUOT, KC_ENT  }
 },
 /*
  *  !       @     up     {    }        ||     pgup    7     8     9    *
@@ -27,8 +27,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_RS] = { /* [> RAISE <] */
   {KC_EXLM, KC_AT,   KC_UP,   KC_LCBR, KC_RCBR, KC_TRNS, KC_PGUP, KC_7,    KC_8,   KC_9, KC_ASTR},
   {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR,  KC_TRNS, KC_PGDN, KC_4,    KC_5,   KC_6, KC_PLUS},
-  {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LALT, KC_GRV,  KC_1,    KC_2,   KC_3, KC_BSLS},
-  {TG(_LW), KC_INS,  KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  KC_TRNS, KC_DOT, KC_0, KC_EQL}
+  {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_GRV,  KC_1,    KC_2,   KC_3, KC_BSLS},
+  {TG(_LW), KC_INS,  KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC,  KC_TRNS, KC_DOT, KC_0, KC_EQL}
 },
 /*
  * insert home   up  end   pgup       ||      up     F7    F8    F9   F10
@@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [_LW] = { /* [> LOWER <] */
   {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_TRNS, KC_UP,   KC_F7,   KC_F8,   KC_F9,   KC_F10},
   {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4,   KC_F5,   KC_F6,   KC_F11},
-  {KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET,   KC_LALT, KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F12},
-  {KC_TRNS, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  DF(_QW), KC_PSCR, KC_SLCK, KC_PAUS}
+  {KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET,   KC_LCTL, KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F12},
+  {KC_TRNS, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC,  DF(_QW), KC_PSCR, KC_SLCK, KC_PAUS}
 }};
 
 const uint16_t PROGMEM fn_actions[] = {

From b4ac0598fa5a69418d79f78c0cf323307d5f5f5e Mon Sep 17 00:00:00 2001
From: Travis La Marr <exiva@exiva.net>
Date: Fri, 24 Mar 2017 15:55:02 -0400
Subject: [PATCH 102/163] Readd bluetooth output direction on standard key
 input.

---
 tmk_core/protocol/lufa/lufa.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index d71748ce3..3d7a8cc43 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -603,14 +603,16 @@ static void send_keyboard(report_keyboard_t *report)
     uint8_t where = where_to_send();
 
 #ifdef BLUETOOTH_ENABLE
-  #ifdef MODULE_ADAFRUIT_BLE
-    adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
-  #else
-    bluefruit_serial_send(0xFD);
-    for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
-      bluefruit_serial_send(report->raw[i]);
-    }
-  #endif
+  if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
+    #ifdef MODULE_ADAFRUIT_BLE
+      adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
+    #else
+      bluefruit_serial_send(0xFD);
+      for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
+        bluefruit_serial_send(report->raw[i]);
+      }
+    #endif
+  }
 #endif
 
     if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {

From 43eee52cba8db46e9f305a56ca6623428e28cc2e Mon Sep 17 00:00:00 2001
From: Travis La Marr <exiva@exiva.net>
Date: Fri, 24 Mar 2017 17:14:57 -0400
Subject: [PATCH 103/163] Add BLE and EZKey module defines.

Also restored serial init back to original location. Was getting junk data.
---
 tmk_core/common.mk            | 2 ++
 tmk_core/protocol/lufa/lufa.c | 8 ++++----
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index 2b0fda5f2..47f6fc571 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -99,10 +99,12 @@ endif
 
 ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
 		TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
+		TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_BLE
 endif
 
 ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
 		TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
+		TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY
 endif
 
 ifeq ($(strip $(ONEHAND_ENABLE)), yes)
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index 3d7a8cc43..4cb23ebc8 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -1125,6 +1125,10 @@ int main(void)
     // midi_send_noteoff(&midi_device, 0, 64, 127);
 #endif
 
+#ifdef MODULE_ADAFRUIT_EZKEY
+    serial_init();
+#endif
+
     /* wait for USB startup & debug output */
 
 #ifdef WAIT_FOR_USB
@@ -1173,10 +1177,6 @@ int main(void)
         rgblight_task();
 #endif
 
-#ifdef MODULE_ADAFRUIT_EZKEY
-    serial_init();
-#endif
-
 #ifdef MODULE_ADAFRUIT_BLE
         adafruit_ble_task();
 #endif

From 739249ff0d707a9702771236fcf22538e3a7106b Mon Sep 17 00:00:00 2001
From: Nicolas Guelpa <nicolas@guelpa.me>
Date: Fri, 24 Mar 2017 20:18:59 -0400
Subject: [PATCH 104/163] Adding different layer

---
 keyboards/xd60/keymaps/cheese/keymap.c | 67 ++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 keyboards/xd60/keymaps/cheese/keymap.c

diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xd60/keymaps/cheese/keymap.c
new file mode 100644
index 000000000..738009304
--- /dev/null
+++ b/keyboards/xd60/keymaps/cheese/keymap.c
@@ -0,0 +1,67 @@
+#include "xd60.h"
+#include "action_layer.h"
+
+// Each layer gets a name for readability.
+// 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, and you can also skip them entirely
+// and just use numbers.
+#define _BL 0
+#define _FL 1
+#define _LS 2
+#define _RS 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  /* (Base Layer) Default Layer
+   * ,-----------------------------------------------------------.
+   * |Esc~| 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+   * |-----------------------------------------------------------|
+   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |
+   * |-----------------------------------------------------------|
+   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+   * |-----------------------------------------------------------|
+   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
+   * |-----------------------------------------------------------|
+   * |Ctrl|Gui |Alt |      Space           |FN|Left|Up|Down|Right|
+   * `-----------------------------------------------------------'
+   */
+  [_BL] = KEYMAP(
+      KC_ESC,  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_BSPC,  \
+      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,            \
+      MO(_FL), KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT,  KC_NO,    KC_ENT,             \
+      F(0), KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH,  F(1),  F(1),  F(1),  \
+      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          MO(_FL), KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT),
+
+// Function Layer
+  [_FL] = KEYMAP(
+      KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,  KC_DEL,  \
+      KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CALC, KC_INS,  KC_PGUP,  KC_UP,   KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \
+      KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU,  KC_TRNS,  KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, \
+      KC_TRNS, KC_TRNS, KC_APP,  KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD,  KC_TRNS, KC_TRNS, KC_TRNS, \
+      KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                        KC_TRNS, KC_HOME, KC_PGUP, KC_PGDN, KC_END),
+
+// Left Shift Layer
+  [_LS] = KEYMAP(
+      KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  \
+      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_CAPS, KC_CAPS, KC_CAPS, \
+      KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Right Shift Layer
+  [_RS] = KEYMAP(
+      KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  \
+      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+      KC_CAPS, 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),
+
+};
+
+// Custom Actions
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MODS(_LS, MOD_LSFT),
+    [1] = ACTION_LAYER_MODS(_RS, MOD_RSFT),
+};

From c0a6c5f80601ed040be0adfe183c9b672aa7fa50 Mon Sep 17 00:00:00 2001
From: Nicolas Guelpa <nicolas@guelpa.me>
Date: Sun, 26 Mar 2017 15:07:19 -0400
Subject: [PATCH 105/163] fixing layout

---
 keyboards/xd60/keymaps/cheese/keymap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xd60/keymaps/cheese/keymap.c
index 738009304..25919a41f 100644
--- a/keyboards/xd60/keymaps/cheese/keymap.c
+++ b/keyboards/xd60/keymaps/cheese/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |-----------------------------------------------------------|
    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |
    * |-----------------------------------------------------------|
-   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+   * |FUNCTION|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return|
    * |-----------------------------------------------------------|
    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
    * |-----------------------------------------------------------|

From a89ee25db8eb57b902e0fc1a16166d16af0dc721 Mon Sep 17 00:00:00 2001
From: Nicolas Guelpa <nicolas@guelpa.me>
Date: Sun, 26 Mar 2017 15:16:55 -0400
Subject: [PATCH 106/163] Add files via upload

---
 keyboards/xd60/keymaps/cheese/base_layout.png | Bin 0 -> 23729 bytes
 keyboards/xd60/keymaps/cheese/fn_layout.png   | Bin 0 -> 20690 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 keyboards/xd60/keymaps/cheese/base_layout.png
 create mode 100644 keyboards/xd60/keymaps/cheese/fn_layout.png

diff --git a/keyboards/xd60/keymaps/cheese/base_layout.png b/keyboards/xd60/keymaps/cheese/base_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..211c4c731e6a90587fe1024d996a73744479b123
GIT binary patch
literal 23729
zcmd?RWpEtJwk{~Ln3<U@CX1OFEM{hAW?76DGcz-`m@H;ySqzrNmIc#3aJRkZ+;=DD
z$BQ>H5v7P$c2{QB%2gHl!Kw&Fc?kqqTv!kg5Ckbn(T^Y?;Nl=4pw!Tiz!o2|T|5vF
zVh|}&Ar%kMbAYY|-tyYRi-P;5xNVY#t+V?3O^t<o_O=*UzxX^*0`eFS>-Z?SumT>;
zm7R~N$Gw@*Hqb-mz6Rlapd!uXB#=<(El8B)Lj}8H!(7NkDt01DIXnwA%%kVQ74~am
zF;Ai=^PPS;s||Oi+ASaEs=n(R@HU!FYAxS&)@ZUWSH*GFH8eDUy-Ef^{Bal%p?R1Q
zoyjjs{p|~4k$^xHg22E1dK-<i4JU9Uj!5Lk&;2-ot7UzE+mx6SazU^^jyx%_Y2F+7
z9N&9Qd_FI9@j^!#9HgWS<J)-!f!(*)?YF46$GErN?bmw_>UY-?f1WG|Mv9`y?eTi#
z|4N0nP7ONe5Bz9H<ELbhgb<nI|N28tVGk6Q_|F45qWA5Gz#G-Pcax?=(lSO7e73Sz
zBsO}4iP4z!pZ(VnfKm)AmB18#EdQ(-1x9B2i0}W$?12}P#{ni?b+c~YldM9^$n=qv
z+EgCpKmVw3khj>+GcbXLD*}!_seh2|Z!?>Pp{}1YqqRGFCtg4+{p0UpHsFB3#=Z!}
zohJG7dS);{A;mjbsFMHIzJdXI0A9PgJrIVZ?)T#$wc)M%_2~?wbsb>Do~aH3eOEf_
zbGgx;Y~TH(L{k5>m`{67Z>{l*+A{Bjn78c#(IU6FKoODJ_;O1{n4hG;#+ZPIjs0u=
z;$5?<>_0Ds$U|30XAq9DOHnQ0?&V>7f1}+Q8yB~qwzew>OW&uy>Za-Q$!wv7BsuEi
z*F**4aTY!Qm%C_-1sPh*vDD!Ey}RUZD9x*dL~}^i`<_3V=a5dqeh?~U@;&8i_-WuV
zD)lT)K09<~08dh9V`D=%T~{@@9Y7M;2}a`YjltuHghgl0FDwLawcG5^^?#KDKrj(s
zPy{46i53Bz44~_zykQKA@KG#l@v*^d=Jdd@-%E%B)@UWfbZyNp?$)epZ7bEqzzc7V
zruR49w}&$AyVKRbkB!0ly}h{e`aYqLwJiBT27`tn5e)}|LtTqTi5I42XHU{?N&v2B
z7F@!B7oe&PrBj&&49`LX(N>Q?QNCjM10y|fAjlRx8xE(9z)TFvy3M=0Rr6e1?R~Sr
z**@E8x`f@SY@XxGO9t-i$M43!(%v3$hZ&2{_0gp(1x6u<x39k+>|;54w778&b#3<(
z&Eer8OCSE-n22&C!CKU^`eYVksnHY33)2XJRZDv^(d)}M|D%_vX*|{Mlhx1h(@JaJ
zm(`KV3wfWNo*fvCF053!P3@-YjYlF+Rl7;o7Z!@z^CVGj+mCVvBG9N<0GgkIdT!@r
z9>0$eu{y_=sgq={ozLrabzA+uDuC)|#dNHRpX#>f4Vu;3tH9ybyew;06l?F-CIrM3
z7)SKHXC2i8XVoxhz^v~|Z;dY8!inxGx>YS}jSg=Ij3}*2XON;`=8>Y(%d&+9=qP0c
z=*$Y-U|;Ie>QY|nG_-t+&WDg%$rQi$T6Dq=2@v+B&4$;9KW5le2$4ot`r2jLv73bw
z;AScmy4yg)eUY1<c?@Lhf3Y7RdKV9$U;81TZJ2^VqRXR<=z<;r2k%4c16dJNalE)m
z6$ZjEWYc{Z`*~8VLDeSGP{`hE!Br37Fl>)TN%)$rKz-AK9d~x)Qi5EUG%8*SCA!^|
zJS552I)C4ZX!zEcTF{c{>1)irk@cNt5`+qA-IGt5?DFXA#gDD5_+9o`q3O6R8XV*0
zAr_{!58S>v*hqJ~x0V7q9ia|4dNiz5w66BBe21Do8*}e8N5j5h7Z^fS#ek$3g|FZm
zqHOxW;D7@ZW}ScHhK3$GESvZ4jKYV+=r-O<LO4=vMDUbDwOut~U2Bn}r`8&LS%<M^
z&kcB+H^ecN5|%|2;iwNb3OgqEGN;&(FLuy|?aTHAC&>$R5|y90Ef^;fuVRQz-_nB!
zv3YPpAKR3jFd#n{j@yjSq`7bDi_K{?)PaH728*<XlFlVzVr#uWPqIWyotZ6-ORfJo
z)CC`XA5}a)%StG?Ey>5QogKQo3ZZ=8ZCTfQi8FFx2{#<l(c5TmFK@W>DlqFc0li-i
zy3ykVX{UMh(EFV;$PMcJPy}Z@1ApMrssN$H>AdQIH&PFg!r?>jX`L~D3do${V=d3j
zKDuTndA}3<=TazhG|=O-AN1KLs!ADA9o(!Ft8OCWel0OJhb@lL8OG3`jF@z=!z3O#
z-s8ba9MD>vyF_lQ*_0)%vT#u>#OPpkskaNh-~2}NVBz}^s*#1N(-?7=b7V3YSJRw8
zh(NE~hCAsgmlEB(z4#f2d3MefqdiPb*U(i|O#KkS6?M1Xt%(gg0cX+qL&sA;{rmtM
zv}Xy2b5-4lmHOR?$g#bB=<G_soYTp;QY9gF@jRD&9%D+7b)vY36GY5_-in+h-RO&j
zJ$pfZG1hf7QME3sMvM0@>mv%f8E+y%w+d`|J4qL>3&;G=5AM6B@SAdmS}akvjFo62
z<Dd}2%ybdeQr)+ha5}r#dy-_hvAs(c;yU->Sl%I*^ujFgTqJ#l?0vgnl)>DmL3PsD
zd~D&buYN8H>_%M@U;O|d++|0Y(A;*W2(bE>k6af9u!JloAUhFdleQf|m{xY0-XUWi
zzN!>~qPa*C6MjbFveyUrQ;4*=P{JQg4o%#QUfhg7j%ZlWTSSu0T!_nN3>aCVaAY@H
zJRBkB$&j6X8!kF<)=8vG&v~lRK(b>jiTAqVvgr%VLg7>2iMunfQ#u)%KB-?*eNlSs
zgaWO-hId8E)vhh{B_@A8PNMgb8|szB37Ua77LhTN6c&yM+hYMUgcR3aDRc{)yGet&
z6?DSRgC{#lt2cfYf{k(}6qSICZ_+jh#kp(w89q34Y8$~gIWSuWA?!GKxNcBgOK=#u
zXj9k!Q0u6%Zz#%`Ei{{18mX#s5H!J{<1l9Nfqj20AI9TUqz%<2zmz{j&vZ(=k>?FT
zJ9%i`*7f@i`HUxKBvuAKD&1?I-Ih%$)**@}`@Ww8rdlpm2X?+`-QIvB5?u<rEIdzM
zuza2BvK*b^mYoE^4t)$jicr?7jjZOC{$rj!aCBu2KZ~_3M254Gol4>{0pEIoF?%)5
z_;whBRUFW=$UgXW(8J2B8HzhQq|XF0hhLYEmT>q^6N!6WO+s9QcV6Rmby-?x`13~8
zRtVO<v|`c^90NT)Vcr^EWscne?N(>67Tqi9d)eB$p~c{wRpP_saU+g9i2>*$zAF=P
zn>2&et~!NK2mO(_>xy^cUlgGg82JTH`)qwYr~@v|$TB1l``+I=q<!#T*zeImH|%_e
zDM}KD?ck}Sl^tg6)Jp*>zrIF0Y}#vtS=?&sO1+7<DYWrei^hbz-8-@?<?_5q{i?`4
z1SN;bDR3TWZGjlYk)38s6!`d!0KU%Kepko}rBxzZQl}?~yEeqs6T}rQF22JPlVfSS
zF2b2ai?@}j-fdufBdhy5auYm7EH_Q)+XxD0>E+I)3RS-@ARen9+vZY2a)e{5>Z$)l
zp_CP%-w_>^Bu};r-=OfW<)_*aW9cDN2+72IGM<mz*k9_+rZ%|5-(HucMoXcVLKSG?
z7H?}9Y!-bWeFIlQ!O2mf3+;>r>}dnio6rzFA#YaQ7T1Eyr`RYvwGC|SBzn5y=NoNB
zeA)e277h1xuNY1hN*&)`LF7%bk~|9Wgy=}>v#9cF+*IJA;SrHo0;~JrN5at3FT0`8
zZ1)trmXm)tCn;s=ugVP~cW*=AJh{Za6E*kVQN(1B3?muG+CewN4rNKYWMIhUja!fV
zD7guUPQ*HNnFXN|@wFJ$#hu*?Fo`><te2kZCAth;u8%JEq&<&;%=;4A$dQ!q_G}p_
z$bveEkP30&o7#6dus}WY)}w`Tny|B@T!AT@#2DNc4@1~6t@Z<IXj`V#^|^_%+w;B{
zvV@X~{3m&VG<*@A3hT$PD0gK^`mKSc>6X4hn^0rpT7z-8+7a;WD^y6TMq@Dq3#%K$
zy(#dbOT7@&2E4N{rnq985lbf=8P1Rio3EP-_8@w0a=SgtLFyC%a>XSiPc|W7y`G(?
z@5CViTNvs`)m0A;hr8$=<`)IBnRvULIN~lsvlJ2G{vc#0iDeu^BoFtb%o}7&;0mO%
z;ij&~lB9$}h4eph#SFCHXN$38tx>+j?^kYKeF=y6?+=^^7phm)PUMdn{Ys9@*tQhv
zAdV7I9QcXaY<sz{BB-Md#h`)PVacC>H9gY-H<Y`08Annyb%_e^OjOmk%+M}`9<}c?
z16d(kO2L<A!}%ws)YoRkoKl}rMC|#(?h_Aer<r#$hqGicA*%u02j4l{0|MT1agte6
z3x{A+<;0n~IvR|4cS7qq{EIakT~I#reomK3ir@6`X3An+9*OR_Lo6l!+WgI(dZ3L;
z*S5|a^69+5uM(}hjmXJFj-ee6!9MEsB)XbUuDRFZ%u0;EgPWK3!4xpMRyA&CIk+kb
zvfGBihsH4BMt#G@KkNetX&Dr_>dE+toM2Zg|D-J-6%g~t+iyMYJaS}Qr!9&D*@mE<
zh$b?RIN{>5J6Fug`QdZ#r}x?L(;rpTQ!Zlfsu<tfq%s({*WwJvYIc2dHak4E5eW~g
z6zbjUTWI!@ZK2tow-UGRjUGpOi?KX|f6hOr9k+t+=N=<7_%zQEH}m9?bv=bjs;)IV
z4j#rth8vP6P2w&@>>jHm<BlEMKCSMpQH4s0f8#*JTF~x|dI+a{3@^T{N2<A-jVtbT
zu3~oA8XFJpoC>F&(Oh8OMi{Iv%t@|0?BHeN8opkRGI*mleI7{07yqM0$9g8PeY$wj
z`>^J;wV%fqGy+A8!MG%bC>zy>xyaVW%OP{0S4Y&Kd8CY5^AUolNC{jXY0N?AC-OWJ
z|He$&WbpS1J(ipAa{l}1HO(-n1}kCpZTH+`{LjfXTe9g@M0;y|v{l9d3ii5bW-#+;
zcnr{{sLufQuapP)2WAK`Y54pb9Y^D-z3y`A%Uaz|M&C4f7>%w!LQ6^PilnZ1QHZdl
zFe089U*@cotc=Xn#!#;%1-zS@UDv?h9Gyw|%<e`fAHC%jkTn28E?dgpfQ?`1QOABb
z#pMNubj@08S`~IN;P{n)xSDW9?j^wKjR3HyM!Xy<>$Pqam#{_G0p&|KchqL~ec#1e
z04#y?^VtCXoFqfYjyo;wD7>L?Ql148-5}RuO;4UA{$o-S#2}f0(_Ro+^w|)R6pBJ>
z)!+#<r8z-cUg=Oa%XZ<a#-^;NcF*fk3YW?UYwuU8Kv*<`IHga4k-AwhvAaBvG^Auq
zKbX1u4JT-czIe8yAevK6Ax-YO%|BJZ8&yi5{6dumxu|uLg;%Fi?!g4zj@gqcN?w!B
z-e|WbjHd;JfzjJ#>d$`E>4CF;b=QclZ0i({Nj(HPBj<l0Ut$_i#A38Xr=-k3aetl>
z5T&ZZQ^1k_iBgf1LBPqB=q1|!25V`=0|J$X6dQ>D28NYjn3z!iKhVA4P%m{5b0Nxb
zfdI!>(V?%kmO_re=YerT#+YLJ*nGI&#n6e_kQsu-Nk^nbhg0!#L(wmMf&<8y<;N6n
zNa-(Aa_5eIg(SP(i*#Jg-nKgyt9L<H@6?(xU@K?`5M2j7Vrdl2sHNX`!?AK(?9ao2
z-nOt+wS)mck9&2}m#7E;ku}kJlNR5QNNU70RiaqtQ6ASbUCnE?@=UVH>vCbru(7L+
z2r^_ylE+>$LrpLVJaORy^_twadld>Q8z}v`dBGlhu}X-jTROrV$H~_u`jKB}=?MjM
zw}W;&BlTKICR>dR#1-<Da1#>zo|PG6p@~rt_Fnw?HY_-N+z50`r9vP#pj$Twjc7h~
z@`DdUn(PuuPtM(jW}^cb)(tw(MKZ5!pTWS0kouWi80QJ~YVZa}0^faqVZ!Mb{OPJ8
zpnlsC6?KT>^0RR7>{IiZOb5X0jpgSoUpW-O#Q?WL5G)8qk&kIDOX6Sqb3+^cn61j$
zn6N7oh}VfsRoi<V(U;PzxH34j+)j3Ng*r0G5hlXuR>M2bVTdr9eg!9V=Du5M)aAXt
zYHd9YxiJ(t{F=r#LNvWf*AMeb0u03j$C?T#zGSh*E8}%qA^r_h9HOMrg6E{66f%^X
zU$KYPTX{7$$ERt|^>_n>H2d3@X{un)f~YQy-L??JbS*h$>((yPasf!QJpFSIB55|K
zflVc;y4U@@m_b)0qEGz7iEfhe2azm&B%T3+8a{v}g3oxsyJ?YBv9p(&JL324H0WqL
z{|hJBrrlr>7hMUa<2+ZCTTe@9rKb1g-n|7LF2W*<^4(d)NPj>h%H3kE763O<3F3g-
zt19MnQEBmWVH&<h|EH+We&<Pg!sHg>9z_@k=_J{HqPH`BSaG|d2;ujwg`T$5x{@5m
zY3QX2WV~Ep<3sYt#B^X2>}^xxOlWG+Nuq41ffwgrnz1BQ0i(3~nz~alGON$;BioKq
zww=Ia>hk%2@(<aB9{9n-@HG)6KLo6$V&jYxF#y;Pgc%D<tdY`C&p!p62F@0<zPpLu
zxL(ud0G}9_2_H%B(~^6<TC(*>O6B{`R5R^0vzp>LgcN0t8>NLOZ9LjufBvakZ8~Ng
z8^3&D;T@G)b)Kq_JF)s;+&qCDJe@c3>TSL%FH^X~v>4}I{!|4sn&XClJ4()YYkgWr
z*mO0^luwo|tDAv6y%~TdB8}}6RJp(L8jgsBzTjiN%UN0?352lT?eQ=U{Z(|_0Mj*O
z^l*<cF>~a!fQ^>A`U1j$6cl%`-)MR(f|Te1NRUTlX#q`AGEepvw&Q0x5wP)o+LoH=
zZuax;E|Rv@6HG1dg?TI&D`f`IMexD`F7f%fQ*91wq!RA=v~#<_`gVes>wc?&6iMRf
z4yOb2ZfUge@nfs(5LYWO>q0*oT@l-{MsLTXDe&i?M!32J>LkxLfo;*Cn*FBVsm>36
z1`h?VM=dY;OhcHK#nEyGhacNFVbBxciKJD1hN@Zh9CW!B=VA6HP>K^F0*FOcqp}`z
z`x3-vj%^G|w5_rS$JXHNhRyXYghp}LLc6~a3?Ig!l)LwR@=6oyIlzUd_S3Z#-^_nL
z6l(&EYD`6$x|N2T@sH6`|GJpTcI=sj!-2tUDB$)LdfbGA#hGH#jFVj;LPCW+Z$jPD
zK0EN{Q10=3s1*mJvPNr`vXbEb2a{2dfCbf|DTKMeFkU(dw7COJz#LEIw09{E<t))g
zk{f+{^g&fATu+6R8p?q`>Z}9AXF06kW0pt?GNFw+nNeBIKu}BxyebY8U5I1MBWk<%
zQRlpA!(oS}qWEeHQCl0!=}K|bsH<*#34+fiWD`LTCF{OiaOx-JJfB2PobVLwtfK`d
zfjn*cax0W`syut4yys)R#%{wG=umb2;$d(*Y;W`1*1?8he9$o~u}f&)*4n;#@+Vyu
zD7%HY*7cWgvyJx=pKx&c8s#+_jc1)3BAe2Ca98j{L8t+Z{o6bk-tFL{(RE^|hO2R-
zKiF49-KC<yvk#eN&6eurNehk__k;MwT^UHY=OH&`H<e4iX%lebC821!iVhC2hOgjT
zpm%Kw@&??uLe+bD$B5kjG`w&L?|}~ACC}nB)R~suP+p4x$txw4O|X+c7#+)ZIZ!mp
z!Tt64qscHf(ebUcO<^$R<O@|E!~3R87Os!2pKT05+oe1p8J9ig6PHK!wRhuy{bj<n
zJR!felAW+C=u0u)u^(CK*%l|HExmVrHYP<Ztq41xBYe)sTdO|*Pt$vsNmFXzwD~P{
zQjvfn>L)F9@9ch!{;2hVSkwU%(fJv$=>;}iQ&Xh~OdtG<!D^E1iCvjNl$UZs*Px#4
z=^N@OC}n5F5N@@esCg77W1~|MXo2z3y}m~WTw`hPm6<@CpKK*8iQYF&SPml)M>8K*
zzAnk~Y^PosRY(Z%rGepwkR}GyK_FI8wf|yBy5(r=dVlS$#AQtCIGMf9K&1(25<1PK
z(p&F8R00|>w0T<-u2ouOZIjFd6WJoQKQ93+8JpB<n*m9A+0L#ujEMwW)(<;?5`s01
zgu#ta>+;B?qH<wbH^!RH8)5rHEduG%f%}=S0pFH_>2tW)4)oANAtVJ0AymFG&y{VV
zNBy~<34mCFQQ>9sy8imbYgcRC<N1*p5udY;w!Un+rtac|e613j2uNT?ti1;^oc;fa
z<*YIlpi5CBdhh*x-~w8OjmhhN)x5s04n)kL`UQQ&_wkAZkznn|Q}#mT(^3&2GW|dC
zqfCDdp>;oCWO<j+fF(c|CMb4<O~B;@(erYTN16bwrlvMl-c#WT4+)M)#NV~gUA`Qf
zp!yYJjh2Y)g(+8}`TjWUM-h-?=dEa#5SXBn6PP$ss^)t#<hQK;Y1rNLw7OnRlp>N>
z0MsaCFOFvm4;E-u2u~@J+F1rDPQvz9qL))STRxH(11uQnk@JYG`d|;n1-+A}Be|?)
z@(M&wtSVuxss7ye5eIIf7#KA1*zx`?u!0i6jpE5@n#!j?18(3B;r3x<)P{W@s2p&*
zov&P4Ev{$^ygjqV5((sJG6i{APH<8T<^!Y!XB|*4iVgRZkYny?K*a{6dS0Jszv<()
zDCApob;Cwjc<a~R&#~Wa%A__gU&?^I-k+4_`eo1yS{mefU$&oLmb~@6y?Rsk&5kqn
zbXgK6AU<CWAbA|7n_mI70VPIIc!~cYAPnh^4Z3ahIOSP*Brd0h#wZK30oE!*Dmo;`
z)+(EuUA2AZPT2H3c0U#PK&d$`E$Zp$(507O(NXA2NI=<bb!mD?j=nr>c_Zoj{h)Y#
zzEL=(2zY172pXM4MtYG9E)pQOCIdot5H9I`(2H!4c#qmE$whj)sK-TfYQ<_@`}Fi=
zd-st$7#9~e^7^7;L^7go%kzk!>+SWYg`M4SUoh17=bLFPjG6-o)6pzcO~2b&iO0Pt
zMi%?^vQ#&EaqsU>b3yLEl$KkOJLs#Yy}RNZ_hkJBy_Y&4Frx!H(^@CCm8ucRboItp
z@5ig%F~*+fkN4ZH+kTyMtE=r!&yS7=)-}Q}?^(QgbCSPx|E&3cr5$<0M*pTpeS(dw
zxCnvGbv~M^_PLql5EDupg)d*;VlaC$G<}>!q8+H$dX@B^)myx7u0G8N>P4;BaaIKL
zl|*V$xgV$1;N8)%FRWq{=EREWdL1q|xZn{Gc9Yfh`l1-SHRPukyC(`=ZYWS;e6GJx
z#hc>P_Plz91|P$hr)uyk0DIN42>2C_r+hC658v-kAE!H;G_TG0d$OA{Cz;n&4T>fv
ze*iTnhyCH0i_?SeU|?ef7(mTwjP5p%Ds-W;cLsO67{F$i2lm~f7L52m{ev5sdWT?|
zJayrRfe<~FD-h?t?TZBz-pup>V_@#UEab`I_s#f0skqhW+hWXw?EsAY1WQGGg+!s!
z#MIOtaK@;gN$ya`k1QG2Xj@;(7ujFp{WNH|$E#C;;?u-kn3nC?B2wiSXP(ep-}}{;
zJsV8yi&OAg_sb0-cXxNC;y5CKVc-q*eM#GXcQk=aY~(?vKaonIuC6XXh2~x1Y+C7k
zWo>t4dwaX=4mGaGDMiZkyk3*K-oA1n0Z?hG6R$~Crw5Lic7*(4Z59}KG;=Qa2hwTQ
zPA<)KM(6XD`U2&*$9*KW4<9bh@+1Qbe8?XLBhb=w8igep0k^1r&)-KTvdCt!KQh+)
z<lGkkVApfC&gX%7*nHL5&kc<KfN*ZvP&Y6SGw8+*+ps*{FtBY^^GTWfM<K$vwx>2x
zQ0ZA!yuixUySXfDeFzs<3W+e4ONcO8m3Th+X~?GeX-tS-pg$Qh8v_5(_=?Ymj#~GD
zS`xLkp~*xVj(7<?#rPYZ2zh4tmA`Q4dfU+V{^y@20yyoF-S?Pm)O0{uX_-jqqsHbu
z^aI{*3K||RxyUgq?ksLNR?!^^c~SvNG{%q4y*InB6`lD-)Y`?jR^s0N&|H{kV(G42
z?u+8pxz&p?Yz4-pvol2E+zNvbChp)*gB^L-Y#?ec4plplpW`=~Fex#!$}e=q7-!eR
zCt;|tOm2@hd-_K$UpNGm8YQF+(~=|q?FDEG8}t2P)wGi_Uj>#4my#xAFB818tlaG-
z&9gl-7ll)w&7faCk+T=(qsIVhHZ29@e%<tGSVt(6GX{_Y^4rh5k?#4T0RFI&p-&E0
zJN)<q&Kk1C@f|<8vg$#bTqdEtoSAou8ln0mZT2Zq;mGFZgFAMfL*-?ZCfe}pG6oy(
zLTk-^{ct~P^76q_OwFIo+Dgh0U?X$x&70$y1}u8x<TwaCC&bK9<KXt~<U8uPz<LN_
zaFafKB8iWU&M$O@TsnU_+hQvkB;LCG{K>Dp0Gqg$uZsuKx(+K*$xv4L<BaGdcgobZ
z_*iLfDO+)NkFOuh@<2yawDekhgf~^5mO)dp#g}j*-7#&LLewwryH+mykcf1~mL*v9
z2;yu&d5`>>_N1CP$(1hhEEvUOWQ4?&3_=;L=)2>ikuNlQ7Z-h{B!UTxCV|7J!tm-Z
zsM$z;tE=D=ywS&6NJ_lyag?bD+~HJgf;#U|;4wLM%u%Ahox!QRtHYq4GZ-0Cf_er|
z9OW%7CTn9!>%DTot1X4yF-18*4HqH&KHz2xmUI3xZV>A10Xs1Mk_LaY^)ODaT=+v)
zZ3X`UB{t&iO4odDdmJsXT)r??q`pZq?<r7;B}B%&-(gE<;+A@ozbD#1`V+esti!uk
z4WvU%<u-cy{6a?J=geYVJbps4t8O%QYeN{dm7-kYX}Bk^F`M9VbaA>HSpo?*i?Bka
zSxd<LpJS6O5gMF`sf!=WI3JpYiE+dfb3Tm=<5>=ow>x3uV=)^N3>Xkc0(n`bZ>ExL
zstlxdm2$+)aXVEZ?3wv_lyFt@tTmz#0DlaN#8tUa6vUj6LZx$c&y!oH_ZKb+Em=!S
z#5HhH7U~hFP~wzS!^-nl)Ep-+sE~;`9#3px@o;)y5D&6HiCynK+aTZU^@MzxwTH@#
zfas@wDH$+w-0iNz>UgK7j=!scDml!g-^y(=WtB>7ZkHkx9$JJ7x{J87$aMA#C!TIN
z$?xck^xbQ?=IGIHhI1ZWwG$3QUnWGcD{%CAI^w&MT{u8dz?<Xh*h)*6-^%tzi+plK
z0cq5Hrsiwqv*Bb74RMF%6Jul+Yp}(?>1(>`(|x~pm}s7WIQ4Bi^}INb$yOO`5h*%e
z{ML$5o`V(+CQC@4m?w{hwh-ZNm3`j9!XN2{DRWowgoE?D2Qn1`#U-a^H13;yvlO(L
zvE()qNejEll*3#^%PRKXckIJ#H8v}qu*t!3JnxzbxXcun-4RW|>&wNFN6#0~IP1H2
z!)Ewtdd6Uf>>kCr1`i#?w>N9-*gpt8@B}~bW%bUZLe7ayi?;BobgQ>{e8UtkrVRI%
zP{TAo5$yedSWAc(Rf5EP37aQE#rWRZOX^$jSS1m*7}YG#Z`{6GfG45MDq+D_mJ|o*
zFj%MaOx-AqnnaS2#>BFDr4TdBcv1A5Ybg(WuvP;#9-T(!(FEct_8PJN67dyeF*?k5
z_)D_2yWRE8f{_^+yx5mg1+D8n++kwGs}I>_>4@fzM9bF~rlG6(6T*{k6a_{-<YUX?
z65eC+Cygv-hj3(toc-5e3@h)t{ZB?^D=X4S<hDboR>CUbI+PK^pJwrHcS_{-KAz49
zXM8Mw3PhQcOhYJBzFhqB4&wQ30%X;KJ2-w>O(z_RiuuGUSohqp)0?RcBYVJ277<=>
zs!G}b^6)KCdD3olu5D%WJ~YvRJrp^zqt4M^C3J<J3}1f0biGx4JGe*Xn@SX0^lk@e
z^r((czSqKox197(1Cd^$-u^XG`ja+z|6a;_8Pd&+MX-|stQ%bbw2Atn6csY=`LMwz
zwHLk@%*vgSAe;>YxY;-JZP_z1Mq(7Wfv*iDJlIkK8A@m$pj8Bz8l=-4CI);b!VfQ{
z(imm)S+OV6gB=MO2B0&Nzpah3Z@lUd4aB=y^CmjuyEEpBdR(DLj{x;yojADEFhhhm
z17hN9cQo0$c3J4mEY5Ui|E4uu6lhK2>khbf<LO4AF!RJpOOd?{HhpDE{!|NnUtRur
zj7bR@OzoST?E1jt<H9L#cgiL5`8>xR*Ruq2rVT|2P#&6Gw+%<k(R@MFkHTy4#MakM
ze2nkFXu~C7#g?A7tV!U+sBV$pDTl&%*Vo@d;oz{2?>%J@#+W?zehBR7*p@EVj=Z_J
zXpx{X<fPd)j;%hyFxNi)oXF^TDGYo1VCGQJWjDUpI0Ka8Sli{0=3VdQz@GX$%l`A4
zrw#>d&vA^VD_lLE>C>U?A*b;fr*661`G!%`u@avF<Bo|gBNNuX%j{l)+MG+I$hVVm
z>Gp0DtItecGQv~z0uOZo>rb|f=*DzZ$(I_wF)NakseSc7!1Sy>pte8piGTR0;=h<-
zXgjz40C{UpWhMGAZ`K->ftyRgYi>2usYSSm$wc^)|5D+6eyxGR&n@zr5Y=O5R4hb_
zzhFq9uTbwsXoR=zjH-VX<0r8fgnh-(<=)hWZ*Z+uEuYVsE7%>E{$?!8;{t<^W-~{H
z{r8~%;=UDaf$bG?S$7E_F!8?~7O_Bfdon!)>~HNVnIPbWR%qtFe{ko5U>Rh+y^_w9
z`GS9IU!?5qEn6GZB>JQG_<%!bCZ@S8DQe_D+Xb6}EcyT5>E}^^B`{;hh-1eXhg(S1
z@QtD3D7&!q(^K7Rd`^*95OnLzr%h%HNexU0jTTb+%Rrb%38ACxk#^mumpHaqzHlkC
zyPG7F-EXZ{fy2Jc(m!i5Nj~E|1Rs5CqkAg;n+q?G77VizE@8&E$hA0`J;~6Z2!Tft
z_7AaOB`07J@;$bY%g?NddJ*6Pxj{#-{vk8uxj|Ibb(&1DvQ)Ie0Obk%_i*HYz|>}F
zY==2Z2_{_i${=5D2Jk{(YcCr4-=;xK3YxeW*s;TV+q9K~c@A7XIJG?ZKUPnX0kjdJ
z=76b<Q@6c$Y<#4*j8}d_?6*Dy!Ei|o0v9oaj`^2MDvN{=)f$*m{`>)X9zSU118sDL
z{$zJWAfNcpu?>}!zwog%GPK)%h$DOgYM7{8WHgRr0S|S>V^Sw11PviJpXYTEq?JYO
z7|?UM-x~<ti7Gn|U#?y+1+-uNH`Xg@vFDjf5t?LSnuB0n+rV+U9#pSY-$?oQvNDG(
z)~W*96t^GsrEQn%utL`@)n<E-fi|`wpf?RY@Zm<Gotf9?5jhM<UNA$_vli(M9sXi3
z{_gDhjk)+mj(AA}ePgKu`326=K)+kiw%<>L1W5>5TH1q!+I8N4n(emg{j|&_0oQWU
z-Ul~jON2n`g6+SfFY-qKn@>JmbTqiw??pyp3Hh|-0TYcdpa7O4y-aMK!Y@s!;s}iq
z8coZT25cF!-j)kYnc+ZtBbfL<zak6Qz#x#O3ZFtx{431=%-U<<JvTPcNAO3k5eL3V
z1^|_@CT>^CKQah)l&r3jOWdpxCytP>A856^hTWgKhwyv-VU920$J@yHDF^#w?S*Y^
zF@95ON>x38u4(x`x+y96e(v*!mef!8YdHxiPBVI14WTV2U!I2bik{YiY{iphOMt%r
z3&u3xgN~c~{M)ww8(-4S@j<Ho78?>$5+#tZ5ZFmK&*`(S1(eVN!DthpIYZjpa*?I@
zpa3B4JZnXBQLH+iloEAMGbvVC-ju3Fuk794&^^1h)=|xL;)2WAbtSCS4Nl8-X2r<B
zkTRj-k@C3~XsYC}-=gCke6fY@0+JPv*W--ek8=G_BT4SohOcmWfRUUaUJn=Xwgs0o
z4zpy8!7;&ew5YWOu{>wGC}s|}kj$#GUsztYr%j&2S(uqoOtM$!6PFITo8tMl1GI`t
zI6Jc<67q%v`|K`rpsYew44rtdbS^>U8^YNANII`w1Qog<Lzi3ni)w260tDwIFN%C%
zUELnO<wv?}bnQvgsbnW+eBxs|sdv9yTwm_jlc%PplJ`gAX!V^BwkhG!`3d994?4ef
z(;CsT{2SP&Vy;;NyNvfM%R#z&`WRP@>sP7nUEXKa$kJ-m_Ai6$pCknix-BZYt=Xv4
z97fI2RJQhy!%X`~Fq(u_WyX43yER~dO93Bwkbd>q5|^yZ{|lhU<}xYVJ)2ZoJ8=Zg
z)*NEL*Hsw<g9n~HFf)U!=Xrq91>|N9ZgrTa5uvF!gCj)2a(%90Of-kjYI}0Hv|a8O
zWU8z`0nxJCj7@n;G7##kOt!lzG6DN;19vxEqCs9c&)BFrojk<8pkexWIPP=R2i4}d
zKkRmQ?ePhkI!bq=!<DwtA~<J7xfYg7GC49IPyx{)yf~wW0j61OWKl~KSflu%N&S<c
zS~)h5$C7>wDWkMDHa$4{AE*j>g)O1WB(Yutrk$(Z0ZxY<LA_TCw#e00&F8yiec^^u
zJtJM(CajC(WspUSU;g2$gtG%x8K9&1kPE`yO5UK;`nqwNe_d^O60A_ycjxY3me`8h
z@B1U1Uboa+UT5_9Tuw#DoM<hSS6{!N(b3TnCrkHPupOHE-7Ts!b8w`>aEci#00ukM
zEP$*??f3Fo#9u)tTOO}W`NfJjLtidr334re)eG@4<DjCw(TgSEQFA#Z@_!C2DWQZE
z6Ehi;QRJ`j-W!aNjnm%6`JJd(0WNC|#;;|y@wcj108V_V{~PRC5s-X>^9}mhOrbdS
zp&bjx{ogD_Csp2U(}9n(yTm)obiO+pc8Uwt-wBCk<>RoSkdv?>*#-H0B22WU1|m$E
zPJiY5z0P%|N)Ll3B|`{fabq*dG!{CWmuY&k`h*DW3RFol-W3qzZ}6WhmXwG36Hy+$
z6$&-Kmxp3D-9MpVZskYTCLhiNt|UZTwd(cK-2|y@1-%R*jWzYz*!Nw&VGDn!(SyUN
zwOZ6OPIwMNYrq@sAAF|UI~N-^V2jNc6m$GKo!Artm_v!qwi8UHYamORp;fTIw1^0p
z<8M2F$kWm0wp>^LVdwP5(ve@*dB=#jx~VPRT`jXayN0aD%%r7iVZo4`&RRH;`Q=$o
zhG|)R`9<9t=v6%I`!q-%M7mA2Oy3$%Nnj_MrQBBfIKQXsa~Yj?b|Dlpf0iDyISNp_
zl;c8ibT^=*={9QjIw?kwlo**=<A(7lQTJtbMVg;u5tn~B>&N;82)}RKIiY^Ov=arm
zJIFPho1-oOG9VBMw5lgTx^(Qtbw8Zd2<wVH)Gn|U*%BF{g+rxQ5))J^1_PByC8>Ng
zmW^Tl$6B}i;=b_E6b7BeK5zpmUF)<o_;E=|J)L9b0ix(7#m}&++2JI-_7a(sU?L@w
z;B=pn_-`;mT=Mi7D1ycMA3ewz<U;S}*HbI=X4a)bo>ONy`QPOZbX`W79lg^bY}t!{
ztgo6`TFvbrA$jOPNw6~t5=s!)6+8)~E^QSm+_NW5S+x-Zv?DTc^cz>}TO)CNsVe;{
zmurj`zX_Dfgj{kp8r^wAUhmDYWB%b8xEtA&#Q_|jS%=nZGV-nN;kB~|Duu4Yla?56
zX#0d%s>8qSfE#=QyboMG8;{2~OUokU1T%yt;z=X8x)q&yb7ZWU60M6@$q}r+@=NZo
z1N1+#DQ0~+4KQYjOoKGZhvtI#e3J&a44StZlTu-qtMlfq!=l9cy2k*ck|K!jv~2lU
zt(<nnc99D;KPFryZ0Ytmc4}J|M4epKe>qS#0Ft)ObiQiOmt34<JQ-hd!~}s=LP!IU
z`G*Jen{Ls^hpYBG?lmZ3E=FDvPV!BW(?BF{pXl<UQq^iYpwcK~?sSNC5Od)s=tPZ`
z0P2<sL7wux$;#?maO55d1aV)!%MV-|3+E>iIDxGRh@(fojrJWuI?jOD9-{GE_DBIN
zb2NW8Y!_xa!y9%3G(dCCvkMN)iek?ze7pcAAM2Lh8Mh6Iem5YRbCzI(lmlroL(m})
zFZia?_qaLb(_Lb~7BqTG*pHjCF^|}oP!vh;9Y-4b3E4Usy%j2vwjTb5UQh|LT7CK-
zF~BT(eVo_`UxB@8*=K7Gk*3q!+dWG|aN8F(+l?}|05pWqvfgO)U=DqxlF&k<lSdM#
zy4(>uMFD0wGXH!`0K=i;L0P#CCF)GDR%R>cyQjzo?=nQQ31drNu$pU14_Cy4jd*Hl
z8wT@kz()_xgEd~(xP_d6GnPyKv`}=HLU*&x_tuP96vUte$kaAS%APl0$30@@{%u|)
z@&09AeD4ct-NQ0AYIg8efeh3QD<UzgiUI`Dh5S)dza7%~d_QKNdSeZU?}f`Q9(ZB8
z4|5LU0hd*yB44gT6*<044gciWGZHDjX-U~8Oi7DhLoD21i%Z=`ForI0YA>{WKQ5W9
znQ`CHj_;P1L^7mY=&`npl#f*ev~@^}f_anW(Mj)S^!uA*5syDJnuCS`RL2|L6@WXY
z%T>z<+2S)yLe45KQe64|RcC@kFh&LQI!`7xf$#)HBYIA0GL(!EfjRKXse&*Qwt&}H
zh)^&5oup)Zfu+F`oSLZAdbXLEdWR*fM2$3@L5jC=rseADxgr?N_oBXq;JcD+tR({7
zY)EZ%8bt5PsdzDAQY8XkFPTLLiE#6%#uZb2r3`Q^54fASccXri)B+@<#&s<`))`;3
z><QMB0uwHyGsQIs!FdtC4vUSgsI9NcPmCElhMD73U2S&3H=c{jlxTP0RKK!ywK9^i
z`lvf-+eMq&^``fEa+cWln;)zg(`PIi-0j^H5WxplG3NA-^l@kP_#*9lIf&B>Zx_o_
z9=(&@kuI6EKv>v6G=1@7=_idb?mrFlW@<I}P2I8bSrhke<5tjoR<JyAR_(y;j5uAy
zddk11@4oP@N4baV-N75Ha8dIpWh7>HqPgLlUJAe|ROWj(ZC+8?2kR!dvx9hj$#izw
z_VY7UI)!YhQ|yYbq}<WDvojI|yaPPrUL`6;+8SlN6|JLS5jjvMjo`VG4=2BMYpBtq
z?Y?M$arcR07v$8HhPH7#p1_h>AE%QeYi(x`65f}><dm>Cc2wCny42|Uc>fWzOmlEA
zc6@FQ#>)=rM_wU?!n#(<#j``@kp>$6Kx;i`R&_o?Ve6XW0t5y>oO$DozZ^{6NLk6F
zCfA<`HURS%vJJwZ2LH2NQ0^D9eeb9CI|%z#ZS@X_@0twWjs2~ROi>xwZWWoEocJ3m
z2O@NfKp-%u*9c_!9jyaDFC+nhdB&dk!5<J#5KN2sKS4V|un!bKVE%vf^oc10L(W4T
z=}1eik}@Eqkqrz~z+e;q0^k7<EtC#rQ_+c#154>1Ne~dEz$+y-R#N#de1ifb%4Fsu
zA|Fou^N=NTBBpLRlViG<jGP!dFgWOojN@OBT966M?eXJ$&=;N1HZ{iKYSXXAn5f7h
zAl}gs%;-aZLTgmTIN%c8tu&bY*FgXLAOu`_)Ir6+11~{7;7TqSkAMDaxPR0eLXZIG
zi!7of`(NEC!5llQaw}B}wM!YW0#9Nm8*urrFHy^&L3xVaL!Bb37BOK812YE|SSCjk
zXj=c*iq}aKM`$z<s-b!Q%9M1$A@D*fg&Ye_{mJqBUxitm4hHH@R{z+{z5h>}xw~&+
zl$-)K!72Qoqy^B&k)nz>dw??k=0%z6?=t_Zo4nw^!SY2{t?u|a5S25|=>2;q_#ZVa
z`k#jNO+PtI8N0O+n}ZKbXgH=5$Rw_Sb%rFU5eBBF#T)Z!j9~$N2EDrjVa^}N))%<F
zPm}E>)@c7{o&Tq|ee17oBO%4dkn0L1;!>0uZ&cC(^j3i&fhTfoXjYE~yvE@>5EcYh
z=-^)zv+TfPDR`@5myHdbEb7r1&+C2%qUKT_Zk6yqQL}+QFz=ceCuAx9wt6kVY_p){
z=KY=80p7xOjL_#m-FDSx7&r?Dpor)TDg`GERK=$`{hmF{l;HU4OZBv_YOYQ50AuFG
zpR$@#F{>22;hWTdR5isX-UFW;W2r*5_cXZyug+$+U08B&{}TCkfc2(B&eMFUo13?9
z58M7o6r5hbB1n$O0q|ssKT-4jLS=(rftzJh>RJe`HvfgHW{y>=xOcf+Tf@P;Uh+Y?
zo26HC>e_}Vjezz3($bRckbLPpP~gXkye822qN(of=vZ%3(%+cmLqI^#=6PebOLAE$
zx&wIF8c5amivU^|l-1A6Q>76LKh`&;N*k!sq}+dmsgfR=)1wJgE!S9+p{S$5_ys>h
zWJZk|*=uTRx7GZLS<CYC^QpIMyrPq!&$8XO`hI@vi90+r!{_xto)&oXQQDPV!2|sz
z^1u9-$PW<nGWa(jvbLw!G@U8|;uYF`DR0_OKt!~W3HAM48jadjE=76d7kJJ}{$GJ-
z{ZBa5I(&rFV?ec9-309)NcSI*XioU2JP;7gAuZm3>gk`>F9vO&YKB((xL2l$M|euV
z+@oXrzT7R-+O>KQ*|4)xS2!rD*ixz4c>KHGlo}dsbqa`Whkq%-6`S|T6>-4n(H&qd
z$`=wv9)vC4BQ3R_5^3vFb;3jg?I4mT1s^dDINdMtLqkKa#%ODIhOqSMN{=Ev*`x(e
zB4z(9FfA%rPxp#&)t%D=rb~w8KXE=GC;&KB6yq=2C@T}WE!+}ZEvxv2y6?otx>Aw&
zA3-?mHdbo%2(jV=8tR6twOd)>_>R8-=SXK>^mn_9G#uBR6(fD!W*m#ji<D-cXQ%$(
z%SdY*dN;rIyv3F(<eGK2Cc4M-WRMyBL)SM1K30eoT7JXIYyY0Cx*oX7?`pduoxlVu
zp?ih6LFd`me}Ltb{~0VdiR^qyq|(sP5Tr>CnzfifJ6}}SAKKW^p=`sL{1x-F&%l^p
z<L2UC%mCH*4^DtCtCKLJABH*K+mt_m9q3Sbqa3DhW>rmyak-sq%$EB<e}~G*$iPO&
zNSM_Nx+d91qmnoAdVnqVJ}FMU0+x209pXornV(WDxk>@e6rU~>=<k2Y`C5;<hS|3w
z_0M%PejBxjflf7v0Lg~RUW-atjKCjg!2xrXsW-mc1TfX6Jj%63%5(qy0}=3)zqX;_
zX9?#0y>yPku1JlSX^k3JkOj>Dn<X1w3=?}(Uh{ICgAu(1P}t`TmE3|Uj-!Xzs5HIR
z9r@tS_|*odc*<1E6~^S;Vgi0dIrMAwTe~T=ZAn{n%^}0YSDFN=GZAV{-9f8`lxWDA
z<*gvdA+yPg<5aA8wZa0LWE`ZXffZcAuDouOGNj@Az1tug+^rY`x`z%HVA1GSoML_f
z?owWpMWt8vy~GV7l?g|*F~v7n&mU}^iMB{lYdxG`7t%kE4_{;&hv!obPL5Swn%R0S
zYy@ReiBJeOT3ImnoQu2hRfE@nUTyjvt1vv2BlOE+9D%815D<KWU+)F@2rT9qI+}v+
z*di45=%iu-$~8$y_waQPmr#LGZ`s0D&#t_%4A#i|{Fv{JD^<*DKC|e*PkyqO1?a~;
z@DMOXMGui0dSGK8r!Et=?8ier8R8NJ&6776339W9#@-{_0KEY!Hg5L#_vvbF;CuYG
z+W4qbp}}d>2qp=l8abload4RRa-sR{G1liTO(C)T3Bdpa;|Zi_LCoa~cJwdnPJQn@
z_bKw6=$Pa3+R?H-f3%5!(V$3%G0*YCjr3fSBx?;$wm@%edReeO>Xd&TsawGZ0~QlS
zVE5m+HLcPynb5HHlK$9X)fcjOq1a_fG4q<8GY}P#Vf^~2HQ2P3nG|r&A9!hiOw?m2
z`tarqnTjm>0MqR{UY{SzJ|7<KI$)pOFPb@Hs1#Z*hC9pz$xJ<hk_t6rpVJ$Etc0=`
zFTs%S=z~vqrWImdCx}ZBMutgy>Np$kY)c<G1o{Ofq-%?!nm2lC@9B<E60whL6>O4T
z9;RkBWQDH*CtIh@XEnNymgM-r^uD6p#-Tk0Wz1777kWHkK4KV5JF-1foRoB6dl|8(
zH`^QM9z|g7=W{$6OuqL-)H5}1KgJh0g?X!W^MtOeDa>w88g7}NFg`U4-7zl2`Cfqu
ztDp)B5HCazd#ADxa8eY<_5D9pVFxO8g+Rd4JiSmJFo_J;FvK2`9r_UF;DM}ViOy&j
zbM}+}Ke4vF2<ltAHq>QetuXiAh@fJB+jKW3{1FkB{WO@=2|F%t%>0X)EU<X=naqte
za;6GS-aC-;ko_?<8|<M<W9Qg~7(2G6mE^l3NCF(H3nmuHKT1QxRJ-6RB#j!+z(Uc2
z+fY~Su!UyJGvqCrI*_xo^>2nC`mb4ZTD;`OyRsd=d}8`q&ydA`F+9p^(8+}G?Fr!1
z+4#Y0<8tWs9UhYa*u%;EF>WG?-i%P19g(=zLcJqVETiF;8zz;Qza233#Tm(cBZ~D5
zAkeb*9~_Q?!0UHFxL^I?f%UpqM_ppzYdc((@J`IVm!AU$S#nOJzP-*;G8DG*z<x_o
z$3n6>3vJ8_8MsFCYv7sDK$fXGLb2L^pVJ@eHESPFk*1BG?I0WKAaD~+Ao1vhuBSdV
zAQa&&D%Ig)X8gK^r#^vwx5iHBC8|`AlqGF{AcoWro~S`2sYsJ+VW|ein*gk~G(R_i
z$Ul(h6eXO-!5P?ovxb-YNo}{?{>iZxqSMrsF5IHzebTZ)y~uU!{!;cjb~6?8y}p0g
z===ukoeU$y%sMmp@)02$1|hm#?sRg0x~yQJDtt6LE~Q2mVYK{4U+@CiMy3<7PYE8L
zGR~<|X;hdTD80T?g8I>R8WkmRgwG9QA2}g*@94M)HupjtD4%R7rwSD7VSN$@R%yr{
zDWxX<vCAm*WNDxU@@o;2{Oq<x?J9|T>}=1QE9&(Ls4gAYXQk=2;PF@xNN`621oMV|
z%1L4uftat)bOj8Ry?}a<bN=U_`uu66FBW{8u|Q*rq}y?4xUE?1#EAz)Ll4qLsrD=p
zbKgU)|3GP?8~B(`VJvbM2hclR6epN6oy;{gE~g4zhKc<zO2N(rGObEpvPP5q_EE7U
z(o>Y$#a1uD7Iy#<z}98Gu@8ESpvA;|8Eo%?9`*z^m`iPE6>?$2WdAB6zU~6;JN$Zq
zB|h6Eqh;WljsiVNhKktx)%B$E!6^n%{sra>e}skX{P0Sk1LO)L`~V9J_3K@7Ve=xx
zZZ50P1SHuN=OEFeg_V=wweCPR&wN{1G=Jyb(hxq`1BR*2j+pFrd$2V>Ol-3!7gq_o
zJ1cG<hIQr&Aerm-hfX?paApOHB0Uq!3NLmB(V!$XPdRgps0He)BvO@kMqo#DQ+H@#
zrP+oRdKMy5Ki{{ZB)dZl({i!hZ-gPHMz$E-rpX<%BF99dH6K$asn+~WkLQq$e0`xs
zmxt%5u#k_>L~a|P3PxJg!k`X&i6OzvTwwX!ES-C#M+V}988mJec&wfF_O6t5I?y+C
z9Q$Ii<+*3c9t!=%gXEsusKdHJ%{n2zJ<{t=Fn4^o{A9v$W^7><o6M5wM)Yz1^9t?Y
z;ql<n7(VufN=$%NAPT(Nqn%!;rduJ!4MD6~)6@LbR(Ds}K`fqO4+wmBpX!OqO*jEY
zmf*~r!ZZ5$Fy6auEoQs>m<obq{muy`f1=^4AC)ujD;Hu;4J5OFc?~Ri`h82)dU#x|
zKyG3!H*QaNPUO<p4Rc1ihQLc>!NP!Lx%8WcoQM3&n_z5aCoKE|+MU+jdml1wIM1G8
zu8xiKqa$w&15eSyqx&>&<>>D!RjVQS)hj|%-q|B_w$+#Sr+h*DHb~$>C7qQ0<5f=H
z>u_>-&2Nj@)U;z^4fJ2sf-@n9wWPr!`$q%{#Y(Hn2Sm&$*jB-g7HGa>>jrOT$C0Ry
zsb&dl!W30CJ|`H`ht(m?1F6z|t*V$Laqqq4uq5pQkJMmuf>iR|ZZ35xo8*dST51H}
zXD=f;1w+s%5I?k6To*5wi1Mp1h5qEPPz4Yc`a&dBeEySJ2$u^8Ojx-uy!{JL{)3ai
z05S+=V91&fe-au2D?qz*gsp(I!XJt-xgsbKxzd0ni2aSA`2S7!77>CbRXD~d^iral
zl7c^hQL@|?Pm2EwSGoxjM|!Tl>vV-GWugTJ6&rgN<}X@9Pyu333F1ONi|ttI{i!h6
zDVl*n5x?=$Z~TxdS$rB&!Ia^ra;pywq^L7cKqBC&j;#5&_W}Xmy)-cHusTsB1jMBO
zcME}FBgEVTN@SZsvxS;4tT<Q(kPVV-EXg<cYwdw&%|Zu#M$mCL4BJS{h5%vc7G(Tw
z1ORgQ)VPBq7dId+(Mu&ANR?E;XD$BAE)t*tL5j`VK|(e7*~{DVu1p<&HjhA_L82A#
zBRv?%<#1|{#z_4(mUu6s<yhbf2>`TyAT?tt{UfG_UEG;0RfP!HB3UnC;c2~@+`oQK
zOdLpV^u<e~{k}1vrEnD3%0mJ)#U2AO0#A9ar?uqHFTKrSr?-ZDrXl-3*#$o02(b12
zFvM$WdUQ6u{h0YWHD0PWG|{wShb}XoWQDvk?%I&;1N1fjdWREGq!UC*6R<^7#LWP{
zH)n4qKRYhwpB-<{{y*K|AC{`Q#LoUfcTn_DURuWfi|%lzOI^B<{a+gdO8>7yt~?y-
zu74vmvS-hpeczYTFg204EIni`%p^>n5Xrs`A^RRm$WqxUN|wo*CHo%PWz9bJ@H-<t
z)bqRE_qyhfxz6?do^!ruzd!eVA3ddPdZnHyO~m`XXp^fm<+xx+el{-HksFXv!kMh6
z00_QY(Etk-!n{0Q6A49&otW2A6cU-}$|^6ccp@3id%gXIeR>u`@b{SvLPbE;!(}z#
z-|?r~2Lu~a1!3lNM_qL=4EuS1mj)E(u%-{tp~00!OhBvADxCa+4<I0;5AbG<lyXZy
z4?Vh0<I*bKw^69Pr!R(eY72qYWI4@Ug~Rpvcjfty?%Tk}U{1OTc-G~w4_eI}<#zW0
zr4A<vH3s)Qsjn`16%%@Fj-I@*+9c&PU({=F2Ef@9%>y(HX`?Jc`2G`40dWobzJ)7H
zZ}z%ydVuZ!sRwXprE*#<-&g_ygfS3==!$s`MD#5<+-JxEQ|iKnW6&TP6GLwYEDMH+
zQg*ZYZEbh=-FLG>&o7dblPhmIbepDK)?X}Jr5N(ucbArv8y~6kaoXFO3OZ%sEl(KD
z`QU2WZu=GXQJ~$g$I{PK{)1Ty+bn<i7N*w#XU}+TC=e##*)Qn1-iHfjT!{Q{!HlE|
zGFoPrL(f9}-q~Xzf(4#KeF1yh+*&$O(w8vFd*3u~)=FP((w=?)s$v?j@y52LgF@zS
zorejP1CP=Fk9R-$2(Q?%OhmMrD#^BW#Vf+t`^qV&i^$WBOE&@xZ)q0BdVDW>R)Nxc
z5FBmIZ-(y&Ob$pC3X)g0a?03kx%S>-bnd>8k;CuYf4ig73P+He9$%On+gC22G(kV7
zYWth{YI%)|Vp=&CnK$2`_>1&UIU@aMw~OE4)#9QTLA2i;+3rLv&VrixxZ(z6J`I73
z6+EL?qbzyd`EFkS0D|xIo%!_a%(B6}6m<L6>eTW=>Ec+k+;CHtp25fh2%6P(zS5K$
zu4qu;Ukd#hX|x@wKwl6^Y3Db$uvi8mws~ey$P@v`|6fhByjI1XdjsaEx8VEPoys3f
zQIwRH1_`<Y7ZuRz1il|~A-xjHB5+>x_8(@1s$XUVs$zDhaOK3Ui)>pLiVswJ3Y^Kk
zve7O9Yi_EpGp)u7cl}STDr(1FZ^1~`P4*R-DjOX75N3G!wP<fBIvvpaV)`$tj_Cc=
z-3ricP_GLs&iBJ`TaCjdSe_OC+UdEi@b!+Qa)%BIy2(Ku#0`Db1<V-2Wk;ag<lJ!O
zV1$dy_(l4y$$xcAU^(n_E4;9GuRyQh<(2>)W$;SS$;fuR?f#p<$X(U<HPpiye`Zb1
zwtm65K49%pNXR3y_dv)MLW_Rif%6-*=twhNN@{=H19OAtsTs0gl7P-&UKlUyo*Atq
z2Cl{MCTN_+jtFp7uvq`(IKFEWPzMXNGWvR2Go`bMtqX8xsuOTuC&t$~k!pX3jCG!~
z&u=O}?keZQpQygq2TeFu`AxEh78-=l_Z$jQxy^hLDIBb-NjdAi%1pkYMJpu=?xi~Y
zQd_Z4S<h8rD+*aJK`F}3OWhPexvDuJrWlzgv+;B5bx=Xzcz??5CXyB$@4uK0nan+l
zw#N$Qs>m6~=oMH#%xauYx26*|f)WT4tJv0a;iz(ou<pW4bS1%EdzMgrGFxtr($<mF
z-qVVsem_3O7)Kgo*JP^uvSSld$gAVCDT=H9s_BVLS>=>ha2<K<Pi-_O8c;XcKJlh9
zVZb!<%Yx6oC4=FaU=(VmLmeJ@jK{aGFdP<KqQ-3B<f|q>pajs8km*e}L%;R@=E%^B
z;SI_ksjXp;hi<20C7-OljB<cxj74TJF!H28noC9s^N5rU+MBJG$Q6)irVcEN-$+$g
z^<CBdj60CgaC^#(ljpySNDPcf`ci+!2G>xN_m83q4<MDv2k*$ozT@`|L=3df?ORYu
zkdF_IajBKw-mJSL?>TLtp<yda6IYHQYe4!n%%HibRBTZ<M!4M8_(Gip1aSKd%Fk<h
zqYe8BMbj)k=)*C?Pq4>RENWcg8zd^cb)wC*uAL1+;*g2?p<P}9(OjmL?OL2h_TXPh
zy(sR_uXl?yJ6FD{fIB=GiD|)4=V}I8`zz7m2$J@2!e>P{oGDZ(co33@K>A4|ua@D3
zM|j-wwEN<HZIf6y#VTEpDsNggZn*$L&)AlU7O6&7=d&wN>42rU7J`#LbZkkFUY4Bi
z>Xx~<;*98?OHFzrN>y~{FM>e{Xj#4qQDN31V@&P(b=Ic1IxT|ySXLGTq^N?8ffh<I
zs+*USHk8u}!a2E;8|tn&b9q3O%(lVH`4t_Mho^@<)@k#+xeqcyd@?&JDX~u3|HM7^
zYv=K4eliK~IFg$rR$>wogr=d=Oz8b_>qqy-mzw>lhc0cDs4!=n4?*9<YT%{Z;To4E
z*auvoc%+~1H?r1tO&QZt&<>at$tb9oSJZbw2EK4yir`LrmoRESL$w|1%K<&(Yx>cs
z8tCI=Z--OY7}QN?w$o`qIO(PED8%ekyPE{M^5g@Pl>$CHYA>0))^{MW?4%s_?P%FG
zA_V#2R-bH3@KF32b34karXlL#&Ciy7Hk3DRj*qlAQj2$Wk54q@e7>n6mtxxxY*l7I
zcS+jrM(qoGdQ}F0s<}BhM`;Pn4j+wCye#Hw=bd7fw(%JvSp6S)W;jIIDBt1)0YCiv
z6KaZAqi<%4ONDz!Q;~!tXw&Ct$%F;q8}5}buyZbPpWynCPz)9T+)D3B68DrNL=zs^
zSZpI+d8dCY%(i`RjiyLuxMyPl9(py7Ew(Mq=lu?tm|n+lo!I@KxbD^>FY3`Qf%v8$
z^UD6KcV<P`F(k6FB*-Wlz6WO{vT~@=;Y2*WMs41GbTOPE`4@<tSn5N9@M!K?C`btT
zM|`w%3=O-lQxa(C?fdhDgnI6U?~o)mW%j1$+hE;FdK3|<DNn>#O0hk1icL3%K{cQ2
zHvEJAMaZA<Eg-Tt5L{*gZeTHn@~7KL#>d!fO?;ob(>cLXm+}_IR7x3S@-6M#Y+`B7
zor0b4r!5UaUti*fjw(-NKGUh}l0|p*%a@Q3Ozo)3itQf~!WDw}3T_$dY>f7fl<Cbf
z*DCO8ez?ceIhf8!VEtH&Z@F|lGuKH*cx6IW2-SXrXxn@U??G4mm-S?qNEAM~ue(dy
z+%kEhQ(mWPQv90y*x9fmkt8mM2tK=UD~0$J2r`!YeuC=`l8JQUb!7$uP?%Y4z;x_!
zJYfym7U4D`IwNAYl6*CTtM~bh4C3Mfj*t&-sfD%TY_eZUx<Y<WPZkEav9YQ~?Qj4d
z95lgy7oZ?lZS6_7{v+KCxNvXK^P2y0ElZme07EYCL?7bL7{`A6LEtF+MqGmCc!f#A
zy%GT}-|_Zg2J`RfFauD_7~g>SBVcww+G5oJNKVYTHuy(+BcKCc3#&E#A+Jxi03Y?I
z0vvqVb$U=sGvsaF-|EPL55<8!i#aX1-_y}=0JSVgN+b2h`FuJaoZF!{V@v)>k5&eE
z(EPjUNA_(Njdjl$RN>*pj`M`ZdL>U=B5rM;DPg0EEm=S3#$`JWhj`zlHu^yIiS)9q
z-*P0J1gR0<a&CrEO>0-?v97^j#{SOdvr2cP5{PJ3&ROW)BZN?Kz`XGA2?!zfJjvp-
zfejqs@2@mF`s<9}5{wF{e?3FR(H7%X^;(G6=bvXFRP_chWb^}vT9u#q;9iF55x9#5
zd+cs^cb^FBNZ#4m5to(i>5P7`iii+B!It4q4@zu=OqBQsX1UXmt*&xzWolshxzt^^
z4H?zd)qOiVJE<7-MX&sTD=H~b78&N)tA23KSB=FB>w*V?>Y5SS4Z>@?F{k{tw!+<X
z_)O*_-fgHAI<5^#DJij^2~m+hfBsan`P&Ur@-OiqGo*vVJ8ZTc_Fu&d84*?Qxv63@
zBl4sh$8=3dQ=Li;%8kW5(oU_fY(BH6_Y@h^yr4xX0-7b7y8a<0onE|-_-4V1%q9!g
zmDs&JCU-dM0rXg-LEQYjs-~r)p~SdWJ#0$2NV52uS!^83v9u)4Hf>~KSs4r9SCvdX
z;Jb`+a&kyBGoB>~TDjzga~hi=c%Ppue2z^pS27E+WcuyzrE~mJKDwC3gjJ7wnl_kx
z42CT?H@9kRY;0#vC)3^8nMqbwwrXzf?{853v};LMW?v|K;h`l7J}kT#6MTD$SV<Q{
zoa7@Zh5DA&bZ)UORAzq-)6c-bfJ7okcjMkUu)P29foXkXW57c%9oXAF9#vOYFa7v&
z%bAjXrg1951qFseaxg5{^>uM$ws&P%OkU+waub>1*7o}Rz<#2Gqa%Z^p5DNxkj44=
z`68F`<UEs)@1C-LtQ!-+SQZu)(E+-;s;1_0TzveDyy7d9nwyZ;mX@l81#5YEdC2fb
zPfsD<tm(?LMqhqw^IjBGDLSvcRZngQc;`L_nUDqMF&2fcuC7kb&s+7H)Ya8Bg90ZT
z8?XM5?!D?(tMBOG@RW~_&q_lF47prqwu~z}>x8zAr7~?vG6xO1mmSu+tq_&xwz6g-
zqn_;?7@BCEKKJspl;6Q@IPAA--nJRtlEk4H>ppKO_M`qJgt%RXA+glZsnbVuBiz@k
zia$vDl=o2%=r9PkZ+onm$&g~y6c>ZN=&}AM^!tm$V-JNZI?d72Qn0M7j5eh6%F!&s
zLr2g*F48!7K>TS^5~Zf5rt&!U*ldI$(ui*7Xy^5knxce)ZxgL;ZtBbH^Bpfl<u8sN
z`GTJKXU~KZJXX%B<WMVl?vZ)!{UC{oibA@%m5sYQ<t$@pjy?m1=p!84r>z~Bx^1PM
z)m_!mp;ae9Pp@K&t*(Znq|ewe1TfhDS|V@*91%@8#w=2!7ce&e;JLAYWo>7HxFz}0
z^P^_KC-^|hy>A-rnm@*MxZL0}fJK1CL{*vnSbbwoZ=NjKI@!R~QTPO0MUM9$WsS?Z
Imk{3n2fLyuP5=M^

literal 0
HcmV?d00001

diff --git a/keyboards/xd60/keymaps/cheese/fn_layout.png b/keyboards/xd60/keymaps/cheese/fn_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe5ae99e0fcb43078ec978e8ebc8ef7068c3b5b3
GIT binary patch
literal 20690
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

literal 0
HcmV?d00001


From a32436d5a16e1092d71b3185f17fda303d8333c6 Mon Sep 17 00:00:00 2001
From: Nicolas Guelpa <nicolas@guelpa.me>
Date: Sun, 26 Mar 2017 15:20:44 -0400
Subject: [PATCH 107/163] Create README.md

---
 keyboards/xd60/keymaps/cheese/README.md | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 keyboards/xd60/keymaps/cheese/README.md

diff --git a/keyboards/xd60/keymaps/cheese/README.md b/keyboards/xd60/keymaps/cheese/README.md
new file mode 100644
index 000000000..8a5b97c03
--- /dev/null
+++ b/keyboards/xd60/keymaps/cheese/README.md
@@ -0,0 +1,13 @@
+# cheese's Layout
+Customized xd60 keymap 
+
+![Base Layout](base_layout.png "Base Layout")
+![Fn Layout](fn_layout.png "Fn Layout")
+
+## Programming Instructions:
+`cd` into keymap directory, `make dfu`
+
+## Features
+- Media keys and movement keys setup like on the pok3r
+- Lower right movement keys setup like on the fc660m (fn+direction for home/end/page up and down)
+- Caps lock can be triggered by pressing both shift keys at the same time (and deactivated the same way)

From b6b85ed41397440417106309bcf2b7ef2b617976 Mon Sep 17 00:00:00 2001
From: mattdibi <matthewdibi@gmail.com>
Date: Tue, 28 Mar 2017 09:56:07 +0200
Subject: [PATCH 108/163] Added italian layout

---
 keyboards/ergodox/keymaps/italian/L0.PNG    | Bin 0 -> 152470 bytes
 keyboards/ergodox/keymaps/italian/L1.PNG    | Bin 0 -> 130416 bytes
 keyboards/ergodox/keymaps/italian/L2.PNG    | Bin 0 -> 126006 bytes
 keyboards/ergodox/keymaps/italian/keymap.c  | 223 ++++++++++++++++++++
 keyboards/ergodox/keymaps/italian/readme.md |  15 ++
 5 files changed, 238 insertions(+)
 create mode 100644 keyboards/ergodox/keymaps/italian/L0.PNG
 create mode 100644 keyboards/ergodox/keymaps/italian/L1.PNG
 create mode 100644 keyboards/ergodox/keymaps/italian/L2.PNG
 create mode 100644 keyboards/ergodox/keymaps/italian/keymap.c
 create mode 100644 keyboards/ergodox/keymaps/italian/readme.md

diff --git a/keyboards/ergodox/keymaps/italian/L0.PNG b/keyboards/ergodox/keymaps/italian/L0.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..491a4f3883148a4b6ea730c545a1dd4d69c823e6
GIT binary patch
literal 152470
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%0DQhXcMT33%h
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
Q!CclkeY3OWr`^N<1Dv(YUjP6A

literal 0
HcmV?d00001

diff --git a/keyboards/ergodox/keymaps/italian/L1.PNG b/keyboards/ergodox/keymaps/italian/L1.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..17c5ffc67bf071b11ecc847048a5693afa0ff650
GIT binary patch
literal 130416
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
AK>z>%

literal 0
HcmV?d00001

diff --git a/keyboards/ergodox/keymaps/italian/L2.PNG b/keyboards/ergodox/keymaps/italian/L2.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..c0aa9e9d38ae64002875ab484ff58defc6fc5c2b
GIT binary patch
literal 126006
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

literal 0
HcmV?d00001

diff --git a/keyboards/ergodox/keymaps/italian/keymap.c b/keyboards/ergodox/keymaps/italian/keymap.c
new file mode 100644
index 000000000..e4c7a569c
--- /dev/null
+++ b/keyboards/ergodox/keymaps/italian/keymap.c
@@ -0,0 +1,223 @@
+#include "ergodox.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  | TT1  |           |  TT1 |   Y  |   U  |   I  |   O  |   P  |   è    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ò  |   à    |
+ * |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   ù  |-/RShift|
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |</Win |   +  |   -  |   *  |//Ctr |                                       |ì/RAlt| Left | Down |  Up  | Right  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Ins  | LGui |       | Win  | Ctrl |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 |Backsp| Del  |------|       |------|  Enter |Space |
+ *                                 |ace   |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP(  // layer 0 : default
+        // left hand
+        KC_GRV,                      KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
+        KC_TAB,                      KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TT(SYMB),
+        KC_CAPS,                     KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,                     KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LALT, 
+        MT(MOD_LGUI,KC_NONUS_BSLASH),KC_PPLS,      KC_PMNS,KC_PAST,MT(MOD_LCTL,KC_PSLS),
+                                                           KC_INS,  KC_LGUI,
+                                                                    KC_HOME,
+                                                   KC_BSPC,KC_DEL,  KC_END,
+        // right hand
+             TG(MDIA),    KC_6,   KC_7,                 KC_8,   KC_9,   KC_0,      KC_MINS,
+             TT(SYMB),    KC_Y,   KC_U,                 KC_I,   KC_O,   KC_P,      KC_LBRC,
+                          KC_H,   KC_J,                 KC_K,   KC_L,   KC_SCLN,   KC_QUOT,
+             KC_LALT,     KC_N,   KC_M,                 KC_COMM,KC_DOT, KC_BSLASH, MT(MOD_RSFT,KC_SLSH),
+                                  MT(MOD_RALT,KC_EQL), KC_LEFT,KC_DOWN,KC_UP,     KC_RIGHT,
+             KC_LGUI,     KC_RCTL,
+             KC_PGUP,
+             KC_PGDN,     KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   [  |   ]  |   &  |------|           |------|      |   4  |   5  |   6  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   (  |   )  |      |      |           |      |      |   1  |   2  |   3  |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   .  |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |  0   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       M(0),    KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS, KC_EXLM,                RALT(KC_SCLN), RALT(KC_LCBR), RALT(KC_RCBR), KC_TILD,  KC_TRNS,
+       KC_TRNS, RALT(KC_QUOT),          KC_DLR,        RALT(KC_LBRC), RALT(KC_RBRC), KC_CIRC,
+       KC_TRNS, KC_PERC,                LSFT(KC_EQL),  LSFT(KC_8),    LSFT(KC_9),    KC_TRNS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,                KC_TRNS,       KC_TRNS,       KC_TRNS,
+		              KC_TRNS,          KC_TRNS,
+                                                KC_TRNS,
+                              KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_TRNS, KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_TRNS, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_0
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      | Lclk | Rclk |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, 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,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+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) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md
new file mode 100644
index 000000000..979ce0f5b
--- /dev/null
+++ b/keyboards/ergodox/keymaps/italian/readme.md
@@ -0,0 +1,15 @@
+# ErgoDox EZ Default Configuration
+
+## Changelog
+
+* Dec 2016:
+  * Added LED keys
+  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
+* Sep 22, 2016:
+  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
+* Feb 2, 2016 (V1.1): 
+  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
+
+This is what we ship with out of the factory. :) The image says it all:
+
+![Default](default_firmware_v1.2-2.png)

From 512eb5e1d5edd39e3e46f8201b57d8fd17084408 Mon Sep 17 00:00:00 2001
From: mattdibi <matthewdibi@gmail.com>
Date: Tue, 28 Mar 2017 10:10:24 +0200
Subject: [PATCH 109/163] Updated readme

---
 keyboards/ergodox/keymaps/italian/readme.md | 79 ++++++++++++++++++---
 1 file changed, 68 insertions(+), 11 deletions(-)

diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md
index 979ce0f5b..f9d012135 100644
--- a/keyboards/ergodox/keymaps/italian/readme.md
+++ b/keyboards/ergodox/keymaps/italian/readme.md
@@ -1,15 +1,72 @@
-# ErgoDox EZ Default Configuration
+# ErgoDox Italian layout
 
-## Changelog
+## Layer 0
+```sh
+ 
+ ,--------------------------------------------------.           ,--------------------------------------------------.
+ |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ | Tab    |   Q  |   W  |   E  |   R  |   T  | TT1  |           |  TT1 |   Y  |   U  |   I  |   O  |   P  |   è    |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ò  |   à    |
+ |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
+ | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   ù  |-/RShift|
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |</Win |   +  |   -  |   *  |//Ctr |                                       |ì/RAlt| Left | Down |  Up  | Right  | ~L1  |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        | Ins  | LGui |       | Win  | Ctrl |
+                                 ,------|------|------|       |------+--------+------.
+                                 |      |      | Home |       | PgUp |        |      |
+                                 |Backsp| Del  |------|       |------|  Enter |Space |
+                                 |ace   |      | End  |       | PgDn |        |      |
+                                 `--------------------'       `----------------------'
+```
 
-* Dec 2016:
-  * Added LED keys
-  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
-* Sep 22, 2016:
-  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
-* Feb 2, 2016 (V1.1): 
-  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
+## Layer 1
+```sh
+
+ ,--------------------------------------------------.           ,--------------------------------------------------.
+ |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |      |   F12  |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |   #  |   $  |   [  |   ]  |   &  |------|           |------|      |   4  |   5  |   6  |      |        |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |   %  |   ^  |   (  |   )  |      |      |           |      |      |   1  |   2  |   3  |      |        |
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |      |      |      |      |      |                                       |   .  |      |      |      |      |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        |      |      |       |      |      |
+                                 ,------|------|------|       |------+------+------.
+                                 |      |      |      |       |      |      |      |
+                                 |      |      |------|       |------|      |  0   |
+                                 |      |      |      |       |      |      |      |
+                                 `--------------------'       `--------------------'
+```
+
+## Layer 1
+```sh
+
+ ,--------------------------------------------------.           ,--------------------------------------------------.
+ |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ |        |      |      | MsUp |      |      |      |           |      | Lclk | Rclk |      |      |      |        |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        |      |      |       |      |      |
+                                 ,------|------|------|       |------+------+------.
+                                 |      |      |      |       |      |      |Brwser|
+                                 |      |      |------|       |------|      |Back  |
+                                 |      |      |      |       |      |      |      |
+                                 `--------------------'       `--------------------' 
+```
 
-This is what we ship with out of the factory. :) The image says it all:
 
-![Default](default_firmware_v1.2-2.png)

From b9b9a59f224791dcfd460257efae1945e50e865b Mon Sep 17 00:00:00 2001
From: mattdibi <matthewdibi@gmail.com>
Date: Tue, 28 Mar 2017 10:13:29 +0200
Subject: [PATCH 110/163] Fixed italian kymap readme

---
 keyboards/ergodox/keymaps/italian/readme.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md
index f9d012135..75dd3c29d 100644
--- a/keyboards/ergodox/keymaps/italian/readme.md
+++ b/keyboards/ergodox/keymaps/italian/readme.md
@@ -1,7 +1,7 @@
 # ErgoDox Italian layout
 
 ## Layer 0
-```sh
+```
  
  ,--------------------------------------------------.           ,--------------------------------------------------.
  |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
@@ -24,7 +24,7 @@
 ```
 
 ## Layer 1
-```sh
+```
 
  ,--------------------------------------------------.           ,--------------------------------------------------.
  |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
@@ -47,7 +47,7 @@
 ```
 
 ## Layer 1
-```sh
+```
 
  ,--------------------------------------------------.           ,--------------------------------------------------.
  |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |

From 221b27c508b3870de725e720222a6281770b5f98 Mon Sep 17 00:00:00 2001
From: mattdibi <matthewdibi@gmail.com>
Date: Tue, 28 Mar 2017 10:15:18 +0200
Subject: [PATCH 111/163] Fixed layout title in ergodox ez italian keymap

---
 keyboards/ergodox/keymaps/italian/readme.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md
index 75dd3c29d..215c24a5a 100644
--- a/keyboards/ergodox/keymaps/italian/readme.md
+++ b/keyboards/ergodox/keymaps/italian/readme.md
@@ -46,7 +46,7 @@
                                  `--------------------'       `--------------------'
 ```
 
-## Layer 1
+## Layer 2
 ```
 
  ,--------------------------------------------------.           ,--------------------------------------------------.

From 2104900030c4a0d0a5d71c9900804dec229a375d Mon Sep 17 00:00:00 2001
From: mattdibi <matthewdibi@gmail.com>
Date: Tue, 28 Mar 2017 10:19:25 +0200
Subject: [PATCH 112/163] Removed images from ergodox ez italian layout

---
 keyboards/ergodox/keymaps/italian/L0.PNG | Bin 152470 -> 0 bytes
 keyboards/ergodox/keymaps/italian/L1.PNG | Bin 130416 -> 0 bytes
 keyboards/ergodox/keymaps/italian/L2.PNG | Bin 126006 -> 0 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 keyboards/ergodox/keymaps/italian/L0.PNG
 delete mode 100644 keyboards/ergodox/keymaps/italian/L1.PNG
 delete mode 100644 keyboards/ergodox/keymaps/italian/L2.PNG

diff --git a/keyboards/ergodox/keymaps/italian/L0.PNG b/keyboards/ergodox/keymaps/italian/L0.PNG
deleted file mode 100644
index 491a4f3883148a4b6ea730c545a1dd4d69c823e6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 152470
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%0DQhXcMT33%h
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
Q!CclkeY3OWr`^N<1Dv(YUjP6A

diff --git a/keyboards/ergodox/keymaps/italian/L1.PNG b/keyboards/ergodox/keymaps/italian/L1.PNG
deleted file mode 100644
index 17c5ffc67bf071b11ecc847048a5693afa0ff650..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 130416
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
AK>z>%

diff --git a/keyboards/ergodox/keymaps/italian/L2.PNG b/keyboards/ergodox/keymaps/italian/L2.PNG
deleted file mode 100644
index c0aa9e9d38ae64002875ab484ff58defc6fc5c2b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 126006
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


From 71857ebc3f410b918481f4a6bbed93f1cb2eec65 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Tue, 28 Mar 2017 09:17:09 -0400
Subject: [PATCH 113/163] Move Atreus50 to hardwired directory and update
 README

---
 keyboards/atreus50/readme.md                  | 25 -------------------
 keyboards/{ => handwired}/atreus50/Makefile   |  0
 keyboards/{ => handwired}/atreus50/atreus50.c |  0
 keyboards/{ => handwired}/atreus50/atreus50.h |  0
 keyboards/{ => handwired}/atreus50/config.h   |  0
 .../atreus50/keymaps/default/Makefile         |  0
 .../atreus50/keymaps/default/keymap.c         |  0
 keyboards/handwired/atreus50/readme.md        | 16 ++++++++++++
 keyboards/{ => handwired}/atreus50/rules.mk   |  0
 9 files changed, 16 insertions(+), 25 deletions(-)
 delete mode 100644 keyboards/atreus50/readme.md
 rename keyboards/{ => handwired}/atreus50/Makefile (100%)
 rename keyboards/{ => handwired}/atreus50/atreus50.c (100%)
 rename keyboards/{ => handwired}/atreus50/atreus50.h (100%)
 rename keyboards/{ => handwired}/atreus50/config.h (100%)
 rename keyboards/{ => handwired}/atreus50/keymaps/default/Makefile (100%)
 rename keyboards/{ => handwired}/atreus50/keymaps/default/keymap.c (100%)
 create mode 100644 keyboards/handwired/atreus50/readme.md
 rename keyboards/{ => handwired}/atreus50/rules.mk (100%)

diff --git a/keyboards/atreus50/readme.md b/keyboards/atreus50/readme.md
deleted file mode 100644
index f0be255a0..000000000
--- a/keyboards/atreus50/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-Preonic keyboard firmware
-======================
-DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
-
-## Quantum MK Firmware
-
-For the full Quantum feature list, see [the parent readme.md](/readme.md).
-
-## Building
-
-Download or clone the whole firmware and navigate to the keyboards/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. 
-
-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 file in the keymaps folder named `<name>.c` and see keymap document (you can find in top readme.md) and existent 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 **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboards/atreus50/Makefile b/keyboards/handwired/atreus50/Makefile
similarity index 100%
rename from keyboards/atreus50/Makefile
rename to keyboards/handwired/atreus50/Makefile
diff --git a/keyboards/atreus50/atreus50.c b/keyboards/handwired/atreus50/atreus50.c
similarity index 100%
rename from keyboards/atreus50/atreus50.c
rename to keyboards/handwired/atreus50/atreus50.c
diff --git a/keyboards/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h
similarity index 100%
rename from keyboards/atreus50/atreus50.h
rename to keyboards/handwired/atreus50/atreus50.h
diff --git a/keyboards/atreus50/config.h b/keyboards/handwired/atreus50/config.h
similarity index 100%
rename from keyboards/atreus50/config.h
rename to keyboards/handwired/atreus50/config.h
diff --git a/keyboards/atreus50/keymaps/default/Makefile b/keyboards/handwired/atreus50/keymaps/default/Makefile
similarity index 100%
rename from keyboards/atreus50/keymaps/default/Makefile
rename to keyboards/handwired/atreus50/keymaps/default/Makefile
diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/atreus50/keymaps/default/keymap.c
rename to keyboards/handwired/atreus50/keymaps/default/keymap.c
diff --git a/keyboards/handwired/atreus50/readme.md b/keyboards/handwired/atreus50/readme.md
new file mode 100644
index 000000000..0c24f67db
--- /dev/null
+++ b/keyboards/handwired/atreus50/readme.md
@@ -0,0 +1,16 @@
+Handwired Atreus50
+==================
+
+This firmware is for a Handwired Atreus50 using an Arduino Pro Micro.
+
+## Pinout
+
+The following pins are used:
+- Columns 1-13: D4, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4
+- Rows 1-4: D3, D2, D1, D0
+
+## Compiling and loading the firmware
+
+To build the firmware, run `make`.
+
+To flash the firemware onto the microcontroller, run `make avrdude`, and press the reset button.
diff --git a/keyboards/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk
similarity index 100%
rename from keyboards/atreus50/rules.mk
rename to keyboards/handwired/atreus50/rules.mk

From d5ee0194abf5cc9df4086a89ad78cf188352028a Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 15:43:04 +0200
Subject: [PATCH 114/163] fixed #1139 issues

A fix described by jackhumbert has been sorted out now.
---
 .../satan/keymaps/admiralStrokers/Makefile    | 36 +++++++++----------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile
index 18d2280d6..7aba5d809 100644
--- a/keyboards/satan/keymaps/admiralStrokers/Makefile
+++ b/keyboards/satan/keymaps/admiralStrokers/Makefile
@@ -2,25 +2,25 @@
 #   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 	= 	no  # 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   # Enables your LED to breathe while your computer is sleeping.
-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
-UNICODEMAP_ENABLE	=		no	 # This allows sending unicode symbols using X(<unicode>) in your keymap.
-UNICODE_ENABLE 		=		no   # Unicode
-UCIS_ENABLE 			=		no	 # Keep in mind that not all will work (See WinCompose for details on Windows).
-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
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no        # 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       # Enables your LED to breathe while your computer is sleeping.
+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
+UNICODEMAP_ENABLE =	no      # This allows sending unicode symbols using X(<unicode>) in your keymap.
+UNICODE_ENABLE =no          # Unicode
+UCIS_ENABLE = no            # Keep in mind that not all will work (See WinCompose for details on Windows).
+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
 
-VARIABLE_TRACE		=		no	 # Use this to debug changes to variable values
-API_SYSEX_ENABLE	=		no	 # This enables using the Quantum SYSEX API to send strings
+VARIABLE_TRACE = no         # Use this to debug changes to variable values
+API_SYSEX_ENABLE = no       # This enables using the Quantum SYSEX API to send strings
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
 endif

From 48dfc77718bf115c6d65257b07e8d87304c23d8f Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 15:58:46 +0200
Subject: [PATCH 115/163] removed a carriage return

---
 .../satan/keymaps/admiralStrokers/Makefile    | 37 +++++++++----------
 1 file changed, 18 insertions(+), 19 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile
index 7aba5d809..bb4072861 100644
--- a/keyboards/satan/keymaps/admiralStrokers/Makefile
+++ b/keyboards/satan/keymaps/admiralStrokers/Makefile
@@ -2,25 +2,24 @@
 #   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 = no        # 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       # Enables your LED to breathe while your computer is sleeping.
-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
-UNICODEMAP_ENABLE =	no      # This allows sending unicode symbols using X(<unicode>) in your keymap.
-UNICODE_ENABLE =no          # Unicode
-UCIS_ENABLE = no            # Keep in mind that not all will work (See WinCompose for details on Windows).
-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
-
-VARIABLE_TRACE = no         # Use this to debug changes to variable values
-API_SYSEX_ENABLE = no       # This enables using the Quantum SYSEX API to send strings
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # 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 # Enables your LED to breathe while your computer is sleeping.
+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
+UNICODEMAP_ENABLE =	no # This allows sending unicode symbols using X(<unicode>) in your keymap.
+UNICODE_ENABLE =no # Unicode
+UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for details on Windows).
+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
+VARIABLE_TRACE = no # Use this to debug changes to variable values
+API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
 endif

From c72ca58528671eb582a1a7360407fd9347c9735b Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 16:50:44 +0200
Subject: [PATCH 116/163] Moved key_timer out of function.

---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 97a0f225d..4bd49aaad 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -1,13 +1,14 @@
 #include "satan.h"
+static uint16_t key_timer;
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // general keydefs
 #define norm 0		// Default layer
 #define elev 1		// Layer directional keys
 #define supr 2		// F-keys and mediakeys
-#define spac 3
+#define spac 3		//
 #define FNO1 4		//
 #define FNO2 5		//
-#define FNO3 6				//
+#define FNO3 6		//
 #define MAC0 M(0)	//
 #define MAC1 M(1)	//
 #define MAC2 M(2)	//
@@ -143,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
-	static uint16_t key_timer;
+	
 	bool checkTime(){
 		return (timer_elapsed(key_timer) < 150) ? true : false;
 	}

From 37b7539af3a4e302a44ed9292ed5012a9ab34e5c Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 16:52:56 +0200
Subject: [PATCH 117/163] slight cleanup as per recommendation

---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 4bd49aaad..72a4c3dc9 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -1,6 +1,6 @@
 #include "satan.h"
 static uint16_t key_timer;
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
 // general keydefs
 #define norm 0		// Default layer
 #define elev 1		// Layer directional keys
@@ -114,6 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 #define DEAD 	KC_NO
 #define SCAN	KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB
 
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped)
         GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\
         DUTB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LBRC, RBRC, DEAD,\

From 1b821eca663fb6cbe13ea1753f220bce5a7636a6 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 16:55:25 +0200
Subject: [PATCH 118/163] removed varable trace option from makefile

---
 keyboards/satan/keymaps/admiralStrokers/Makefile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile
index bb4072861..61dfedeb8 100644
--- a/keyboards/satan/keymaps/admiralStrokers/Makefile
+++ b/keyboards/satan/keymaps/admiralStrokers/Makefile
@@ -18,7 +18,6 @@ UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for detai
 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
-VARIABLE_TRACE = no # Use this to debug changes to variable values
 API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings
 ifndef QUANTUM_DIR
 	include ../../../../Makefile

From 256abc64d5daee6d7526d33455f6f28cc782dee1 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 17:08:01 +0200
Subject: [PATCH 119/163] fixed function to not accept any arguments.

As per Pramod's comment on stack overflow:

In C int foo() and int foo(void) are different functions. int foo()
accepts an arbitrary number of arguments, while int foo(void) accepts 0
arguments. In C++ they mean the same thing. I suggest that you use void
consistently when you mean no arguments.
---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 72a4c3dc9..7a8459eb5 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
 	
-	bool checkTime(){
+	bool checkTime(void){
 		return (timer_elapsed(key_timer) < 150) ? true : false;
 	}
 

From f504082f7f4f2fe078cb1863b43d7ef0dc0c5c53 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 17:17:08 +0200
Subject: [PATCH 120/163] declaring checktime before the function it is used
 in.

---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 7a8459eb5..b5fd2ec60 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -1,5 +1,6 @@
 #include "satan.h"
 static uint16_t key_timer;
+bool checkTime(void);
 
 // general keydefs
 #define norm 0		// Default layer

From 411cd4fae27693324ca51eb5bf07ecebbc074c01 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 17:30:15 +0200
Subject: [PATCH 121/163] moved checktime out of function

---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index b5fd2ec60..422a801ba 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -1,6 +1,8 @@
 #include "satan.h"
 static uint16_t key_timer;
-bool checkTime(void);
+bool checkTime(void){
+		return (timer_elapsed(key_timer) < 150) ? true : false;
+	}
 
 // general keydefs
 #define norm 0		// Default layer
@@ -147,11 +149,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
 	
-	bool checkTime(void){
-		return (timer_elapsed(key_timer) < 150) ? true : false;
-	}
-
-
     switch(id) {
         case 0: //MAC0 - Hold for lshift and { on tap
 					if (record->event.pressed) {

From 85cac3952965b37317d42bf7b3e5cf3a9e4ebdae Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 18:41:04 +0200
Subject: [PATCH 122/163] fixed capitalization issue (checkTime => checktime)

---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 422a801ba..7b83ed7b0 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -1,6 +1,8 @@
 #include "satan.h"
+
 static uint16_t key_timer;
-bool checkTime(void){
+
+bool checktime(void){
 		return (timer_elapsed(key_timer) < 150) ? true : false;
 	}
 
@@ -147,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 				XXXX, XXXX, XXXX, 					XXXX,			  		XXXX, XXXX, XXXX, XXXX),
 };
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {3 // MACRODOWN only works in this function
 	
     switch(id) {
         case 0: //MAC0 - Hold for lshift and { on tap

From 6de7e5d8dce42b56a0424da98408f3cf8f27cfa1 Mon Sep 17 00:00:00 2001
From: Ole Anders <git@swoy.org>
Date: Tue, 28 Mar 2017 18:45:26 +0200
Subject: [PATCH 123/163] typo removed {3 ...

---
 keyboards/satan/keymaps/admiralStrokers/keymap.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c
index 7b83ed7b0..b6dc29c67 100644
--- a/keyboards/satan/keymaps/admiralStrokers/keymap.c
+++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c
@@ -4,7 +4,7 @@ static uint16_t key_timer;
 
 bool checktime(void){
 		return (timer_elapsed(key_timer) < 150) ? true : false;
-	}
+	};
 
 // general keydefs
 #define norm 0		// Default layer
@@ -149,8 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 				XXXX, XXXX, XXXX, 					XXXX,			  		XXXX, XXXX, XXXX, XXXX),
 };
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {3 // MACRODOWN only works in this function
-	
+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: //MAC0 - Hold for lshift and { on tap
 					if (record->event.pressed) {

From 23839b8c6d2f955e4da89b0981948c721346c528 Mon Sep 17 00:00:00 2001
From: skullydazed <skullydazed@users.noreply.github.com>
Date: Tue, 28 Mar 2017 15:20:36 -0700
Subject: [PATCH 124/163] Clarify the quantum license (#1042)

* Clarify the license for files we have signoff on

* Update against the currently signed off files

* Remove unused and not clearly licensed headers

* Replace an #endif I accidentally removed while resolving merge conflicts
---
 doc/COPYING.GPLv2                             | 339 ---------
 doc/COPYING.GPLv3                             | 674 ------------------
 license_GPLv2.md                              | 264 +++++++
 license_GPLv3.md                              | 656 +++++++++++++++++
 license_Modified_BSD.md                       |  32 +
 quantum/analog.c                              |  16 +
 quantum/analog.h                              |  16 +
 quantum/api.c                                 |  18 +-
 quantum/api.h                                 |  18 +-
 quantum/api/api_sysex.c                       |  15 +
 quantum/api/api_sysex.h                       |  18 +-
 quantum/audio/audio.c                         |  15 +
 quantum/audio/audio.h                         |  17 +-
 quantum/audio/audio_pwm.c                     |  15 +
 quantum/audio/luts.c                          |  16 +
 quantum/audio/luts.h                          |  18 +-
 quantum/audio/musical_notes.h                 |  18 +-
 quantum/audio/song_list.h                     |  15 +
 quantum/audio/voices.c                        |  15 +
 quantum/audio/voices.h                        |  17 +-
 quantum/audio/wave.h                          |  18 +-
 quantum/config_common.h                       |  16 +
 quantum/dynamic_macro.h                       |  16 +
 quantum/keycode_config.c                      |  18 +-
 quantum/keycode_config.h                      |  16 +
 quantum/keymap.h                              |   2 +-
 quantum/keymap_common.c                       |   2 +-
 quantum/keymap_extras/keymap_bepo.h           |  15 +
 .../keymap_canadian_multilingual.h            |  15 +
 quantum/keymap_extras/keymap_colemak.h        |  15 +
 quantum/keymap_extras/keymap_dvorak.h         |  15 +
 quantum/keymap_extras/keymap_dvp.h            |  16 +
 quantum/keymap_extras/keymap_fr_ch.h          |  15 +
 quantum/keymap_extras/keymap_french.h         |  15 +
 quantum/keymap_extras/keymap_french_osx.h     |  17 +-
 quantum/keymap_extras/keymap_german.h         |  16 +
 quantum/keymap_extras/keymap_german_ch.h      |  15 +
 quantum/keymap_extras/keymap_german_osx.h     |  15 +
 quantum/keymap_extras/keymap_jp.h             |  17 +-
 quantum/keymap_extras/keymap_neo2.h           |  15 +
 quantum/keymap_extras/keymap_nordic.h         |  15 +
 quantum/keymap_extras/keymap_norwegian.h      |  15 +
 quantum/keymap_extras/keymap_plover.h         |  15 +
 quantum/keymap_extras/keymap_russian.h        |  77 --
 quantum/keymap_extras/keymap_spanish.h        |  15 +
 quantum/keymap_extras/keymap_uk.h             |  15 +
 .../keymap_extras/keymap_unicode_cyrillic.h   | 163 -----
 quantum/light_ws2812.c                        |  13 +-
 quantum/light_ws2812.h                        |  14 +-
 quantum/matrix.c                              |   3 +-
 quantum/pincontrol.h                          |  15 +
 quantum/process_keycode/process_chording.c    |  18 +-
 quantum/process_keycode/process_chording.h    |  18 +-
 quantum/process_keycode/process_combo.c       |  16 +
 quantum/process_keycode/process_combo.h       |  16 +
 quantum/process_keycode/process_leader.c      |  18 +-
 quantum/process_keycode/process_leader.h      |  18 +-
 quantum/process_keycode/process_midi.c        |  15 +
 quantum/process_keycode/process_midi.h        |  18 +-
 quantum/process_keycode/process_music.c       |  15 +
 quantum/process_keycode/process_music.h       |  18 +-
 quantum/process_keycode/process_printer.c     |  18 +-
 quantum/process_keycode/process_printer.h     |  18 +-
 quantum/process_keycode/process_printer_bb.c  |  18 +-
 quantum/process_keycode/process_tap_dance.c   |  15 +
 quantum/process_keycode/process_tap_dance.h   |  15 +
 quantum/process_keycode/process_ucis.c        |  18 +-
 quantum/process_keycode/process_ucis.h        |  16 +
 quantum/process_keycode/process_unicode.c     |  15 +
 quantum/process_keycode/process_unicode.h     |  15 +
 .../process_keycode/process_unicode_common.c  |  18 +-
 .../process_keycode/process_unicode_common.h  |  18 +-
 quantum/process_keycode/process_unicodemap.c  |  18 +-
 quantum/process_keycode/process_unicodemap.h  |  18 +-
 quantum/quantum.c                             |  16 +
 quantum/quantum.h                             |  15 +
 quantum/quantum_keycodes.h                    |  15 +
 quantum/rgblight.c                            |  15 +
 quantum/rgblight.h                            |  15 +
 quantum/serial_link/LICENSE                   |   2 -
 quantum/template/Makefile                     |  17 +-
 quantum/template/config.h                     |   2 +-
 quantum/template/keymaps/default/Makefile     |  20 +-
 quantum/template/keymaps/default/config.h     |  18 +-
 quantum/template/keymaps/default/keymap.c     |  17 +-
 quantum/template/template.c                   |  15 +
 quantum/template/template.h                   |  15 +
 quantum/variable_trace.c                      |  16 +
 quantum/variable_trace.h                      |  16 +
 89 files changed, 2172 insertions(+), 1293 deletions(-)
 delete mode 100644 doc/COPYING.GPLv2
 delete mode 100644 doc/COPYING.GPLv3
 create mode 100644 license_GPLv2.md
 create mode 100644 license_GPLv3.md
 create mode 100644 license_Modified_BSD.md
 delete mode 100644 quantum/keymap_extras/keymap_russian.h
 delete mode 100644 quantum/keymap_extras/keymap_unicode_cyrillic.h

diff --git a/doc/COPYING.GPLv2 b/doc/COPYING.GPLv2
deleted file mode 100644
index d159169d1..000000000
--- a/doc/COPYING.GPLv2
+++ /dev/null
@@ -1,339 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/doc/COPYING.GPLv3 b/doc/COPYING.GPLv3
deleted file mode 100644
index 94a9ed024..000000000
--- a/doc/COPYING.GPLv3
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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 3 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/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/license_GPLv2.md b/license_GPLv2.md
new file mode 100644
index 000000000..b017086e9
--- /dev/null
+++ b/license_GPLv2.md
@@ -0,0 +1,264 @@
+The GNU General Public License, Version 2, June 1991 (GPLv2)
+============================================================
+
+> Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+> 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+
+Preamble
+--------
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to most
+of the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software is
+covered by the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you can
+do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a
+fee, you must give the recipients all the rights that you have. You must make
+sure that they, too, receive or can get the source code. And you must show them
+these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer
+you this license which gives you legal permission to copy, distribute and/or
+modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced by
+others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish
+to avoid the danger that redistributors of a free program will individually
+obtain patent licenses, in effect making the program proprietary. To prevent
+this, we have made it clear that any patent must be licensed for everyone's free
+use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+
+Terms And Conditions For Copying, Distribution And Modification
+---------------------------------------------------------------
+
+**0.** This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License. The "Program", below, refers to any such program or
+work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language. (Hereinafter, translation is included without
+limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running the Program is not
+restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program). Whether that is true depends on what the Program does.
+
+**1.** You may copy and distribute verbatim copies of the Program's source code
+as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the Program
+a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at
+your option offer warranty protection in exchange for a fee.
+
+**2.** You may modify your copy or copies of the Program or any portion of it,
+thus forming a work based on the Program, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you also
+meet all of these conditions:
+
+*   **a)** You must cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change.
+
+*   **b)** You must cause any work that you distribute or publish, that in whole
+    or in part contains or is derived from the Program or any part thereof, to
+    be licensed as a whole at no charge to all third parties under the terms of
+    this License.
+
+*   **c)** If the modified program normally reads commands interactively when
+    run, you must cause it, when started running for such interactive use in the
+    most ordinary way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is no warranty (or
+    else, saying that you provide a warranty) and that users may redistribute
+    the program under these conditions, and telling the user how to view a copy
+    of this License. (Exception: if the Program itself is interactive but does
+    not normally print such an announcement, your work based on the Program is
+    not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works. But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the entire whole,
+and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on the
+Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+**3.** You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and 2
+above provided that you also do one of the following:
+
+*   **a)** Accompany it with the complete corresponding machine-readable source
+    code, which must be distributed under the terms of Sections 1 and 2 above on
+    a medium customarily used for software interchange; or,
+
+*   **b)** Accompany it with a written offer, valid for at least three years, to
+    give any third party, for a charge no more than your cost of physically
+    performing source distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+*   **c)** Accompany it with the information you received as to the offer to
+    distribute corresponding source code. (This alternative is allowed only for
+    noncommercial distribution and only if you received the program in object
+    code or executable form with such an offer, in accord with Subsection b
+    above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all the
+source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable. However, as a special exception, the source code distributed
+need not include anything that is normally distributed (in either source or
+binary form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component itself
+accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source code
+from the same place counts as distribution of the source code, even though third
+parties are not compelled to copy the source along with the object code.
+
+**4.** You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+**5.** You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Program or its derivative works. These actions are prohibited by law if you do
+not accept this License. Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+**6.** Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these terms and
+conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties to this License.
+
+**7.** If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution of
+the Program by all those who receive copies directly or indirectly through you,
+then the only way you could satisfy both it and this License would be to refrain
+entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and the
+section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices. Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+**8.** If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded. In such
+case, this License incorporates the limitation as if written in the body of this
+License.
+
+**9.** The Free Software Foundation may publish revised and/or new versions of
+the General Public License from time to time. Such new versions will be similar
+in spirit to the present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Program does not specify a version number of this License, you may choose any
+version ever published by the Free Software Foundation.
+
+**10.** If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+
+No Warranty
+-----------
+
+**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/license_GPLv3.md b/license_GPLv3.md
new file mode 100644
index 000000000..2061be2b7
--- /dev/null
+++ b/license_GPLv3.md
@@ -0,0 +1,656 @@
+The GNU General Public License, Version 3, 29 June 2007 (GPLv3)
+===============================================================
+
+> Copyright &copy; 2007
+> Free Software Foundation, Inc.
+> <<http://fsf.org/>>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+
+Preamble
+--------
+
+The GNU General Public License is a free, copyleft license for software and
+other kinds of works.
+
+The licenses for most software and other practical works are designed to take
+away your freedom to share and change the works. By contrast, the GNU General
+Public License is intended to guarantee your freedom to share and change all
+versions of a program--to make sure it remains free software for all its users.
+We, the Free Software Foundation, use the GNU General Public License for most of
+our software; it applies also to any other work released this way by its
+authors. You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for them if you wish), that you
+receive source code or can get it if you want it, that you can change the
+software or use pieces of it in new free programs, and that you know you can do
+these things.
+
+To protect your rights, we need to prevent others from denying you these rights
+or asking you to surrender the rights. Therefore, you have certain
+responsibilities if you distribute copies of the software, or if you modify it:
+responsibilities to respect the freedom of others.
+
+For example, if you distribute copies of such a program, whether gratis or for a
+fee, you must pass on to the recipients the same freedoms that you received. You
+must make sure that they, too, receive or can get the source code. And you must
+show them these terms so they know their rights.
+
+Developers that use the GNU GPL protect your rights with two steps: (1) assert
+copyright on the software, and (2) offer you this License giving you legal
+permission to copy, distribute and/or modify it.
+
+For the developers' and authors' protection, the GPL clearly explains that there
+is no warranty for this free software. For both users' and authors' sake, the
+GPL requires that modified versions be marked as changed, so that their problems
+will not be attributed erroneously to authors of previous versions.
+
+Some devices are designed to deny users access to install or run modified
+versions of the software inside them, although the manufacturer can do so. This
+is fundamentally incompatible with the aim of protecting users' freedom to
+change the software. The systematic pattern of such abuse occurs in the area of
+products for individuals to use, which is precisely where it is most
+unacceptable. Therefore, we have designed this version of the GPL to prohibit
+the practice for those products. If such problems arise substantially in other
+domains, we stand ready to extend this provision to those domains in future
+versions of the GPL, as needed to protect the freedom of users.
+
+Finally, every program is threatened constantly by software patents. States
+should not allow patents to restrict development and use of software on
+general-purpose computers, but in those that do, we wish to avoid the special
+danger that patents applied to a free program could make it effectively
+proprietary. To prevent this, the GPL assures that patents cannot be used to
+render the program non-free.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+
+TERMS AND CONDITIONS
+--------------------
+
+
+### 0. Definitions.
+
+"This License refers to version 3 of the GNU General Public License.
+
+"Copyright" also means copyright-like laws that apply to other kinds of works,
+such as semiconductor masks.
+
+"The Program" refers to any copyrightable work licensed under this License. Each
+licensee is addressed as "you". "Licensees" and "recipients" may be individuals
+or organizations.
+
+To "modify" a work means to copy from or adapt all or part of the work in a
+fashion requiring copyright permission, other than the making of an exact copy.
+The resulting work is called a "modified version" of the earlier work or a work
+"based on" the earlier work.
+
+A "covered work" means either the unmodified Program or a work based on the
+Program.
+
+To "propagate" a work means to do anything with it that, without permission,
+would make you directly or secondarily liable for infringement under applicable
+copyright law, except executing it on a computer or modifying a private copy.
+Propagation includes copying, distribution (with or without modification),
+making available to the public, and in some countries other activities as well.
+
+To "convey" a work means any kind of propagation that enables other parties to
+make or receive copies. Mere interaction with a user through a computer network,
+with no transfer of a copy, is not conveying.
+
+An interactive user interface displays "Appropriate Legal Notices" to the extent
+that it includes a convenient and prominently visible feature that (1) displays
+an appropriate copyright notice, and (2) tells the user that there is no
+warranty for the work (except to the extent that warranties are provided), that
+licensees may convey the work under this License, and how to view a copy of this
+License. If the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+
+### 1. Source Code.
+
+The "source code" for a work means the preferred form of the work for making
+modifications to it. "Object code" means any non-source form of a work.
+
+A "Standard Interface" means an interface that either is an official standard
+defined by a recognized standards body, or, in the case of interfaces specified
+for a particular programming language, one that is widely used among developers
+working in that language.
+
+The "System Libraries" of an executable work include anything, other than the
+work as a whole, that (a) is included in the normal form of packaging a Major
+Component, but which is not part of that Major Component, and (b) serves only to
+enable use of the work with that Major Component, or to implement a Standard
+Interface for which an implementation is available to the public in source code
+form. A "Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system (if any) on
+which the executable work runs, or a compiler used to produce the work, or an
+object code interpreter used to run it.
+
+The "Corresponding Source" for a work in object code form means all the source
+code needed to generate, install, and (for an executable work) run the object
+code and to modify the work, including scripts to control those activities.
+However, it does not include the work's System Libraries, or general-purpose
+tools or generally available free programs which are used unmodified in
+performing those activities but which are not part of the work. For example,
+Corresponding Source includes interface definition files associated with source
+files for the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require, such as by
+intimate data communication or control flow between those subprograms and other
+parts of the work.
+
+The Corresponding Source need not include anything that users can regenerate
+automatically from other parts of the Corresponding Source.
+
+The Corresponding Source for a work in source code form is that same work.
+
+
+### 2. Basic Permissions.
+
+All rights granted under this License are granted for the term of copyright on
+the Program, and are irrevocable provided the stated conditions are met. This
+License explicitly affirms your unlimited permission to run the unmodified
+Program. The output from running a covered work is covered by this License only
+if the output, given its content, constitutes a covered work. This License
+acknowledges your rights of fair use or other equivalent, as provided by
+copyright law.
+
+You may make, run and propagate covered works that you do not convey, without
+conditions so long as your license otherwise remains in force. You may convey
+covered works to others for the sole purpose of having them make modifications
+exclusively for you, or provide you with facilities for running those works,
+provided that you comply with the terms of this License in conveying all
+material for which you do not control copyright. Those thus making or running
+the covered works for you must do so exclusively on your behalf, under your
+direction and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the conditions
+stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
+
+
+### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological measure under
+any applicable law fulfilling obligations under article 11 of the WIPO copyright
+treaty adopted on 20 December 1996, or similar laws prohibiting or restricting
+circumvention of such measures.
+
+When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention is
+effected by exercising rights under this License with respect to the covered
+work, and you disclaim any intention to limit operation or modification of the
+work as a means of enforcing, against the work's users, your or third parties'
+legal rights to forbid circumvention of technological measures.
+
+
+### 4. Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you receive it,
+in any medium, provided that you conspicuously and appropriately publish on each
+copy an appropriate copyright notice; keep intact all notices stating that this
+License and any non-permissive terms added in accord with section 7 apply to the
+code; keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey, and you may
+offer support or warranty protection for a fee.
+
+
+### 5. Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to produce it
+from the Program, in the form of source code under the terms of section 4,
+provided that you also meet all of these conditions:
+
+*   **a)** The work must carry prominent notices stating that you modified it,
+    and giving a relevant date.
+
+*   **b)** The work must carry prominent notices stating that it is released
+    under this License and any conditions added under section 7. This
+    requirement modifies the requirement in section 4 to "keep intact all
+    notices".
+
+*   **c)** You must license the entire work, as a whole, under this License to
+    anyone who comes into possession of a copy. This License will therefore
+    apply, along with any applicable section 7 additional terms, to the whole of
+    the work, and all its parts, regardless of how they are packaged. This
+    License gives no permission to license the work in any other way, but it
+    does not invalidate such permission if you have separately received it.
+
+*   **d)** If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your work need not
+    make them do so.
+
+A compilation of a covered work with other separate and independent works,
+which are not by their nature extensions of the covered work, and which are
+not combined with it such as to form a larger program, in or on a volume of
+a storage or distribution medium, is called an "aggregate" if the
+compilation and its resulting copyright are not used to limit the access or
+legal rights of the compilation's users beyond what the individual works
+permit. Inclusion of a covered work in an aggregate does not cause this
+License to apply to the other parts of the aggregate.
+
+
+### 6. Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of sections 4
+and 5, provided that you also convey the machine-readable Corresponding Source
+under the terms of this License, in one of these ways:
+
+*   **a)** Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the Corresponding
+    Source fixed on a durable physical medium customarily used for software
+    interchange.
+
+*   **b)** Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a written offer,
+    valid for at least three years and valid for as long as you offer spare
+    parts or customer support for that product model, to give anyone who
+    possesses the object code either (1) a copy of the Corresponding Source for
+    all the software in the product that is covered by this License, on a
+    durable physical medium customarily used for software interchange, for a
+    price no more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the Corresponding Source from a
+    network server at no charge.
+
+*   **c)** Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source. This alternative is
+    allowed only occasionally and noncommercially, and only if you received the
+    object code with such an offer, in accord with subsection 6b.
+
+*   **d)** Convey the object code by offering access from a designated place
+    (gratis or for a charge), and offer equivalent access to the Corresponding
+    Source in the same way through the same place at no further charge. You need
+    not require recipients to copy the Corresponding Source along with the
+    object code. If the place to copy the object code is a network server, the
+    Corresponding Source may be on a different server (operated by you or a
+    third party) that supports equivalent copying facilities, provided you
+    maintain clear directions next to the object code saying where to find the
+    Corresponding Source. Regardless of what server hosts the Corresponding
+    Source, you remain obligated to ensure that it is available for as long as
+    needed to satisfy these requirements.
+
+*   **e)** Convey the object code using peer-to-peer transmission, provided you
+    inform other peers where the object code and Corresponding Source of the
+    work are being offered to the general public at no charge under subsection
+    6d.
+
+A separable portion of the object code, whose source code is excluded from
+the Corresponding Source as a System Library, need not be included in
+conveying the object code work.
+
+A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family, or
+household purposes, or (2) anything designed or sold for incorporation into
+a dwelling. In determining whether a product is a consumer product, doubtful
+cases shall be resolved in favor of coverage. For a particular product
+received by a particular user, "normally used" refers to a typical or common
+use of that class of product, regardless of the status of the particular
+user or of the way in which the particular user actually uses, or expects or
+is expected to use, the product. A product is a consumer product regardless
+of whether the product has substantial commercial, industrial or non-
+consumer uses, unless such uses represent the only significant mode of use
+of the product.
+
+"Installation Information" for a User Product means any methods, procedures,
+authorization keys, or other information required to install and execute
+modified versions of a covered work in that User Product from a modified
+version of its Corresponding Source. The information must suffice to ensure
+that the continued functioning of the modified object code is in no case
+prevented or interfered with solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as part of
+a transaction in which the right of possession and use of the User Product
+is transferred to the recipient in perpetuity or for a fixed term
+(regardless of how the transaction is characterized), the Corresponding
+Source conveyed under this section must be accompanied by the Installation
+Information. But this requirement does not apply if neither you nor any
+third party retains the ability to install modified object code on the User
+Product (for example, the work has been installed in ROM).
+
+The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates for
+a work that has been modified or installed by the recipient, or for the User
+Product in which it has been modified or installed. Access to a network may
+be denied when the modification itself materially and adversely affects the
+operation of the network or violates the rules and protocols for
+communication across the network.
+
+Corresponding Source conveyed, and Installation Information provided, in
+accord with this section must be in a format that is publicly documented
+(and with an implementation available to the public in source code form),
+and must require no special password or key for unpacking, reading or
+copying.
+
+
+### 7. Additional Terms.
+
+"Additional permissions" are terms that supplement the terms of this License by
+making exceptions from one or more of its conditions. Additional permissions
+that are applicable to the entire Program shall be treated as though they were
+included in this License, to the extent that they are valid under applicable
+law. If additional permissions apply only to part of the Program, that part may
+be used separately under those permissions, but the entire Program remains
+governed by this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option remove any
+additional permissions from that copy, or from any part of it. (Additional
+permissions may be written to require their own removal in certain cases when
+you modify the work.) You may place additional permissions on material, added by
+you to a covered work, for which you have or can give appropriate copyright
+permission.
+
+Notwithstanding any other provision of this License, for material you add to a
+covered work, you may (if authorized by the copyright holders of that material)
+supplement the terms of this License with terms:
+
+*   **a)** Disclaiming warranty or limiting liability differently from the terms
+    of sections 15 and 16 of this License; or
+
+*   **b)** Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal Notices
+    displayed by works containing it; or
+
+*   **c)** Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in reasonable
+    ways as different from the original version; or
+
+*   **d)** Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+*   **e)** Declining to grant rights under trademark law for use of some trade
+    names, trademarks, or service marks; or
+
+*   **f)** Requiring indemnification of licensors and authors of that material
+    by anyone who conveys the material (or modified versions of it) with
+    contractual assumptions of liability to the recipient, for any liability
+    that these contractual assumptions directly impose on those licensors and
+    authors.
+
+All other non-permissive additional terms are considered "further restrictions"
+within the meaning of section 10. If the Program as you received it, or any part
+of it, contains a notice stating that it is governed by this License along with
+a term that is a further restriction, you may remove that term. If a license
+document contains a further restriction but permits relicensing or conveying
+under this License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does not survive
+such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you must place,
+in the relevant source files, a statement of the additional terms that apply to
+those files, or a notice indicating where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the form of a
+separately written license, or stated as exceptions; the above requirements
+apply either way.
+
+
+### 8. Termination.
+
+You may not propagate or modify a covered work except as expressly provided
+under this License. Any attempt otherwise to propagate or modify it is void, and
+will automatically terminate your rights under this License (including any
+patent licenses granted under the third paragraph of section 11).
+
+However, if you cease all violation of this License, then your license from a
+particular copyright holder is reinstated (a) provisionally, unless and until
+the copyright holder explicitly and finally terminates your license, and (b)
+permanently, if the copyright holder fails to notify you of the violation by
+some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated
+permanently if the copyright holder notifies you of the violation by some
+reasonable means, this is the first time you have received notice of violation
+of this License (for any work) from that copyright holder, and you cure the
+violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of
+parties who have received copies or rights from you under this License. If your
+rights have been terminated and not permanently reinstated, you do not qualify
+to receive new licenses for the same material under section 10.
+
+
+### 9. Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run a copy of
+the Program. Ancillary propagation of a covered work occurring solely as a
+consequence of using peer-to-peer transmission to receive a copy likewise does
+not require acceptance. However, nothing other than this License grants you
+permission to propagate or modify any covered work. These actions infringe
+copyright if you do not accept this License. Therefore, by modifying or
+propagating a covered work, you indicate your acceptance of this License to do
+so.
+
+
+### 10. Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically receives a
+license from the original licensors, to run, modify and propagate that work,
+subject to this License. You are not responsible for enforcing compliance by
+third parties with this License.
+
+An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered work results
+from an entity transaction, each party to that transaction who receives a copy
+of the work also receives whatever licenses to the work the party's predecessor
+in interest had or could give under the previous paragraph, plus a right to
+possession of the Corresponding Source of the work from the predecessor in
+interest, if the predecessor has it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the rights
+granted or affirmed under this License. For example, you may not impose a
+license fee, royalty, or other charge for exercise of rights granted under this
+License, and you may not initiate litigation (including a cross-claim or
+counterclaim in a lawsuit) alleging that any patent claim is infringed by
+making, using, selling, offering for sale, or importing the Program or any
+portion of it.
+
+
+### 11. Patents.
+
+A "contributor" is a copyright holder who authorizes use under this License of
+the Program or a work on which the Program is based. The work thus licensed is
+called the contributor's "contributor version".
+
+A contributor's "essential patent claims" are all patent claims owned or
+controlled by the contributor, whether already acquired or hereafter acquired,
+that would be infringed by some manner, permitted by this License, of making,
+using, or selling its contributor version, but do not include claims that would
+be infringed only as a consequence of further modification of the contributor
+version. For purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free patent
+license under the contributor's essential patent claims, to make, use, sell,
+offer for sale, import and otherwise run, modify and propagate the contents of
+its contributor version.
+
+In the following three paragraphs, a "patent license" is any express agreement
+or commitment, however denominated, not to enforce a patent (such as an express
+permission to practice a patent or covenant not to sue for patent infringement).
+To "grant" such a patent license to a party means to make such an agreement or
+commitment not to enforce a patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license, and the
+Corresponding Source of the work is not available for anyone to copy, free of
+charge and under the terms of this License, through a publicly available network
+server or other readily accessible means, then you must either (1) cause the
+Corresponding Source to be so available, or (2) arrange to deprive yourself of
+the benefit of the patent license for this particular work, or (3) arrange, in a
+manner consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have actual
+knowledge that, but for the patent license, your conveying the covered work in a
+country, or your recipient's use of the covered work in a country, would
+infringe one or more identifiable patents in that country that you have reason
+to believe are valid.
+
+If, pursuant to or in connection with a single transaction or arrangement, you
+convey, or propagate by procuring conveyance of, a covered work, and grant a
+patent license to some of the parties receiving the covered work authorizing
+them to use, propagate, modify or convey a specific copy of the covered work,
+then the patent license you grant is automatically extended to all recipients of
+the covered work and works based on it.
+
+A patent license is "discriminatory" if it does not include within the scope of
+its coverage, prohibits the exercise of, or is conditioned on the non- exercise
+of one or more of the rights that are specifically granted under this License.
+You may not convey a covered work if you are a party to an arrangement with a
+third party that is in the business of distributing software, under which you
+make payment to the third party based on the extent of your activity of
+conveying the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by you (or
+copies made from those copies), or (b) primarily for and in connection with
+specific products or compilations that contain the covered work, unless you
+entered into that arrangement, or that patent license was granted, prior to 28
+March 2007.
+
+Nothing in this License shall be construed as excluding or limiting any implied
+license or other defenses to infringement that may otherwise be available to you
+under applicable patent law.
+
+
+### 12. No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not excuse
+you from the conditions of this License. If you cannot convey a covered work so
+as to satisfy simultaneously your obligations under this License and any other
+pertinent obligations, then as a consequence you may not convey it at all. For
+example, if you agree to terms that obligate you to collect a royalty for
+further conveying from those to whom you convey the Program, the only way you
+could satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+
+### 13. Use with the GNU Affero General Public License.
+
+Notwithstanding any other provision of this License, you have permission to link
+or combine any covered work with a work licensed under version 3 of the GNU
+Affero General Public License into a single combined work, and to convey the
+resulting work. The terms of this License will continue to apply to the part
+which is the covered work, but the special requirements of the GNU Affero
+General Public License, section 13, concerning interaction through a network
+will apply to the combination as such.
+
+
+### 14. Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions of the GNU
+General Public License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+that a certain numbered version of the GNU General Public License "or any later
+version" applies to it, you have the option of following the terms and
+conditions either of that numbered version or of any later version published by
+the Free Software Foundation. If the Program does not specify a version number
+of the GNU General Public License, you may choose any version ever published by
+the Free Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions of the
+GNU General Public License can be used, that proxy's public statement of
+acceptance of a version permanently authorizes you to choose that version for
+the Program.
+
+Later license versions may give you additional or different permissions.
+However, no additional obligations are imposed on any author or copyright holder
+as a result of your choosing to follow a later version.
+
+
+### 15. Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
+PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
+QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+
+### 16. Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
+COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS
+PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY
+HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+### 17. Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided above cannot
+be given local legal effect according to their terms, reviewing courts shall
+apply local law that most closely approximates an absolute waiver of all civil
+liability in connection with the Program, unless a warranty or assumption of
+liability accompanies a copy of the Program in return for a fee.
+
+END OF TERMS AND CONDITIONS
+
+
+How to Apply These Terms to Your New Programs
+---------------------------------------------
+
+If you develop a new program, and you want it to be of the greatest possible use
+to the public, the best way to achieve this is to make it free software which
+everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively state the exclusion of
+warranty; and each file should have at least the "copyright" line and a pointer
+to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 3 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program does terminal interaction, make it output a short notice like
+this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
+    This is free software, and you are welcome to redistribute it under certain
+    conditions; type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands might be
+different; for a GUI interface, you would use an "about box".
+
+You should also get your employer (if you work as a programmer) or school, if
+any, to sign a "copyright disclaimer" for the program, if necessary. For more
+information on this, and how to apply and follow the GNU GPL, see
+<<http://www.gnu.org/licenses/>>.
+
+The GNU General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may consider
+it more useful to permit linking proprietary applications with the library. If
+this is what you want to do, use the GNU Lesser General Public License instead
+of this License. But first, please read
+<<http://www.gnu.org/philosophy/why-not-lgpl.html>>.
diff --git a/license_Modified_BSD.md b/license_Modified_BSD.md
new file mode 100644
index 000000000..3d5f00f2c
--- /dev/null
+++ b/license_Modified_BSD.md
@@ -0,0 +1,32 @@
+This software is licensed with a Modified BSD License.
+
+All of this is supposed to be Free Software, Open Source, DFSG-free,
+GPL-compatible, and OK to use in both free and proprietary applications.
+Additions and corrections to this file are welcome.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in
+  the documentation and/or other materials provided with the
+  distribution.
+
+* Neither the name of the copyright holders nor the names of
+  contributors may be used to endorse or promote products derived
+  from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/quantum/analog.c b/quantum/analog.c
index 49b84ee0e..1ec38df75 100644
--- a/quantum/analog.c
+++ b/quantum/analog.c
@@ -1,3 +1,19 @@
+/* Copyright 2015 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 // Simple analog to digitial conversion
 
 #include <avr/io.h>
diff --git a/quantum/analog.h b/quantum/analog.h
index 9b95a93be..8d93de7dc 100644
--- a/quantum/analog.h
+++ b/quantum/analog.h
@@ -1,3 +1,19 @@
+/* Copyright 2015 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef _analog_h_included__
 #define _analog_h_included__
 
diff --git a/quantum/api.c b/quantum/api.c
index 6a7c0a433..52dfe23e1 100644
--- a/quantum/api.c
+++ b/quantum/api.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "api.h"
 #include "quantum.h"
 
@@ -176,4 +192,4 @@ void process_api(uint16_t length, uint8_t * data) {
         // #endif
     }
 
-}
\ No newline at end of file
+}
diff --git a/quantum/api.h b/quantum/api.h
index 00dcdb895..efc0ddca1 100644
--- a/quantum/api.h
+++ b/quantum/api.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef _API_H_
 #define _API_H_
 
@@ -56,4 +72,4 @@ bool process_api_keyboard(uint8_t length, uint8_t * data);
 __attribute__ ((weak))
 bool process_api_user(uint8_t length, uint8_t * data);
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/api/api_sysex.c b/quantum/api/api_sysex.c
index 868f854b9..6a2ee9012 100644
--- a/quantum/api/api_sysex.c
+++ b/quantum/api/api_sysex.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert, Fred Sundvik
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "api_sysex.h"
 #include "sysex_tools.h"
 #include "print.h"
diff --git a/quantum/api/api_sysex.h b/quantum/api/api_sysex.h
index b947b60e5..a23f00f57 100644
--- a/quantum/api/api_sysex.h
+++ b/quantum/api/api_sysex.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef _API_SYSEX_H_
 #define _API_SYSEX_H_
 
@@ -7,4 +23,4 @@ void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes,
 
 #define SEND_BYTES(mt, dt, b, l) send_bytes_sysex(mt, dt, b, l)
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index e1e81fd2b..597073611 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include <stdio.h>
 #include <string.h>
 //#include <math.h>
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index 47f326ea0..27fdc2ab6 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef AUDIO_H
 #define AUDIO_H
 
@@ -88,4 +103,4 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest)
 
 bool is_playing_notes(void);
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/audio/audio_pwm.c b/quantum/audio/audio_pwm.c
index f820eec1b..ded86edee 100644
--- a/quantum/audio/audio_pwm.c
+++ b/quantum/audio/audio_pwm.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include <stdio.h>
 #include <string.h>
 //#include <math.h>
diff --git a/quantum/audio/luts.c b/quantum/audio/luts.c
index 9f3de9a05..57f2d5924 100644
--- a/quantum/audio/luts.c
+++ b/quantum/audio/luts.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 IBNobody
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include <avr/io.h>
 #include <avr/interrupt.h>
 #include <avr/pgmspace.h>
diff --git a/quantum/audio/luts.h b/quantum/audio/luts.h
index 7df3078a7..155e34e88 100644
--- a/quantum/audio/luts.h
+++ b/quantum/audio/luts.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 IBNobody
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include <avr/io.h>
 #include <avr/interrupt.h>
 #include <avr/pgmspace.h>
@@ -12,4 +28,4 @@
 extern const float vibrato_lut[VIBRATO_LUT_LENGTH];
 extern const uint16_t frequency_lut[FREQUENCY_LUT_LENGTH];
 
-#endif /* LUTS_H */
\ No newline at end of file
+#endif /* LUTS_H */
diff --git a/quantum/audio/musical_notes.h b/quantum/audio/musical_notes.h
index b08d16a6f..a3aaa2f19 100644
--- a/quantum/audio/musical_notes.h
+++ b/quantum/audio/musical_notes.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef MUSICAL_NOTES_H
 #define MUSICAL_NOTES_H
 
@@ -214,4 +230,4 @@
 #define NOTE_BF8 NOTE_AS8
 
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index 400915db9..3bf20333d 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "musical_notes.h"
 
 #ifndef SONG_LIST_H
diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c
index c2edb75f0..54ebd423b 100644
--- a/quantum/audio/voices.c
+++ b/quantum/audio/voices.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "voices.h"
 #include "audio.h"
 #include "stdlib.h"
diff --git a/quantum/audio/voices.h b/quantum/audio/voices.h
index 52f7e006d..9403a6b5e 100644
--- a/quantum/audio/voices.h
+++ b/quantum/audio/voices.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include <stdint.h>
 #include <stdbool.h>
 #include <avr/io.h>
@@ -32,4 +47,4 @@ void set_voice(voice_type v);
 void voice_iterate(void);
 void voice_deiterate(void);
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/audio/wave.h b/quantum/audio/wave.h
index 6ebc34851..f15615dd1 100644
--- a/quantum/audio/wave.h
+++ b/quantum/audio/wave.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include <avr/io.h>
 #include <avr/interrupt.h>
 #include <avr/pgmspace.h>
@@ -262,4 +278,4 @@ const uint8_t sinewave[] PROGMEM= //2048 values
 0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x79,
 0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,
 0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f
-};
\ No newline at end of file
+};
diff --git a/quantum/config_common.h b/quantum/config_common.h
index 28f68b9c7..c88e02d91 100644
--- a/quantum/config_common.h
+++ b/quantum/config_common.h
@@ -1,3 +1,19 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef CONFIG_DEFINITIONS_H
 #define CONFIG_DEFINITIONS_H
 
diff --git a/quantum/dynamic_macro.h b/quantum/dynamic_macro.h
index e6dbc5b9c..64093f293 100644
--- a/quantum/dynamic_macro.h
+++ b/quantum/dynamic_macro.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 /* Author: Wojciech Siewierski < wojciech dot siewierski at onet dot pl > */
 #ifndef DYNAMIC_MACROS_H
 #define DYNAMIC_MACROS_H
diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c
index 6d90781a1..4f7bc525e 100644
--- a/quantum/keycode_config.c
+++ b/quantum/keycode_config.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "keycode_config.h"
 
 extern keymap_config_t keymap_config;
@@ -71,4 +87,4 @@ uint16_t keycode_config(uint16_t keycode) {
         default:
             return keycode;
     }
-}
\ No newline at end of file
+}
diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h
index c15b0d32f..293fefecf 100644
--- a/quantum/keycode_config.h
+++ b/quantum/keycode_config.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "eeconfig.h"
 #include "keycode.h"
 
diff --git a/quantum/keymap.h b/quantum/keymap.h
index c000d2da8..5d64be19c 100644
--- a/quantum/keymap.h
+++ b/quantum/keymap.h
@@ -1,5 +1,5 @@
 /*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+Copyright 2012-2016 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
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index 002eabd85..6cf4f031f 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -1,5 +1,5 @@
 /*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+Copyright 2012-2017 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
diff --git a/quantum/keymap_extras/keymap_bepo.h b/quantum/keymap_extras/keymap_bepo.h
index e5ef39552..013559e96 100644
--- a/quantum/keymap_extras/keymap_bepo.h
+++ b/quantum/keymap_extras/keymap_bepo.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Didier Loiseau
+ *
+ * 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/>.
+ */
 /* Keymap macros for the French BÉPO layout - http://bepo.fr */
 #ifndef KEYMAP_BEPO_H
 #define KEYMAP_BEPO_H
diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h
index 0bc20c7b9..1d45bee32 100644
--- a/quantum/keymap_extras/keymap_canadian_multilingual.h
+++ b/quantum/keymap_extras/keymap_canadian_multilingual.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Didier Loiseau
+ *
+ * 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 KEYMAP_CANADIAN_MULTILINGUAG_H
 #define KEYMAP_CANADIAN_MULTILINGUAG_H
 
diff --git a/quantum/keymap_extras/keymap_colemak.h b/quantum/keymap_extras/keymap_colemak.h
index b8d615748..2d3f9c06a 100644
--- a/quantum/keymap_extras/keymap_colemak.h
+++ b/quantum/keymap_extras/keymap_colemak.h
@@ -1,3 +1,18 @@
+/* Copyright 2015-2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_COLEMAK_H
 #define KEYMAP_COLEMAK_H
 
diff --git a/quantum/keymap_extras/keymap_dvorak.h b/quantum/keymap_extras/keymap_dvorak.h
index a0feed850..b1d5604ba 100644
--- a/quantum/keymap_extras/keymap_dvorak.h
+++ b/quantum/keymap_extras/keymap_dvorak.h
@@ -1,3 +1,18 @@
+/* Copyright 2015-2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_DVORAK_H
 #define KEYMAP_DVORAK_H
 
diff --git a/quantum/keymap_extras/keymap_dvp.h b/quantum/keymap_extras/keymap_dvp.h
index 83f49a52b..50e2d1f46 100644
--- a/quantum/keymap_extras/keymap_dvp.h
+++ b/quantum/keymap_extras/keymap_dvp.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Artyom Mironov
+ *
+ * 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 KEYMAP_DVP_H
 #define KEYMAP_DVP_H
 
diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h
index 87d4bb24c..c0ca832a6 100644
--- a/quantum/keymap_extras/keymap_fr_ch.h
+++ b/quantum/keymap_extras/keymap_fr_ch.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Vincent Pochet
+ *
+ * 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 KEYMAP_FR_CH
 #define KEYMAP_FR_CH
 
diff --git a/quantum/keymap_extras/keymap_french.h b/quantum/keymap_extras/keymap_french.h
index 401bbdf64..3308dc5f7 100644
--- a/quantum/keymap_extras/keymap_french.h
+++ b/quantum/keymap_extras/keymap_french.h
@@ -1,3 +1,18 @@
+/* Copyright 2015-2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_FRENCH_H
 #define KEYMAP_FRENCH_H
 
diff --git a/quantum/keymap_extras/keymap_french_osx.h b/quantum/keymap_extras/keymap_french_osx.h
index 004d73ee2..ecade3fe9 100644
--- a/quantum/keymap_extras/keymap_french_osx.h
+++ b/quantum/keymap_extras/keymap_french_osx.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Sébastien Pérochon
+ *
+ * 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 KEYMAP_FRENCH_OSX_H
 #define KEYMAP_FRENCH_OSX_H
 
@@ -74,4 +89,4 @@
 #define FR_PIPE	LSFT(LALT(KC_L))
 #define FR_BSLS	LSFT(LALT(FR_COLN))
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/keymap_extras/keymap_german.h b/quantum/keymap_extras/keymap_german.h
index 7e2e0ed44..e007c26ef 100644
--- a/quantum/keymap_extras/keymap_german.h
+++ b/quantum/keymap_extras/keymap_german.h
@@ -1,3 +1,19 @@
+/* Copyright 2015-2016 Matthias Schmidtt
+ *
+ * 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 KEYMAP_GERMAN
 #define KEYMAP_GERMAN
 
diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h
index b66d582a4..8332e00af 100644
--- a/quantum/keymap_extras/keymap_german_ch.h
+++ b/quantum/keymap_extras/keymap_german_ch.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 heartsekai
+ *
+ * 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 KEYMAP_SWISS_GERMAN
 #define KEYMAP_SWISS_GERMAN
 
diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h
index f63f06618..798bb7579 100644
--- a/quantum/keymap_extras/keymap_german_osx.h
+++ b/quantum/keymap_extras/keymap_german_osx.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Stephen Bösebeck
+ *
+ * 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 KEYMAP_GERMAN_OSX
 #define KEYMAP_GERMAN_OSX
 
diff --git a/quantum/keymap_extras/keymap_jp.h b/quantum/keymap_extras/keymap_jp.h
index e81b5952e..fb74bce8d 100644
--- a/quantum/keymap_extras/keymap_jp.h
+++ b/quantum/keymap_extras/keymap_jp.h
@@ -1,4 +1,19 @@
-/* JP106-layout (Japanese Standard)
+/* Copyright 2016 h-youhei
+ *
+ * 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/>.
+ *
+ * JP106-layout (Japanese Standard)
  *
  * For more information, see
  * http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html
diff --git a/quantum/keymap_extras/keymap_neo2.h b/quantum/keymap_extras/keymap_neo2.h
index 80439af34..174f4a6ee 100644
--- a/quantum/keymap_extras/keymap_neo2.h
+++ b/quantum/keymap_extras/keymap_neo2.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Matthias Schmitt
+ *
+ * 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 KEYMAP_NEO2
 #define KEYMAP_NEO2
 
diff --git a/quantum/keymap_extras/keymap_nordic.h b/quantum/keymap_extras/keymap_nordic.h
index 9b0ef35ca..6b34db558 100644
--- a/quantum/keymap_extras/keymap_nordic.h
+++ b/quantum/keymap_extras/keymap_nordic.h
@@ -1,3 +1,18 @@
+/* Copyright 2015-2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_NORDIC_H
 #define KEYMAP_NORDIC_H
 
diff --git a/quantum/keymap_extras/keymap_norwegian.h b/quantum/keymap_extras/keymap_norwegian.h
index 5c4e8c495..b7128973a 100644
--- a/quantum/keymap_extras/keymap_norwegian.h
+++ b/quantum/keymap_extras/keymap_norwegian.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_NORWEGIAN_H
 #define KEYMAP_NORWEGIAN_H
 
diff --git a/quantum/keymap_extras/keymap_plover.h b/quantum/keymap_extras/keymap_plover.h
index 9b88f7d84..de6d8c53f 100644
--- a/quantum/keymap_extras/keymap_plover.h
+++ b/quantum/keymap_extras/keymap_plover.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 James Kay
+ *
+ * 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 KEYMAP_PLOVER_H
 #define KEYMAP_PLOVER_H
 
diff --git a/quantum/keymap_extras/keymap_russian.h b/quantum/keymap_extras/keymap_russian.h
deleted file mode 100644
index 237e9abde..000000000
--- a/quantum/keymap_extras/keymap_russian.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef KEYMAP_RUSSIAN_H
-#define KEYMAP_RUSSIAN_H
-
-#include "keymap.h"
-
-// Normal Chracters      // reg   SHIFT
-#define RU_A     KC_F    // а and А
-#define RU_BE    KC_COMM // б and Б
-#define RU_VE    KC_D    // в and В
-#define RU_GHE   KC_U    // г and Г
-#define RU_DE    KC_L    // д and Д
-#define RU_IE    KC_T    // е and Е
-#define RU_IO    KC_GRV  // ё and Ё
-#define RU_ZHE   KC_SCLN // ж and Ж
-#define RU_ZE    KC_P    // з and З
-#define RU_I     KC_B    // и and И
-#define RU_SRT_I KC_Q    // й and Й
-#define RU_KA    KC_R    // к and К
-#define RU_EL    KC_K    // л and Л
-#define RU_EM    KC_V    // м and М
-#define RU_EN    KC_Y    // н and Н
-#define RU_O     KC_J    // о and О
-#define RU_PE    KC_G    // п and П
-#define RU_ER    KC_H    // р and Р
-#define RU_ES    KC_C    // с and С
-#define RU_TE    KC_N    // т and Т
-#define RU_U     KC_E    // у and У
-#define RU_EF    KC_A    // ф and Ф
-#define RU_HA    KC_LBRC // х and Х
-#define RU_TSE   KC_W    // ц and Ц
-#define RU_CHE   KC_X    // ч and Ч
-#define RU_SHA   KC_I    // ш and Ш
-#define RU_SHCHA KC_O    // щ and Щ
-#define RU_HSIGN KC_RBRC // ъ and Ъ
-#define RU_YERU  KC_S    // ы and Ы
-#define RU_SSIGN KC_M    // ь and Ь
-#define RU_E     KC_QUOT // э and Э
-#define RU_YU    KC_DOT  // ю and Ю
-#define RU_YA    KC_Z    // я and Я
-
-#define RU_1     KC_1    // 1 and !
-#define RU_2     KC_2    // 2 and "
-#define RU_3     KC_3    // 3 and №
-#define RU_4     KC_4    // 4 and ;
-#define RU_5     KC_5    // 5 and %
-#define RU_6     KC_6    // 6 and :
-#define RU_7     KC_7    // 7 and ?
-#define RU_8     KC_8    // 8 and *
-#define RU_9     KC_9    // 9 and (
-#define RU_0     KC_0    // 0 and )
-
-#define RU_MINS  KC_MINS // - and _
-#define RU_EQL   KC_EQL  // = and +
-#define RU_BSLS  KC_BSLS // \ and /
-#define RU_DOT   KC_SLSH // . and ,
-
-// Shifted Chracters
-#define RU_EXLM LSFT(RU_1) // !
-#define RU_DQUT LSFT(RU_2) // "
-#define RU_NMRO LSFT(RU_3) // №
-#define RU_SCLN LSFT(RU_4) // ;
-#define RU_PERC LSFT(RU_5) // %
-#define RU_COLN LSFT(RU_6) // :
-#define RU_QUES LSFT(RU_7) // ?
-#define RU_ASTR LSFT(RU_8) // *
-#define RU_LPRN LSFT(RU_9) // (
-#define RU_RPRN LSFT(RU_0) // )
-
-#define RU_UNDR LSFT(RU_MINS) // _
-#define RU_PLUS LSFT(RU_EQL)  // +
-#define RU_SLSH LSFT(RU_BSLS) // /
-#define RU_COMM LSFT(RU_DOT)  // ,
-
-// Alt Gr-ed characters
-#define RU_RUBL RALT(RU_8) // ₽
-
-#endif
diff --git a/quantum/keymap_extras/keymap_spanish.h b/quantum/keymap_extras/keymap_spanish.h
index 4ba568af2..3a5787e9c 100644
--- a/quantum/keymap_extras/keymap_spanish.h
+++ b/quantum/keymap_extras/keymap_spanish.h
@@ -1,3 +1,18 @@
+/* Copyright 2015-2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_SPANISH_H
 #define KEYMAP_SPANISH_H
 
diff --git a/quantum/keymap_extras/keymap_uk.h b/quantum/keymap_extras/keymap_uk.h
index 00c87afc3..9d02efe04 100644
--- a/quantum/keymap_extras/keymap_uk.h
+++ b/quantum/keymap_extras/keymap_uk.h
@@ -1,3 +1,18 @@
+/* Copyright 2015-2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_UK_H
 #define KEYMAP_UK_H
 
diff --git a/quantum/keymap_extras/keymap_unicode_cyrillic.h b/quantum/keymap_extras/keymap_unicode_cyrillic.h
deleted file mode 100644
index a40626d91..000000000
--- a/quantum/keymap_extras/keymap_unicode_cyrillic.h
+++ /dev/null
@@ -1,163 +0,0 @@
-#ifndef KEYMAP_CYRILLIC_H
-#define KEYMAP_CYRILLIC_H
-
-#include "keymap.h"
-
-/*
- * This is based off of
- * https://en.wikipedia.org/wiki/Cyrillic_script
- *
- * Unicode is iffy, a software implementation is preferred
- */
-
-// Capital                   Char russian/ukrainian/bulgarian
-#define CY_A     UC(0x0410) // А  rus ukr bul
-#define CY_BE    UC(0x0411) // Б  rus ukr bul
-#define CY_VE    UC(0x0412) // В  rus ukr bul
-#define CY_GHE   UC(0x0413) // Г  rus ukr bul
-#define CY_GHEUP UC(0x0490) // Ґ      ukr
-#define CY_DE    UC(0x0414) // Д  rus ukr bul
-#define CY_DJE   UC(0x0402) // Ђ
-#define CY_GJE   UC(0x0403) // Ѓ
-#define CY_IE    UC(0x0415) // Е  rus ukr bul
-#define CY_IO    UC(0x0401) // Ё  rus
-#define CY_UIE   UC(0x0404) // Є      ukr
-#define CY_ZHE   UC(0x0416) // Ж  rus ukr bul
-#define CY_ZE    UC(0x0417) // З  rus ukr bul
-#define CY_DZE   UC(0x0405) // Ѕ
-#define CY_I     UC(0x0418) // И  rus ukr bul
-#define CY_B_U_I UC(0x0406) // І      ukr
-#define CY_YI    UC(0x0407) // Ї      ukr
-#define CY_SRT_I UC(0x0419) // Й  rus ukr bul
-#define CY_JE    UC(0x0408) // Ј
-#define CY_KA    UC(0x041a) // К  rus ukr bul
-#define CY_EL    UC(0x041b) // Л  rus ukr bul
-#define CY_LJE   UC(0x0409) // Љ
-#define CY_EM    UC(0x041c) // М  rus ukr bul
-#define CY_EN    UC(0x041d) // Н  rus ukr bul
-#define CY_NJE   UC(0x040a) // Њ
-#define CY_O     UC(0x041e) // О  rus ukr bul
-#define CY_PE    UC(0x041f) // П  rus ukr bul
-#define CY_ER    UC(0x0420) // Р  rus ukr bul
-#define CY_ES    UC(0x0421) // С  rus ukr bul
-#define CY_TE    UC(0x0422) // Т  rus ukr bul
-#define CY_TSHE  UC(0x040b) // Ћ
-#define CY_KJE   UC(0x040c) // Ќ
-#define CY_U     UC(0x0423) // У  rus ukr bul
-#define CY_SRT_U UC(0x040e) // Ў
-#define CY_EF    UC(0x0424) // Ф  rus ukr bul
-#define CY_HA    UC(0x0425) // Х  rus     bul
-#define CY_TSE   UC(0x0426) // Ц  rus ukr bul
-#define CY_CHE   UC(0x0427) // Ч  rus ukr bul
-#define CY_DZHE  UC(0x040f) // Џ
-#define CY_SHA   UC(0x0428) // Ш  rus ukr bul
-#define CY_SHCHA UC(0x0429) // Щ  rus ukr bul
-#define CY_HSIGN UC(0x042a) // Ъ  rus     bul
-#define CY_YERU  UC(0x042b) // Ы  rus
-#define CY_SSIGN UC(0x042c) // Ь  rus ukr bul
-#define CY_E     UC(0x042d) // Э  rus
-#define CY_YU    UC(0x042e) // Ю  rus ukr bul
-#define CY_YA    UC(0x042f) // Я  rus ukr bul
-// Important Cyrillic non-Slavic letters
-#define CY_PALOCHKA UC(0x04c0) // Ӏ
-#define CY_SCHWA UC(0x04d8) // Ә
-#define CY_GHE_S UC(0x0492) // Ғ
-#define CY_ZE_D  UC(0x0498) // Ҙ
-#define CY_ES_D  UC(0x04aa) // Ҫ
-#define CY_BR_KA UC(0x04a0) // Ҡ
-#define CY_ZHE_D UC(0x0496) // Җ
-#define CY_KA_D  UC(0x049a) // Қ
-#define CY_EN_D  UC(0x04a2) // Ң
-#define CY_ENGHE UC(0x04a4) // Ҥ
-#define CY_BRD_O UC(0x04e8) // Ө
-#define CY_STR_U UC(0x04ae) // Ү
-#define CY_S_U_S UC(0x04b0) // Ұ
-#define CY_SHHA  UC(0x04ba) // Һ
-#define CY_HA_D  UC(0x04b2) // Ҳ
-
-
-// Small
-#define CY_a     UC(0x0430) // a  rus ukr bul
-#define CY_be    UC(0x0431) // б  rus ukr bul
-#define CY_ve    UC(0x0432) // в  rus ukr bul
-#define CY_ghe   UC(0x0433) // г  rus ukr bul
-#define CY_gheup UC(0x0491) // ґ      ukr
-#define CY_de    UC(0x0434) // д  rus ukr bul
-#define CY_dje   UC(0x0452) // ђ
-#define CY_gje   UC(0x0453) // ѓ
-#define CY_ie    UC(0x0435) // е  rus ukr bul
-#define CY_io    UC(0x0451) // ё  rus
-#define CY_uie   UC(0x0454) // є      ukr
-#define CY_zhe   UC(0x0436) // ж  rus ukr bul
-#define CY_ze    UC(0x0437) // з  rus ukr bul
-#define CY_dze   UC(0x0455) // ѕ
-#define CY_i     UC(0x0438) // и  rus ukr bul
-#define CY_b_u_i UC(0x0456) // і      ukr
-#define CY_yi    UC(0x0457) // ї      ukr
-#define CY_srt_i UC(0x0439) // й  rus ukr bul
-#define CY_je    UC(0x0458) // ј
-#define CY_ka    UC(0x043a) // к  rus ukr bul
-#define CY_el    UC(0x043b) // л  rus ukr bul
-#define CY_lje   UC(0x0459) // љ
-#define CY_em    UC(0x043c) // м  rus ukr bul
-#define CY_en    UC(0x043d) // н  rus ukr bul
-#define CY_nje   UC(0x045a) // њ
-#define CY_o     UC(0x043e) // о  rus ukr bul
-#define CY_pe    UC(0x043f) // п  rus ukr bul
-#define CY_er    UC(0x0440) // р  rus ukr bul
-#define CY_es    UC(0x0441) // с  rus ukr bul
-#define CY_te    UC(0x0442) // т  rus ukr bul
-#define CY_tshe  UC(0x045b) // ћ
-#define CY_kje   UC(0x045c) // ќ
-#define CY_u     UC(0x0443) // у  rus ukr bul
-#define CY_srt_u UC(0x045e) // ў
-#define CY_ef    UC(0x0444) // ф  rus ukr bul
-#define CY_ha    UC(0x0445) // х  rus ukr bul
-#define CY_tse   UC(0x0446) // ц  rus ukr bul
-#define CY_che   UC(0x0447) // ч  rus ukr bul
-#define CY_dzhe  UC(0x045f) // џ
-#define CY_sha   UC(0x0448) // ш  rus ukr bul
-#define CY_shcha UC(0x0449) // щ  rus ukr bul
-#define CY_hsign UC(0x044a) // ъ  rus     bul
-#define CY_yeru  UC(0x044b) // ы  rus
-#define CY_ssign UC(0x044c) // ь  rus ukr bul
-#define CY_e     UC(0x044d) // э  rus
-#define CY_yu    UC(0x044e) // ю  rus ukr bul
-#define CY_ya    UC(0x044f) // я  rus ukr bul
-// Important Cyrillic non-Slavic letters
-#define CY_palochka UC(0x04cf) // ӏ
-#define CY_schwa UC(0x04d9) // ә
-#define CY_ghe_s UC(0x0493) // ғ
-#define CY_ze_d  UC(0x0499) // ҙ
-#define CY_es_d  UC(0x04ab) // ҫ
-#define CY_br_ka UC(0x04a1) // ҡ
-#define CY_zhe_d UC(0x0497) // җ
-#define CY_ka_d  UC(0x049b) // қ
-#define CY_en_d  UC(0x04a3) // ң
-#define CY_enghe UC(0x04a5) // ҥ
-#define CY_brd_o UC(0x04e9) // ө
-#define CY_str_u UC(0x04af) // ү
-#define CY_s_u_s UC(0x04b1) // ұ
-#define CY_shha  UC(0x04bb) // һ
-#define CY_ha_d  UC(0x04b3) // ҳ
-
-
-// Extra
-#define CY_slr_ve UC(0x1c80) // ᲀ CYRILLIC SMALL LETTER ROUNDED VE
-#define CY_ll_de  UC(0x1c81) // ᲁ CYRILLIC SMALL LETTER LONG-LEGGED DE
-#define CY_ZEMLYA UC(0xa640) // Ꙁ CYRILLIC CAPITAL LETTER ZEMLYA
-#define CY_zemlya UC(0xa641) // ꙁ CYRILLIC SMALL LETTER ZEMLYA
-#define CY_RV_DZE UC(0xa644) // Ꙅ CYRILLIC CAPITAL LETTER REVERSED DZE
-#define CY_rv_DZE UC(0xa645) // ꙅ CYRILLIC SMALL LETTER REVERSED DZE
-#define CY_slw_es UC(0x1c83) // ᲃ CYRILLIC SMALL LETTER WIDE ES
-#define CY_st_te  UC(0x1c84) // ᲄ CYRILLIC SMALL LETTER TALL TE
-#define CY_3l_te  UC(0x1c85) // ᲅ CYRILLIC SMALL LETTER THREE-LEGGED TE
-#define CY_thsign UC(0x1c86) // ᲆ CYRILLIC SMALL LETTER TALL HARD SIGN
-#define CY_YERUBY UC(0xa650) // Ꙑ CYRILLIC CAPITAL LETTER YERU WITH BACK YER
-#define CY_yeruby UC(0xa651) // ꙑ CYRILLIC SMALL LETTER YERU WITH BACK YER
-#define CY_RUBL   UC(0x20bd) // ₽
-#define CY_NMRO   UC(0x2116) // №
-
-// The letters Zje and Sje are made for other letters and accent marks
-
-#endif
diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c
index 55bdd9cd8..2506e3d8e 100755
--- a/quantum/light_ws2812.c
+++ b/quantum/light_ws2812.c
@@ -7,7 +7,18 @@
 * Jan 18th, 2014  v2.0b Initial Version
 * Nov 29th, 2015  v2.3  Added SK6812RGBW support
 *
-* License: GNU GPL v2 (see License.txt)
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "light_ws2812.h"
diff --git a/quantum/light_ws2812.h b/quantum/light_ws2812.h
index 2f78c20fc..60924a0fb 100755
--- a/quantum/light_ws2812.h
+++ b/quantum/light_ws2812.h
@@ -6,8 +6,18 @@
  *
  * Please do not change this file! All configuration is handled in "ws2812_config.h"
  *
- * License: GNU GPL v2 (see License.txt)
- +
+ * 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 LIGHT_WS2812_H_
diff --git a/quantum/matrix.c b/quantum/matrix.c
index ac523482a..5337e2626 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -1,6 +1,5 @@
 /*
-Copyright 2012 Jun Wako
-Copyright 2014 Jack Humbert
+Copyright 2012-2017 Jun Wako, Jack Humbert
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/quantum/pincontrol.h b/quantum/pincontrol.h
index 36ce29ef2..d77977ebe 100644
--- a/quantum/pincontrol.h
+++ b/quantum/pincontrol.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Wez Furlong
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #pragma once
 // Some helpers for controlling gpio pins
 #include <avr/io.h>
diff --git a/quantum/process_keycode/process_chording.c b/quantum/process_keycode/process_chording.c
index d7814629f..6c6ebe300 100644
--- a/quantum/process_keycode/process_chording.c
+++ b/quantum/process_keycode/process_chording.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_chording.h"
 
 bool keys_chord(uint8_t keys[]) {
@@ -57,4 +73,4 @@ bool process_chording(uint16_t keycode, keyrecord_t *record) {
     }
   }
   return true;
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_chording.h b/quantum/process_keycode/process_chording.h
index 49c97db3b..8c0f4862a 100644
--- a/quantum/process_keycode/process_chording.h
+++ b/quantum/process_keycode/process_chording.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_CHORDING_H
 #define PROCESS_CHORDING_H
 
@@ -13,4 +29,4 @@ uint8_t chord_key_down = 0;
 
 bool process_chording(uint16_t keycode, keyrecord_t *record);
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c
index e2189ad98..58d45add2 100644
--- a/quantum/process_keycode/process_combo.c
+++ b/quantum/process_keycode/process_combo.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_combo.h"
 #include "print.h"
 
diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h
index 847f2b737..a5dbd788a 100644
--- a/quantum/process_keycode/process_combo.h
+++ b/quantum/process_keycode/process_combo.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_COMBO_H
 #define PROCESS_COMBO_H
 
diff --git a/quantum/process_keycode/process_leader.c b/quantum/process_keycode/process_leader.c
index e53d221e7..473906d65 100644
--- a/quantum/process_keycode/process_leader.c
+++ b/quantum/process_keycode/process_leader.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_leader.h"
 
 __attribute__ ((weak))
@@ -35,4 +51,4 @@ bool process_leader(uint16_t keycode, keyrecord_t *record) {
     }
   }
   return true;
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_leader.h b/quantum/process_keycode/process_leader.h
index c83db8abb..da7a3d2ef 100644
--- a/quantum/process_keycode/process_leader.h
+++ b/quantum/process_keycode/process_leader.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_LEADER_H
 #define PROCESS_LEADER_H
 
@@ -20,4 +36,4 @@ void leader_end(void);
 #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[5]; extern uint8_t leader_sequence_size
 #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT)
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 700c6ce8e..9184feaae 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "process_midi.h"
 
 #ifdef MIDI_ENABLE
diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h
index 58b7650c6..ccac8981a 100644
--- a/quantum/process_keycode/process_midi.h
+++ b/quantum/process_keycode/process_midi.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_MIDI_H
 #define PROCESS_MIDI_H
 
@@ -37,4 +53,4 @@ uint8_t midi_compute_note(uint16_t keycode);
 
 #endif // MIDI_ENABLE
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c
index f89a04ee3..217dca280 100644
--- a/quantum/process_keycode/process_music.c
+++ b/quantum/process_keycode/process_music.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "process_music.h"
 
 #ifdef AUDIO_ENABLE
diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h
index a36514a44..8dfbf041f 100644
--- a/quantum/process_keycode/process_music.h
+++ b/quantum/process_keycode/process_music.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_MUSIC_H
 #define PROCESS_MUSIC_H
 
@@ -28,4 +44,4 @@ void matrix_scan_music(void);
 
 #endif // defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/process_keycode/process_printer.c b/quantum/process_keycode/process_printer.c
index 2e11dd366..807f7a0b9 100644
--- a/quantum/process_keycode/process_printer.c
+++ b/quantum/process_keycode/process_printer.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_printer.h"
 #include "action_util.h"
 
@@ -251,4 +267,4 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) {
 	}
 	return true;
 
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_printer.h b/quantum/process_keycode/process_printer.h
index fdd36d75a..aa494ac8a 100644
--- a/quantum/process_keycode/process_printer.h
+++ b/quantum/process_keycode/process_printer.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_PRINTER_H
 #define PROCESS_PRINTER_H
 
@@ -5,4 +21,4 @@
 
 #include "protocol/serial.h"
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/process_keycode/process_printer_bb.c b/quantum/process_keycode/process_printer_bb.c
index 1924d0377..55d3b552b 100644
--- a/quantum/process_keycode/process_printer_bb.c
+++ b/quantum/process_keycode/process_printer_bb.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_printer.h"
 #include "action_util.h"
 
@@ -257,4 +273,4 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) {
 	}
 	return true;
 
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c
index 403dca538..68c8425bb 100644
--- a/quantum/process_keycode/process_tap_dance.c
+++ b/quantum/process_keycode/process_tap_dance.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "quantum.h"
 #include "action_tapping.h"
 
diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h
index 726752ecc..330809f83 100644
--- a/quantum/process_keycode/process_tap_dance.h
+++ b/quantum/process_keycode/process_tap_dance.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef PROCESS_TAP_DANCE_H
 #define PROCESS_TAP_DANCE_H
 
diff --git a/quantum/process_keycode/process_ucis.c b/quantum/process_keycode/process_ucis.c
index 4ad2533b0..86c0937f5 100644
--- a/quantum/process_keycode/process_ucis.c
+++ b/quantum/process_keycode/process_ucis.c
@@ -1,3 +1,19 @@
+/* Copyright 2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_ucis.h"
 
 qk_ucis_state_t qk_ucis_state;
@@ -130,4 +146,4 @@ bool process_ucis (uint16_t keycode, keyrecord_t *record) {
     return false;
   }
   return true;
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_ucis.h b/quantum/process_keycode/process_ucis.h
index 4332f57b3..3f736a709 100644
--- a/quantum/process_keycode/process_ucis.h
+++ b/quantum/process_keycode/process_ucis.h
@@ -1,3 +1,19 @@
+/* Copyright 2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_UCIS_H
 #define PROCESS_UCIS_H
 
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index ccae6fdca..26571ea03 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "process_unicode.h"
 #include "action_util.h"
 
diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h
index 4c21f11eb..c525b74f0 100644
--- a/quantum/process_keycode/process_unicode.h
+++ b/quantum/process_keycode/process_unicode.h
@@ -1,3 +1,18 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef PROCESS_UNICODE_H
 #define PROCESS_UNICODE_H
 
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index 31bc3b7ab..6012b4f07 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -1,3 +1,19 @@
+/* Copyright 2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_unicode_common.h"
 
 uint8_t mods;
@@ -82,4 +98,4 @@ void register_hex(uint16_t hex) {
     register_code(hex_to_keycode(digit));
     unregister_code(hex_to_keycode(digit));
   }
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_unicode_common.h b/quantum/process_keycode/process_unicode_common.h
index 864693cdd..f5be1da5c 100644
--- a/quantum/process_keycode/process_unicode_common.h
+++ b/quantum/process_keycode/process_unicode_common.h
@@ -1,3 +1,19 @@
+/* Copyright 2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_UNICODE_COMMON_H
 #define PROCESS_UNICODE_COMMON_H
 
@@ -129,4 +145,4 @@ void register_hex(uint16_t hex);
 #define UC_TILD	UC(0x007E)
 #define UC_DEL	UC(0x007F)
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c
index 68a593a18..0227fbdd7 100644
--- a/quantum/process_keycode/process_unicodemap.c
+++ b/quantum/process_keycode/process_unicodemap.c
@@ -1,3 +1,19 @@
+/* Copyright 2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "process_unicodemap.h"
 #include "process_unicode_common.h"
 
@@ -53,4 +69,4 @@ bool process_unicode_map(uint16_t keycode, keyrecord_t *record) {
     }
   }
   return true;
-}
\ No newline at end of file
+}
diff --git a/quantum/process_keycode/process_unicodemap.h b/quantum/process_keycode/process_unicodemap.h
index 64a7a0109..929c88c0b 100644
--- a/quantum/process_keycode/process_unicodemap.h
+++ b/quantum/process_keycode/process_unicodemap.h
@@ -1,3 +1,19 @@
+/* Copyright 2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #ifndef PROCESS_UNICODEMAP_H
 #define PROCESS_UNICODEMAP_H
 
@@ -6,4 +22,4 @@
 
 void unicode_map_input_error(void);
 bool process_unicode_map(uint16_t keycode, keyrecord_t *record);
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 5a9e771a9..62d9ef923 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -1,3 +1,19 @@
+/* Copyright 2016-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "quantum.h"
 #ifdef PROTOCOL_LUFA
 #include "outputselect.h"
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 1f1bb0afd..2bf18d095 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -1,3 +1,18 @@
+/* Copyright 2016-2017 Erez Zukerman, Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef QUANTUM_H
 #define QUANTUM_H
 
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 1e3df9fa6..7354ae0da 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -1,3 +1,18 @@
+/* Copyright 2016-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef QUANTUM_KEYCODES_H
 #define QUANTUM_KEYCODES_H
 
diff --git a/quantum/rgblight.c b/quantum/rgblight.c
index dd1b91c63..eff70aae1 100644
--- a/quantum/rgblight.c
+++ b/quantum/rgblight.c
@@ -1,3 +1,18 @@
+/* Copyright 2016-2017 Yang Liu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include <avr/eeprom.h>
 #include <avr/interrupt.h>
 #include <util/delay.h>
diff --git a/quantum/rgblight.h b/quantum/rgblight.h
index 2b3e791bf..92130192c 100644
--- a/quantum/rgblight.h
+++ b/quantum/rgblight.h
@@ -1,3 +1,18 @@
+/* Copyright 2017 Yang Liu
+ *
+ * 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 RGBLIGHT_H
 #define RGBLIGHT_H
 
diff --git a/quantum/serial_link/LICENSE b/quantum/serial_link/LICENSE
index d7cc3198c..d13cc4b26 100644
--- a/quantum/serial_link/LICENSE
+++ b/quantum/serial_link/LICENSE
@@ -1,7 +1,5 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 Fred Sundvik
-
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
diff --git a/quantum/template/Makefile b/quantum/template/Makefile
index 4e2a6f00f..840dc9a28 100644
--- a/quantum/template/Makefile
+++ b/quantum/template/Makefile
@@ -1,3 +1,18 @@
+# Copyright 2013 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 MAKEFILE_INCLUDED
 	include ../../Makefile
-endif
\ No newline at end of file
+endif
diff --git a/quantum/template/config.h b/quantum/template/config.h
index 7393097e1..dbca45765 100644
--- a/quantum/template/config.h
+++ b/quantum/template/config.h
@@ -1,5 +1,5 @@
 /*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2017 REPLACE_WITH_YOUR_NAME
 
 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
diff --git a/quantum/template/keymaps/default/Makefile b/quantum/template/keymaps/default/Makefile
index 29f11bbc7..b8879076b 100644
--- a/quantum/template/keymaps/default/Makefile
+++ b/quantum/template/keymaps/default/Makefile
@@ -1,4 +1,20 @@
-# Build Options
+# Copyright 2013 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/>.
+
+
+# QMK 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
 #
@@ -18,4 +34,4 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 
 ifndef QUANTUM_DIR
 	include ../../../../Makefile
-endif
\ No newline at end of file
+endif
diff --git a/quantum/template/keymaps/default/config.h b/quantum/template/keymaps/default/config.h
index df06a2620..f52a97bbc 100644
--- a/quantum/template/keymaps/default/config.h
+++ b/quantum/template/keymaps/default/config.h
@@ -1,3 +1,19 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * 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_USER_H
 #define CONFIG_USER_H
 
@@ -5,4 +21,4 @@
 
 // place overrides here
 
-#endif
\ No newline at end of file
+#endif
diff --git a/quantum/template/keymaps/default/keymap.c b/quantum/template/keymaps/default/keymap.c
index e28a4723e..a123cd7ba 100644
--- a/quantum/template/keymaps/default/keymap.c
+++ b/quantum/template/keymaps/default/keymap.c
@@ -1,3 +1,18 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "%KEYBOARD%.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -41,4 +56,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 void led_set_user(uint8_t usb_led) {
 
-}
\ No newline at end of file
+}
diff --git a/quantum/template/template.c b/quantum/template/template.c
index 5ef349583..97f788654 100644
--- a/quantum/template/template.c
+++ b/quantum/template/template.c
@@ -1,3 +1,18 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include "%KEYBOARD%.h"
 
 void matrix_init_kb(void) {
diff --git a/quantum/template/template.h b/quantum/template/template.h
index cd78a54e3..e912188ba 100644
--- a/quantum/template/template.h
+++ b/quantum/template/template.h
@@ -1,3 +1,18 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * 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 %KEYBOARD_UPPERCASE%_H
 #define %KEYBOARD_UPPERCASE%_H
 
diff --git a/quantum/variable_trace.c b/quantum/variable_trace.c
index de580244c..713747cfc 100644
--- a/quantum/variable_trace.c
+++ b/quantum/variable_trace.c
@@ -1,3 +1,19 @@
+/* Copyright 2016 Fred Sundvik
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 #include "variable_trace.h"
 #include <stddef.h>
 #include <string.h>
diff --git a/quantum/variable_trace.h b/quantum/variable_trace.h
index 46bd82786..dacc13858 100644
--- a/quantum/variable_trace.h
+++ b/quantum/variable_trace.h
@@ -1,3 +1,19 @@
+/* Copyright 2016 Fred Sundvik
+ *
+ * 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 VARIABLE_TRACE_H
 #define VARIABLE_TRACE_H
 

From d6e51d20084921481acacde7546ff08d790b898d Mon Sep 17 00:00:00 2001
From: Rovanion Luckey <rovanion.luckey@gmail.com>
Date: Wed, 29 Mar 2017 09:34:20 +0200
Subject: [PATCH 125/163] Added link to the teensy linux page.

---
 keyboards/ergodox/readme.md | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md
index d7eed8f43..23e5b862d 100644
--- a/keyboards/ergodox/readme.md
+++ b/keyboards/ergodox/readme.md
@@ -69,8 +69,11 @@ files.  Check them out with:
 
 The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
 
-Linux users need to modify udev rules as described on the Teensy Linux page (which page?).
-Some distributions provide a binary, maybe called `teensy-loader-cli`.
+Linux users need to modify udev rules as described on the [Teensy
+Linux page].  Some distributions provide a binary, maybe called
+`teensy-loader-cli`.
+
+[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html
 
 To flash the firmware:
 

From 4d2be0281c230fc8d7764e4071d1447c59af2cf7 Mon Sep 17 00:00:00 2001
From: Osamu Aoki <osamu@debian.org>
Date: Mon, 13 Mar 2017 17:11:05 +0000
Subject: [PATCH 126/163] Typo fix

---
 quantum/template/template.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/quantum/template/template.h b/quantum/template/template.h
index cd78a54e3..49e6b60e7 100644
--- a/quantum/template/template.h
+++ b/quantum/template/template.h
@@ -5,7 +5,7 @@
 
 // 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 first section contains all of the arguments
 // The second converts the arguments into a two-dimensional array
 #define KEYMAP( \
     k00, k01, k02, \

From c782b269b6544f63a13b80e9b28f460fded63f67 Mon Sep 17 00:00:00 2001
From: Osamu Aoki <osamu@debian.org>
Date: Sun, 12 Mar 2017 02:41:47 +0900
Subject: [PATCH 127/163] Update to match QMK keymap

---
 doc/keymap.md | 232 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 143 insertions(+), 89 deletions(-)

diff --git a/doc/keymap.md b/doc/keymap.md
index 6f2a663fc..c127db2b2 100644
--- a/doc/keymap.md
+++ b/doc/keymap.md
@@ -1,15 +1,30 @@
 Keymap framework - how to define your keymap
 ============================================
-***NOTE: This is not final version, may be inconsistent with source code and changed occasionally for a while.***
+***NOTE: This is updated for QMK but this is still work in progress.  This may still be inconsistent with the source code.***
+
+QMK is based on TMK.   Understanding the essential changes made should help you understand variable names etc.
+
+## TMK vs. QMK
+
+| Firmware                                        |TMK                    |QMK                      |
+|-------------------------------------------------|-----------------------|-------------------------|
+| Maintainer                                      |hasu                   |Jack Humbert et al.      |
+| Build path customization                        | `TMK_DIR = ...`       | `include .../Makefile`  |
+| `keymaps` data                                  | 3D array of `uint8_t`  holding **keycode**      | 3D array of `uint16_t` holding **action code**  |
+| `fn_actions` data                               | 1D array of `uint16_t`  holding **action code** | 3D array of `uint16_t` holding **action code**  |
+
+Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code.
 
 ## 0. Keymap and layers
-**Keymap** is comprised of multiple layers of key layout, you can define **32 layers** at most.
-**Layer** is an array of **keycodes** to define **actions** for each physical keys.
-respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
+In QMK,  **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most.
 
-    Keymap: 32 Layers                   Layer: Keycode matrix
+For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**.
+
+Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
+
+    Keymap: 32 Layers                   Layer: action code matrix
     -----------------                   ---------------------
-    stack of layers                     array_of_keycode[row][column]
+    stack of layers                     array_of_action_code[row][column]
            ____________ precedence               _______________________
           /           / | high                  / ESC / F1  / F2  / F3   ....
       31 /___________// |                      /-----/-----/-----/-----
@@ -22,11 +37,15 @@ respective layers can be validated simultaneously. Layers are indexed with 0 to
        0 /___________/  V low           0 `--------------------------
 
 
+Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
 
-### 0.1 Keymap status
-Keymap has its state in two parameters:
-**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
+### 0.1 Keymap layer status
+Keymap layer has its state in two 32 bit parameters:
 
+* **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred.
+* **`layer_state`** () has current on/off status of the layer on its each bit.
+
+Keymap has its state in two parameter**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
 Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`.
 To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty.
 
@@ -67,97 +86,132 @@ On the other hand, you shall change `layer_state` to overlay base layer with som
 ### 0.2 Layer Precedence and Transparency
 Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred.
 
-You can place `KC_TRNS` on overlay layer changes just part of layout to fall back on lower or base layer.
-Key with `KC_TRANS` doesn't has its own keycode and refers to lower valid layers for keycode, instead.
+You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer.
+Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead.
 See example below.
 
 
 ### 0.3 Keymap Example
-Keymap is **`keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array.
+Keymap in this QMK is **`static const uint16_t PROGMEM keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array.  It holds the 16 bit quantum keycode (action code).
+
+> Please note that keymap in the TMK, which QMK was forked from, is **`static const uint8_t PROGMEM keymaps[]`** C array which holds the 8 bit keycode (~USB HID usage code).
 
 This is a keymap example for [HHKB](http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard) keyboard.
-This example has three layers, 'Qwerty' as base layer, 'Cursor' and  'Mousekey'.
+This example has three layers, 'QWERTY' as base layer, 'FN' and  'MOUSE'.
+
 In this example,
 
- `Fn0` is a **momentary layer switching** key, you can use keys on Cursor layer while holding the key.
-
- `Fn1` is a momentary layer switching key with tapping feature, you can get semicolon **';'** with taping the key and switch layers while holding the key. The word **'tap'** or **'tapping'** mean to press and release a key quickly.
-
- `Fn2` is a **toggle layer switch** key, you can stay switched layer after releasing the key unlike momentary switching.
+ `MO(layer)` is a **momentary layer switching** key.
 
 You can find other keymap definitions in file `keymap.c` located on project directories.
+```
+/*
+ * dbroqua HHKB Layout
+ */
+#include "hhkb.h"
 
-    static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-        /* 0: Qwerty
-         * ,-----------------------------------------------------------.
-         * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-         * |-----------------------------------------------------------|
-         * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
-         * |-----------------------------------------------------------|
-         * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn1|  '|Enter   |
-         * |-----------------------------------------------------------|
-         * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
-         * `-----------------------------------------------------------'
-         *       |Gui|Alt  |Space                  |Alt  |Fn2|
-         *       `-------------------------------------------'
-         */
-        KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
-               TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-               LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN1, QUOT,ENT, \
-               LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0, \
-                    LGUI,LALT,          SPC,                RALT,FN2),
-        /* 1: Cursor(HHKB mode)
-         * ,-----------------------------------------------------------.
-         * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-         * |-----------------------------------------------------------|
-         * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-         * |-----------------------------------------------------------|
-         * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-         * |-----------------------------------------------------------|
-         * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift |   |
-         * `-----------------------------------------------------------'
-         *      |Gui |Alt  |Space                  |Alt  |Gui|
-         *      `--------------------------------------------'
-         */ 
-        KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-               CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,BSPC, \
-               LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
-               LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
-                    LGUI,LALT,          SPC,                RALT,RGUI),
-        /* 2: Mousekey
-         * ,-----------------------------------------------------------.
-         * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-         * |-----------------------------------------------------------|
-         * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |Backs|
-         * |-----------------------------------------------------------|
-         * |Contro|   |   |   |   |   |McL|McD|McU|McR|   |   |Return  |
-         * |-----------------------------------------------------------|
-         * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-         * `-----------------------------------------------------------'
-         *      |Gui |Alt  |Mb1                    |Alt  |   |
-         *      `--------------------------------------------'
-         * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
-         */
-        KEYMAP(ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-               TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,BSPC, \
-               LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
-               LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,TRNS, \
-                    LGUI,LALT,          BTN1,               RALT,TRNS),
-    };
+#define BASE 0
+#define FN 1
+#define MOUSE 2
 
-    static const uint16_t PROGMEM fn_actions[] = {
-        ACTION_LAYER_MOMENTARY(1),                  // FN0
-        ACTION_LAYER_TAP_KEY(2, KC_SCLN),           // FN1
-        ACTION_LAYER_TOGGLE(2),                     // FN2
-    };
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* BASE Level: Default Layer
+     * ,-----------------------------------------------------------------------------------------.
+     * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  |
+     * |-----------------------------------------------------------------------------------------+
+     * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  |
+     * |-----------------------------------------------------------------------------------------+
+     * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    |
+     * |-----------------------------------------------------------------------------------------+
+     * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | Shift     | fn  |
+     * +-----------------------------------------------------------------------------------------+
+     *         | Gui |  Alt   |               Space               | AltGr |Mouse|
+     *         `----------------------------------------------------------------´
+     */
+    [BASE] = KEYMAP(
+        KC_ESC,   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_GRV, \
+        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_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,  MO(FN),                    \
+                        KC_LGUI, KC_LALT,  /*        */ KC_SPC, KC_RALT, MO(MOUSE)
+    ),
 
+    /* FN Layer
+     * ,-----------------------------------------------------------------------------------------.
+     * | Pwr |  F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F0  | F11 | F12 | Ins | Del|
+     * |-----------------------------------------------------------------------------------------+
+     * | Caps   |     |     |     |     |     |     |     |PrtSc| Slck| Paus|  Up |     |        |
+     * |-----------------------------------------------------------------------------------------+
+     * |         | Vol-| Vol+| Mute|     |     | *   | /   | Home| PgUp| Left |Right|            |
+     * |-----------------------------------------------------------------------------------------+
+     * |           | Prev| Play| Next|     |     | +   | -   | End |PgDwn| Down|           |     |
+     * +-----------------------------------------------------------------------------------------+
+     *         |     |        |                                   | Stop  |     |
+     *         `----------------------------------------------------------------´
+     */
+    [FN] = KEYMAP(
+        KC_PWR,   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_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_TRNS,          \
+        KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_TRNS,                    \
+        KC_TRNS,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
+                        KC_TRNS, KC_TRNS,           KC_TRNS,                KC_MSTP, KC_TRNS
+    ),
 
+    /* MOUSE Layer
+     * ,-----------------------------------------------------------------------------------------.
+     * |     |      |     |     |     |     |     |     |     |     |     |     |     |     |    |
+     * |-----------------------------------------------------------------------------------------+
+     * |        |     | WUp |     |     |     |     |     |     |     | Btn1|  Up | Btn2|        |
+     * |-----------------------------------------------------------------------------------------+
+     * |         | WLt | WDn | WRt |     |     |     |     |     |     | Left |Right|            |
+     * |-----------------------------------------------------------------------------------------+
+     * |           |     |     |     |     |     |     |     |     | Btn3| Down|           |     |
+     * +-----------------------------------------------------------------------------------------+
+     *         |     |        |                                   |       |     |
+     *         `----------------------------------------------------------------´
+     */
+    [MOUSE] = KEYMAP(
+        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_WH_U,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_BTN1,  KC_MS_U,  KC_BTN2,  KC_TRNS,          \
+        KC_TRNS,  KC_WH_L,  KC_WH_D,  KC_WH_R,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_MS_L,  KC_MS_R,  KC_TRNS,                    \
+        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_BTN3,  KC_MS_D,  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;
+};
+```
 
 
 ## 1. Keycode
-See [`common/keycode.h`](../common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys.
+See [`tmk_core/common/keycode.h`](../tmk_core/common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap.  Keycodes are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) plus special codes in the `0xA5-DF` range.
 
- ***In `KEYMAP()` macro you should omit prefix part `KC_` of keycode to keep keymap compact.*** For example, just use `A` instead you place `KC_A` in `KEYMAP()`. Some keycodes has 4-letter **short name** in addition to descriptive name, you'll prefer short one in `KEYMAP()`.
+Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys.
+
+keymaps[]
+
+In `KEYMAP()` macro, TMK recommends you to keep prefix part `KC_` of keycode to keep keymap compact. For example, just use `A` instead you place `KC_A` in `KEYMAP()`.  But this doesn't apply for QMK. 
+
+The `KEYMAP()` macro defines correspondence between the physical key location to the electrical key connection.
+
+Some keycodes has 7-letter **short name** such as `KC_COMM` in addition to descriptive name `KC_COMMA`, you'll prefer short one in `KEYMAP()`.
 
 ### 1.0 Other key
 - `KC_NO` for no action
@@ -192,7 +246,10 @@ There are 8 modifiers which has discrimination between left and right.
 - `KC_WSCH`, `KC_WHOM`, `KC_WBAK`, `KC_WFWD`, `KC_WSTP`, `KC_WREF`, `KC_WFAV` for web browser operation
 
 ### 1.5 Fn key
-`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.***
+You don't need to use this functionality under QMK since this is a backward compatibility functionality.  Unlike TMK, you can write action code itself directly in  **`static const uint16_t PROGMEM keymaps[]`** C array using `MO(layer)`, etc.
+
+`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***Only 32 `Fn` keys can be defined at most.***
+
 
 ### 1.6 Keycode Table
  See keycode table in [`doc/keycode.txt`](./keycode.txt) for description of keycodes.
@@ -581,15 +638,11 @@ Similar to layer tap toggle, this works as a momentary modifier when holding, bu
 
 
 ## 5. Legacy Keymap
-This was used in prior version and still works due to legacy support code in `common/keymap.c`. Legacy keymap doesn't support many of features that new keymap offers. ***It is not recommended to use Legacy Keymap for new project.***
-
-To enable Legacy Keymap support define this macro in `config.h`.
-
-    #define USE_LEGACY_KEYMAP
+In QMK, `tmk_core/common/keymap.c` is missing and its replacement `quantum/keymap_common.c` lacks Legacy Keymap support.
 
 Legacy Keymap uses two arrays `fn_layer[]` and `fn_keycode[]` to define Fn key. The index of arrays corresponds with postfix number of `Fn` key. Array `fn_layer[]` indicates destination layer to switch and `fn_keycode[]` has keycodes to send when tapping `Fn` key.
 
-In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key.
+In the following legacy keymap setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key.
 
     static const uint8_t PROGMEM fn_layer[] = {
         1,              // Fn0
@@ -603,6 +656,7 @@ In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2
         KC_SPC,         // Fn2
     };
 
+Under QMK, these can be realized using action code ACTION_LAYER_TAP_KEY(1, KC_NO), ACTION_LAYER_TAP_KEY(2, KC_NO), and ACTION_LAYER_TAP_KEY(2, KC_SPC) in the `keymaps` directly.
 
 ## 6. Terminology
 ***TBD***

From 71da013995ec72293ab1f3e2518a99d64ec486fb Mon Sep 17 00:00:00 2001
From: Travis La Marr <exiva@exiva.net>
Date: Wed, 29 Mar 2017 23:03:04 -0400
Subject: [PATCH 128/163] Add RN42 Bluetooth module support

Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS.
---
 tmk_core/common.mk                 |  5 +++++
 tmk_core/protocol/lufa.mk          |  5 +++++
 tmk_core/protocol/lufa/bluetooth.h | 16 +++++++++++++++-
 tmk_core/protocol/lufa/lufa.c      | 19 ++++++++++++++++++-
 4 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index 47f6fc571..3e0bd7dbc 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -107,6 +107,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
 		TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY
 endif
 
+ifeq ($(strip $(BLUETOOTH)), RN42)
+		TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
+		TMK_COMMON_DEFS += -DMODULE_RN42
+endif
+
 ifeq ($(strip $(ONEHAND_ENABLE)), yes)
     TMK_COMMON_DEFS += -DONEHAND_ENABLE
 endif
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk
index 5b1577972..7ce727dab 100644
--- a/tmk_core/protocol/lufa.mk
+++ b/tmk_core/protocol/lufa.mk
@@ -36,6 +36,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
 	$(TMK_DIR)/protocol/serial_uart.c
 endif
 
+ifeq ($(strip $(BLUETOOTH)), RN42)
+	LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
+	$(TMK_DIR)/protocol/serial_uart.c
+endif
+
 ifeq ($(strip $(VIRTSER_ENABLE)), yes)
 	LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c
 endif
diff --git a/tmk_core/protocol/lufa/bluetooth.h b/tmk_core/protocol/lufa/bluetooth.h
index 78ece1cd0..f4b2f6f8b 100644
--- a/tmk_core/protocol/lufa/bluetooth.h
+++ b/tmk_core/protocol/lufa/bluetooth.h
@@ -62,4 +62,18 @@ void bluefruit_serial_send(uint8_t data);
     (usage == AC_REFRESH           ? 0x0000  : \
     (usage == AC_BOOKMARKS         ? 0x0000  : 0)))))))))))))))))))
 
-#endif
\ No newline at end of file
+#define CONSUMER2RN42(usage) \
+    (usage == AUDIO_MUTE           ? 0x0040 : \
+    (usage == AUDIO_VOL_UP         ? 0x0010 : \
+    (usage == AUDIO_VOL_DOWN       ? 0x0020 : \
+    (usage == TRANSPORT_NEXT_TRACK ? 0x0100 : \
+    (usage == TRANSPORT_PREV_TRACK ? 0x0200 : \
+    (usage == TRANSPORT_STOP       ? 0x0400 : \
+    (usage == TRANSPORT_STOP_EJECT ? 0x0800 : \
+    (usage == TRANSPORT_PLAY_PAUSE ? 0x0080 : \
+    (usage == AL_EMAIL             ? 0x0200 : \
+    (usage == AL_LOCAL_BROWSER     ? 0x8000 : \
+    (usage == AC_SEARCH            ? 0x0400 : \
+    (usage == AC_HOME              ? 0x0100 : 0))))))))))))
+
+ #endif
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index 60cba8d2a..ae6129d1a 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -606,6 +606,13 @@ static void send_keyboard(report_keyboard_t *report)
   if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
     #ifdef MODULE_ADAFRUIT_BLE
       adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
+    #elif MODULE_RN42
+       bluefruit_serial_send(0xFD);
+       bluefruit_serial_send(0x09);
+       bluefruit_serial_send(0x01);
+       for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
+         bluefruit_serial_send(report->raw[i]);
+       }
     #else
       bluefruit_serial_send(0xFD);
       for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
@@ -726,6 +733,16 @@ static void send_consumer(uint16_t data)
     if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
       #ifdef MODULE_ADAFRUIT_BLE
         adafruit_ble_send_consumer_key(data, 0);
+      #elif MODULE_RN42
+        static uint16_t last_data = 0;
+        if (data == last_data) return;
+        last_data = data;
+        uint16_t bitmap = CONSUMER2RN42(data);
+        bluefruit_serial_send(0xFD);
+        bluefruit_serial_send(0x03);
+        bluefruit_serial_send(0x03);
+        bluefruit_serial_send(bitmap&0xFF);
+        bluefruit_serial_send((bitmap>>8)&0xFF);
       #else
         static uint16_t last_data = 0;
         if (data == last_data) return;
@@ -1132,7 +1149,7 @@ int main(void)
     // midi_send_noteoff(&midi_device, 0, 64, 127);
 #endif
 
-#ifdef MODULE_ADAFRUIT_EZKEY
+#if defined(MODULE_ADAFRUIT_EZKEY) || defined(MODULE_RN42)
     serial_init();
 #endif
 

From 571f39da663632b2f0592f1ad41d2985763bfcc2 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Wed, 29 Mar 2017 22:32:39 -0700
Subject: [PATCH 129/163] Tidied up keymaps, Makefiles that actually work,
 Clueboard make v1.0

---
 keyboards/clueboard/keymaps/xyverz/Makefile  | 49 ++++++++++++++++++++
 keyboards/clueboard/keymaps/xyverz/keymap.c  | 49 +++++++++++---------
 keyboards/lets_split/keymaps/xyverz/keymap.c |  4 +-
 keyboards/planck/keymaps/xyverz/Makefile     |  6 +++
 keyboards/planck/keymaps/xyverz/keymap.c     | 12 ++---
 keyboards/planck/keymaps/xyverz/makefile.mk  | 25 ----------
 6 files changed, 89 insertions(+), 56 deletions(-)
 create mode 100644 keyboards/clueboard/keymaps/xyverz/Makefile
 create mode 100644 keyboards/planck/keymaps/xyverz/Makefile
 delete mode 100644 keyboards/planck/keymaps/xyverz/makefile.mk

diff --git a/keyboards/clueboard/keymaps/xyverz/Makefile b/keyboards/clueboard/keymaps/xyverz/Makefile
new file mode 100644
index 000000000..950dadf84
--- /dev/null
+++ b/keyboards/clueboard/keymaps/xyverz/Makefile
@@ -0,0 +1,49 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device.
+#                Please customize your programmer settings(PROGRAM_CMD)
+#
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+#               (must have teensy_loader_cli installed).
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+#            have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+#             have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+#               (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+#                (must have Atmel FLIP installed).
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+#              with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+#                   bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+# Build Options
+#   change to "no" to disable the options, or define them in the makefile.mk in 
+#   the appropriate keymap folder that will get included automatically
+#
+RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/clueboard/keymaps/xyverz/keymap.c b/keyboards/clueboard/keymaps/xyverz/keymap.c
index 01f158bf0..453911973 100644
--- a/keyboards/clueboard/keymaps/xyverz/keymap.c
+++ b/keyboards/clueboard/keymaps/xyverz/keymap.c
@@ -1,3 +1,6 @@
+// Xyverz' keymap.
+// It's based on the default keymap, but Dvorak!
+
 #include "clueboard.h"
 
 // Used for SHIFT_ESC
@@ -14,23 +17,23 @@
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* Keymap _BL: (Base Layer) Default Layer
    * ,--------------------------------------------------------------------------.  ,----.
-   * |Esc~|   1|   2|   3|   4|   5|   6|   7|   8|   9|   0|   -|   =|   \|  BS|  |PGUP|
+   * |Esc~|   1|   2|   3|   4|   5|   6|   7|   8|   9|   0|   [|   ]|   \|  BS|  |PGUP|
    * |--------------------------------------------------------------------------|  |----|
-   * |   Tab|   Q|   W|   E|   R|   T|   Y|   U|   I|   O|   P|   [|   ]|      \|  |PGDN|
+   * |   Tab|   '|   ,|   .|   P|   Y|   F|   G|   C|   R|   L|   /|   =|      \|  |PGDN|
    * |--------------------------------------------------------------------------|  `----'
-   * |Capslck|   A|   S|   D|   F|   G|   H|   J|   K|   L|   ;|   '|   # |  Ent|
+   * |_FL/Caps|   A|   O|   E|   U|   I|   H|   D|   H|   T|   N|   S|  - |  Ent|
    * |-----------------------------------------------------------------------------.
-   * |Shift|  BS|   Z|   X|   C|   V|   B|   N|   M|   ,|   .|   /|   BS|Shift|  UP|
+   * |Shift|  BS|   ;|   Q|   J|   K|   X|   B|   M|   W|   V|   Z|   BS|Shift|  UP|
    * |------------------------------------------------------------------------|----|----.
    * | Ctrl|  Gui|  Alt| MHen|    Space|    Space|  Hen|  Alt| Ctrl|  _FL|LEFT|DOWN|RGHT|
    * `----------------------------------------------------------------------------------'
    */
 [_BL] = KEYMAP(
-  F(0),    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_GRV,  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_NUHS,  KC_ENT,                             \
-  KC_LSFT, KC_NUBS, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,   KC_SLSH,  KC_RO,    KC_RSFT,          KC_UP,            \
-  KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN,          KC_SPC,KC_SPC,                        KC_HENK,  KC_RALT,  KC_RCTL,  MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+  F(0),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_GRV,  KC_BSPC,          KC_PGUP, \
+  KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,  KC_BSLS,                   KC_PGDN, \
+  LT(_FL, KC_CAPS), KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, KC_NUHS, KC_ENT,                    \
+  KC_LSFT, KC_RO,   KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_SLSH, KC_RSFT,          KC_UP,            \
+  KC_LCTL, KC_LALT, KC_LGUI, KC_MHEN,          KC_SPC,  KC_SPC,                             KC_HENK, KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
 
   /* Keymap _FL: Function Layer
    * ,--------------------------------------------------------------------------.  ,----.
@@ -46,31 +49,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * `----------------------------------------------------------------------------------'
    */
 [_FL] = KEYMAP(
-  KC_GRV,  KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,   KC_F11,   KC_F12,   KC_TRNS, KC_DEL,           BL_STEP, \
-  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                   KC_TRNS, \
-  KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                           \
-  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,          KC_PGUP,         \
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,        KC_TRNS,KC_TRNS,                        KC_TRNS,  KC_TRNS,  KC_TRNS,  MO(_FL), KC_HOME, KC_PGDN, KC_END),
+  KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS, KC_DEL,           BL_STEP, \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, \
+  KC_TRNS, KC_TRNS, MO(_RS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_PGUP,          \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END),
 
   /* Keymap _RS: Reset layer
    * ,--------------------------------------------------------------------------.  ,----.
-   * |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |  |    |
+   * |    |    |    |    |    |    |    |    |    |    |    |    |    |    | RGB|  |VAL+|
    * |--------------------------------------------------------------------------|  |----|
-   * |      |    |    |    |RESET|   |    |    |    |    |    |    |    |       |  |    |
+   * |      |    |    |    |RESET|   |    |    |    |    |    |    |    |       |  |VAL-|
    * |--------------------------------------------------------------------------|  `----'
    * |       |    | _RS|    |    |    |    |    |    |    |    |    |     |     |
    * |-----------------------------------------------------------------------------.
-   * |     |    |    |    |    |    |    |    |    |    |    |    |     |     |    |
+   * |     |    |    |    |    |    |    |    |    |    |    |    |     |     |SAT+|
    * |------------------------------------------------------------------------|----|----.
-   * |     |     |     |     |         |         |     |     |     |  _FL|    |    |    |
+   * |     |     |     |     |         |         |     |     |     |  _FL|HUE-|SAT-|HUE+|
    * `----------------------------------------------------------------------------------'
    */
 [_RS] = KEYMAP(
-  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, RGB_TOG,             RGB_VAI, \
-  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET,  KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                   RGB_VAD, \
-  KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                         \
-  MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  MO(_FL),          RGB_SAI,          \
-  KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,        RGB_MOD,   RGB_MOD,                            KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, RGB_HUD,    RGB_SAD,    RGB_HUI),
+  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, RGB_TOG,          RGB_VAI, \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   RGB_VAD, \
+  KC_TRNS, KC_TRNS, MO(_RS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            \
+  MO(_FL), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL),          RGB_SAI,          \
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          RGB_MOD, RGB_MOD,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI),
 };
 
 enum function_id {
diff --git a/keyboards/lets_split/keymaps/xyverz/keymap.c b/keyboards/lets_split/keymaps/xyverz/keymap.c
index d52eb40ae..216e94696 100644
--- a/keyboards/lets_split/keymaps/xyverz/keymap.c
+++ b/keyboards/lets_split/keymaps/xyverz/keymap.c
@@ -122,9 +122,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Adjust (Lower + Raise)
  * ,-----------------------------------------------------------------------------------.
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |  F11 |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F12 |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |      | Reset|      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |RGB ON| MODE | HUE+ | HUE- | SAT+ | SAT- | VAL+ | VAL- |      |      |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/keyboards/planck/keymaps/xyverz/Makefile b/keyboards/planck/keymaps/xyverz/Makefile
new file mode 100644
index 000000000..55bf853a0
--- /dev/null
+++ b/keyboards/planck/keymaps/xyverz/Makefile
@@ -0,0 +1,6 @@
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
+AUDIO_ENABLE = no           # Audio output on port C6
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c
index 94ace2af5..329bb043a 100644
--- a/keyboards/planck/keymaps/xyverz/keymap.c
+++ b/keyboards/planck/keymaps/xyverz/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Lower | Bksp |Space |Raise | Left | Down |  Up  |Right |
+ * | Ctrl | Alt  | Left |Right |Lower | Bksp |Space |Raise |  Up  | Down |  GUI |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = {
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Lower | Bksp |Space |Raise | Left | Down |  Up  |Right |
+ * | Ctrl | Alt  | Left |Right |Lower | Bksp |Space |Raise |  Up  | Down |  GUI |Enter |
  * `-----------------------------------------------------------------------------------'
  */
 [_COLEMAK] = {
@@ -128,9 +128,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Adjust (Lower + Raise)
  * ,-----------------------------------------------------------------------------------.
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |  F11 |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F12 |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |      | Reset|      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -138,8 +138,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_ADJUST] = {
-  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
-  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},
+  {KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12 },
+  {_______, RESET,   _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},
   {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 }
diff --git a/keyboards/planck/keymaps/xyverz/makefile.mk b/keyboards/planck/keymaps/xyverz/makefile.mk
deleted file mode 100644
index 93a89bb4a..000000000
--- a/keyboards/planck/keymaps/xyverz/makefile.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-# 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 = yes      # 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.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
-	include ../../../../Makefile
-endif

From d145a1192f5833a427d58d69b355935232fb37fb Mon Sep 17 00:00:00 2001
From: Callum Oakley <callum@pusher.com>
Date: Thu, 30 Mar 2017 13:22:16 +0100
Subject: [PATCH 130/163] changed hotkey cluster to accomodate awkward software

---
 keyboards/planck/keymaps/callum/keymap.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index aede27df7..d50b04319 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -14,7 +14,7 @@ extern keymap_config_t keymap_config;
 #define _FUNC 4
 #define ENDASH LALT(KC_MINS)
 #define POUND LALT(KC_3)
-#define H(X) LALT(LCTL(X))
+#define H(X) RALT(X)
 
 enum planck_keycodes {
   MOVE = SAFE_RANGE,
@@ -48,19 +48,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* MOVE
  * ,-----------------------------------------------------------------------------------.
- * | H(3) | H(F1)| H(F2)| H(F3)| H(F4)| H(F5)| H(8) | Home |  Up  |  End | H(7) |  Esc |
+ * | H(F7)| H(F8)| H(6) | H(5) | H(4) | H(F9)|H(F10)| Home |  Up  |  End | H(A) |  Esc |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | H(4) | H(F6)| H(F7)| H(F8)| H(F9)|H(F10)| H(9) | Left | Down | Right| Caps |  Del |
+ * | H(F3)| H(F4)| H(3) | H(2) | H(1) | H(F5)| H(F6)| Left | Down | Right| Caps |  Del |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |H(F11)|H(F12)| H(0) | H(1) | H(2) | H(A) | Pg Dn| Pg Up| H(5) | H(6) |      |
+ * |      | H(0) | H(9) | H(8) | H(7) | H(F1)| H(F2)| Pg Dn| Pg Up|H(F11)|H(F12)|      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
 [_MOVE] = {
-  {H(KC_3), H(KC_F1),H(KC_F2),H(KC_F3),H(KC_F4),H(KC_F5),H(KC_8), KC_HOME, KC_UP,   KC_END,  H(KC_7), KC_ESC },
-  {H(KC_4), H(KC_F6),H(KC_F7),H(KC_F8),H(KC_F9),H(KC_F10),H(KC_9),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
-  {_______, H(KC_F11),H(KC_F12),H(KC_0),H(KC_1),H(KC_2), H(KC_A), KC_PGDN, KC_PGUP, H(KC_5), H(KC_6), _______},
+  {H(KC_F7),H(KC_F8),H(KC_6), H(KC_5), H(KC_4), H(KC_F9),H(KC_F10),KC_HOME,KC_UP,   KC_END,  H(KC_A), KC_ESC },
+  {H(KC_F3),H(KC_F4),H(KC_3), H(KC_2), H(KC_1), H(KC_F5),H(KC_F6),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
+  {_______, H(KC_0), H(KC_9), H(KC_8), H(KC_7), H(KC_F1),H(KC_F2),KC_PGDN,KC_PGUP,H(KC_F11),H(KC_F12),_______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 },
 

From 3f3f208113abb928209d608d4d763267005d488b Mon Sep 17 00:00:00 2001
From: Callum Oakley <callum@pusher.com>
Date: Thu, 30 Mar 2017 14:20:18 +0100
Subject: [PATCH 131/163] changed hotkey cluster to accomodate awkward
 software... again

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

diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index d50b04319..09063cb97 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -14,7 +14,7 @@ extern keymap_config_t keymap_config;
 #define _FUNC 4
 #define ENDASH LALT(KC_MINS)
 #define POUND LALT(KC_3)
-#define H(X) RALT(X)
+#define H(X) LALT(LCTL(X))
 
 enum planck_keycodes {
   MOVE = SAFE_RANGE,

From 3a1ee48cda5f185ebb3a4f989b389edf029992bb Mon Sep 17 00:00:00 2001
From: Osamu Aoki <osamu@debian.org>
Date: Mon, 13 Mar 2017 17:11:05 +0000
Subject: [PATCH 132/163] Typo fix

---
 quantum/template/template.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/quantum/template/template.h b/quantum/template/template.h
index e912188ba..7e2b14f3c 100644
--- a/quantum/template/template.h
+++ b/quantum/template/template.h
@@ -20,7 +20,7 @@
 
 // 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 first section contains all of the arguments
 // The second converts the arguments into a two-dimensional array
 #define KEYMAP( \
     k00, k01, k02, \

From ccbdf90f02067bc37975130ca8c4b26d2497dcf7 Mon Sep 17 00:00:00 2001
From: Osamu Aoki <osamu@debian.org>
Date: Sun, 12 Mar 2017 02:41:47 +0900
Subject: [PATCH 133/163] Update to match QMK keymap

---
 doc/keymap.md | 232 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 143 insertions(+), 89 deletions(-)

diff --git a/doc/keymap.md b/doc/keymap.md
index 2b0d2cd95..bc7809905 100644
--- a/doc/keymap.md
+++ b/doc/keymap.md
@@ -1,15 +1,30 @@
 Keymap framework - how to define your keymap
 ============================================
-***NOTE: This is not final version, may be inconsistent with source code and changed occasionally for a while.***
+***NOTE: This is updated for QMK but this is still work in progress.  This may still be inconsistent with the source code.***
+
+QMK is based on TMK.   Understanding the essential changes made should help you understand variable names etc.
+
+## TMK vs. QMK
+
+| Firmware                                        |TMK                    |QMK                      |
+|-------------------------------------------------|-----------------------|-------------------------|
+| Maintainer                                      |hasu                   |Jack Humbert et al.      |
+| Build path customization                        | `TMK_DIR = ...`       | `include .../Makefile`  |
+| `keymaps` data                                  | 3D array of `uint8_t`  holding **keycode**      | 3D array of `uint16_t` holding **action code**  |
+| `fn_actions` data                               | 1D array of `uint16_t`  holding **action code** | 3D array of `uint16_t` holding **action code**  |
+
+Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code.
 
 ## 0. Keymap and layers
-**Keymap** is comprised of multiple layers of key layout, you can define **32 layers** at most.
-**Layer** is an array of **keycodes** to define **actions** for each physical keys.
-respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
+In QMK,  **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most.
 
-    Keymap: 32 Layers                   Layer: Keycode matrix
+For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**.
+
+Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
+
+    Keymap: 32 Layers                   Layer: action code matrix
     -----------------                   ---------------------
-    stack of layers                     array_of_keycode[row][column]
+    stack of layers                     array_of_action_code[row][column]
            ____________ precedence               _______________________
           /           / | high                  / ESC / F1  / F2  / F3   ....
       31 /___________// |                      /-----/-----/-----/-----
@@ -22,11 +37,15 @@ respective layers can be validated simultaneously. Layers are indexed with 0 to
        0 /___________/  V low           0 `--------------------------
 
 
+Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
 
-### 0.1 Keymap status
-Keymap has its state in two parameters:
-**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
+### 0.1 Keymap layer status
+Keymap layer has its state in two 32 bit parameters:
 
+* **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred.
+* **`layer_state`** () has current on/off status of the layer on its each bit.
+
+Keymap has its state in two parameter**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
 Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`.
 To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty.
 
@@ -67,97 +86,132 @@ On the other hand, you shall change `layer_state` to overlay base layer with som
 ### 0.2 Layer Precedence and Transparency
 Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred.
 
-You can place `KC_TRNS` on overlay layer changes just part of layout to fall back on lower or base layer.
-Key with `KC_TRANS` doesn't has its own keycode and refers to lower valid layers for keycode, instead.
+You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer.
+Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead.
 See example below.
 
 
 ### 0.3 Keymap Example
-Keymap is **`keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array.
+Keymap in this QMK is **`static const uint16_t PROGMEM keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array.  It holds the 16 bit quantum keycode (action code).
+
+> Please note that keymap in the TMK, which QMK was forked from, is **`static const uint8_t PROGMEM keymaps[]`** C array which holds the 8 bit keycode (~USB HID usage code).
 
 This is a keymap example for [HHKB](http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard) keyboard.
-This example has three layers, 'Qwerty' as base layer, 'Cursor' and  'Mousekey'.
+This example has three layers, 'QWERTY' as base layer, 'FN' and  'MOUSE'.
+
 In this example,
 
- `Fn0` is a **momentary layer switching** key, you can use keys on Cursor layer while holding the key.
-
- `Fn1` is a momentary layer switching key with tapping feature, you can get semicolon **';'** with taping the key and switch layers while holding the key. The word **'tap'** or **'tapping'** mean to press and release a key quickly.
-
- `Fn2` is a **toggle layer switch** key, you can stay switched layer after releasing the key unlike momentary switching.
+ `MO(layer)` is a **momentary layer switching** key.
 
 You can find other keymap definitions in file `keymap.c` located on project directories.
+```
+/*
+ * dbroqua HHKB Layout
+ */
+#include "hhkb.h"
 
-    static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-        /* 0: Qwerty
-         * ,-----------------------------------------------------------.
-         * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-         * |-----------------------------------------------------------|
-         * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
-         * |-----------------------------------------------------------|
-         * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn1|  '|Enter   |
-         * |-----------------------------------------------------------|
-         * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
-         * `-----------------------------------------------------------'
-         *       |Gui|Alt  |Space                  |Alt  |Fn2|
-         *       `-------------------------------------------'
-         */
-        KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
-               TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-               LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN1, QUOT,ENT, \
-               LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0, \
-                    LGUI,LALT,          SPC,                RALT,FN2),
-        /* 1: Cursor(HHKB mode)
-         * ,-----------------------------------------------------------.
-         * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-         * |-----------------------------------------------------------|
-         * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-         * |-----------------------------------------------------------|
-         * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-         * |-----------------------------------------------------------|
-         * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift |   |
-         * `-----------------------------------------------------------'
-         *      |Gui |Alt  |Space                  |Alt  |Gui|
-         *      `--------------------------------------------'
-         */ 
-        KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-               CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,BSPC, \
-               LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
-               LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
-                    LGUI,LALT,          SPC,                RALT,RGUI),
-        /* 2: Mousekey
-         * ,-----------------------------------------------------------.
-         * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-         * |-----------------------------------------------------------|
-         * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |Backs|
-         * |-----------------------------------------------------------|
-         * |Contro|   |   |   |   |   |McL|McD|McU|McR|   |   |Return  |
-         * |-----------------------------------------------------------|
-         * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-         * `-----------------------------------------------------------'
-         *      |Gui |Alt  |Mb1                    |Alt  |   |
-         *      `--------------------------------------------'
-         * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
-         */
-        KEYMAP(ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-               TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,BSPC, \
-               LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
-               LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,TRNS, \
-                    LGUI,LALT,          BTN1,               RALT,TRNS),
-    };
+#define BASE 0
+#define FN 1
+#define MOUSE 2
 
-    static const uint16_t PROGMEM fn_actions[] = {
-        ACTION_LAYER_MOMENTARY(1),                  // FN0
-        ACTION_LAYER_TAP_KEY(2, KC_SCLN),           // FN1
-        ACTION_LAYER_TOGGLE(2),                     // FN2
-    };
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* BASE Level: Default Layer
+     * ,-----------------------------------------------------------------------------------------.
+     * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  |
+     * |-----------------------------------------------------------------------------------------+
+     * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  |
+     * |-----------------------------------------------------------------------------------------+
+     * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    |
+     * |-----------------------------------------------------------------------------------------+
+     * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | Shift     | fn  |
+     * +-----------------------------------------------------------------------------------------+
+     *         | Gui |  Alt   |               Space               | AltGr |Mouse|
+     *         `----------------------------------------------------------------´
+     */
+    [BASE] = KEYMAP(
+        KC_ESC,   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_GRV, \
+        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_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,  MO(FN),                    \
+                        KC_LGUI, KC_LALT,  /*        */ KC_SPC, KC_RALT, MO(MOUSE)
+    ),
 
+    /* FN Layer
+     * ,-----------------------------------------------------------------------------------------.
+     * | Pwr |  F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F0  | F11 | F12 | Ins | Del|
+     * |-----------------------------------------------------------------------------------------+
+     * | Caps   |     |     |     |     |     |     |     |PrtSc| Slck| Paus|  Up |     |        |
+     * |-----------------------------------------------------------------------------------------+
+     * |         | Vol-| Vol+| Mute|     |     | *   | /   | Home| PgUp| Left |Right|            |
+     * |-----------------------------------------------------------------------------------------+
+     * |           | Prev| Play| Next|     |     | +   | -   | End |PgDwn| Down|           |     |
+     * +-----------------------------------------------------------------------------------------+
+     *         |     |        |                                   | Stop  |     |
+     *         `----------------------------------------------------------------´
+     */
+    [FN] = KEYMAP(
+        KC_PWR,   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_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_TRNS,          \
+        KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_TRNS,                    \
+        KC_TRNS,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
+                        KC_TRNS, KC_TRNS,           KC_TRNS,                KC_MSTP, KC_TRNS
+    ),
 
+    /* MOUSE Layer
+     * ,-----------------------------------------------------------------------------------------.
+     * |     |      |     |     |     |     |     |     |     |     |     |     |     |     |    |
+     * |-----------------------------------------------------------------------------------------+
+     * |        |     | WUp |     |     |     |     |     |     |     | Btn1|  Up | Btn2|        |
+     * |-----------------------------------------------------------------------------------------+
+     * |         | WLt | WDn | WRt |     |     |     |     |     |     | Left |Right|            |
+     * |-----------------------------------------------------------------------------------------+
+     * |           |     |     |     |     |     |     |     |     | Btn3| Down|           |     |
+     * +-----------------------------------------------------------------------------------------+
+     *         |     |        |                                   |       |     |
+     *         `----------------------------------------------------------------´
+     */
+    [MOUSE] = KEYMAP(
+        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_WH_U,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_BTN1,  KC_MS_U,  KC_BTN2,  KC_TRNS,          \
+        KC_TRNS,  KC_WH_L,  KC_WH_D,  KC_WH_R,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_MS_L,  KC_MS_R,  KC_TRNS,                    \
+        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_BTN3,  KC_MS_D,  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;
+};
+```
 
 
 ## 1. Keycode
-See [`common/keycode.h`](../common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys.
+See [`tmk_core/common/keycode.h`](../tmk_core/common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap.  Keycodes are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) plus special codes in the `0xA5-DF` range.
 
- ***In `KEYMAP()` macro you should omit prefix part `KC_` of keycode to keep keymap compact.*** For example, just use `A` instead you place `KC_A` in `KEYMAP()`. Some keycodes has 4-letter **short name** in addition to descriptive name, you'll prefer short one in `KEYMAP()`.
+Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys.
+
+keymaps[]
+
+In `KEYMAP()` macro, TMK recommends you to keep prefix part `KC_` of keycode to keep keymap compact. For example, just use `A` instead you place `KC_A` in `KEYMAP()`.  But this doesn't apply for QMK. 
+
+The `KEYMAP()` macro defines correspondence between the physical key location to the electrical key connection.
+
+Some keycodes has 7-letter **short name** such as `KC_COMM` in addition to descriptive name `KC_COMMA`, you'll prefer short one in `KEYMAP()`.
 
 ### 1.0 Other key
 - `KC_NO` for no action
@@ -192,7 +246,10 @@ There are 8 modifiers which has discrimination between left and right.
 - `KC_WSCH`, `KC_WHOM`, `KC_WBAK`, `KC_WFWD`, `KC_WSTP`, `KC_WREF`, `KC_WFAV` for web browser operation
 
 ### 1.5 Fn key
-`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.***
+You don't need to use this functionality under QMK since this is a backward compatibility functionality.  Unlike TMK, you can write action code itself directly in  **`static const uint16_t PROGMEM keymaps[]`** C array using `MO(layer)`, etc.
+
+`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***Only 32 `Fn` keys can be defined at most.***
+
 
 ### 1.6 Keycode Table
  See keycode table in [`doc/keycode.txt`](./keycode.txt) for description of keycodes.
@@ -584,15 +641,11 @@ Similar to layer tap toggle, this works as a momentary modifier when holding, bu
 
 
 ## 5. Legacy Keymap
-This was used in prior version and still works due to legacy support code in `common/keymap.c`. Legacy keymap doesn't support many of features that new keymap offers. ***It is not recommended to use Legacy Keymap for new project.***
-
-To enable Legacy Keymap support define this macro in `config.h`.
-
-    #define USE_LEGACY_KEYMAP
+In QMK, `tmk_core/common/keymap.c` is missing and its replacement `quantum/keymap_common.c` lacks Legacy Keymap support.
 
 Legacy Keymap uses two arrays `fn_layer[]` and `fn_keycode[]` to define Fn key. The index of arrays corresponds with postfix number of `Fn` key. Array `fn_layer[]` indicates destination layer to switch and `fn_keycode[]` has keycodes to send when tapping `Fn` key.
 
-In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key.
+In the following legacy keymap setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key.
 
     static const uint8_t PROGMEM fn_layer[] = {
         1,              // Fn0
@@ -606,6 +659,7 @@ In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2
         KC_SPC,         // Fn2
     };
 
+Under QMK, these can be realized using action code ACTION_LAYER_TAP_KEY(1, KC_NO), ACTION_LAYER_TAP_KEY(2, KC_NO), and ACTION_LAYER_TAP_KEY(2, KC_SPC) in the `keymaps` directly.
 
 ## 6. Terminology
 ***TBD***

From eedb767279df6c43763cbf37b8fe75cfc224c80c Mon Sep 17 00:00:00 2001
From: Travis La Marr <exiva@exiva.net>
Date: Wed, 29 Mar 2017 23:03:04 -0400
Subject: [PATCH 134/163] Add RN42 Bluetooth module support

Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS.
---
 tmk_core/common.mk                 |  5 +++++
 tmk_core/protocol/lufa.mk          |  5 +++++
 tmk_core/protocol/lufa/bluetooth.h | 16 +++++++++++++++-
 tmk_core/protocol/lufa/lufa.c      | 19 ++++++++++++++++++-
 4 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index 47f6fc571..3e0bd7dbc 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -107,6 +107,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
 		TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY
 endif
 
+ifeq ($(strip $(BLUETOOTH)), RN42)
+		TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
+		TMK_COMMON_DEFS += -DMODULE_RN42
+endif
+
 ifeq ($(strip $(ONEHAND_ENABLE)), yes)
     TMK_COMMON_DEFS += -DONEHAND_ENABLE
 endif
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk
index 5b1577972..7ce727dab 100644
--- a/tmk_core/protocol/lufa.mk
+++ b/tmk_core/protocol/lufa.mk
@@ -36,6 +36,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
 	$(TMK_DIR)/protocol/serial_uart.c
 endif
 
+ifeq ($(strip $(BLUETOOTH)), RN42)
+	LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
+	$(TMK_DIR)/protocol/serial_uart.c
+endif
+
 ifeq ($(strip $(VIRTSER_ENABLE)), yes)
 	LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c
 endif
diff --git a/tmk_core/protocol/lufa/bluetooth.h b/tmk_core/protocol/lufa/bluetooth.h
index 78ece1cd0..f4b2f6f8b 100644
--- a/tmk_core/protocol/lufa/bluetooth.h
+++ b/tmk_core/protocol/lufa/bluetooth.h
@@ -62,4 +62,18 @@ void bluefruit_serial_send(uint8_t data);
     (usage == AC_REFRESH           ? 0x0000  : \
     (usage == AC_BOOKMARKS         ? 0x0000  : 0)))))))))))))))))))
 
-#endif
\ No newline at end of file
+#define CONSUMER2RN42(usage) \
+    (usage == AUDIO_MUTE           ? 0x0040 : \
+    (usage == AUDIO_VOL_UP         ? 0x0010 : \
+    (usage == AUDIO_VOL_DOWN       ? 0x0020 : \
+    (usage == TRANSPORT_NEXT_TRACK ? 0x0100 : \
+    (usage == TRANSPORT_PREV_TRACK ? 0x0200 : \
+    (usage == TRANSPORT_STOP       ? 0x0400 : \
+    (usage == TRANSPORT_STOP_EJECT ? 0x0800 : \
+    (usage == TRANSPORT_PLAY_PAUSE ? 0x0080 : \
+    (usage == AL_EMAIL             ? 0x0200 : \
+    (usage == AL_LOCAL_BROWSER     ? 0x8000 : \
+    (usage == AC_SEARCH            ? 0x0400 : \
+    (usage == AC_HOME              ? 0x0100 : 0))))))))))))
+
+ #endif
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index 60cba8d2a..ae6129d1a 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -606,6 +606,13 @@ static void send_keyboard(report_keyboard_t *report)
   if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
     #ifdef MODULE_ADAFRUIT_BLE
       adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
+    #elif MODULE_RN42
+       bluefruit_serial_send(0xFD);
+       bluefruit_serial_send(0x09);
+       bluefruit_serial_send(0x01);
+       for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
+         bluefruit_serial_send(report->raw[i]);
+       }
     #else
       bluefruit_serial_send(0xFD);
       for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
@@ -726,6 +733,16 @@ static void send_consumer(uint16_t data)
     if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
       #ifdef MODULE_ADAFRUIT_BLE
         adafruit_ble_send_consumer_key(data, 0);
+      #elif MODULE_RN42
+        static uint16_t last_data = 0;
+        if (data == last_data) return;
+        last_data = data;
+        uint16_t bitmap = CONSUMER2RN42(data);
+        bluefruit_serial_send(0xFD);
+        bluefruit_serial_send(0x03);
+        bluefruit_serial_send(0x03);
+        bluefruit_serial_send(bitmap&0xFF);
+        bluefruit_serial_send((bitmap>>8)&0xFF);
       #else
         static uint16_t last_data = 0;
         if (data == last_data) return;
@@ -1132,7 +1149,7 @@ int main(void)
     // midi_send_noteoff(&midi_device, 0, 64, 127);
 #endif
 
-#ifdef MODULE_ADAFRUIT_EZKEY
+#if defined(MODULE_ADAFRUIT_EZKEY) || defined(MODULE_RN42)
     serial_init();
 #endif
 

From 200ae0c519c0bba927e417ec154783ce4fd306fe Mon Sep 17 00:00:00 2001
From: Callum Oakley <callum@pusher.com>
Date: Thu, 30 Mar 2017 13:22:16 +0100
Subject: [PATCH 135/163] changed hotkey cluster to accomodate awkward software

---
 keyboards/planck/keymaps/callum/keymap.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index aede27df7..d50b04319 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -14,7 +14,7 @@ extern keymap_config_t keymap_config;
 #define _FUNC 4
 #define ENDASH LALT(KC_MINS)
 #define POUND LALT(KC_3)
-#define H(X) LALT(LCTL(X))
+#define H(X) RALT(X)
 
 enum planck_keycodes {
   MOVE = SAFE_RANGE,
@@ -48,19 +48,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* MOVE
  * ,-----------------------------------------------------------------------------------.
- * | H(3) | H(F1)| H(F2)| H(F3)| H(F4)| H(F5)| H(8) | Home |  Up  |  End | H(7) |  Esc |
+ * | H(F7)| H(F8)| H(6) | H(5) | H(4) | H(F9)|H(F10)| Home |  Up  |  End | H(A) |  Esc |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | H(4) | H(F6)| H(F7)| H(F8)| H(F9)|H(F10)| H(9) | Left | Down | Right| Caps |  Del |
+ * | H(F3)| H(F4)| H(3) | H(2) | H(1) | H(F5)| H(F6)| Left | Down | Right| Caps |  Del |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |H(F11)|H(F12)| H(0) | H(1) | H(2) | H(A) | Pg Dn| Pg Up| H(5) | H(6) |      |
+ * |      | H(0) | H(9) | H(8) | H(7) | H(F1)| H(F2)| Pg Dn| Pg Up|H(F11)|H(F12)|      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
 [_MOVE] = {
-  {H(KC_3), H(KC_F1),H(KC_F2),H(KC_F3),H(KC_F4),H(KC_F5),H(KC_8), KC_HOME, KC_UP,   KC_END,  H(KC_7), KC_ESC },
-  {H(KC_4), H(KC_F6),H(KC_F7),H(KC_F8),H(KC_F9),H(KC_F10),H(KC_9),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
-  {_______, H(KC_F11),H(KC_F12),H(KC_0),H(KC_1),H(KC_2), H(KC_A), KC_PGDN, KC_PGUP, H(KC_5), H(KC_6), _______},
+  {H(KC_F7),H(KC_F8),H(KC_6), H(KC_5), H(KC_4), H(KC_F9),H(KC_F10),KC_HOME,KC_UP,   KC_END,  H(KC_A), KC_ESC },
+  {H(KC_F3),H(KC_F4),H(KC_3), H(KC_2), H(KC_1), H(KC_F5),H(KC_F6),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
+  {_______, H(KC_0), H(KC_9), H(KC_8), H(KC_7), H(KC_F1),H(KC_F2),KC_PGDN,KC_PGUP,H(KC_F11),H(KC_F12),_______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 },
 

From b9225a28f253e1ec33b8c96798bfef4b8cc0918d Mon Sep 17 00:00:00 2001
From: Callum Oakley <callum@pusher.com>
Date: Thu, 30 Mar 2017 14:20:18 +0100
Subject: [PATCH 136/163] changed hotkey cluster to accomodate awkward
 software... again

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

diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index d50b04319..09063cb97 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -14,7 +14,7 @@ extern keymap_config_t keymap_config;
 #define _FUNC 4
 #define ENDASH LALT(KC_MINS)
 #define POUND LALT(KC_3)
-#define H(X) RALT(X)
+#define H(X) LALT(LCTL(X))
 
 enum planck_keycodes {
   MOVE = SAFE_RANGE,

From 7e54332890f4c376314f942574c6183c87a6e9c8 Mon Sep 17 00:00:00 2001
From: nielsenz <nielsen.zac@gmail.com>
Date: Thu, 30 Mar 2017 19:15:43 -0700
Subject: [PATCH 137/163] Pulling and pushing troubles

---
 quantum/process_keycode/process_unicode.c     | 75 -------------------
 .../process_keycode/process_unicode_common.c  | 15 ++++
 2 files changed, 15 insertions(+), 75 deletions(-)

diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index cecfaeee9..1f16b9bdb 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -16,81 +16,6 @@
 #include "process_unicode.h"
 #include "action_util.h"
 
-static uint8_t input_mode;
-static uint8_t first_flag = 0;
-
-__attribute__((weak))
-uint16_t hex_to_keycode(uint8_t hex)
-{
-  if (hex == 0x0) {
-    return KC_0;
-  } else if (hex < 0xA) {
-    return KC_1 + (hex - 0x1);
-  } else {
-    return KC_A + (hex - 0xA);
-  }
-}
-
-void set_unicode_input_mode(uint8_t os_target)
-{
-  input_mode = os_target;
-  eeprom_update_byte(EECONFIG_UNICODEMODE, os_target);
-}
-
-uint8_t get_unicode_input_mode(void) {
-  return input_mode;
-}
-
-__attribute__((weak))
-void unicode_input_start (void) {
-  switch(input_mode) {
-  case UC_OSX:
-    register_code(KC_LALT);
-    break;
-  case UC_LNX:
-    register_code(KC_LCTL);
-    register_code(KC_LSFT);
-    register_code(KC_U);
-    unregister_code(KC_U);
-    unregister_code(KC_LSFT);
-    unregister_code(KC_LCTL);
-    break;
-  case UC_WIN:
-    register_code(KC_LALT);
-    register_code(KC_PPLS);
-    unregister_code(KC_PPLS);
-    break;
-  case UC_WINC:
-    register_code(KC_RALT);
-    unregister_code(KC_RALT);
-    register_code(KC_U);
-    unregister_code(KC_U);
-  }
-  wait_ms(UNICODE_TYPE_DELAY);
-}
-
-__attribute__((weak))
-void unicode_input_finish (void) {
-  switch(input_mode) {
-  case UC_OSX:
-  case UC_WIN:
-    unregister_code(KC_LALT);
-    break;
-  case UC_LNX:
-    register_code(KC_SPC);
-    unregister_code(KC_SPC);
-    break;
-  }
-}
-
-void register_hex(uint16_t hex) {
-  for(int i = 3; i >= 0; i--) {
-    uint8_t digit = ((hex >> (i*4)) & 0xF);
-    register_code(hex_to_keycode(digit));
-    unregister_code(hex_to_keycode(digit));
-  }
-}
-
 
 bool process_unicode(uint16_t keycode, keyrecord_t *record) {
   if (keycode > QK_UNICODE && record->event.pressed) {
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index 6012b4f07..b4d4231db 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -16,11 +16,14 @@
 
 #include "process_unicode_common.h"
 
+static uint8_t input_mode;
+static uint8_t first_flag = 0;
 uint8_t mods;
 
 void set_unicode_input_mode(uint8_t os_target)
 {
   input_mode = os_target;
+  eeprom_update_byte(EECONFIG_UNICODEMODE, os_target);
 }
 
 uint8_t get_unicode_input_mode(void) {
@@ -92,6 +95,18 @@ void unicode_input_finish (void) {
   if (mods & MOD_BIT(KC_RGUI)) register_code(KC_RGUI);
 }
 
+__attribute__((weak))
+uint16_t hex_to_keycode(uint8_t hex)
+{
+  if (hex == 0x0) {
+    return KC_0;
+  } else if (hex < 0xA) {
+    return KC_1 + (hex - 0x1);
+  } else {
+    return KC_A + (hex - 0xA);
+  }
+}
+
 void register_hex(uint16_t hex) {
   for(int i = 3; i >= 0; i--) {
     uint8_t digit = ((hex >> (i*4)) & 0xF);

From d1e66e2e0715c680a8da3216525b54fd8f2b671f Mon Sep 17 00:00:00 2001
From: nielsenz <nielsenz@oregonstate.edu>
Date: Thu, 30 Mar 2017 20:10:34 -0700
Subject: [PATCH 138/163] Worked around some new Makefile issues.

---
 keyboards/planck/keymaps/zach/Makefile        |  2 +-
 keyboards/planck/keymaps/zach/config.h        |  2 +-
 .../keymaps/zach/zach_common_functions.c      | 50 +++++++++----------
 keyboards/preonic/keymaps/zach/Makefile       |  4 +-
 keyboards/preonic/keymaps/zach/config.h       |  2 +-
 .../keymaps/zach/zach_common_functions.c      | 50 +++++++++----------
 quantum/process_keycode/process_tap_dance.c   |  2 +
 quantum/process_keycode/process_unicode.c     |  1 +
 .../process_keycode/process_unicode_common.c  |  1 -
 9 files changed, 58 insertions(+), 56 deletions(-)

diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile
index 977f1a901..9d86fc81f 100644
--- a/keyboards/planck/keymaps/zach/Makefile
+++ b/keyboards/planck/keymaps/zach/Makefile
@@ -17,7 +17,7 @@ BACKLIGHT_ENABLE    = no    # Enable keyboard backlight functionality
 MIDI_ENABLE         = no    # MIDI controls
 AUDIO_ENABLE        = no    # Audio output on port C6
 #VARIABLE_TRACE      = no    # Debug changes to variable values
-UNICODE_ENABLE      = yes   # Unicode
+UNICODE_ENABLE      = no    # Unicode (can't be used with unicodemap)
 UNICODEMAP_ENABLE   = yes   # Enable extended 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.
diff --git a/keyboards/planck/keymaps/zach/config.h b/keyboards/planck/keymaps/zach/config.h
index 7deb9ebfe..d309c9493 100644
--- a/keyboards/planck/keymaps/zach/config.h
+++ b/keyboards/planck/keymaps/zach/config.h
@@ -77,7 +77,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* disable action features */
 //#define NO_ACTION_LAYER
 #define NO_ACTION_TAPPING
-#define NO_ACTION_ONESHOT
+//#define NO_ACTION_ONESHOT
 #define NO_ACTION_MACRO
 #define NO_ACTION_FUNCTION
 #define PREVENT_STUCK_MODIFIERS
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index b77f2b241..2c47b2289 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -141,31 +141,31 @@ qk_tap_dance_action_t tap_dance_actions[] = {
 };
 #endif
 
-#ifdef UNICODE_ENABLE
+//#ifdef UNICODE_ENABLE
 // Unicode shortcuts
-#define IBANG   UC(0x203D)
-#define RAROW   UC(0x2192)
-#define LAROW   UC(0x2190)
-#define DEGREE  UC(0x00B0)
-#define OMEGA   UC(0x03A9)
-#define WOMEGA  UC(0x03C9)
-#define MICRO   UC(0x00B5)
-#define PLUMIN  UC(0x00B1)
-#define SUPA2   UC(0x00B2)
-#define ROMAN1  UC(0x2160)
-#define ROMAN2  UC(0x2161)
-#define ROMAN3  UC(0x2162)
-#define ROMAN4  UC(0x2163)
-#define ROMAN5  UC(0x2164)
-#define ROMAN6  UC(0x2165)
-#define ROMAN7  UC(0x2166)
-#define roman1  UC(0x2170)
-#define roman2  UC(0x2171)
-#define roman3  UC(0x2172)
-#define roman4  UC(0x2173)
-#define roman5  UC(0x2174)
-#define roman6  UC(0x2175)
-#define roman7  UC(0x2176)
+#define IBANG   X(0x203D)
+#define RAROW   X(0x2192)
+#define LAROW   X(0x2190)
+#define DEGREE  X(0x00B0)
+#define OMEGA   X(0x03A9)
+#define WOMEGA  X(0x03C9)
+#define MICRO   X(0x00B5)
+#define PLUMIN  X(0x00B1)
+#define SUPA2   X(0x00B2)
+#define ROMAN1  X(0x2160)
+#define ROMAN2  X(0x2161)
+#define ROMAN3  X(0x2162)
+#define ROMAN4  X(0x2163)
+#define ROMAN5  X(0x2164)
+#define ROMAN6  X(0x2165)
+#define ROMAN7  X(0x2166)
+#define roman1  X(0x2170)
+#define roman2  X(0x2171)
+#define roman3  X(0x2172)
+#define roman4  X(0x2173)
+#define roman5  X(0x2174)
+#define roman6  X(0x2175)
+#define roman7  X(0x2176)
 
 #ifdef UNICODEMAP_ENABLE        // For Unicode characters larger than 0x8000. Send with X(<unicode>)
 enum Ext_Unicode{
@@ -192,7 +192,7 @@ const uint32_t PROGMEM unicode_map[] = {
 #define TMBL    X(TUMBLER)
 #endif
 
-#endif
+//#endif
 
 static uint16_t key_timer;
 static uint8_t  caps_status = 0;
diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile
index f0a84abac..eebf41349 100644
--- a/keyboards/preonic/keymaps/zach/Makefile
+++ b/keyboards/preonic/keymaps/zach/Makefile
@@ -17,8 +17,8 @@ BACKLIGHT_ENABLE    = yes   # Enable keyboard backlight functionality
 MIDI_ENABLE         = no    # MIDI controls
 AUDIO_ENABLE        = yes   # Audio output on port C6
 #VARIABLE_TRACE      = no    # Debug changes to variable values
-UNICODE_ENABLE      = yes   # Unicode
-UNICODEMAP_ENABLE   = no    # Enable extended unicode
+UNICODE_ENABLE      = no    # Unicode
+UNICODEMAP_ENABLE   = yes   # Enable extended 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.
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/preonic/keymaps/zach/config.h b/keyboards/preonic/keymaps/zach/config.h
index 59959524f..bb8913c7a 100644
--- a/keyboards/preonic/keymaps/zach/config.h
+++ b/keyboards/preonic/keymaps/zach/config.h
@@ -84,7 +84,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* disable action features */
 //#define NO_ACTION_LAYER
 #define NO_ACTION_TAPPING
-#define NO_ACTION_ONESHOT
+//#define NO_ACTION_ONESHOT
 #define NO_ACTION_MACRO
 #define NO_ACTION_FUNCTION
 #define PREVENT_STUCK_MODIFIERS
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index b77f2b241..2c47b2289 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -141,31 +141,31 @@ qk_tap_dance_action_t tap_dance_actions[] = {
 };
 #endif
 
-#ifdef UNICODE_ENABLE
+//#ifdef UNICODE_ENABLE
 // Unicode shortcuts
-#define IBANG   UC(0x203D)
-#define RAROW   UC(0x2192)
-#define LAROW   UC(0x2190)
-#define DEGREE  UC(0x00B0)
-#define OMEGA   UC(0x03A9)
-#define WOMEGA  UC(0x03C9)
-#define MICRO   UC(0x00B5)
-#define PLUMIN  UC(0x00B1)
-#define SUPA2   UC(0x00B2)
-#define ROMAN1  UC(0x2160)
-#define ROMAN2  UC(0x2161)
-#define ROMAN3  UC(0x2162)
-#define ROMAN4  UC(0x2163)
-#define ROMAN5  UC(0x2164)
-#define ROMAN6  UC(0x2165)
-#define ROMAN7  UC(0x2166)
-#define roman1  UC(0x2170)
-#define roman2  UC(0x2171)
-#define roman3  UC(0x2172)
-#define roman4  UC(0x2173)
-#define roman5  UC(0x2174)
-#define roman6  UC(0x2175)
-#define roman7  UC(0x2176)
+#define IBANG   X(0x203D)
+#define RAROW   X(0x2192)
+#define LAROW   X(0x2190)
+#define DEGREE  X(0x00B0)
+#define OMEGA   X(0x03A9)
+#define WOMEGA  X(0x03C9)
+#define MICRO   X(0x00B5)
+#define PLUMIN  X(0x00B1)
+#define SUPA2   X(0x00B2)
+#define ROMAN1  X(0x2160)
+#define ROMAN2  X(0x2161)
+#define ROMAN3  X(0x2162)
+#define ROMAN4  X(0x2163)
+#define ROMAN5  X(0x2164)
+#define ROMAN6  X(0x2165)
+#define ROMAN7  X(0x2166)
+#define roman1  X(0x2170)
+#define roman2  X(0x2171)
+#define roman3  X(0x2172)
+#define roman4  X(0x2173)
+#define roman5  X(0x2174)
+#define roman6  X(0x2175)
+#define roman7  X(0x2176)
 
 #ifdef UNICODEMAP_ENABLE        // For Unicode characters larger than 0x8000. Send with X(<unicode>)
 enum Ext_Unicode{
@@ -192,7 +192,7 @@ const uint32_t PROGMEM unicode_map[] = {
 #define TMBL    X(TUMBLER)
 #endif
 
-#endif
+//#endif
 
 static uint16_t key_timer;
 static uint8_t  caps_status = 0;
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c
index 68c8425bb..b807ec3c3 100644
--- a/quantum/process_keycode/process_tap_dance.c
+++ b/quantum/process_keycode/process_tap_dance.c
@@ -16,6 +16,8 @@
 #include "quantum.h"
 #include "action_tapping.h"
 
+uint8_t get_oneshot_mods(void);
+
 static uint16_t last_td;
 static int8_t highest_td = -1;
 
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index 1f16b9bdb..678a15234 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -16,6 +16,7 @@
 #include "process_unicode.h"
 #include "action_util.h"
 
+static uint8_t first_flag = 0;
 
 bool process_unicode(uint16_t keycode, keyrecord_t *record) {
   if (keycode > QK_UNICODE && record->event.pressed) {
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index b4d4231db..1dbdec3e7 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -17,7 +17,6 @@
 #include "process_unicode_common.h"
 
 static uint8_t input_mode;
-static uint8_t first_flag = 0;
 uint8_t mods;
 
 void set_unicode_input_mode(uint8_t os_target)

From caab4d7e4576c10e45becea4a8fc69a7c9c064e0 Mon Sep 17 00:00:00 2001
From: Osamu Aoki <osamu@debian.org>
Date: Sat, 1 Apr 2017 01:39:00 +0900
Subject: [PATCH 139/163] Fix typo

---
 doc/keymap.md | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/doc/keymap.md b/doc/keymap.md
index bc7809905..3ea138ea8 100644
--- a/doc/keymap.md
+++ b/doc/keymap.md
@@ -6,12 +6,12 @@ QMK is based on TMK.   Understanding the essential changes made should help you
 
 ## TMK vs. QMK
 
-| Firmware                                        |TMK                    |QMK                      |
-|-------------------------------------------------|-----------------------|-------------------------|
-| Maintainer                                      |hasu                   |Jack Humbert et al.      |
-| Build path customization                        | `TMK_DIR = ...`       | `include .../Makefile`  |
-| `keymaps` data                                  | 3D array of `uint8_t`  holding **keycode**      | 3D array of `uint16_t` holding **action code**  |
-| `fn_actions` data                               | 1D array of `uint16_t`  holding **action code** | 3D array of `uint16_t` holding **action code**  |
+| Firmware                  |TMK                    |QMK                      |
+|---------------------------|-----------------------|-------------------------|
+| Maintainer                |hasu                   |Jack Humbert et al.      |
+| Build path customization  | `TMK_DIR = ...`       | `include .../Makefile`  |
+| `keymaps` data            | 3D array of `uint8_t` holding **keycode**      | 3D array of `uint16_t` holding **action code**  |
+| `fn_actions` data         | 1D array of `uint16_t` holding **action code** | 1D array of `uint16_t` holding **action code**  |
 
 Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code.
 
@@ -45,7 +45,7 @@ Keymap layer has its state in two 32 bit parameters:
 * **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred.
 * **`layer_state`** () has current on/off status of the layer on its each bit.
 
-Keymap has its state in two parameter**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
+Keymap has its state in two parameter **`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
 Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`.
 To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty.
 

From e508b5e04eaac5f56698333bdd2a9c2ffa89ab75 Mon Sep 17 00:00:00 2001
From: = <=>
Date: Sun, 2 Apr 2017 18:27:24 +0900
Subject: [PATCH 140/163] Adds tong92's keymap to tv44

---
 keyboards/tv44/keymaps/tong92/Makefile  |  21 ++++
 keyboards/tv44/keymaps/tong92/config.h  |  12 +++
 keyboards/tv44/keymaps/tong92/keymap.c  | 138 ++++++++++++++++++++++++
 keyboards/tv44/keymaps/tong92/readme.md |  52 +++++++++
 4 files changed, 223 insertions(+)
 create mode 100644 keyboards/tv44/keymaps/tong92/Makefile
 create mode 100644 keyboards/tv44/keymaps/tong92/config.h
 create mode 100644 keyboards/tv44/keymaps/tong92/keymap.c
 create mode 100644 keyboards/tv44/keymaps/tong92/readme.md

diff --git a/keyboards/tv44/keymaps/tong92/Makefile b/keyboards/tv44/keymaps/tong92/Makefile
new file mode 100644
index 000000000..e60e3c5c5
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/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 = no       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = no        # Commands for debug and configuration
+NKRO_ENABLE = no           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes       # 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/tv44/keymaps/tong92/config.h b/keyboards/tv44/keymaps/tong92/config.h
new file mode 100644
index 000000000..be959a823
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/config.h
@@ -0,0 +1,12 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+#ifdef BACKLIGHT_ENABLE
+    #define BACKLIGHT_PIN B2
+    #define BACKLIGHT_LEVELS 7
+#endif
+
+#endif
diff --git a/keyboards/tv44/keymaps/tong92/keymap.c b/keyboards/tv44/keymaps/tong92/keymap.c
new file mode 100644
index 000000000..4a16b3554
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/keymap.c
@@ -0,0 +1,138 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+//Author: tong92 <tong92power@gmail.com>
+
+#include "tv44.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define LOWER F(1)
+#define RAISE F(2)
+#define FTN MO(4)
+#define MOUSE M(10)
+#define GO_DEFT M(99)
+#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 |
+ * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+ * | Ctrl  |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  | Enter|
+ * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+ * | Shift  |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  | /   |Shift|
+ * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+ * | Ftn1 |  GUI  | Alt  | Space/LOWER | Space/RAISE |  '   |  [  |  ]  | Alt |
+ * `--------------------------------------------------------------------------'
+ */
+[0] = {
+{KC_TAB, KC_Q,   KC_W,   KC_E, KC_R,   KC_T,   KC_Y,   KC_U, KC_I,   KC_O,  KC_P,   KC_BSPC},
+{KC_LCTL,KC_A,   KC_S,   KC_D, KC_F,   KC_G,   KC_H,   KC_J, KC_K,   KC_L,  KC_SCLN,KC_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 },
+{FTN    ,KC_LGUI,KC_LALT,LOWER,XXXXXXX,XXXXXXX,XXXXXXX,RAISE,KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT}
+},
+/* LOWER
+ * ,--------------------------------------------------------------------------.
+ * |  `   |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |       |
+ * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+ * |       |  F1 |  F2 |  F3 |  F4 |  F5 |  F6 |  -  |  +  |  [  |  ]  |   \  |
+ * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+ * |        |  F7 |  F8 |  F9 | F10 | F11 | F12 |     | HOME| PgUp|  UP | PgDo|
+ * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+ * |      |       |      |             |             |  END | LEFT| Down|RIGHT|
+ * `--------------------------------------------------------------------------'
+ */
+[1] = {
+{KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   _______},
+{_______,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS },
+{_______,KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP  ,KC_PGDN },
+{XXXXXXX,_______,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
+},
+/* RAISE
+ * ,--------------------------------------------------------------------------.
+ * |  ~   |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |       |
+ * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+ * |       |  F1 |  F2 |  F3 |  F4 |  F5 |  F6 |  _  |  =  |  {  |  }  |   |  |
+ * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+ * |        |  F7 |  F8 |  F9 | F10 | F11 | F12 |     | HOME| PgUp|  UP | PgDo|
+ * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+ * |      |       |      |             |             |  END | LEFT| Down|RIGHT|
+ * `--------------------------------------------------------------------------'
+ */
+[2] ={
+{KC_TILD,KC_EXLM,KC_AT,  KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______ },
+{_______,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE },
+{_______,KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP  ,KC_PGDN },
+{XXXXXXX,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
+},
+/* FTN
+ * ,--------------------------------------------------------------------------.
+ * |  ESC |WinOf|WinUp|     |     |Sh+Ca|     | PgUp| UP  | PgDo|PrtSc| DELET |
+ * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+ * |       |WinLe|WinDo|WinRi|     |Al+Ca|CapsL| LEFT| DOWN|RIGHT|     |      |
+ * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+ * |        |WinLW|WinRW|     |     |Ct+Ca|ScroL| HOME|     | END |     | Ctrl|
+ * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+ * |      | DeskL | DeskR| Task Manager|    DeskX    | MOUSE|     |     | LED |
+ * `--------------------------------------------------------------------------'
+ */
+[4] = {
+{KC_ESC ,LALT(KC_F4)        ,LGUI(KC_UP)         ,XXXXXXX          ,XXXXXXX    ,S(KC_CAPS)   ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT},
+{_______,LGUI(KC_LEFT)      ,LGUI(KC_DOWN)       ,LGUI(KC_RIGHT)   ,XXXXXXX    ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX},
+{_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX          ,XXXXXXX    ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,KC_RCTL},
+{_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LCTL(LALT(KC_DELT)),XXXXXXX,XXXXXXX,XXXXXXX,LGUI(LCTL(KC_F4)),MOUSE,XXXXXXX,XXXXXXX,M(0)}
+},
+/* MOUSE
+ * ,--------------------------------------------------------------------------.
+ * |      |     |     |Mo_Up|     |     |     |M_WhL|M_WhU|M_WhR|     | RESET |
+ * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+ * |       |     |Mo_Le|Mo_Do|Mo_Ri|     |     |M_Bt1|M_WhD|M_Bt2|     |      |
+ * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+ * |        |     |     |     |     |     |     |M_AC0|M_AC1|M_AC2|     |     |
+ * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+ * |      |      |      | GO_DEFAULT  |  GO_DEFAULT |       |     |     |     |
+ * `--------------------------------------------------------------------------'
+ */
+[10] ={
+{XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET},
+{XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX},
+{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX},
+{XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_KEY(1, KC_SPC),
+ [2] = ACTION_LAYER_TAP_KEY(2, KC_SPC)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+            if (record->event.pressed) {
+                #ifdef BACKLIGHT_ENABLE
+                    backlight_step();
+                #endif
+            }
+        break;
+        case 10:
+            if (record->event.pressed) {
+                layer_on(10);
+            }
+        break;
+        case 99:
+            if (record->event.pressed) {
+                layer_off(10);
+                layer_off(4);
+            }
+        break;
+      }
+    return MACRO_NONE;
+};
\ No newline at end of file
diff --git a/keyboards/tv44/keymaps/tong92/readme.md b/keyboards/tv44/keymaps/tong92/readme.md
new file mode 100644
index 000000000..820857256
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/readme.md
@@ -0,0 +1,52 @@
+# The tong92's keymap for tv44
+
+- Arrow Layout (45key)
+- my keymap for Window User
+- Mouse Layer : space -> Default Layer
+
+## Qwerty
+	,--------------------------------------------------------------------------.
+	| Tab  |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  | Bksp  |
+	|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+	| Ctrl  |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  | Enter|
+	|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+	| Shift  |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |Shift|
+	|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+	| Ftn1 |  GUI  | Alt  | Space/LOWER | Space/RAISE |  '   |  [  |  ]  | Alt |
+	`--------------------------------------------------------------------------'
+
+
+## RAISE
+	,--------------------------------------------------------------------------.
+	|  ~   |  !  |  @  |  #  |  $  |  %  |  ^  |  &  |  *  |  (  |  )  |       |
+	|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+	|       |  F1 |  F2 |  F3 |  F4 |  F5 |  F6 |  _  |  =  |  {  |  }  |   |  |
+	|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+	|        |  F7 |  F8 |  F9 | F10 | F11 | F12 |     | HOME| PgUp|  UP | PgDo|
+	|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+	|      |       |      |             |             |  END | LEFT| Down|RIGHT|
+	`--------------------------------------------------------------------------'
+
+
+## FTN
+	,--------------------------------------------------------------------------.
+	|  ESC |WinOf|WinUp|     |     |Sh+Ca|     | PgUp| UP  | PgDo|PrtSc| DELET |
+	|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+	|       |WinLe|WinDo|WinRi|     |Al+Ca|CapsL| LEFT| DOWN|RIGHT|     |      |
+	|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+	|        |WinLW|WinRW|     |     |Ct+Ca|ScroL| HOME|     | END |     | Ctrl|
+	|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+	|      | DeskL | DeskR| Task Manager|    DeskX    | MOUSE|     |     | LED |
+	`--------------------------------------------------------------------------'
+
+
+## MOUSE
+	,--------------------------------------------------------------------------.
+	|      |     |     |Mo_Up|     |     |     |M_WhL|M_WhU|M_WhR|     | RESET |
+	|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
+	|       |     |Mo_Le|Mo_Do|Mo_Ri|     |     |M_Bt1|M_WhD|M_Bt2|     |      |
+	|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
+	|        |     |     |     |     |     |     |M_AC0|M_AC1|M_AC2|     |     |
+	|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
+	|      |      |      | GO_DEFAULT  |  GO_DEFAULT |       |     |     |     |
+	`--------------------------------------------------------------------------'

From f8ed4ed573c798bd40a1063072fd619732a2d49a Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Tue, 21 Feb 2017 09:39:51 +0700
Subject: [PATCH 141/163] Initial work for my kbod support in qmk_firmware

- Wiring layout done

No actual keymap yet
---
 keyboards/handwired/kbod/Makefile             |   3 +
 keyboards/handwired/kbod/config.h             | 162 ++++++++++++++++++
 keyboards/handwired/kbod/kbod.c               |  28 +++
 keyboards/handwired/kbod/kbod.h               |  25 +++
 .../handwired/kbod/keymaps/default/Makefile   |  21 +++
 .../handwired/kbod/keymaps/default/config.h   |   8 +
 .../handwired/kbod/keymaps/default/keymap.c   |  44 +++++
 .../handwired/kbod/keymaps/default/readme.md  |   1 +
 keyboards/handwired/kbod/readme.md            |  28 +++
 keyboards/handwired/kbod/rules.mk             |  68 ++++++++
 10 files changed, 388 insertions(+)
 create mode 100644 keyboards/handwired/kbod/Makefile
 create mode 100644 keyboards/handwired/kbod/config.h
 create mode 100644 keyboards/handwired/kbod/kbod.c
 create mode 100644 keyboards/handwired/kbod/kbod.h
 create mode 100644 keyboards/handwired/kbod/keymaps/default/Makefile
 create mode 100644 keyboards/handwired/kbod/keymaps/default/config.h
 create mode 100644 keyboards/handwired/kbod/keymaps/default/keymap.c
 create mode 100644 keyboards/handwired/kbod/keymaps/default/readme.md
 create mode 100644 keyboards/handwired/kbod/readme.md
 create mode 100644 keyboards/handwired/kbod/rules.mk

diff --git a/keyboards/handwired/kbod/Makefile b/keyboards/handwired/kbod/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/handwired/kbod/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/handwired/kbod/config.h b/keyboards/handwired/kbod/config.h
new file mode 100644
index 000000000..e73b7d086
--- /dev/null
+++ b/keyboards/handwired/kbod/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    fudanchii
+#define PRODUCT         kbod
+#define DESCRIPTION     Keyboard of Disapproval
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/*
+ * 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 { C6, D7, E6, B4, B5, B6, B7, D6 }
+#define MATRIX_COL_PINS { D0, D1, F0, F1, F4, F5, F6, F7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#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/handwired/kbod/kbod.c b/keyboards/handwired/kbod/kbod.c
new file mode 100644
index 000000000..9a12cae0d
--- /dev/null
+++ b/keyboards/handwired/kbod/kbod.c
@@ -0,0 +1,28 @@
+#include "kbod.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/handwired/kbod/kbod.h b/keyboards/handwired/kbod/kbod.h
new file mode 100644
index 000000000..629fb3eac
--- /dev/null
+++ b/keyboards/handwired/kbod/kbod.h
@@ -0,0 +1,25 @@
+#ifndef KBOD_H
+#define KBOD_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, k06, k07, k08, k09, k0A, k0B, k0C,    k0D, \
+    k10,    k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+    k20,     k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,     K2C, \
+    k30,      k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A,         k3B, \
+    k40,  k41,  k42,               k43,               k44,  k45,  k46,  k47  \
+) \
+{                                                                                               \
+    { k00, k01, k02, k03, k04, k05, k06, k07 }, { k08, k09, k0A, k0B, k0C, k0D, KC_NO, KC_NO }, \
+    { k10, k11, k12, k13, k14, k15, k16, k17 }, { k18, k19, k1A, k1B, k1C, k1D, KC_NO,   k3B }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27 }, { k28, k29, k2A, k2B, k2C, k38, k39,     k3A }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37 },                                                 \
+    { k40, k41, k42, k43, k44, k45, k46, k47 },                                                 \
+}
+
+#endif
diff --git a/keyboards/handwired/kbod/keymaps/default/Makefile b/keyboards/handwired/kbod/keymaps/default/Makefile
new file mode 100644
index 000000000..0d9def930
--- /dev/null
+++ b/keyboards/handwired/kbod/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 = no         # 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/handwired/kbod/keymaps/default/config.h b/keyboards/handwired/kbod/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/handwired/kbod/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/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
new file mode 100644
index 000000000..9245270eb
--- /dev/null
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include "kbod.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Base */
+  KC_A,  KC_1,  KC_H, \
+    KC_TAB,  KC_SPC   \
+),
+};
+
+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/handwired/kbod/keymaps/default/readme.md b/keyboards/handwired/kbod/keymaps/default/readme.md
new file mode 100644
index 000000000..3fe84c619
--- /dev/null
+++ b/keyboards/handwired/kbod/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for kbod
\ No newline at end of file
diff --git a/keyboards/handwired/kbod/readme.md b/keyboards/handwired/kbod/readme.md
new file mode 100644
index 000000000..179ab1d79
--- /dev/null
+++ b/keyboards/handwired/kbod/readme.md
@@ -0,0 +1,28 @@
+kbod 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/kbod 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/handwired/kbod/rules.mk b/keyboards/handwired/kbod/rules.mk
new file mode 100644
index 000000000..4fcd147a9
--- /dev/null
+++ b/keyboards/handwired/kbod/rules.mk
@@ -0,0 +1,68 @@
+# 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 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 ?= no        # Console for debug(+400)
+COMMAND_ENABLE ?= no        # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend
+# 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
+FAUXCLICKY_ENABLE ?= no      # Use buzzer to emulate clicky switches

From 8b206e1e75f487a473b8a58223c857363ce0a6e4 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Wed, 22 Feb 2017 06:40:48 +0700
Subject: [PATCH 142/163] Add initial keymap

*crossfingers*
---
 keyboards/handwired/kbod/kbod.h               |   4 -
 .../handwired/kbod/keymaps/default/keymap.c   | 105 +++++++++++++-----
 2 files changed, 77 insertions(+), 32 deletions(-)

diff --git a/keyboards/handwired/kbod/kbod.h b/keyboards/handwired/kbod/kbod.h
index 629fb3eac..04ecdd392 100644
--- a/keyboards/handwired/kbod/kbod.h
+++ b/keyboards/handwired/kbod/kbod.h
@@ -3,10 +3,6 @@
 
 #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, k06, k07, k08, k09, k0A, k0B, k0C,    k0D, \
     k10,    k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 9245270eb..137ddf387 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -1,44 +1,93 @@
 #include "kbod.h"
 
+#define _____ KC_TRNS
+
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP( /* Base */
-  KC_A,  KC_1,  KC_H, \
-    KC_TAB,  KC_SPC   \
-),
+  KEYMAP( /* Base */
+      F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
+      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_BSLASH,
+      KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOT, KC_ENTER,
+      KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSPO,
+      LT(1, KC_LEAD), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL 
+  ),
+  KEYMAP( /* Cursor layer */
+      KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, KC_END, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_UP, _____,
+      _____,  _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT, _____
+  ),
+  KEYMAP( /* Multimedia layer */
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_UP, _____,
+      LT(3, KC_LEAD),  _____, _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
+  ),
+  KEYMAP( /* Multimedia layer */
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, _____,
+      _____,  _____, _____, _____, _____, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
+  ),
 };
 
 const uint16_t PROGMEM fn_actions[] = {
-
+  [0]  = ACTION_FUNCTION(0),
 };
 
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  static uint8_t shift_esc_shift_mask;
+  switch (id) {
+    case 0:
+      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+      if (record->event.pressed) {
+        if (shift_esc_shift_mask) {
+          add_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          add_key(KC_ESC);
+          send_keyboard_report();
+        }
+      } else {
+        if (shift_esc_shift_mask) {
+          del_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          del_key(KC_ESC);
+          send_keyboard_report();
+        }
+      }
+      break;
+  }
+}
+
+
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+  LEADER_DICTIONARY() {
+    leading = false;
+    leader_end();
+
+    SEQ_ONE_KEY(KC_B) {
+      layer_switch(0);
+    }
+    SEQ_ONE_KEY(KC_C) {
+      layer_switch(1);
+    }
+    SEQ_ONE_KEY(KC_M) {
+      layer_switch(2);
+    }
+  }
+}
+
 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

From 7614c6b7a75c93b248d36f039f919ab925afde32 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Fri, 24 Feb 2017 12:06:10 +0700
Subject: [PATCH 143/163] Remove lead keys, fix some typos, rearrange layers

---
 keyboards/handwired/kbod/kbod.h               |  2 +-
 .../handwired/kbod/keymaps/default/keymap.c   | 37 +++++--------------
 2 files changed, 10 insertions(+), 29 deletions(-)

diff --git a/keyboards/handwired/kbod/kbod.h b/keyboards/handwired/kbod/kbod.h
index 04ecdd392..356063624 100644
--- a/keyboards/handwired/kbod/kbod.h
+++ b/keyboards/handwired/kbod/kbod.h
@@ -6,7 +6,7 @@
 #define KEYMAP( \
     k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C,    k0D, \
     k10,    k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
-    k20,     k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,     K2C, \
+    k20,     k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,     k2C, \
     k30,      k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A,         k3B, \
     k40,  k41,  k42,               k43,               k44,  k45,  k46,  k47  \
 ) \
diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 137ddf387..463b1fc8b 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -7,29 +7,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
       F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
       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_BSLASH,
       KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOT, KC_ENTER,
-      KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSPO,
-      LT(1, KC_LEAD), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL 
+      KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSPC,
+      MO(1), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL 
   ),
   KEYMAP( /* Cursor layer */
       KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, KC_END, _____,
+      TO(3),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
+      TO(2),  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, KC_END, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_UP, _____,
-      _____,  _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT, _____
+      _____,  _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT, _____
   ),
   KEYMAP( /* Multimedia layer */
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_UP, _____,
-      LT(3, KC_LEAD),  _____, _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
+      TO(0),  _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
   ),
   KEYMAP( /* Multimedia layer */
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, _____,
-      _____,  _____, _____, _____, _____, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
+      TO(0),  _____, _____, _____, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
   ),
 };
 
@@ -37,6 +37,7 @@ const uint16_t PROGMEM fn_actions[] = {
   [0]  = ACTION_FUNCTION(0),
 };
 
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
   static uint8_t shift_esc_shift_mask;
   switch (id) {
@@ -63,31 +64,11 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
   }
 }
 
-
-LEADER_EXTERNS();
-
-void matrix_scan_user(void) {
-  LEADER_DICTIONARY() {
-    leading = false;
-    leader_end();
-
-    SEQ_ONE_KEY(KC_B) {
-      layer_switch(0);
-    }
-    SEQ_ONE_KEY(KC_C) {
-      layer_switch(1);
-    }
-    SEQ_ONE_KEY(KC_M) {
-      layer_switch(2);
-    }
-  }
-}
-
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
     return MACRO_NONE;
 };
 
 void led_set_user(uint8_t usb_led) {
-
+  
 }
\ No newline at end of file

From af7430b896bdc15dd007b2227ed0b6f2feb0634a Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Sat, 25 Feb 2017 12:36:53 +0700
Subject: [PATCH 144/163] Add capslock led, and audio buttons

- Also change layer switch to momentary
---
 .../handwired/kbod/keymaps/default/keymap.c   | 42 ++++++++++++-------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 463b1fc8b..3514ffb98 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -2,34 +2,36 @@
 
 #define _____ KC_TRNS
 
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   KEYMAP( /* Base */
       F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
       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_BSLASH,
       KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOT, KC_ENTER,
-      KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSPC,
+      KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSFT,
       MO(1), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL 
   ),
   KEYMAP( /* Cursor layer */
       KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
-      TO(3),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
-      TO(2),  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, KC_END, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_UP, _____,
-      _____,  _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT, _____
+      MO(3),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
+      MO(2),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_END, KC_UP,
+      _____,  _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT
   ),
   KEYMAP( /* Multimedia layer */
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      TO(0),  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_UP, _____,
-      TO(0),  _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
+      _____,  _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
   ),
   KEYMAP( /* Multimedia layer */
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      TO(0),  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _____,
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR,
       _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, _____,
-      TO(0),  _____, _____, _____, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
+      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, KC_MS_BTN2,
+      _____,  _____, _____, _____, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
   ),
 };
 
@@ -37,7 +39,7 @@ const uint16_t PROGMEM fn_actions[] = {
   [0]  = ACTION_FUNCTION(0),
 };
 
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
   static uint8_t shift_esc_shift_mask;
   switch (id) {
@@ -66,9 +68,17 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
-    return MACRO_NONE;
+  return MACRO_NONE;
 };
 
 void led_set_user(uint8_t usb_led) {
-  
+  if (usb_led & _BV(USB_LED_CAPS_LOCK)) {
+    PORTB |= _BV(PB0);
+  } else {
+    PORTB &= ~_BV(PB0);
+  }
+}
+
+void matrix_init_user(void) {
+  DDRB |= _BV(PB0);
 }
\ No newline at end of file

From c9dd11d5abec11aa046031c12b1aa5edc5efae77 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Sat, 25 Feb 2017 13:30:18 +0700
Subject: [PATCH 145/163] Enable alt-F4 without [Fn]

- Add led indicator when keymap not on base layer \o/
---
 .../handwired/kbod/keymaps/default/keymap.c   | 62 ++++++++++++-------
 1 file changed, 41 insertions(+), 21 deletions(-)

diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 3514ffb98..6f2805d9d 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -2,11 +2,31 @@
 
 #define _____ KC_TRNS
 
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+#define MODS_PRESSED(btn)  (get_mods() & (MOD_BIT(KC_L##btn)|MOD_BIT(KC_R##btn)))
+
+#define SET_WHETHER(mask, btn1, btn2) \
+if (record->event.pressed) {          \
+    if (mask) {                       \
+        add_key(btn2);                \
+        send_keyboard_report();       \
+    } else {                          \
+        add_key(btn1);                \
+        send_keyboard_report();       \
+    }                                 \
+} else {                              \
+    if (mask) {                       \
+        del_key(btn2);                \
+        send_keyboard_report();       \
+    } else {                          \
+        del_key(btn1);                \
+        send_keyboard_report();       \
+    }                                 \
+}                                     \
+
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   KEYMAP( /* Base */
-      F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
+      F(0), KC_1, KC_2, KC_3, F(1), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
       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_BSLASH,
       KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOT, KC_ENTER,
       KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSFT,
@@ -37,31 +57,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 const uint16_t PROGMEM fn_actions[] = {
   [0]  = ACTION_FUNCTION(0),
+  [1]  = ACTION_FUNCTION(1),
 };
 
 
 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  static uint8_t shift_esc_shift_mask;
+  static uint8_t shift_esc_mask;
+  static uint8_t alt_mask;
   switch (id) {
     case 0:
-      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
-      if (record->event.pressed) {
-        if (shift_esc_shift_mask) {
-          add_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          add_key(KC_ESC);
-          send_keyboard_report();
-        }
-      } else {
-        if (shift_esc_shift_mask) {
-          del_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          del_key(KC_ESC);
-          send_keyboard_report();
-        }
-      }
+      shift_esc_mask = MODS_PRESSED(SHIFT);
+      SET_WHETHER(shift_esc_mask, KC_ESC, KC_GRAVE)
+      break;
+    case 1:
+      alt_mask = MODS_PRESSED(ALT);
+      SET_WHETHER(alt_mask, KC_4, KC_F4);
       break;
   }
 }
@@ -81,4 +91,14 @@ void led_set_user(uint8_t usb_led) {
 
 void matrix_init_user(void) {
   DDRB |= _BV(PB0);
+  DDRC |= _BV(PC7);
+}
+
+void matrix_scan_user(void) {
+  uint8_t layer = biton32(layer_state);
+  if (layer) {
+    PORTC |= _BV(PC7);
+  } else {
+    PORTC &= ~_BV(PC7);
+  }
 }
\ No newline at end of file

From 10105f645a7fdcf0d636e0eb2c768754521602a3 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Sun, 26 Feb 2017 11:41:03 +0700
Subject: [PATCH 146/163] Add README

---
 .../handwired/kbod/keymaps/default/readme.md  |  6 ++++-
 keyboards/handwired/kbod/readme.md            | 25 ++++++-------------
 2 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/keyboards/handwired/kbod/keymaps/default/readme.md b/keyboards/handwired/kbod/keymaps/default/readme.md
index 3fe84c619..35c22ec00 100644
--- a/keyboards/handwired/kbod/keymaps/default/readme.md
+++ b/keyboards/handwired/kbod/keymaps/default/readme.md
@@ -1 +1,5 @@
-# The default keymap for kbod
\ No newline at end of file
+# The default keymap for kbod
+
+This is the default keymap for kbod,
+
+it consists of a base layer with QWERTY layout, a momentary cursor-layer, and mouse-keys and multimedia layers.
\ No newline at end of file
diff --git a/keyboards/handwired/kbod/readme.md b/keyboards/handwired/kbod/readme.md
index 179ab1d79..bd58fdd38 100644
--- a/keyboards/handwired/kbod/readme.md
+++ b/keyboards/handwired/kbod/readme.md
@@ -1,28 +1,19 @@
-kbod keyboard firmware
+KBOD keyboard firmware
 ======================
 
+KBOD is a 60% Keyboard kit, hand-wired, with Arduino Micro as its controller. It's utilize 8x8 matrix and has layout similar to GH-60
+
 ## 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/kbod 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. 
+Download or clone the whole firmware and use ```make handwired-kbod-default``` to generate the .hex file. You may flash it with avrdude
 
-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:
+## Flashing
+Something along this line:
 
 ```
-$ make [default|jack|<name>]
-```
-
-Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
+avrdude -p m32u4 -c avr109 -P <COM PORT> -C <avrdude conf file> -e -u flash:w:handwired_kbod_default.hex
+```
\ No newline at end of file

From f5d78c739d48bad32409b3819c8d624d5e78c017 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Sun, 26 Feb 2017 11:44:21 +0700
Subject: [PATCH 147/163] Forgot semicolon, and add reference link

---
 keyboards/handwired/kbod/keymaps/default/keymap.c | 2 +-
 keyboards/handwired/kbod/readme.md                | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 6f2805d9d..a6c09dd53 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -67,7 +67,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
   switch (id) {
     case 0:
       shift_esc_mask = MODS_PRESSED(SHIFT);
-      SET_WHETHER(shift_esc_mask, KC_ESC, KC_GRAVE)
+      SET_WHETHER(shift_esc_mask, KC_ESC, KC_GRAVE);
       break;
     case 1:
       alt_mask = MODS_PRESSED(ALT);
diff --git a/keyboards/handwired/kbod/readme.md b/keyboards/handwired/kbod/readme.md
index bd58fdd38..67bf711be 100644
--- a/keyboards/handwired/kbod/readme.md
+++ b/keyboards/handwired/kbod/readme.md
@@ -16,4 +16,6 @@ Something along this line:
 
 ```
 avrdude -p m32u4 -c avr109 -P <COM PORT> -C <avrdude conf file> -e -u flash:w:handwired_kbod_default.hex
-```
\ No newline at end of file
+```
+
+[More info](https://github.com/fudanchii/keyboard_of_disapproval)
\ No newline at end of file

From 15ddaa7f1929aa301a325b03c57e267524d56ea8 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Sat, 11 Mar 2017 20:52:52 +0700
Subject: [PATCH 148/163] Fix layer stuck, and add numpad support

---
 keyboards/handwired/kbod/config.h             |  5 +++++
 .../handwired/kbod/keymaps/default/keymap.c   | 20 +++++++++----------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/keyboards/handwired/kbod/config.h b/keyboards/handwired/kbod/config.h
index e73b7d086..f3d0c8bf2 100644
--- a/keyboards/handwired/kbod/config.h
+++ b/keyboards/handwired/kbod/config.h
@@ -159,4 +159,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
+#define PREVENT_STUCK_MODIFIERS
+
+#undef TAPPING_TOGGLE
+#define TAPPING_TOGGLE 2
+
 #endif
diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index a6c09dd53..65c5f552c 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
       KC_TAB,  KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,
       KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOT, KC_ENTER,
       KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSFT,
-      MO(1), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL 
+      TT(1), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL 
   ),
   KEYMAP( /* Cursor layer */
       KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
@@ -39,19 +39,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
       _____,  _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_END, KC_UP,
       _____,  _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT
   ),
-  KEYMAP( /* Multimedia layer */
-      TO(0),  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
+  KEYMAP( /* Keypad layer */
+      TO(0),  _____, _____, _____, _____, _____, _____, KC_P7, KC_P8, KC_P9, _____, KC_PMNS, KC_PPLS, _____,
+      _____,  _____, _____, _____, _____, _____, _____, KC_P4, KC_P5, KC_P6, _____, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, KC_P1, KC_P2, KC_P3, _____, _____, _____,
+      _____,  _____, _____, _____, _____, _____, _____, KC_P0, _____, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
       _____,  _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
   ),
   KEYMAP( /* Multimedia layer */
       TO(0),  _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, KC_MS_BTN2,
-      _____,  _____, _____, _____, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
+      _____,  _____, KC_WAKE, _____, _____, _____, _____, _____, _____, _____, KC_MSTP, KC_MPRV, KC_MNXT, _____,
+      _____,  _____, KC_SLEP, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
+      _____,  _____, KC_PWR, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, KC_MS_BTN2,
+      _____,  _____, _____, KC_MPLY, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
   ),
 };
 

From 649d08742a7aec4001193bb5a7a35ca7935a9753 Mon Sep 17 00:00:00 2001
From: Nurahmadie <nurahmadie@gmail.com>
Date: Tue, 28 Mar 2017 16:17:10 +0700
Subject: [PATCH 149/163] Use tap-toggle to move between layers.

- Add PDOT key
---
 keyboards/handwired/kbod/keymaps/default/keymap.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 65c5f552c..1386b742f 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -34,16 +34,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   ),
   KEYMAP( /* Cursor layer */
       KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
-      MO(3),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
-      MO(2),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, _____,
+      TT(3),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
+      TT(2),  _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, _____,
       _____,  _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_END, KC_UP,
       _____,  _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT
   ),
   KEYMAP( /* Keypad layer */
-      TO(0),  _____, _____, _____, _____, _____, _____, KC_P7, KC_P8, KC_P9, _____, KC_PMNS, KC_PPLS, _____,
+      TO(0),  KC_1,  KC_2,  KC_3,  F(1),  KC_5,  KC_6,  KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_BSPC,
       _____,  _____, _____, _____, _____, _____, _____, KC_P4, KC_P5, KC_P6, _____, _____, _____, _____,
       _____,  _____, _____, _____, _____, _____, _____, KC_P1, KC_P2, KC_P3, _____, _____, _____,
-      _____,  _____, _____, _____, _____, _____, _____, KC_P0, _____, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
+      _____,  _____, _____, _____, _____, _____, _____, KC_P0, KC_PDOT, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
       _____,  _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
   ),
   KEYMAP( /* Multimedia layer */

From 9e72b7e7e97f9ae92c7eb1de66aa03cad047baf6 Mon Sep 17 00:00:00 2001
From: dbroqua <dbroqua@mousur.org>
Date: Sun, 2 Apr 2017 23:25:26 +0200
Subject: [PATCH 150/163] - Added MX HHKB like for gh60 with 7u space bar

---
 keyboards/gh60/keymaps/dbroqua_7U/Makefile | 111 +++++++++++++++++++++
 keyboards/gh60/keymaps/dbroqua_7U/keymap.c |  88 ++++++++++++++++
 2 files changed, 199 insertions(+)
 create mode 100644 keyboards/gh60/keymaps/dbroqua_7U/Makefile
 create mode 100644 keyboards/gh60/keymaps/dbroqua_7U/keymap.c

diff --git a/keyboards/gh60/keymaps/dbroqua_7U/Makefile b/keyboards/gh60/keymaps/dbroqua_7U/Makefile
new file mode 100644
index 000000000..da0f07d7d
--- /dev/null
+++ b/keyboards/gh60/keymaps/dbroqua_7U/Makefile
@@ -0,0 +1,111 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device.
+#                Please customize your programmer settings(PROGRAM_CMD)
+#
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+#               (must have teensy_loader_cli installed).
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+#            have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+#             have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+#               (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+#                (must have Atmel FLIP installed).
+#
+# make debug = Start either simulavr or avarice as specified for debugging, 
+#              with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+#                   bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+# 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
+#   comment out to disable the options.
+#
+BOOTMAGIC_ENABLE ?= yes		# Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes		# Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes		# Audio control and System control(+450)
+# CONSOLE_ENABLE ?= yes		# Console for debug(+400)
+# COMMAND_ENABLE ?= yes		# Commands for debug and configuration
+KEYBOARD_LOCK_ENABLE ?= yes	# Allow locking of keyboard via magic key
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE ?= yes	    # 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
+# MIDI_ENABLE ?= YES		# MIDI controls
+# UNICODE_ENABLE ?= YES		# Unicode
+# BLUETOOTH_ENABLE ?= yes	# Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE ?= no    # Enable RGB Underglow
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/gh60/keymaps/dbroqua_7U/keymap.c b/keyboards/gh60/keymaps/dbroqua_7U/keymap.c
new file mode 100644
index 000000000..bebfe5af5
--- /dev/null
+++ b/keyboards/gh60/keymaps/dbroqua_7U/keymap.c
@@ -0,0 +1,88 @@
+#include "gh60.h"
+#include "action_layer.h"
+
+#define _DEFAULT 0
+#define _FN 1
+
+int esc_led = 0;
+
+// Fillers to make layering more clear
+#define ______ KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Qwerty gui/alt/space/alt/gui
+ * ,-----------------------------------------------------------------------------------------.
+ * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  |
+ * |-----------------------------------------------------------------------------------------+
+ * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  |
+ * |-----------------------------------------------------------------------------------------+
+ * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    |
+ * |-----------------------------------------------------------------------------------------+
+ * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | RShift    | FN  |
+ * |-----------------------------------------------------------------------------------------+
+ *         |LGUI | LAlt  |               Space                | RAlt   |RGUI |
+ *         `-----------------------------------------------------------------'
+ */
+  [_DEFAULT] = KEYMAP_HHKB( /* Basic QWERTY */
+      KC_ESC,  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_GRV, \
+      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_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, MO(_FN), \
+      ______,  KC_LGUI, KC_LALT,             KC_SPC,             ______,  KC_RALT, KC_RGUI, ______ \
+      ),
+
+/* FN Layer
+ * ,-----------------------------------------------------------------------------------------.
+ * | Led | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | Ins | Del |
+ * |-----------------------------------------------------------------------------------------+
+ * |  CAPS  |     |     |     |     |     |     |     | Psc | Slck| Paus| Up  |     |        |
+ * |-----------------------------------------------------------------------------------------+
+ * |         | Vol-| Vol+| Mute|     |     | *   | /   | Home| PgUp| Left|Right|             |
+ * |-----------------------------------------------------------------------------------------+
+ * |           | Prev| Play| Next|     |     | +   | -   | End  |PgDn| Down|           |     |
+ * |-----------------------------------------------------------------------------------------+
+ *         |       |       |                                 | Stop  |       |
+ *         `-----------------------------------------------------------------'
+ */
+  [_FN] = KEYMAP_HHKB( /* Layer 1 */
+      F(0),   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_CAPS, ______,  ______,  ______,  ______, ______, ______,  ______,  KC_PSCR, KC_SLCK, KC_PAUS, KC_UP,  ______, ______,  \
+      ______,  KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,______,   \
+      ______,  KC_MPRV, KC_MPLY, KC_MNXT, ______, ______, KC_PPLS, KC_PMNS, KC_END,  KC_PGDN, KC_DOWN, ______, ______,  \
+      ______,  ______,  ______,                   ______,                   ______,  KC_MSTP, ______,  ______ \
+      )
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+  return MACRO_NONE;
+};
+
+enum function_id {
+    LED_TOGGLE
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [0]  = ACTION_FUNCTION(LED_TOGGLE)
+};
+
+void esc_led_toggle(void) {
+    if (esc_led == 0){
+        esc_led = 1;
+        gh60_esc_led_on();
+    } else {
+        esc_led = 0;
+        gh60_esc_led_off();
+    }
+}
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  switch (id) {
+    case LED_TOGGLE:
+      if (record->event.pressed) {
+        esc_led_toggle();
+      }
+      break;
+  }
+}
\ No newline at end of file

From 787304647961f4cb654188ddb88c22dd7991ab87 Mon Sep 17 00:00:00 2001
From: Xyverz <xyverz@gmail.com>
Date: Sun, 2 Apr 2017 14:48:33 -0700
Subject: [PATCH 151/163] removed my handwired boards to a new branch.

---
 keyboards/handwired/atreus50/Makefile         |   3 -
 keyboards/handwired/atreus50/atreus50.c       |   1 -
 keyboards/handwired/atreus50/atreus50.h       |  18 --
 keyboards/handwired/atreus50/config.h         |  58 -------
 .../atreus50/keymaps/default/Makefile         |  21 ---
 .../atreus50/keymaps/default/keymap.c         | 128 --------------
 keyboards/handwired/atreus50/rules.mk         |  56 ------
 keyboards/handwired/xk66/Makefile             |   3 -
 keyboards/handwired/xk66/config.h             | 162 ------------------
 .../handwired/xk66/keymaps/default/Makefile   |  21 ---
 .../handwired/xk66/keymaps/default/config.h   |   8 -
 .../handwired/xk66/keymaps/default/keymap.c   |  90 ----------
 .../handwired/xk66/keymaps/default/readme.md  |   1 -
 keyboards/handwired/xk66/readme.md            |  28 ---
 keyboards/handwired/xk66/rules.mk             |  67 --------
 keyboards/handwired/xk66/xk66.c               |   8 -
 keyboards/handwired/xk66/xk66.h               |  25 ---
 17 files changed, 698 deletions(-)
 delete mode 100644 keyboards/handwired/atreus50/Makefile
 delete mode 100644 keyboards/handwired/atreus50/atreus50.c
 delete mode 100644 keyboards/handwired/atreus50/atreus50.h
 delete mode 100644 keyboards/handwired/atreus50/config.h
 delete mode 100644 keyboards/handwired/atreus50/keymaps/default/Makefile
 delete mode 100644 keyboards/handwired/atreus50/keymaps/default/keymap.c
 delete mode 100644 keyboards/handwired/atreus50/rules.mk
 delete mode 100644 keyboards/handwired/xk66/Makefile
 delete mode 100644 keyboards/handwired/xk66/config.h
 delete mode 100644 keyboards/handwired/xk66/keymaps/default/Makefile
 delete mode 100644 keyboards/handwired/xk66/keymaps/default/config.h
 delete mode 100644 keyboards/handwired/xk66/keymaps/default/keymap.c
 delete mode 100644 keyboards/handwired/xk66/keymaps/default/readme.md
 delete mode 100644 keyboards/handwired/xk66/readme.md
 delete mode 100644 keyboards/handwired/xk66/rules.mk
 delete mode 100644 keyboards/handwired/xk66/xk66.c
 delete mode 100644 keyboards/handwired/xk66/xk66.h

diff --git a/keyboards/handwired/atreus50/Makefile b/keyboards/handwired/atreus50/Makefile
deleted file mode 100644
index bd09e5885..000000000
--- a/keyboards/handwired/atreus50/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef MAKEFILE_INCLUDED
-	include ../../../Makefile
-endif
diff --git a/keyboards/handwired/atreus50/atreus50.c b/keyboards/handwired/atreus50/atreus50.c
deleted file mode 100644
index dd0dbdaac..000000000
--- a/keyboards/handwired/atreus50/atreus50.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "atreus50.h"
diff --git a/keyboards/handwired/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h
deleted file mode 100644
index 5d27109cc..000000000
--- a/keyboards/handwired/atreus50/atreus50.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef ATREUS50_H
-#define ATREUS50_H
-
-#include "quantum.h"
-
-#define KEYMAP( \
-	K000, K001, K002, K003, K004, K005,       K007, K008, K009, K010, K011, K012, \
-	K100, K101, K102, K103, K104, K105,       K107, K108, K109, K110, K111, K112, \
-	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
-	K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312  \
-) { \
-	{ K000,  K001,  K002,  K003,  K004,  K005,  KC_NO, K007,  K008,  K009,  K010,  K011,  K012 }, \
-	{ K100,  K101,  K102,  K103,  K104,  K105,  KC_NO, K107,  K108,  K109,  K110,  K111,  K112 }, \
-	{ K200,  K201,  K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212 }, \
-	{ K300,  K301,  K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312 }  \
-}
-
-#endif
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/config.h b/keyboards/handwired/atreus50/config.h
deleted file mode 100644
index 0248032a0..000000000
--- a/keyboards/handwired/atreus50/config.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#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    qmkbuilder
-#define PRODUCT         Atreus50
-#define DESCRIPTION     Keyboard
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 13
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
-#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* number of backlight levels */
-
-#ifdef BACKLIGHT_PIN
-#define BACKLIGHT_LEVELS 3
-#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
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* prevent stuck modifiers */
-#define PREVENT_STUCK_MODIFIERS
-
-
-#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 0
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#endif
-
-#endif
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/keymaps/default/Makefile b/keyboards/handwired/atreus50/keymaps/default/Makefile
deleted file mode 100644
index 43fee2668..000000000
--- a/keyboards/handwired/atreus50/keymaps/default/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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 = yes      # 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/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
deleted file mode 100644
index b3dc17cb1..000000000
--- a/keyboards/handwired/atreus50/keymaps/default/keymap.c
+++ /dev/null
@@ -1,128 +0,0 @@
-// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
-// this is the style you want to emulate.
-
-#include "atreus50.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 _DVORAK 0
-#define _QWERTY 1
-#define _COLEMAK 2
-#define _LOWER 3
-#define _RAISE 4
-#define _ADJUST 16
-
-enum planck_keycodes {
-  DVORAK = SAFE_RANGE,
-  QWERTY,
-  COLEMAK,
-  LOWER,
-  RAISE,
-  BACKLIT
-};
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [_DVORAK] = { /* dvorak */
-        { KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    _______, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
-        { KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    _______, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS },
-        { KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_ENT,  KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
-        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_LGUI, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
-    },
-    
-    [_QWERTY] = { /* qwerty */
-        { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    _______, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL  },
-        { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    _______, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT },
-        { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_ENT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
-        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_LGUI, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL }
-    },
-    
-    [_COLEMAK] = { /* colemak */
-        { KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    _______, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL  },
-        { 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_ENT,  KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
-        { KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER,   KC_BSPC, KC_LGUI, KC_SPC,  RAISE,   KC_UP,   KC_DOWN, KC_RGUI, KC_RCTL}
-    },
-    
-    [_LOWER] = {
-        { KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______ },
-        { KC_CAPS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
-        { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  _______, KC_F12,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______ },
-        { _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  _______, KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ }
-    },
-    [_RAISE] = {
-        { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______ },
-        { KC_CAPS, 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_MPRV, KC_MPLY, KC_MNXT, _______, _______ },
-        { _______, _______, KC_HOME, KC_END,  _______, KC_DEL,  _______, KC_INS,  _______, KC_PGUP, KC_PGDN, _______, _______ }
-    },
-    [_ADJUST] = {
-        { KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12  },
-        { _______, RESET,   _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______ },
-        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
-        { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
-    },
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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) {
-            persistant_default_layer_set(1UL<<_QWERTY);
-          }
-          return false;
-          break;
-        case COLEMAK:
-          if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_COLEMAK);
-          }
-          return false;
-          break;
-        case DVORAK:
-          if (record->event.pressed) {
-            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;
-      }
-    return true;
-};
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk
deleted file mode 100644
index 1f8e943be..000000000
--- a/keyboards/handwired/atreus50/rules.mk
+++ /dev/null
@@ -1,56 +0,0 @@
-# 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
-
-
-# Boot Section Size in *bytes*
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
-# Build Options
-#   comment out to disable the options.
-#
-BOOTMAGIC_ENABLE ?= yes	# Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes	# Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes	# Audio control and System control(+450)
-CONSOLE_ENABLE ?= 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 ?= no  # Enable keyboard backlight functionality
-AUDIO_ENABLE ?= no
-RGBLIGHT_ENABLE ?= no
\ No newline at end of file
diff --git a/keyboards/handwired/xk66/Makefile b/keyboards/handwired/xk66/Makefile
deleted file mode 100644
index bd09e5885..000000000
--- a/keyboards/handwired/xk66/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef MAKEFILE_INCLUDED
-	include ../../../Makefile
-endif
diff --git a/keyboards/handwired/xk66/config.h b/keyboards/handwired/xk66/config.h
deleted file mode 100644
index 02ff2a6bf..000000000
--- a/keyboards/handwired/xk66/config.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-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    Xyverz
-#define PRODUCT         XK-66
-#define DESCRIPTION     A hand-wired 66-key keyboard by Xyverz
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 14
-
-/*
- * 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 { B5, B4, D7, D6, D4 }
-#define MATRIX_COL_PINS { B6, F7, F6, F5, F4, F1, F0, D1, D0, B7, B3, B2, B1, B0 }
-#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/handwired/xk66/keymaps/default/Makefile b/keyboards/handwired/xk66/keymaps/default/Makefile
deleted file mode 100644
index f4671a9d1..000000000
--- a/keyboards/handwired/xk66/keymaps/default/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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/handwired/xk66/keymaps/default/config.h b/keyboards/handwired/xk66/keymaps/default/config.h
deleted file mode 100644
index df06a2620..000000000
--- a/keyboards/handwired/xk66/keymaps/default/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#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/handwired/xk66/keymaps/default/keymap.c b/keyboards/handwired/xk66/keymaps/default/keymap.c
deleted file mode 100644
index 61b3bd97f..000000000
--- a/keyboards/handwired/xk66/keymaps/default/keymap.c
+++ /dev/null
@@ -1,90 +0,0 @@
-#include "xk66.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 _DV 0
-#define _QW 1
-#define _CM 2
-#define _FL 3
-
-// Macro name shortcuts
-#define QWERTY M(_QW)
-#define DVORAK M(_DV)
-#define COLEMAK M(_CM)
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_DV] = KEYMAP ( /* Dvorak */
-        KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_BSPC, \
-        KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,  KC_BSLS, \
-        MO(_FL), KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,          KC_ENT,  \
-        KC_LSFT,          KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,          \
-        KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_BSPC, KC_SPC,           KC_UP,   KC_DOWN, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)
-       ),
-
-[_QW] = KEYMAP ( /* Qwerty */
-        KC_ESC,  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_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, \
-        MO(_FL), 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_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_BSPC, KC_SPC,           KC_UP,   KC_DOWN, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)
-       ),
-
-[_CM] = KEYMAP ( /* Colemak */
-        KC_ESC,  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_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \
-        MO(_FL), KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    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_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_BSPC, KC_SPC,           KC_UP,   KC_DOWN, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL)
-       ),
-
-[_FL] = KEYMAP ( /* Function Layer 1 */
-        KC_GRV,  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_MPRV, KC_MPLY, KC_MNXT, _______, _______, QWERTY,  DVORAK,  COLEMAK, _______, _______,          _______, \
-        KC_CAPS,          _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______,          \
-        RESET,   _______, _______, KC_HOME, KC_END,  KC_DEL,  KC_INS,           KC_PGUP, KC_PGDN, _______, _______, _______, _______
-       ),
-
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-void persistant_default_layer_set(uint16_t default_layer) {
-  eeconfig_update_default_layer(default_layer);
-  default_layer_set(default_layer);
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case _DV:
-          if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_DV);
-          }
-          break;
-        case _QW:
-          if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_QW);
-          }
-          break;
-        case _CM:
-          if (record->event.pressed) {
-            persistant_default_layer_set(1UL<<_CM);
-          }
-          break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboards/handwired/xk66/keymaps/default/readme.md b/keyboards/handwired/xk66/keymaps/default/readme.md
deleted file mode 100644
index 6940fdd7c..000000000
--- a/keyboards/handwired/xk66/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for handwired/xk66
\ No newline at end of file
diff --git a/keyboards/handwired/xk66/readme.md b/keyboards/handwired/xk66/readme.md
deleted file mode 100644
index 2aac6bde3..000000000
--- a/keyboards/handwired/xk66/readme.md
+++ /dev/null
@@ -1,28 +0,0 @@
-handwired/xk66 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/handwired/xk66 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/handwired/xk66/rules.mk b/keyboards/handwired/xk66/rules.mk
deleted file mode 100644
index 707a5385b..000000000
--- a/keyboards/handwired/xk66/rules.mk
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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 ?= yes      # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes        # Console for debug(+400)
-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
diff --git a/keyboards/handwired/xk66/xk66.c b/keyboards/handwired/xk66/xk66.c
deleted file mode 100644
index 3c3e31949..000000000
--- a/keyboards/handwired/xk66/xk66.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "xk66.h"
-
-void matrix_init_kb(void) {
-	// put your keyboard start-up code here
-	// runs once when the firmware starts up
-
-	matrix_init_user();
-}
diff --git a/keyboards/handwired/xk66/xk66.h b/keyboards/handwired/xk66/xk66.h
deleted file mode 100644
index 38fe129e4..000000000
--- a/keyboards/handwired/xk66/xk66.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef XK66_H
-#define XK66_H
-
-#include "quantum.h"
-#include "led.h"
-
-
-// This a shortcut to help you visually see your 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, K06, K07, K08, K09, K0a, K0b, K0c, K0d, \
-    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, K1d, \
-    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b,      K2d, \
-    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c,      \
-    K40, K41, K42, K43, K44, K45, K46,      K48, K49, K4a, K4b, K4c, K4d  \
-) { \
-    { K00, K01,   K02, K03, K04, K05, K06, K07,   K08, K09, K0a, K0b, K0c,   K0d   }, \
-    { K10, K11,   K12, K13, K14, K15, K16, K17,   K18, K19, K1a, K1b, K1c,   K1d   }, \
-    { K20, K21,   K22, K23, K24, K25, K26, K27,   K28, K29, K2a, K2b, KC_NO, K2d   }, \
-    { K30, KC_NO, K32, K33, K34, K35, K36, K37,   K38, K39, K3a, K3b, K3c,   KC_NO }, \
-    { K40, K41,   K42, K43, K44, K45, K46, KC_NO, K48, K49, K4a, K4b, K4c,   K4d   } \
-}
-
-#endif
\ No newline at end of file

From 570b4605b2bdc7e2c9b83ab4991d4582148efb12 Mon Sep 17 00:00:00 2001
From: Alexander Schaefer <iamschaefer@users.noreply.github.com>
Date: Sun, 2 Apr 2017 18:44:15 -0600
Subject: [PATCH 152/163] Update readme.md

There's no readme specifically for the Ergodox EZ now, so link to the Ergodox readme.
---
 readme.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/readme.md b/readme.md
index b2dfc5f75..f7bf14b6a 100644
--- a/readme.md
+++ b/readme.md
@@ -32,7 +32,7 @@ The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/j
 This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest:
 
 * [**The Wiki**](https://github.com/qmk/qmk_firmware/wiki) - the entirety of the readme has been moved here
-* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on.
+* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox, it's [here](keyboards/ergodox/); for the Planck, it's [here](keyboards/planck/) and so on.
 * The list of possible keycodes you can use in your keymap is actually spread out in a few different places:
   * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes.
   * [quantum/quantum_keycodes.h](quantum/quantum_keycodes.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `quantum_keycodes.h` is where they're actually defined.

From 344ebbac43ef510b29cdcdff2688186ee3ffead7 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 11:32:54 -0400
Subject: [PATCH 153/163] Revert removal of avrdude make option

---
 keyboards/lets_split/rules.mk     | 14 +++++++++++++-
 keyboards/lets_split/split_util.c |  2 +-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index ff159e0f0..79860ea35 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -1,7 +1,7 @@
 SRC += matrix.c \
 	   i2c.c \
 	   split_util.c \
-	   serial.c\
+	   serial.c \
 	   ssd1306.c
 
 # MCU name
@@ -74,3 +74,15 @@ USE_I2C ?= yes
 SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
+
+avrdude: build
+	ls /dev/tty* > /tmp/1; \
+	echo "Reset your Pro Micro now"; \
+	while [[ -z $$USB ]]; do \
+	  sleep 1; \
+	  ls /dev/tty* > /tmp/2; \
+	  USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
+	done; \
+	avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
+
+.PHONY: avrdude
diff --git a/keyboards/lets_split/split_util.c b/keyboards/lets_split/split_util.c
index 46586fbc0..39639c3b4 100644
--- a/keyboards/lets_split/split_util.c
+++ b/keyboards/lets_split/split_util.c
@@ -21,7 +21,7 @@ static void setup_handedness(void) {
   #ifdef EE_HANDS
     isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
   #else
-    // I2c_MASTER_RIGHT ish deprecate use MASTER_RIGHT instead since this works for both serial and i2c:
+    // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
     #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
       isLeftHand = !has_usb();
     #else

From 48f4c5997bd0e041379f592f3e1e0c306e5a5e4d Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 12:06:28 -0400
Subject: [PATCH 154/163] Move defines for RGB to after the config.h include

---
 keyboards/lets_split/keymaps/hexwire/config.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index 9c8c6d7f4..e5a779f63 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -20,13 +20,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define TAPPING_TERM 150
 
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 8
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-
 #ifdef SUBPROJECT_rev1
     #include "../../rev1/config.h"
     #define COMPACT_KEYMAP( \
@@ -68,3 +61,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifdef SUBPROJECT_rev2fliphalf
 	#include "../../rev2fliphalf/config.h"
 #endif
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 8
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8

From de52bd5d8970a9b195d85c5367d4ecd125458976 Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Mon, 3 Apr 2017 12:42:58 -0400
Subject: [PATCH 155/163] quick fix for space cadet shift

---
 quantum/quantum.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/quantum/quantum.c b/quantum/quantum.c
index 62d9ef923..4f4cee4e9 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -135,7 +135,7 @@ void reset_keyboard(void) {
 #endif
 
 static bool shift_interrupted[2] = {0, 0};
-static uint16_t scs_timer = 0;
+static uint16_t scs_timer[2] = {0, 0};
 
 bool process_record_quantum(keyrecord_t *record) {
 
@@ -395,7 +395,7 @@ bool process_record_quantum(keyrecord_t *record) {
     case KC_LSPO: {
       if (record->event.pressed) {
         shift_interrupted[0] = false;
-        scs_timer = timer_read ();
+        scs_timer[0] = timer_read ();
         register_mods(MOD_BIT(KC_LSFT));
       }
       else {
@@ -405,7 +405,7 @@ bool process_record_quantum(keyrecord_t *record) {
             shift_interrupted[1] = true;
           }
         #endif
-        if (!shift_interrupted[0] && timer_elapsed(scs_timer) < TAPPING_TERM) {
+        if (!shift_interrupted[0] && timer_elapsed(scs_timer[0]) < TAPPING_TERM) {
           register_code(LSPO_KEY);
           unregister_code(LSPO_KEY);
         }
@@ -418,7 +418,7 @@ bool process_record_quantum(keyrecord_t *record) {
     case KC_RSPC: {
       if (record->event.pressed) {
         shift_interrupted[1] = false;
-        scs_timer = timer_read ();
+        scs_timer[1] = timer_read ();
         register_mods(MOD_BIT(KC_RSFT));
       }
       else {
@@ -428,7 +428,7 @@ bool process_record_quantum(keyrecord_t *record) {
             shift_interrupted[1] = true;
           }
         #endif
-        if (!shift_interrupted[1] && timer_elapsed(scs_timer) < TAPPING_TERM) {
+        if (!shift_interrupted[1] && timer_elapsed(scs_timer[1]) < TAPPING_TERM) {
           register_code(RSPC_KEY);
           unregister_code(RSPC_KEY);
         }

From d0cfaba6d2f4ddf6aee7f05408971a0d4712bd60 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 12:15:14 -0400
Subject: [PATCH 156/163] Revise KEYMAP macro to make left and right halves
 more clear

---
 keyboards/lets_split/rev1/rev1.h | 24 +++++-----
 keyboards/lets_split/rev2/rev2.h | 80 ++++++++++++++++----------------
 2 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h
index 4667c9fb0..6bf9f0f03 100644
--- a/keyboards/lets_split/rev1/rev1.h
+++ b/keyboards/lets_split/rev1/rev1.h
@@ -9,20 +9,20 @@
 //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 \
+	L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+	L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+	L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+	L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
 	) \
 	{ \
-		{ 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 } \
+		{ L00, L01, L02, L03, L04, L05 }, \
+		{ L10, L11, L12, L13, L14, L15 }, \
+		{ L20, L21, L22, L23, L24, L25 }, \
+		{ L30, L31, L32, L33, L34, L35 }, \
+		{ R00, R01, R02, R03, R04, R05 }, \
+		{ R10, R11, R12, R13, R14, R15 }, \
+		{ R20, R21, R22, R23, R24, R25 }, \
+		{ R30, R31, R32, R33, R34, R35 } \
 	}
 
 #endif
\ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
index 054731366..0603827e0 100644
--- a/keyboards/lets_split/rev2/rev2.h
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -10,62 +10,62 @@
 #ifdef USE_I2C
 #include <stddef.h>
 #ifdef __AVR__
-#include <avr/io.h>
-#include <avr/interrupt.h>
+	#include <avr/io.h>
+	#include <avr/interrupt.h>
 #endif
 #ifdef SSD1306OLED
-extern bool iota_gfx_init(void);
-extern void iota_gfx_task(void);
-extern bool iota_gfx_off(void);
-extern bool iota_gfx_on(void);
-extern void iota_gfx_flush(void);
-extern void iota_gfx_write_char(uint8_t c);
-extern void iota_gfx_write(const char *data);
-extern void iota_gfx_write_P(const char *data);
-extern void iota_gfx_clear_screen(void);
+	extern bool iota_gfx_init(void);
+	extern void iota_gfx_task(void);
+	extern bool iota_gfx_off(void);
+	extern bool iota_gfx_on(void);
+	extern void iota_gfx_flush(void);
+	extern void iota_gfx_write_char(uint8_t c);
+	extern void iota_gfx_write(const char *data);
+	extern void iota_gfx_write_P(const char *data);
+	extern void iota_gfx_clear_screen(void);
 #endif
 #endif
 
 //void promicro_bootloader_jmp(bool program);
 
 #ifndef FLIP_HALF
-//Standard Keymap
+// Standard Keymap
+// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
 #define KEYMAP( \
-	k40, k41, k42, k43, k44, k45, k05, k04, k03, k02, k01, k00, \
-	k50, k51, k52, k53, k54, k55, k15, k14, k13, k12, k11, k10, \
-	k60, k61, k62, k63, k64, k65, k25, k24, k23, k22, k21, k20, \
-	k70, k71, k72, k73, k74, k75, k35, k34, k33, k32, k31, k30 \
+	L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+	L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+	L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+	L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
 	) \
 	{ \
-		{ k45, k44, k43, k42, k41, k40 }, \
-		{ k55, k54, k53, k52, k51, k50 }, \
-		{ k65, k64, k63, k62, k61, k60 }, \
-		{ 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 } \
+		{ L00, L01, L02, L03, L04, L05 }, \
+		{ L10, L11, L12, L13, L14, L15 }, \
+		{ L20, L21, L22, L23, L24, L25 }, \
+		{ L30, L31, L32, L33, L34, L35 }, \
+		{ R05, R04, R03, R02, R01, R00 }, \
+		{ R15, R14, R13, R12, R11, R10 }, \
+		{ R25, R24, R23, R22, R21, R20 }, \
+		{ R35, R34, R33, R32, R31, R30 } \
 	}
-
 #else
-// Keymap with one side flipped
+// Keymap with right side flipped
+// (TRRS jack on both halves are to the right)
 #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 \
+	L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+	L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+	L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+	L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
 	) \
 	{ \
-		{ k00, k01, k02, k03, k04, k05 }, \
-		{ k10, k11, k12, k13, k14, k15 }, \
-		{ k20, k21, k22, k23, k24, k25 }, \
-		{ k30, k31, k32, k33, k34, k35 }, \
-		{ k45, k44, k43, k42, k41, k40 }, \
-		{ k55, k54, k53, k52, k51, k50 }, \
-		{ k65, k64, k63, k62, k61, k60 }, \
-		{ k75, k74, k73, k72, k71, k70 } \
+		{ L00, L01, L02, L03, L04, L05 }, \
+		{ L10, L11, L12, L13, L14, L15 }, \
+		{ L20, L21, L22, L23, L24, L25 }, \
+		{ L30, L31, L32, L33, L34, L35 }, \
+		{ R00, R01, R02, R03, R04, R05 }, \
+		{ R10, R11, R12, R13, R14, R15 }, \
+		{ R20, R21, R22, R23, R24, R25 }, \
+		{ R30, R31, R32, R33, R34, R35 } \
 	}
 #endif
 
-
-#endif
\ No newline at end of file
+#endif

From 563961328be1605a7f3942f042572a0160ac2959 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 12:31:38 -0400
Subject: [PATCH 157/163] Rename COMPACT_KEYMAP to KC_KEYMAP and move to
 lets_split.h

---
 keyboards/lets_split/keymaps/hexwire/config.h | 36 +------------------
 keyboards/lets_split/keymaps/hexwire/keymap.c | 12 +++----
 keyboards/lets_split/lets_split.h             | 14 ++++++++
 3 files changed, 21 insertions(+), 41 deletions(-)

diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index e5a779f63..27c24fe4b 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -19,47 +19,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define USE_SERIAL
 
 #define TAPPING_TERM 150
+#define FLIP_HALF
 
 #ifdef SUBPROJECT_rev1
     #include "../../rev1/config.h"
-    #define COMPACT_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 \
-    ) \
-    { \
-      { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
-      { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
-      { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
-      { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
-      { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
-      { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
-      { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
-      { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
-    }
 #endif
 #ifdef SUBPROJECT_rev2
     #include "../../rev2/config.h"
-    #define COMPACT_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 \
-      ) \
-      { \
-        { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
-        { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
-        { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
-        { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
-        { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
-        { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
-        { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
-        { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
-      }
-#endif
-#ifdef SUBPROJECT_rev2fliphalf
-	#include "../../rev2fliphalf/config.h"
 #endif
 
 #undef RGBLED_NUM
diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c
index f8370490d..fcf3cde75 100644
--- a/keyboards/lets_split/keymaps/hexwire/keymap.c
+++ b/keyboards/lets_split/keymaps/hexwire/keymap.c
@@ -39,7 +39,7 @@ enum custom_keycodes {
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-  [_QWERTY] = COMPACT_KEYMAP(
+  [_QWERTY] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      TAB , Q  , W  , E  , R  , T  ,      Y  , U  , I  , O  , P  ,MINS,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_COLEMAK] = COMPACT_KEYMAP(
+  [_COLEMAK] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      TAB , Q  , W  , F  , P  , G  ,      J  , L  , U  , Y  ,SCLN,MINS,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_DVORAK] = COMPACT_KEYMAP(
+  [_DVORAK] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      TAB ,QUOT,COMM,DOT , P  , Y  ,      F  , G  , C  , R  , L  ,MINS,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_LOWER] = COMPACT_KEYMAP(
+  [_LOWER] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
          , 1  , 2  , 3  , 4  , 5  ,      6  , 7  , 8  , 9  , 0  ,    ,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_RAISE] = COMPACT_KEYMAP(
+  [_RAISE] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
          ,EXLM, AT ,HASH,DLR ,PERC,     CIRC,AMPR,ASTR,LPRN,RPRN,    ,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_FN3] = COMPACT_KEYMAP(
+  [_FN3] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      F12 , F1 , F2 , F3 , F4 , F5 ,      F6 , F7 , F8 , F9 ,F10 ,F11 ,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h
index 0de308c7a..1892bf2cb 100644
--- a/keyboards/lets_split/lets_split.h
+++ b/keyboards/lets_split/lets_split.h
@@ -11,6 +11,20 @@
 	#include "rev2fliphalf.h"
 #endif
 
+// Used to create a keymap using only KC_ prefixed keys
+#define KC_KEYMAP( \
+    L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+    L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+    L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+    L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
+    ) \
+    KEYMAP( \
+        KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
+        KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
+        KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
+        KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
+    )
+
 #include "quantum.h"
 
 #endif
\ No newline at end of file

From d90ac762958eb77222a5277d64474f2aa3349176 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 12:51:31 -0400
Subject: [PATCH 158/163] Move defines for RGB to after the config.h include

---
 .../lets_split/keymaps/OLED_sample/config.h     | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/keyboards/lets_split/keymaps/OLED_sample/config.h b/keyboards/lets_split/keymaps/OLED_sample/config.h
index 353ea368c..8389ba111 100644
--- a/keyboards/lets_split/keymaps/OLED_sample/config.h
+++ b/keyboards/lets_split/keymaps/OLED_sample/config.h
@@ -27,19 +27,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define TAPPING_FORCE_HOLD
 #define TAPPING_TERM 100
 
+#ifdef SUBPROJECT_rev1
+    #include "../../rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "../../rev2/config.h"
+#endif
+
 #undef RGBLED_NUM
 #define RGBLIGHT_ANIMATIONS
 #define RGBLED_NUM 6
 #define RGBLIGHT_HUE_STEP 10
 #define RGBLIGHT_SAT_STEP 17
 #define RGBLIGHT_VAL_STEP 17
-
-
-
-
-#ifdef SUBPROJECT_rev1
-    #include "../../rev1/config.h"
-#endif
-#ifdef SUBPROJECT_rev2
-    #include "../../rev2/config.h"
-#endif
\ No newline at end of file

From e3aeab356afd52299bf6cf05b5c99995ce167275 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 13:04:34 -0400
Subject: [PATCH 159/163] Move SSD1306 function declarations to header file

---
 .../lets_split/keymaps/OLED_sample/keymap.c     |  3 +++
 keyboards/lets_split/rev2/rev2.c                |  1 -
 keyboards/lets_split/rev2/rev2.h                | 11 -----------
 keyboards/lets_split/ssd1306.c                  |  3 +--
 keyboards/lets_split/ssd1306.h                  | 17 +++++++++++++++++
 5 files changed, 21 insertions(+), 14 deletions(-)
 create mode 100644 keyboards/lets_split/ssd1306.h

diff --git a/keyboards/lets_split/keymaps/OLED_sample/keymap.c b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
index 072b825ab..493ebcd3f 100644
--- a/keyboards/lets_split/keymaps/OLED_sample/keymap.c
+++ b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
@@ -6,6 +6,9 @@
 #ifdef AUDIO_ENABLE
   #include "audio.h"
 #endif
+#ifdef SSD1306OLED
+  #include "ssd1306.h"
+#endif
 
 extern keymap_config_t keymap_config;
 
diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c
index 8bfa171d0..20a4c6be1 100644
--- a/keyboards/lets_split/rev2/rev2.c
+++ b/keyboards/lets_split/rev2/rev2.c
@@ -37,4 +37,3 @@ void shutdown_user(void) {
 	stop_all_notes();
     #endif
 }
-
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
index 0603827e0..0c4e8e7de 100644
--- a/keyboards/lets_split/rev2/rev2.h
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -13,17 +13,6 @@
 	#include <avr/io.h>
 	#include <avr/interrupt.h>
 #endif
-#ifdef SSD1306OLED
-	extern bool iota_gfx_init(void);
-	extern void iota_gfx_task(void);
-	extern bool iota_gfx_off(void);
-	extern bool iota_gfx_on(void);
-	extern void iota_gfx_flush(void);
-	extern void iota_gfx_write_char(uint8_t c);
-	extern void iota_gfx_write(const char *data);
-	extern void iota_gfx_write_P(const char *data);
-	extern void iota_gfx_clear_screen(void);
-#endif
 #endif
 
 //void promicro_bootloader_jmp(bool program);
diff --git a/keyboards/lets_split/ssd1306.c b/keyboards/lets_split/ssd1306.c
index 3c7816bb3..76348ab7f 100644
--- a/keyboards/lets_split/ssd1306.c
+++ b/keyboards/lets_split/ssd1306.c
@@ -1,8 +1,7 @@
+#include "ssd1306.h"
 #include "config.h"
 #include "i2c.h"
-#include <stdbool.h>
 #include <string.h>
-#include <stdio.h>
 #include "print.h"
 #include "lets_split.h"
 #include "common/glcdfont.c"
diff --git a/keyboards/lets_split/ssd1306.h b/keyboards/lets_split/ssd1306.h
new file mode 100644
index 000000000..b0c74f987
--- /dev/null
+++ b/keyboards/lets_split/ssd1306.h
@@ -0,0 +1,17 @@
+#ifndef SSD1306_H
+#define SSD1306_H
+
+#include <stdbool.h>
+#include <stdio.h>
+
+bool iota_gfx_init(void);
+void iota_gfx_task(void);
+bool iota_gfx_off(void);
+bool iota_gfx_on(void);
+void iota_gfx_flush(void);
+void iota_gfx_write_char(uint8_t c);
+void iota_gfx_write(const char *data);
+void iota_gfx_write_P(const char *data);
+void iota_gfx_clear_screen(void);
+
+#endif

From 133ed52466f1a6d29974f1efc1deddcdafe773a8 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 13:23:23 -0400
Subject: [PATCH 160/163] =?UTF-8?q?Update=20Let=E2=80=99s=20Split=20readme?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 keyboards/lets_split/readme.md | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/keyboards/lets_split/readme.md b/keyboards/lets_split/readme.md
index ecce3f415..a8525a2e9 100644
--- a/keyboards/lets_split/readme.md
+++ b/keyboards/lets_split/readme.md
@@ -7,6 +7,12 @@ Split keyboard firmware for Arduino Pro Micro or other ATmega32u4
 based boards.
 
 
+## Build Guide
+
+A build guide for putting together the Let's Split v2 can be found here: [An Overly Verbose Guide to Building a Let's Split Keyboard](https://github.com/nicinabox/lets-split-guide)
+
+There is additional information there about flashing and adding RGB underglow.
+
 ## First Time Setup
 
 Download or clone the whole firmware and navigate to the keyboards/lets_split directory. Once your dev env is setup, you'll be able to generate the default .hex using:
@@ -62,8 +68,8 @@ 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.
+* 2 TRRS sockets
+* 1 TRRS 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
@@ -77,7 +83,7 @@ A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and t
 Wiring
 ------
 
-The 3 wires of the TRS cable need to connect GND, VCC, and digital pin 3 (i.e.
+The 3 wires of the TRRS 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

From ed9c18e86650496627e3a94c29c370e76a6e8313 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 14:00:33 -0400
Subject: [PATCH 161/163] Remove flip-half from keymap

---
 keyboards/lets_split/keymaps/hexwire/config.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index 27c24fe4b..e315d8c0c 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -19,7 +19,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define USE_SERIAL
 
 #define TAPPING_TERM 150
-#define FLIP_HALF
 
 #ifdef SUBPROJECT_rev1
     #include "../../rev1/config.h"

From 13c882a1fbd3fe3d4f703628df46f18fc69e09ea Mon Sep 17 00:00:00 2001
From: Erez Zukerman <bulk@ezuk.org>
Date: Mon, 3 Apr 2017 15:11:42 -0400
Subject: [PATCH 162/163] disables space cadet rollover

---
 keyboards/ergodox/ez/config.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h
index e4f95c302..a3347de45 100644
--- a/keyboards/ergodox/ez/config.h
+++ b/keyboards/ergodox/ez/config.h
@@ -49,6 +49,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define RGBLIGHT_SAT_STEP 255
 #define RGBLIGHT_VAL_STEP 12
 
+/* fix space cadet rollover issue */
+#define DISABLE_SPACE_CADET_ROLLOVER
+
 // #define RGB_MIDI
 #define RGBW_BB_TWI
 

From fbd9d04559962cb0db3a584d397f49371a4d7fb6 Mon Sep 17 00:00:00 2001
From: Danny Nguyen <danny@80pct.com>
Date: Mon, 3 Apr 2017 16:16:46 -0400
Subject: [PATCH 163/163] Include use of either TRS or TRRS

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

diff --git a/keyboards/lets_split/readme.md b/keyboards/lets_split/readme.md
index a8525a2e9..7e5a54602 100644
--- a/keyboards/lets_split/readme.md
+++ b/keyboards/lets_split/readme.md
@@ -68,8 +68,7 @@ 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 TRRS sockets
-* 1 TRRS cable.
+* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 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
@@ -83,7 +82,7 @@ A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and t
 Wiring
 ------
 
-The 3 wires of the TRRS cable need to connect GND, VCC, and digital pin 3 (i.e.
+The 3 wires of the TRS/TRRS 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