Browse Source

Merge branch 'master' of github.com:qmk/qmk_firmware into i18n

Jack Humbert 7 years ago
parent
commit
a568470af9
58 changed files with 2201 additions and 431 deletions
  1. 0 17
      docs/faq_keymap.md
  2. 21 0
      docs/ref_functions.md
  3. 32 0
      docs/zh-cn/README.md
  4. 14 0
      keyboards/do60/do60.h
  5. 0 0
      keyboards/do60/info.json
  6. 10 7
      keyboards/do60/readme.md
  7. 1 1
      keyboards/do60/rules.mk
  8. 2 2
      keyboards/handwired/atreus50/atreus50.h
  9. 70 0
      keyboards/handwired/atreus50/info.json
  10. 14 20
      keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
  11. 35 74
      keyboards/handwired/atreus50/keymaps/default/keymap.c
  12. 13 5
      keyboards/handwired/atreus50/readme.md
  13. 77 0
      keyboards/handwired/ortho5x13/info.json
  14. 114 123
      keyboards/handwired/ortho5x13/keymaps/default/keymap.c
  15. 1 1
      keyboards/handwired/ortho5x13/readme.md
  16. 1 26
      keyboards/handwired/promethium/config.h
  17. 68 0
      keyboards/handwired/promethium/info.json
  18. 1 6
      keyboards/handwired/promethium/keymaps/default/config.h
  19. 15 15
      keyboards/handwired/promethium/keymaps/default/keymap.c
  20. 1 6
      keyboards/handwired/promethium/keymaps/priyadi/config.h
  21. 15 15
      keyboards/handwired/promethium/keymaps/priyadi/keymap.c
  22. 19 0
      keyboards/handwired/promethium/promethium.h
  23. 3 2
      keyboards/kira75/rules.mk
  24. 3 5
      keyboards/planck/keymaps/default/keymap.c
  25. 8 5
      keyboards/rama/m60_a/config.h
  26. 2 2
      keyboards/rama/m60_a/rules.mk
  27. 10 4
      keyboards/rama/m6_a/config.h
  28. 1 1
      keyboards/rama/m6_a/rules.mk
  29. 7 4
      keyboards/rama/m6_b/config.h
  30. 2 2
      keyboards/rama/m6_b/rules.mk
  31. 6 4
      keyboards/rama/u80_a/config.h
  32. 47 0
      keyboards/s7_elephant/config.h
  33. 9 0
      keyboards/s7_elephant/info.json
  34. 1 0
      keyboards/s7_elephant/keymaps/default/config.h
  35. 64 0
      keyboards/s7_elephant/keymaps/default/keymap.c
  36. 35 0
      keyboards/s7_elephant/keymaps/default/readme.md
  37. 17 0
      keyboards/s7_elephant/readme.md
  38. 52 0
      keyboards/s7_elephant/rules.mk
  39. 1 0
      keyboards/s7_elephant/s7_elephant.c
  40. 855 0
      keyboards/s7_elephant/s7_elephant.h
  41. 7 5
      keyboards/wilba_tech/wt60_a/config.h
  42. 7 5
      keyboards/wilba_tech/wt65_a/config.h
  43. 7 5
      keyboards/wilba_tech/wt80_a/config.h
  44. 85 7
      keyboards/wilba_tech/wt_main.c
  45. 7 3
      keyboards/zeal60/config.h
  46. 112 19
      keyboards/zeal60/rgb_backlight.c
  47. 17 8
      keyboards/zeal60/rgb_backlight.h
  48. 2 1
      keyboards/zeal60/rgb_backlight_api.h
  49. 65 23
      keyboards/zeal60/zeal60.c
  50. 9 1
      keyboards/zeal60/zeal60_api.h
  51. 17 1
      keyboards/zeal60/zeal60_keycodes.h
  52. 7 3
      keyboards/zeal65/config.h
  53. 2 2
      keyboards/zeal65/rules.mk
  54. 21 0
      layouts/default/60_ansi_tsangan_split_bs_rshift/default_60_ansi_tsangan_split_bs_rshift/keymap.c
  55. 5 0
      layouts/default/60_ansi_tsangan_split_bs_rshift/layout.json
  56. 3 0
      layouts/default/60_ansi_tsangan_split_bs_rshift/readme.md
  57. 146 1
      quantum/dynamic_keymap.c
  58. 35 0
      quantum/dynamic_keymap.h

+ 0 - 17
docs/faq_keymap.md

@@ -211,20 +211,3 @@ here real_mods lost state for 'physical left shift'.
 
 weak_mods is ORed with real_mods when keyboard report is sent.
 https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57
-
-## Timer Functionality
-
-It's possible to start timers and read values for time-specific events - here's an example:
-
-```c
-static uint16_t key_timer;
-key_timer = timer_read();
-
-if (timer_elapsed(key_timer) < 100) {
-  // do something if less than 100ms have passed
-} else {
-  // do something if 100ms or more have passed
-}
-```
-
-It's best to declare the `static uint16_t key_timer;` at the top of the file, outside of any code blocks you're using it in.

+ 21 - 0
docs/ref_functions.md

@@ -96,3 +96,24 @@ And to do so, add `reset_keyboard()` to your function or macro, and this will re
 If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage).  Bootmagic is one way to do this, but if that isn't enabled, then you can use a custom macro to do so.
 
 To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default.
+
+## Tap random key
+
+If you want to send a random character to the host computer, you can use the `tap_random_base64()` function. This [pseudorandomly](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) selects a number between 0 and 63, and then sends a key press based on that selection. (0–25 is `A`–`Z`, 26–51 is `a`–`z`, 52–61 is `0`–`9`, 62 is `+` and 63 is `/`).  
+
+?> Needless to say, but this is _not_ a cryptographically secure method of generating random Base64 keys or passwords.
+
+## Software Timers
+
+It's possible to start timers and read values for time-specific events. Here's an example:
+
+```c
+static uint16_t key_timer;
+key_timer = timer_read();
+
+if (timer_elapsed(key_timer) < 100) {
+  // do something if less than 100ms have passed
+} else {
+  // do something if 100ms or more have passed
+}
+```

+ 32 - 0
docs/zh-cn/README.md

@@ -0,0 +1,32 @@
+# QMK鍵盤固件
+
+[![當前版本](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
+[![築邦](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
+[![不和諧](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
+[![文檔狀態](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
+[![GitHub的貢獻者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
+[![GitHub的叉](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
+
+## 什麼是QMK固件?
+
+QMK是一個由社群維護的開源鍵盤韌體,其中包含了QMK Toolbox、qmk.fm和其它文件。QMK韌體是以[tmk\_keyboard](http://github.com/tmk/tmk_keyboard)為基礎,讓一些有用的功能在Atmel AVR控制器實現,使用於[OLKB](https://olkb.com)、[ergodox EZ](http://www.ergodox-ez.com),和[Clueboard](http://clueboard.co/)的產品中。它也被移植到使用ChibiOS的ARM晶片上。你也可以用它來讓你徒手佈線,或是客製的鍵盤PCB發揮功能。
+
+## 如何得到QMK
+
+如果你打算貢獻鍵盤佈局,鍵盤或功能QMK,最容易做的事情是[叉通過Github上爬行](https://github.com/qmk/qmk_firmware#fork-destination-box),和克隆你爬在本地進行更改,推動他們,然後打開從你的叉子[拉請求](https://github.com/qmk/qmk_firmware/pulls)。
+
+否則,您可以直接下載([拉鍊](https://github.com/qmk/qmk_firmware/zipball/master) [焦油](https://github.com/qmk/qmk_firmware/tarball/master)),或者通過GIT中克隆它(`git@github.com:qmk/qmk_firmware.git`)或HTTP(`https://github.com/qmk/qmk_firmware.git`)。
+
+## 如何編譯
+
+你可以編譯之前,你需要[安裝環境](getting_started_build_tools.md)用於AVR或/和ARM開發。一旦完成,你會使用`make`命令建立一個鍵盤並用以下符號鍵盤佈局
+
+    make planck/rev4:default
+
+這將建立`rev4` `planck`的修訂與`default`鍵盤映射。並非所有鍵盤有一個修訂版(也稱為子項目或文件夾),在這種情況下,它可以被省略:
+
+    make preonic:default
+
+## 如何赶近
+
+QMK有很多[特點](features.md)探索和很好的協議[參考文獻](http://docs.qmk.fm)挖通的。大部分功能通過修改[鍵盤映射(keymap.md),並改變[鍵碼](keycodes.md)冤大頭。

+ 14 - 0
keyboards/do60/do60.h

@@ -39,6 +39,20 @@ inline void setdefaultrgb(void){ rgblight_sethsv(100,100,100); }
     { K40,  K41,  K42,  KC_NO,KC_NO,K45,  K46,  K47,  KC_NO,KC_NO,K4A,  K4B,  K4C,  K4D,   K4E }  \
 }
 
+#define LAYOUT_60_hhkb( \
+      K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,  K0E, \
+      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,        K1E, \
+      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,              K2E, \
+      K30,        K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,        K3D,  K3E, \
+            K41,  K42,                    K46,                    K4A,  K4B                    \
+) { \
+    { K00,   K01,   K02,  K03,   K04,   K05,   K06, K07,   K08,   K09,   K0A, K0B, K0C,   K0D,   K0E },  \
+    { K10,   K11,   K12,  K13,   K14,   K15,   K16, K17,   K18,   K19,   K1A, K1B, K1C,   KC_NO, K1E },  \
+    { K20,   K21,   K22,  K23,   K24,   K25,   K26, K27,   K28,   K29,   K2A, K2B, KC_NO, KC_NO, K2E },  \
+    { K30,   KC_NO, K32,  K33,   K34,   K35,   K36, K37,   K38,   K39,   K3A, K3B, KC_NO, K3D,   K3E },  \
+    { KC_NO, K41,   K42,  KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, KC_NO, KC_NO } \
+}
+
 #define LAYOUT_60_ansi( \
       K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,      K0E, \
       K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C,      K1E, \

File diff suppressed because it is too large
+ 0 - 0
keyboards/do60/info.json


+ 10 - 7
keyboards/do60/readme.md

@@ -1,11 +1,14 @@
-# QMK Firmware for DoyuStudio DO60 PCB
+# DoyuStudio DO60 PCB
 
+60% board supporting in-switch LEDs (two-pin, single colour)
+Build-in WS2182 RGB LED for underglow lighting.
 
-## Quantum MK Firmware
-For the full Quantum feature list, see [the parent readme.md](/readme.md).
+Keyboard Maintainer: QMK Community  
+Hardware Supported: Doyu Studios 60% PCB  
+Hardware Availability: [Doyustudio](https://shopkey.doyustudio.com/001pcb60)  
 
-Board supports in-switch LEDs (two-pin, single colour)
-Build-in WS2182 RGB LED for underglow lighting.
+Make example for this keyboard (after setting up your build environment):
+
+    make do60:default
 
-## Build
-To build the default keymap, simply run `make do60:default`.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

+ 1 - 1
keyboards/do60/rules.mk

@@ -63,4 +63,4 @@ RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
 SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 UNICODE_ENABLE = no         # Unicode
 
-LAYOUTS = 60_ansi 60_ansi_split_bs_rshift
+LAYOUTS = 60_ansi 60_hhkb 60_ansi_split_bs_rshift

+ 2 - 2
keyboards/handwired/atreus50/atreus50.h

@@ -5,7 +5,7 @@
 
 // The first section contains all of the arguements
 // The second converts the arguments into a two-dimensional array
-#define KEYMAP( \
+#define LAYOUT( \
   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, \
@@ -18,7 +18,7 @@
 	{ k30, k31, k32, k33, k34, k35, km1,   k36, k37, k38, k39, k3a, k3b } \
 }
 
-#define COMPACT_KEYMAP( \
+#define LAYOUT_kc( \
   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, \

+ 70 - 0
keyboards/handwired/atreus50/info.json

@@ -0,0 +1,70 @@
+{
+  "keyboard_name": "Atreus50",
+  "url": "",
+  "maintainer": "qmk",
+  "width": 15,
+  "height": 4.5,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [
+        {"label":"Tab", "x":0, "y":0.5},
+        {"label":"Q", "x":1, "y":0.5},
+        {"label":"W", "x":2, "y":0.25},
+        {"label":"E", "x":3, "y":0},
+        {"label":"R", "x":4, "y":0.25},
+        {"label":"T", "x":5, "y":0.5},
+
+        {"label":"Y", "x":9, "y":0.5},
+        {"label":"U", "x":10, "y":0.25},
+        {"label":"I", "x":11, "y":0},
+        {"label":"O", "x":12, "y":0.25},
+        {"label":"P", "x":13, "y":0.5},
+        {"label":"-", "x":14, "y":0.5},
+
+        {"label":"Ctrl/Esc", "x":0, "y":1.5},
+        {"label":"A", "x":1, "y":1.5},
+        {"label":"S", "x":2, "y":1.25},
+        {"label":"D", "x":3, "y":1},
+        {"label":"F", "x":4, "y":1.25},
+        {"label":"G", "x":5, "y":1.5},
+
+        {"label":"H", "x":9, "y":1.5},
+        {"label":"J", "x":10, "y":1.25},
+        {"label":"K", "x":11, "y":1},
+        {"label":"L", "x":12, "y":1.25},
+        {"label":";", "x":13, "y":1.5},
+        {"label":"'", "x":14, "y":1.5},
+
+        {"label":"LShift", "x":0, "y":2.5},
+        {"label":"Z", "x":1, "y":2.5},
+        {"label":"X", "x":2, "y":2.25},
+        {"label":"C", "x":3, "y":2},
+        {"label":"V", "x":4, "y":2.25},
+        {"label":"B", "x":5, "y":2.5},
+
+        {"label":"N", "x":9, "y":2.5},
+        {"label":"M", "x":10, "y":2.25},
+        {"label":",", "x":11, "y":2},
+        {"label":".", "x":12, "y":2.25},
+        {"label":"/", "x":13, "y":2.5},
+        {"label":"Shift/Enter", "x":14, "y":2.5},
+
+        {"label":"`", "x":0, "y":3.5},
+        {"label":"LCtrl", "x":1, "y":3.5},
+        {"label":"LAlt", "x":2, "y":3.25},
+        {"label":"LGUI", "x":3, "y":3},
+        {"label":"Lower", "x":4, "y":3.25},
+        {"label":"Space", "x":5, "y":3.5},
+        {"label":"Fn", "x":6, "y":2.75, "h":1.5},
+
+        {"label":"RShift", "x":8, "y":2.75, "h":1.5},
+        {"label":"Back Space", "x":9, "y":3.5},
+        {"label":"Raise", "x":10, "y":3.25},
+        {"label":"Left", "x":11, "y":3},
+        {"label":"Down", "x":12, "y":3.25},
+        {"label":"Up", "x":13, "y":3.5},
+        {"label":"Right", "x":14, "y":3.5}
+      ]
+    }
+  }
+}

+ 14 - 20
keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c

@@ -1,6 +1,4 @@
-#include "atreus50.h"
-#include "action_layer.h"
-#include "eeconfig.h"
+#include QMK_KEYBOARD_H
 #include "keymap_uk.h"
 
 extern keymap_config_t keymap_config;
@@ -37,10 +35,6 @@ enum planck_keycodes {
 
 #include "dynamic_macro.h"
 
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Qwerty
@@ -54,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Fn   | Ctrl | Alt  | GUI  |Lower | Bksp | Ctrl | Alt  |Space |Raise | Shift| MENU | Ctrl | Fn2  |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_QWERTY] = KEYMAP(
+[_QWERTY] = LAYOUT(
   KC_ESC,                KC_Q,       KC_W,        KC_E,      KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,      KC_O,      KC_P,       KC_BSPC              ,
   MT(MOD_LSFT, KC_TAB),  KC_A,       KC_S,        KC_D,      KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,      KC_L,      KC_SCLN,    MT(MOD_RSFT, KC_ENT) ,
   KC_LSHIFT,             KC_Z,       KC_X,        KC_C,      KC_V,    KC_B,                      KC_N,    KC_M,    KC_COMM,   KC_DOT,    KC_SLSH,    KC_RSHIFT            ,
@@ -72,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Fn   | Ctrl | Alt  | GUI  |Lower | Bksp | Ctrl | Alt  |Space |Mouse | MENU | Alt  | Ctrl | Fn   |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_FUNC] = KEYMAP(
+[_FUNC] = LAYOUT(
   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_1,      KC_2,            KC_3,     KC_4,          KC_5,    KC_6,                      KC_7,    KC_8,       KC_9,     KC_0,    UK_TILD, KC_INSERT            ,
   KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS,                   KC_EQL,  KC_BSLASH,  KC_LBRC,  KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,
@@ -90,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |Lower | Del  | Ctrl | Alt  |Space |      | Next | Vol- | Vol+ | Play |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_LOWER] = KEYMAP(
+[_LOWER] = LAYOUT(
   KC_1,        KC_2,            KC_3,        KC_4,           KC_5,        KC_6,                         KC_7,       KC_8,          KC_9,       KC_0,       KC_DEL,       KC_BSPC              ,
   LSFT(KC_1),  LSFT(KC_2),      LSFT(KC_3),  LSFT(KC_4),     LSFT(KC_5),  LSFT(KC_6),                   LSFT(KC_7), LSFT(KC_8),    LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC)        ,
   KC_LSPO,     KC_NONUS_BSLASH, KC_GRAVE,    KC_NONUS_HASH,  KC_QUOT,     KC_MINS,                      KC_EQL,     KC_NONUS_HASH, KC_LBRC,    KC_RBRC,    KC_QUOT,      MT(MOD_RSFT, KC_ENT) ,
@@ -108,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Mouse|      |      |      |      |  Alt | Ctrl | Alt  |Enter |Raise |      |      |      |      |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_RAISE] = KEYMAP(
+[_RAISE] = LAYOUT(
   KC_GRV,     XXXXXXX, M(1),    KC_LBRC,       KC_RBRC,       XXXXXXX,                   XXXXXXX,       KC_PGUP,  KC_HOME,  KC_PGDOWN,  XXXXXXX,        KC_PSCREEN         ,
   KC_GRV,     XXXXXXX, XXXXXXX, LSFT(KC_9),    LSFT(KC_0),    XXXXXXX,                   XXXXXXX,       KC_HOME,  KC_UP,    KC_END,     XXXXXXX,        LCTL(LSFT(KC_EQL)) ,
   _______,    XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX,                   LCTL(KC_LEFT), KC_LEFT,  KC_DOWN,  KC_RIGHT,   LCTL(KC_RIGHT), LCTL(KC_MINS)      ,
@@ -126,11 +120,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_ADJUST] = KEYMAP(
+[_ADJUST] = LAYOUT(
   M(0),     RESET,   QWERTY,  _______, _______, DYN_REC_START1,                    DYN_REC_START2,  _______,             _______,           _______,              _______,  KC_DEL  ,
   KC_CAPS,  _______, _______, _______, _______, DYN_MACRO_PLAY1,                   DYN_MACRO_PLAY2, KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  _______ ,
   TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP,                      DYN_REC_STOP,    KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  _______ ,
-  _______,  _______, _______, _______, _______, _______,         _______, _______, _______,         _______,             _______,           _______,              _______,  _______ 
+  _______,  _______, _______, _______, _______, _______,         _______, _______, _______,         _______,             _______,           _______,              _______,  _______
 ),
 
 /* Mouse
@@ -144,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_MOUSE] = KEYMAP(
+[_MOUSE] = LAYOUT(
     KC_ESC ,      _______,      _______,      _______, _______, _______,                   _______, _______,    _______,     _______,    _______, _______ ,
     KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______,                   _______, KC_MS_BTN1, KC_MS_UP,   KC_MS_BTN2,  _______, _______ ,
     KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______,                   _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ ,
@@ -162,42 +156,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-------------------------------------------------------------------------------------------------'
  */
-[_FUNC2] = KEYMAP(
+[_FUNC2] = LAYOUT(
     _______,  _______,    M(1),       _______,    _______,    _______,                   M(5),    _______, _______, _______, _______, _______,
     _______,  _______,    M(3),       M(7),       _______,    _______,                   _______, M(10),   _______, _______, _______, _______,
     _______,  LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______,                   _______, _______, _______, _______, _______, M(98)  ,
     _______,  _______,    _______,    _______,    _______,    _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
 
-[_MAC] = KEYMAP(
+[_MAC] = LAYOUT(
     _______,  _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     _______,  _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     _______,  _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     MFNC,     _______, _______, _______, MLWR,    _______, _______, _______, _______, MRSE,    _______, _______, _______, MFNC2
 ),
 
-[_MLWR] = KEYMAP(
+[_MLWR] = LAYOUT(
     _______,  _______,  _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     _______,  _______,  _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     _______,  _______,  _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     _______,  _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
 
-[_MRSE] = KEYMAP(
+[_MRSE] = LAYOUT(
     _______,  _______,  M(2),    _______, _______, _______,                   _______,       _______,    _______, _______,    _______,        _______       ,
     _______,  _______,  _______, _______, _______, _______,                   _______,       LCTL(KC_A), _______, LCTL(KC_E), _______,        LGUI(KC_EQL)  ,
     _______,  _______,  _______, _______, _______, _______,                   LALT(KC_LEFT), _______,    _______, _______,    LALT(KC_RIGHT), LGUI(KC_MINS) ,
     _______,  _______,  _______, _______, _______, _______, _______, _______, _______,       _______,    _______, _______,    _______,        _______
 ),
 
-[_MFNC] = KEYMAP(
+[_MFNC] = LAYOUT(
     _______,  _______,  _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______       ,
     _______,  _______,  _______, _______, _______, _______,                   _______, _______, _______, _______, _______, LGUI(KC_PENT) ,
     _______,  _______,  _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______       ,
     _______,  _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 ),
 
-[_MFNC2] = KEYMAP(
+[_MFNC2] = LAYOUT(
     _______,  _______,    M(2),       _______,    _______,    _______,                   M(6),    _______, _______, _______, _______, _______,
     _______,  _______,    M(4),       M(8),       _______,    _______,                   _______, M(10),   _______, _______, _______, _______,
     _______,  LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______,                   _______, _______, _______, _______, _______, M(99)  ,

+ 35 - 74
keyboards/handwired/atreus50/keymaps/default/keymap.c

@@ -1,9 +1,4 @@
-#include "atreus50.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-#ifdef AUDIO_ENABLE
-  #include "audio.h"
-#endif
+#include QMK_KEYBOARD_H
 
 // Each layer gets a name for readability, which is then used in the keymap matrix below.
 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -28,86 +23,52 @@ enum custom_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
+#define X0 MT(MOD_LCTL, KC_ESC)  // Hold for Left Ctrl, Tap for ESC
+#define X3 MO(_MOVEMENT)
+#define X4 MT(MOD_LSFT, KC_ENT)  // Hold for Left Shift, Tap for Enter
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-  [_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
-  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  [_QWERTY] = LAYOUT(
+    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_MINS,
+    X0,      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, X4,
+    KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  X3,      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
-  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  [_COLEMAK] = LAYOUT(
+    KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,                      KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_MINS,
+    X0,      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, X4,
+    KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  X3,      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  , T  , 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
-  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  [_DVORAK] = LAYOUT(
+    KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,                      KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_MINS,
+    X0,      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,    X4,
+    KC_GRV,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  X3,      KC_RSFT, KC_BSPC, RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
   ),
 
-  [_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
-  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  [_LOWER] = LAYOUT(
+    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,  KC_END,  _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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
-  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  [_RAISE] = LAYOUT(
+    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] = 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
-  //`----+----+----+----+----+----+----+----+----+----+----+----+----+----'
+  [_MOVEMENT] = LAYOUT(
+    KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  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_RGHT, KC_RCBR, KC_PIPE,
+    _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,                    KC_F12,  KC_END,  _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_PGUP, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
   ),
 
 /* Adjust (Lower + Raise)
@@ -121,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-------------------------------------------------------------------------------------------------'
  */
-  [_ADJUST] = KEYMAP( \
+  [_ADJUST] = LAYOUT( \
     _______, 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,  _______, _______, _______, _______, _______, \

+ 13 - 5
keyboards/handwired/atreus50/readme.md

@@ -1,7 +1,9 @@
-Handwired Atreus50
-==================
+# Handwired Atreus50
 
-This firmware is for a Handwired Atreus50 using an Arduino Pro Micro.
+This firmware is for a handwired Atreus50 using an Arduino Pro Micro.
+
+Keyboard Maintainer: [The QMK Community](https://github.com/qmk)  
+Hardware Supported: Arduino Pro Micro  
 
 ## Pinout
 
@@ -11,6 +13,12 @@ The following pins are used:
 
 ## Compiling and loading the firmware
 
-To build the firmware, run `make`.
+Make example for this keyboard (after setting up your build environment):
+
+    make handwired/atreus50:default
+
+To flash the firmware onto the microcontroller, run `make avrdude`, and press the reset button.
+
+    make handwired/atreus50:default:avrdude
 
-To flash the firemware onto the microcontroller, run `make avrdude`, and press the reset button.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

+ 77 - 0
keyboards/handwired/ortho5x13/info.json

@@ -0,0 +1,77 @@
+{
+    "keyboard_name": "ortho5x13",
+    "url": "",
+    "maintainer": "qmk",
+    "width": 13,
+    "height": 6,
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {"label":"Esc", "x":0, "y":0},
+                {"label":"1", "x":1, "y":0},
+                {"label":"2", "x":2, "y":0},
+                {"label":"3", "x":3, "y":0},
+                {"label":"4", "x":4, "y":0},
+                {"label":"5", "x":5, "y":0},
+                {"label":"6", "x":6, "y":0},
+                {"label":"7", "x":7, "y":0},
+                {"label":"8", "x":8, "y":0},
+                {"label":"9", "x":9, "y":0},
+                {"label":"0", "x":10, "y":0},
+                {"label":"-", "x":11, "y":0},
+                {"label":"=", "x":12, "y":0},
+                {"label":"Tab", "x":0, "y":1},
+                {"label":"Q", "x":1, "y":1},
+                {"label":"W", "x":2, "y":1},
+                {"label":"E", "x":3, "y":1},
+                {"label":"R", "x":4, "y":1},
+                {"label":"T", "x":5, "y":1},
+                {"label":"Y", "x":6, "y":1},
+                {"label":"U", "x":7, "y":1},
+                {"label":"I", "x":8, "y":1},
+                {"label":"O", "x":9, "y":1},
+                {"label":"P", "x":10, "y":1},
+                {"label":"[", "x":11, "y":1},
+                {"label":"]", "x":12, "y":1},
+                {"label":"`", "x":0, "y":2},
+                {"label":"A", "x":1, "y":2},
+                {"label":"S", "x":2, "y":2},
+                {"label":"D", "x":3, "y":2},
+                {"label":"F", "x":4, "y":2},
+                {"label":"G", "x":5, "y":2},
+                {"label":"H", "x":6, "y":2},
+                {"label":"J", "x":7, "y":2},
+                {"label":"K", "x":8, "y":2},
+                {"label":"L", "x":9, "y":2},
+                {"label":";", "x":10, "y":2},
+                {"label":",", "x":11, "y":2},
+                {"label":"\\", "x":12, "y":2},
+                {"label":"Shift", "x":0, "y":3},
+                {"label":"Z", "x":1, "y":3},
+                {"label":"X", "x":2, "y":3},
+                {"label":"C", "x":3, "y":3},
+                {"label":"V", "x":4, "y":3},
+                {"label":"B", "x":5, "y":3},
+                {"label":"N", "x":6, "y":3},
+                {"label":"M", "x":7, "y":3},
+                {"label":",", "x":8, "y":3},
+                {"label":".", "x":9, "y":3},
+                {"label":"/", "x":10, "y":3},
+                {"label":"Enter", "x":11, "y":3},
+                {"label":"Up", "x":12, "y":3},
+                {"label":"Hyper", "x":0, "y":4},
+                {"label":"Ctrl", "x":1, "y":4},
+                {"label":"Alt", "x":2, "y":4},
+                {"label":"GUI", "x":3, "y":4},
+                {"label":"Lower", "x":4, "y":4},
+                {"label":"Space", "x":5, "y":4, "w":2},
+                {"label":"Raise", "x":7, "y":4},
+                {"label":"Backspace", "x":8, "y":4},
+                {"label":"Shift", "x":9, "y":4},
+                {"label":"Left", "x":10, "y":4},
+                {"label":"Right", "x":11, "y":4},
+                {"label":"Down", "x":12, "y":4}
+            ]
+        }
+    }
+}

+ 114 - 123
keyboards/handwired/ortho5x13/keymaps/default/keymap.c

@@ -1,9 +1,4 @@
-#include "ortho5x13.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-#ifdef AUDIO_ENABLE
-  #include "audio.h"
-#endif
+#include QMK_KEYBOARD_H
 
 // Each layer gets a name for readability, which is then used in the keymap matrix below.
 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -25,146 +20,142 @@ enum custom_keycodes {
   BACKLIT
 };
 
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
 #define KC_L1 LOWER
 #define KC_L2 RAISE
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-/* Qwerty
+  /* Qwerty
+   * ,------------------------------------------------------------------------------------------.
+   * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   -  |   =  |
+   * |------+------+------+------+------+------+------+------+------+------+------+------+------|
+   * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |   [  |   ]  |
+   * |------+------+------+------+------+-------------+------+------+------+------+------+------|
+   * |   `  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |   '  |   \  |
+   * |------+------+------+------+------+------|------+------+------+------+------+------+------|
+   * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |  Up  |
+   * |------+------+------+------+------+------+------+------+------+------+------+------+------|
+   * | Hyper| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Bksp |Shift | Left | Down |Right |
+   * `------------------------------------------------------------------------------------------'
+   */
+  [_QWERTY] = LAYOUT(
+  //,--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------.
+     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_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_GRV  ,KC_A    ,KC_S    ,KC_D    ,KC_F    ,KC_G    ,KC_H    ,KC_J    ,KC_K    ,KC_L    ,KC_SCLN ,KC_QUOT ,KC_BSLS ,
+  //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+     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_UP   ,
+  //|--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------+--------|
+     KC_HYPR ,KC_LCTL ,KC_LALT ,KC_LGUI ,KC_L1   ,    KC_SPC       ,KC_L2   ,KC_BSPC ,KC_RSFT ,KC_LEFT ,KC_RGHT ,KC_DOWN
+  //`--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------+--------'
+  ),
+
+/* Colemak
  * ,------------------------------------------------------------------------------------------.
- * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   -  |   =  |
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |   [  |   ]  |
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Del  |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------+------|
- * |   `  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |   '  |   \  |
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |  Up  |
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | Hyper| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Bksp |Shift | Left | Down |Right |
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |      |
  * `------------------------------------------------------------------------------------------'
  */
-[_QWERTY] = LAYOUT_compact(
-  //,----+----+----+----+----+----+----+----+----+----+----+----+----.
-     ESC , 1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 0  ,MINS,EQL ,
-  //|----+----+----+----+----+----+----+----+----+----+----+----+----|
-     TAB , Q  , W  , E  , R  , T  , Y  , U  , I  , O  , P  ,LBRC,RBRC,
-  //|----+----+----+----+----+----+----+----+----+----+----+----+----|
-     GRV , A  , S  , D  , F  , G  , H  , J  , K  , L  ,SCLN,QUOT,BSLS,
-  //|----+----+----+----+----+----+----+----+----+----+----+----+----|
-     LSFT, Z  , X  , C  , V  , B  , N  , M  ,COMM,DOT ,SLSH,ENT , UP ,
-  //|----+----+----+----+----+---------+----+----+----+----+----+----|
-     HYPR,LCTL,LALT,LGUI, L1 ,  SPACE  , L2 ,BSPC,RSFT,LEFT,RGHT,DOWN
-  //`----+----+----+----+----+---------+----+----+----+----+----+----'
-    ),
-
-/* Colemak
- * ,-----------------------------------------------------------------------------------.
- * |   `  |   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  |  "   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_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 },
-  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
-},
+[_COLEMAK] = LAYOUT(
+  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 , _______,
+  BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,       KC_SPC,       RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______
+),
 
 /* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Del  |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | 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 |
- * `-----------------------------------------------------------------------------------'
+ * ,------------------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Del  |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * | 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_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_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_DEL},
-  {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}
-},
+[_DVORAK] = LAYOUT(
+  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_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_DEL , _______,
+  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,       RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______
+),
 
 /* Lower
- * ,-----------------------------------------------------------------------------------.
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
+ * ,------------------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * | 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_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] = LAYOUT(
+  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_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  | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |   `  |   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 |
- * `-----------------------------------------------------------------------------------'
+ * ,------------------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |   `  |   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] = {
-  {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_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] = LAYOUT(
+  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_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, _______
+),
 
 /* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
+ * ,------------------------------------------------------------------------------------------.
+ * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * |      |      |      |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |      |
+ * `------------------------------------------------------------------------------------------'
  */
-[_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,  _______, _______, _______, _______, _______},
-  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
-}
+[_ADJUST] = LAYOUT(
+  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,  _______, _______, _______, _______, _______, _______,
+  _______, _______, _______, _______, _______,     _______,      _______, _______, _______, _______, _______, _______
+)
 
 
 };
@@ -286,4 +277,4 @@ void music_scale_user(void)
     PLAY_SONG(music_scale);
 }
 
-#endif
+#endif

+ 1 - 1
keyboards/handwired/ortho5x13/readme.md

@@ -10,4 +10,4 @@ Make example for this keyboard (after setting up your build environment):
 
     make handwired/ortho5x13:default
 
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

+ 1 - 26
keyboards/handwired/promethium/config.h

@@ -15,8 +15,7 @@ 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
+#pragma once
 
 #include "config_common.h"
 
@@ -159,27 +158,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MAX_VOLTAGE 4.2
 #define MIN_VOLTAGE 3.2
 
-#define ___ KC_NO
-
-#define KEYMAP_CUSTOM( \
-    k11, k12, k13, k14, k15, k16,      k17, k18, k19, k1a, k1b, k1c, \
-    k21, k22, k23, k24, k25, k26,      k27, k28, k29, k2a, k2b, k2c, \
-    k31, k32, k33, k34, k35, k36,      k37, k38, k39, k3a, k3b, k3c, \
-    k41, k42, k43, k44, k45, k46,      k47, k48, k49, k4a, k4b, k4c, \
-                             tp1, tp2, tp3 \
-) \
-{ \
-    {k11, k12, k13, k14, k15, k16}, \
-    {k21, k22, k23, k24, k25, k26}, \
-    {k31, k32, k33, k34, k35, k36}, \
-    {k41, k42, k43, k44, k45, k46}, \
-    {k17, k18, k19, k1a, k1b, k1c}, \
-    {k27, k28, k29, k2a, k2b, k2c}, \
-    {k37, k38, k39, k3a, k3b, k3c}, \
-    {k47, k48, k49, k4a, k4b, k4c}, \
-    {tp1, tp2, tp3, ___, ___, ___}  \
-}
-
 #ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file
 enum led_sequence {
   LED_IND_LINUX,
@@ -351,6 +329,3 @@ enum led_sequence {
 #define PS2_USART_ERROR         (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
 #define PS2_USART_RX_VECT       USART1_RX_vect
 #endif
-
-
-#endif

+ 68 - 0
keyboards/handwired/promethium/info.json

@@ -0,0 +1,68 @@
+{
+  "keyboard_name": "Promethium51",
+  "url": "",
+  "maintainer": "qmk",
+  "width": 16,
+  "height": 5,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [
+        { "label": "k11", "x": 0, "y": 0.50 },
+        { "label": "k12", "x": 1, "y": 0.30 },
+        { "label": "k13", "x": 2, "y": 0.15 },
+        { "label": "k14", "x": 3, "y": 0 },
+        { "label": "k15", "x": 4, "y": 0.15 },
+        { "label": "k16", "x": 5, "y": 0.15 },
+        { "label": "k17", "x": 10, "y": 0.15 },
+        { "label": "k18", "x": 11, "y": 0.15 },
+        { "label": "k19", "x": 12, "y": 0 },
+        { "label": "k1a", "x": 13, "y": 0.15 },
+        { "label": "k1b", "x": 14, "y": 0.30 },
+        { "label": "k1c", "x": 15, "y": 0.50 },
+
+        { "label": "k21", "x": 0, "y": 1.50 },
+        { "label": "k22", "x": 1, "y": 1.30 },
+        { "label": "k23", "x": 2, "y": 1.15 },
+        { "label": "k24", "x": 3, "y": 1 },
+        { "label": "k25", "x": 4, "y": 1.15 },
+        { "label": "k26", "x": 5, "y": 1.15 },
+        { "label": "k27", "x": 10, "y": 1.15 },
+        { "label": "k28", "x": 11, "y": 1.15 },
+        { "label": "k29", "x": 12, "y": 1 },
+        { "label": "k2a", "x": 13, "y": 1.15 },
+        { "label": "k2b", "x": 14, "y": 1.30 },
+        { "label": "k2c", "x": 15, "y": 1.50 },
+
+        { "label": "k31", "x": 0, "y": 2.50 },
+        { "label": "k32", "x": 1, "y": 2.30 },
+        { "label": "k33", "x": 2, "y": 2.15 },
+        { "label": "k34", "x": 3, "y": 2 },
+        { "label": "k35", "x": 4, "y": 2.15 },
+        { "label": "k36", "x": 5, "y": 2.15 },
+        { "label": "k37", "x": 10, "y": 2.15 },
+        { "label": "k38", "x": 11, "y": 2.15 },
+        { "label": "k39", "x": 12, "y": 2 },
+        { "label": "k3a", "x": 13, "y": 2.15 },
+        { "label": "k3b", "x": 14, "y": 2.30 },
+        { "label": "k3c", "x": 15, "y": 2.50 },
+
+        { "label": "k41", "x": 0, "y": 3.50 },
+        { "label": "k42", "x": 1, "y": 3.30 },
+        { "label": "k43", "x": 2, "y": 3.15 },
+        { "label": "k44", "x": 3, "y": 3 },
+        { "label": "k45", "x": 4, "y": 3.15 },
+        { "label": "k46", "x": 5, "y": 3.15 },
+        { "label": "k47", "x": 10, "y": 3.15 },
+        { "label": "k48", "x": 11, "y": 3.15 },
+        { "label": "k49", "x": 12, "y": 3 },
+        { "label": "k4a", "x": 13, "y": 3.15 },
+        { "label": "k4b", "x": 14, "y": 3.30 },
+        { "label": "k4c", "x": 15, "y": 3.50 },
+
+        { "label": "tp1", "x": 6.5, "y": 3.15 },
+        { "label": "tp2", "x": 7.5, "y": 3.15 },
+        { "label": "tp3", "x": 8.5, "y": 3.15 }
+      ]
+    }
+  }
+}

+ 1 - 6
keyboards/handwired/promethium/keymaps/default/config.h

@@ -1,7 +1,4 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
+#pragma once
 
 #define PRIYADI_PROMETHIUM
 
@@ -23,5 +20,3 @@
 
 #define DOUBLESPACE_LAYER_ENABLE
 // #define TOLELOT_ENABLE
-
-#endif

+ 15 - 15
keyboards/handwired/promethium/keymaps/default/keymap.c

@@ -686,7 +686,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Fun  |Greek | GUI  |AltGr | Ctrl |
  * `-----------------------------------------------------------------------------------'
  */
-[_QWERTY] = KEYMAP_CUSTOM(
+[_QWERTY] = LAYOUT(
   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_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,
@@ -706,7 +706,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 #ifdef LAYOUT_DVORAK
-[_DVORAK] = KEYMAP_CUSTOM(
+[_DVORAK] = LAYOUT(
   _______, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    _______,
   _______, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    _______,
   _______, KC_SLSH, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    _______,
@@ -728,7 +728,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 #ifdef LAYOUT_COLEMAK
-[_COLEMAK] = KEYMAP_CUSTOM(
+[_COLEMAK] = LAYOUT(
   _______, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_QUOT, _______,
   _______, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    _______,
   _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -750,7 +750,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 #ifdef LAYOUT_NORMAN
-[_NORMAN] = KEYMAP_CUSTOM(
+[_NORMAN] = LAYOUT(
   _______, KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    KC_J,    KC_U,    KC_R,    KC_L,    KC_QUOT, _______,
   _______, KC_A,    KC_S,    KC_E,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,    _______,
   _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -772,7 +772,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 #ifdef LAYOUT_WORKMAN
-[_WORKMAN] = KEYMAP_CUSTOM(
+[_WORKMAN] = LAYOUT(
   _______, KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_QUOT, _______,
   _______, KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    _______,
   _______, KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,    KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -792,7 +792,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |             |      |      |      |   :  |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_PUNC] = KEYMAP_CUSTOM(
+[_PUNC] = LAYOUT(
   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
   KC_GRV,  KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
   KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
@@ -811,7 +811,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |   x  |      |      |      |      |   0  |   ,  |   .  |   :  |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_NUM] = KEYMAP_CUSTOM(
+[_NUM] = LAYOUT(
   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, S(KC_A),  KC_1,    KC_2,    KC_3,   S(KC_D), _______,
   KC_GRV,  KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, S(KC_B),  KC_4,    KC_5,    KC_6,   S(KC_E), _______,
   KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C),  KC_7,    KC_8,    KC_9,   S(KC_F), _______,
@@ -830,7 +830,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_FUN] = KEYMAP_CUSTOM(
+[_FUN] = LAYOUT(
   XXXXXXX,   KC_F1,   KC_F2,   KC_F3,  KC_F4,   KC_INS,  XXXXXXX, KC_PGUP,   KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
   KC_CAPS,   KC_F5,   KC_F6,   KC_F7,  KC_F8,   KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
   _______,   KC_F9,  KC_F10,  KC_F11,  KC_F12,  KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME,  KC_END, XXXXXXX, _______,
@@ -849,7 +849,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_GREEKU] = KEYMAP_CUSTOM(
+[_GREEKU] = LAYOUT(
   _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC),  X(UPI), _______,
   _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA),  X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
   _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA),  X(UNU),  X(UMU), KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -868,7 +868,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_GREEKL] = KEYMAP_CUSTOM(
+[_GREEKL] = LAYOUT(
   _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC),  X(LPI), _______,
   _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA),  X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
   _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA),  X(LNU),  X(LMU), KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -887,7 +887,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_EMPTY] = KEYMAP_CUSTOM(
+[_EMPTY] = LAYOUT(
   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,
@@ -906,7 +906,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_EMOJI] = KEYMAP_CUSTOM(
+[_EMOJI] = LAYOUT(
   X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
   X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART),  X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
   X(THMDN),X(SLEEP), X(CLAP),  X(CRY),  X(VIC),X(BHART),  X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
@@ -925,7 +925,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_GUI] = KEYMAP_CUSTOM(
+[_GUI] = LAYOUT(
   XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
   KC_ESC,  XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB,  XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
   XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC,  KC_SPC,  KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
@@ -944,7 +944,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_SYS] = KEYMAP_CUSTOM(
+[_SYS] = LAYOUT(
   DEBUG,   QWERTY,  WIN,     XXXXXXX, RESET,   XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
   XXXXXXX, FC_TOG,  XXXXXXX, DVORAK,  XXXXXXX, GLOW,    XXXXXXX, XXXXXXX, WORKMAN, LINUX,   XXXXXXX, XXXXXXX,
   XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT,  NORMAN,  OSX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -1365,4 +1365,4 @@ void turn_off_capslock() {
         rcv = ps2_host_send(0x01);
       }
   }
-#endif
+#endif

+ 1 - 6
keyboards/handwired/promethium/keymaps/priyadi/config.h

@@ -1,7 +1,4 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
+#pragma once
 
 #define PRIYADI_PROMETHIUM
 
@@ -23,5 +20,3 @@
 
 #define DOUBLESPACE_LAYER_ENABLE
 // #define TOLELOT_ENABLE
-
-#endif

+ 15 - 15
keyboards/handwired/promethium/keymaps/priyadi/keymap.c

@@ -686,7 +686,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Fun  |Greek | GUI  |AltGr | Ctrl |
  * `-----------------------------------------------------------------------------------'
  */
-[_QWERTY] = KEYMAP_CUSTOM(
+[_QWERTY] = LAYOUT(
   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_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,
@@ -706,7 +706,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 #ifdef LAYOUT_DVORAK
-[_DVORAK] = KEYMAP_CUSTOM(
+[_DVORAK] = LAYOUT(
   _______, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    _______,
   _______, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    _______,
   _______, KC_SLSH, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    _______,
@@ -728,7 +728,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 #ifdef LAYOUT_COLEMAK
-[_COLEMAK] = KEYMAP_CUSTOM(
+[_COLEMAK] = LAYOUT(
   _______, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_QUOT, _______,
   _______, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    _______,
   _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -750,7 +750,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 #ifdef LAYOUT_NORMAN
-[_NORMAN] = KEYMAP_CUSTOM(
+[_NORMAN] = LAYOUT(
   _______, KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    KC_J,    KC_U,    KC_R,    KC_L,    KC_QUOT, _______,
   _______, KC_A,    KC_S,    KC_E,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,    _______,
   _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -772,7 +772,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 #ifdef LAYOUT_WORKMAN
-[_WORKMAN] = KEYMAP_CUSTOM(
+[_WORKMAN] = LAYOUT(
   _______, KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_QUOT, _______,
   _______, KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    _______,
   _______, KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,    KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -792,7 +792,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |             |      |      |      |   :  |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_PUNC] = KEYMAP_CUSTOM(
+[_PUNC] = LAYOUT(
   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
   KC_GRV,  KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
   KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
@@ -811,7 +811,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |   x  |      |      |      |      |   0  |   ,  |   .  |   :  |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_NUM] = KEYMAP_CUSTOM(
+[_NUM] = LAYOUT(
   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, S(KC_A),  KC_1,    KC_2,    KC_3,   S(KC_D), _______,
   KC_GRV,  KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, S(KC_B),  KC_4,    KC_5,    KC_6,   S(KC_E), _______,
   KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C),  KC_7,    KC_8,    KC_9,   S(KC_F), _______,
@@ -830,7 +830,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |             |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_FUN] = KEYMAP_CUSTOM(
+[_FUN] = LAYOUT(
   XXXXXXX,   KC_F1,   KC_F2,   KC_F3,  KC_F4,   KC_INS,  XXXXXXX, KC_PGUP,   KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
   KC_CAPS,   KC_F5,   KC_F6,   KC_F7,  KC_F8,   KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
   _______,   KC_F9,  KC_F10,  KC_F11,  KC_F12,  KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME,  KC_END, XXXXXXX, _______,
@@ -849,7 +849,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_GREEKU] = KEYMAP_CUSTOM(
+[_GREEKU] = LAYOUT(
   _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC),  X(UPI), _______,
   _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA),  X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
   _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA),  X(UNU),  X(UMU), KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -868,7 +868,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_GREEKL] = KEYMAP_CUSTOM(
+[_GREEKL] = LAYOUT(
   _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC),  X(LPI), _______,
   _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA),  X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
   _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA),  X(LNU),  X(LMU), KC_COMM, KC_DOT,  KC_SLSH, _______,
@@ -887,7 +887,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_EMPTY] = KEYMAP_CUSTOM(
+[_EMPTY] = LAYOUT(
   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,
@@ -906,7 +906,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_EMOJI] = KEYMAP_CUSTOM(
+[_EMOJI] = LAYOUT(
   X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
   X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART),  X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
   X(THMDN),X(SLEEP), X(CLAP),  X(CRY),  X(VIC),X(BHART),  X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
@@ -925,7 +925,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_GUI] = KEYMAP_CUSTOM(
+[_GUI] = LAYOUT(
   XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
   KC_ESC,  XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB,  XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
   XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC,  KC_SPC,  KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
@@ -944,7 +944,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |      |      |      |      |      |      |      |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-[_SYS] = KEYMAP_CUSTOM(
+[_SYS] = LAYOUT(
   DEBUG,   QWERTY,  WIN,     XXXXXXX, RESET,   XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
   XXXXXXX, FC_TOG,  XXXXXXX, DVORAK,  XXXXXXX, GLOW,    XXXXXXX, XXXXXXX, WORKMAN, LINUX,   XXXXXXX, XXXXXXX,
   XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT,  NORMAN,  OSX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -1365,4 +1365,4 @@ void turn_off_capslock() {
         rcv = ps2_host_send(0x01);
       }
   }
-#endif
+#endif

+ 19 - 0
keyboards/handwired/promethium/promethium.h

@@ -7,4 +7,23 @@ void battery_poll(uint8_t level);
 void led_set_kb(uint8_t usb_led);
 void led_set_user(uint8_t usb_led);
 
+#define LAYOUT( \
+    k11, k12, k13, k14, k15, k16,      k17, k18, k19, k1a, k1b, k1c, \
+    k21, k22, k23, k24, k25, k26,      k27, k28, k29, k2a, k2b, k2c, \
+    k31, k32, k33, k34, k35, k36,      k37, k38, k39, k3a, k3b, k3c, \
+    k41, k42, k43, k44, k45, k46,      k47, k48, k49, k4a, k4b, k4c, \
+                             tp1, tp2, tp3 \
+) \
+{ \
+    {k11, k12, k13, k14,   k15,   k16}, \
+    {k21, k22, k23, k24,   k25,   k26}, \
+    {k31, k32, k33, k34,   k35,   k36}, \
+    {k41, k42, k43, k44,   k45,   k46}, \
+    {k17, k18, k19, k1a,   k1b,   k1c}, \
+    {k27, k28, k29, k2a,   k2b,   k2c}, \
+    {k37, k38, k39, k3a,   k3b,   k3c}, \
+    {k47, k48, k49, k4a,   k4b,   k4c}, \
+    {tp1, tp2, tp3, KC_NO, KC_NO, KC_NO}  \
+}
+
 #endif

+ 3 - 2
keyboards/kira75/rules.mk

@@ -52,7 +52,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
 #   change yes to no to disable
 #
 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 = yes        # Console for debug(+400)
 COMMAND_ENABLE = yes        # Commands for debug and configuration
@@ -60,7 +60,8 @@ COMMAND_ENABLE = yes        # Commands for debug and configuration
 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
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
 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

+ 3 - 5
keyboards/planck/keymaps/default/keymap.c

@@ -144,7 +144,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
-
 [_PLOVER] = LAYOUT_planck_grid(
     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,
@@ -164,13 +163,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_ADJUST] = LAYOUT_planck_grid(
-    _______, RESET,   DEBUG,    RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
-    _______, _______, MU_MOD,  AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______,
+    _______, RESET,   DEBUG,   RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,  RGB_VAI, RGB_VAD, KC_DEL ,
+    _______, _______, MU_MOD,  AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK,  DVORAK,  PLOVER,  _______,
     _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  TERM_ON, TERM_OFF, _______, _______, _______,
-    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+    _______, _______, _______, _______, _______, _______, _______, _______, _______,  _______, _______, _______
 )
 
-
 };
 
 #ifdef AUDIO_ENABLE

+ 8 - 5
keyboards/rama/m60_a/config.h

@@ -31,7 +31,7 @@
 #define MATRIX_ROWS 5
 #define MATRIX_COLS 14
 
-// Zeal60 PCB default pin-out
+// M60-A PCB default pin-out
 #define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
 #define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
 #define UNUSED_PINS
@@ -118,11 +118,14 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
 // Backlight config starts after EEPROM version
 #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
-
+// Dynamic keymap starts after backlight config (35+31)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 66
+// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 2 - 2
keyboards/rama/m60_a/rules.mk

@@ -1,8 +1,8 @@
 
 
 # project specific files
-SRC =	../zeal60/zeal60.c \
-		../zeal60/rgb_backlight.c \
+SRC =	keyboards/zeal60/zeal60.c \
+		keyboards/zeal60/rgb_backlight.c \
 		quantum/color.c \
 		drivers/issi/is31fl3731.c \
 		drivers/avr/i2c_master.c

+ 10 - 4
keyboards/rama/m6_a/config.h

@@ -119,11 +119,17 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
+// NOTE: M6-A doesn't use RGB backlight, but we keep this
+// consistent with M6-B which does.
+
 // Backlight config starts after EEPROM version
 #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
-
+// Dynamic keymap starts after backlight config (35+43)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 78
+// Dynamic macro starts after dynamic keymaps (78+(4*6*2)) = (78+48)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 126
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 898
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 1 - 1
keyboards/rama/m6_a/rules.mk

@@ -1,5 +1,5 @@
 # project specific files
-SRC =	../zeal60/zeal60.c
+SRC =	keyboards/zeal60/zeal60.c
 
 # MCU name
 MCU = atmega32u4

+ 7 - 4
keyboards/rama/m6_b/config.h

@@ -150,11 +150,14 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
 // Backlight config starts after EEPROM version
 #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
-
+// Dynamic keymap starts after backlight config (35+43)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 78
+// Dynamic macro starts after dynamic keymaps (78+(4*6*2)) = (78+48)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 126
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 898
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 2 - 2
keyboards/rama/m6_b/rules.mk

@@ -1,6 +1,6 @@
 # project specific files
-SRC =	../zeal60/zeal60.c \
-		../zeal60/rgb_backlight.c \
+SRC =	keyboards/zeal60/zeal60.c \
+		keyboards/zeal60/rgb_backlight.c \
 		quantum/color.c \
 		drivers/issi/is31fl3218.c \
 		drivers/avr/i2c_master.c

+ 6 - 4
keyboards/rama/u80_a/config.h

@@ -198,7 +198,9 @@
 #define EEPROM_VERSION 0x07
 #define EEPROM_VERSION_ADDR 34
 
-// Backlight config starts after EEPROM version
-#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
+// Dynamic keymap starts after EEPROM version
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
+// Dynamic macro starts after dynamic keymaps (35+(4*6*17*2)) = (35+816)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 851
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 173
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 47 - 0
keyboards/s7_elephant/config.h

@@ -0,0 +1,47 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x0007
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    jacky
+#define PRODUCT         S7 Elephant
+#define DESCRIPTION     A high-end 70% custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
+#define MATRIX_COL_PINS { B6, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7, F1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* 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)) \
+)
+
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 2
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP
+#endif

File diff suppressed because it is too large
+ 9 - 0
keyboards/s7_elephant/info.json


+ 1 - 0
keyboards/s7_elephant/keymaps/default/config.h

@@ -0,0 +1 @@
+#define RGBLIGHT_LIMIT_VAL 80

+ 64 - 0
keyboards/s7_elephant/keymaps/default/keymap.c

@@ -0,0 +1,64 @@
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+    _QWERTY,
+    _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |  F1  |   | Esc`~ |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |   Bkspc   |Home |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |  F2  |   | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |    \     | End |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |  F3  |   | Caps    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter      | Ins |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |  F4  |   | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |    RShift   |  U  | Del |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |  F5  |   | Ctrl |  Gui  |  Alt  |              Space                |   FN    |   RCtrl   |  L  | D  |  R  |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+[_QWERTY] = LAYOUT_ansi(
+KC_F1, KC_GESC, 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_F2, 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_F3, 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_HOME,
+KC_F4, KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_UP,   KC_END,
+KC_F5, KC_LCTL, KC_LGUI, KC_LALT,                      KC_SPC,                          MO(_FN), KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* FN
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |Reset |   |  F1   | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | PScr |  ScrLck  |Pause|
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |Prev |Play |Next |     |     |     |     |VolD |Mute |VolU |     |               |PgUp |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |PgDn |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |EEPRST|   |      |       |       |                                   |         |           |     |    |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+[_FN] = LAYOUT_ansi(
+RESET,   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_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______,          KC_PGUP,
+_______, _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN,
+EEP_RST, _______, _______, _______,                        _______,                       _______, _______,          _______, _______, _______
+),
+};
+
+void led_set_user(uint8_t usb_led) {
+    // Turn LEDs On/Off for Caps Lock
+    if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
+        rgblight_enable_noeeprom();
+        rgblight_sethsv_noeeprom(0, 0, 80);
+    } else {
+        rgblight_sethsv_noeeprom(0, 0, 80);
+        rgblight_disable_noeeprom();
+    }
+}

+ 35 - 0
keyboards/s7_elephant/keymaps/default/readme.md

@@ -0,0 +1,35 @@
+# Default keymap for S7 Elephant
+
+**Features**
+
+* LEDs are functioning as Caps-Lock indicators
+
+## QWERTY (Normal) Layer
+```
+,------.   ,-------------------------------------------------------------------------------------------------.
+|  F1  |   | Esc`~ |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |   Bkspc   |Home |
+|------|   |-------------------------------------------------------------------------------------------------|
+|  F2  |   | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |    \     | End |
+|------|   |-------------------------------------------------------------------------------------------------|
+|  F3  |   | Caps    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter      | Ins |
+|------|   |-------------------------------------------------------------------------------------------------|
+|  F4  |   | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |    RShift   |  U  | Del |
+|------|   |-------------------------------------------------------------------------------------------------|
+|  F5  |   | Ctrl |  Gui  |  Alt  |              Space                | FN | RAlt  | RCtrl |  L  |  D  |  R  |
+`------'   `-------------------------------------------------------------------------------------------------'
+```
+
+## FN Layer
+```
+,------.   ,-------------------------------------------------------------------------------------------------.
+|Reset |   |  F1   | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | PScr |  ScrLck  |Pause|
+|------|   |-------------------------------------------------------------------------------------------------|
+|      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+|------|   |-------------------------------------------------------------------------------------------------|
+|      |   |         |Prev |Play |Next |     |     |     |     |VolD |Mute |VolU |     |               |PgUp |
+|------|   |-------------------------------------------------------------------------------------------------|
+|      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |PgDn |
+|------|   |-------------------------------------------------------------------------------------------------|
+|EPRM  |   |      |       |       |                                   |    |       |       |     |     |     |
+`------'   `-------------------------------------------------------------------------------------------------'
+```

+ 17 - 0
keyboards/s7_elephant/readme.md

@@ -0,0 +1,17 @@
+# S7 Elephant
+
+![S7 Elephant](https://i.imgur.com/CaHxKBJ.jpg)
+
+A high-end 70% custom keyboard designed and produced by [jacky](https://geekhack.org/index.php?action=profile;u=63864) from Geekhack.
+
+Keyboard Maintainer: QMK Community  
+Hardware Supported: S7 Elephant  
+Hardware Availability: [The GB has ended with little chance to run again.](https://geekhack.org/index.php?topic=96434.0)  
+
+Make example for this keyboard (after setting up your build environment):
+
+    make s7_elephant:default:dfu
+
+To enter the bootloader, either short the pins on the PCB or the RESET button on the FN layer.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

+ 52 - 0
keyboards/s7_elephant/rules.mk

@@ -0,0 +1,52 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+BOOTLOADER = atmel-dfu
+
+# Build Options
+#   comment out to disable the options.
+#
+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
+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
+RGBLIGHT_ENABLE = yes    # Enable keyboard underlight functionality

+ 1 - 0
keyboards/s7_elephant/s7_elephant.c

@@ -0,0 +1 @@
+#include "s7_elephant.h"

+ 855 - 0
keyboards/s7_elephant/s7_elephant.h

@@ -0,0 +1,855 @@
+#ifndef S7_ELEPHANT_H
+#define S7_ELEPHANT_H
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+/* ANSI
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with small shift
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_small_lshift( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with small backspace
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with small shift and small backspace
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_small_lshift_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ANSI with 1u keys in the bottom row
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |      |      |      |     |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_1u( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411, K412, K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, K412, K413, K414, K415 }  \
+}
+
+/* ANSI with small shift and 1u keys in the bottom row
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |      |      |      |     |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_1u_small_lshift( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411, K412, K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, K412, K413, K414, K415 }  \
+}
+
+/* ANSI with small backspace and 1u keys in the bottom row
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |      |      |      |     |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_1u_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411, K412, K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, K412, K413, K414, K415 }  \
+}
+
+/* ANSI with small shift and small backspace and 1u keys in the bottom row
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |      |      |      |     |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_1u_small_lshift_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411, K412, K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, K412, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ANSI with 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |         |                                       |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_7u( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402,                     K407,                 K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with small shift and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |         |                                       |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_7u_small_lshift( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402,                     K407,                 K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with small backspace and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |         |                                       |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_7u_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402,                     K407,                 K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with small shift and small backspace and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |         |                                       |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_ansi_7u_small_lshift_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402,                     K407,                 K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ANSI with blocker
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |       |      |    |      |     |     |
+ * `------'   `--------------------------------------------------------------------------    -------------------'
+ */
+
+#define LAYOUT_ansi_blocker( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with blocker and small shift
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |       |      |    |      |     |     |
+ * `------'   `--------------------------------------------------------------------------    -------------------'
+ */
+
+#define LAYOUT_ansi_blocker_small_lshift( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with blocker and small backspace
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |       |      |    |      |     |     |
+ * `------'   `--------------------------------------------------------------------------    -------------------'
+ */
+
+#define LAYOUT_ansi_blocker_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with blocker and small shift and small backspace
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |       |      |    |      |     |     |
+ * `------'   `--------------------------------------------------------------------------    -------------------'
+ */
+
+#define LAYOUT_ansi_blocker_small_lshift_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ANSI with blocker and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |         |                                       |         |    |     |     |     |
+ * `------'   `---------------------------------------------------------------------------    ------------------'
+ */
+
+#define LAYOUT_ansi_blocker_7u( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,               K407,                 K410,             K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, ____, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with blocker and small shift and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |         |                                       |         |    |     |     |     |
+ * `------'   `---------------------------------------------------------------------------    ------------------'
+ */
+
+#define LAYOUT_ansi_blocker_7u_small_lshift( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,               K407,                 K410,             K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, ____, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with blocker and small backspace and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |           |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |         |                                       |         |    |     |     |     |
+ * `------'   `---------------------------------------------------------------------------    ------------------'
+ */
+
+#define LAYOUT_ansi_blocker_7u_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,               K407,                 K410,             K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, ____, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, ____, ____, K413, K414, K415 }  \
+}
+
+/* ANSI with blocker and small shift and small backspace and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |               |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |         |                                       |         |    |     |     |     |
+ * `------'   `---------------------------------------------------------------------------    ------------------'
+ */
+
+#define LAYOUT_ansi_blocker_7u_small_lshift_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,               K407,                 K410,             K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, ____, ____, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ISO
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_iso( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ISO with small backspace
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_iso_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ISO with 1u keys in the bottom row
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |      |      |      |     |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_iso_1u( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411, K412, K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, K412, K413, K414, K415 }  \
+}
+
+/* ISO with small backspace and 1u keys in the bottom row
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |      |      |      |     |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_iso_1u_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411, K412, K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, K412, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ISO with 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |         |                                       |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_iso_7u( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402,                     K407,                 K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ISO with small backspace and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |         |                                       |         |         |      |     |     |
+ * `------'   `-------------------------------------------------------------------------------------------------'
+ */
+
+#define LAYOUT_iso_7u_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402,                     K407,                 K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+/* **************************************************************************************************************************************** */
+/* ISO with blocker
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |       |      |    |      |     |     |
+ * `------'   `--------------------------------------------------------------------------    -------------------'
+ */
+
+#define LAYOUT_iso_blocker( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* ISO with blocker and small backspace
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |      |       |       |                                   |       |      |    |      |     |     |
+ * `------'   `--------------------------------------------------------------------------    -------------------'
+ */
+
+#define LAYOUT_iso_blocker_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410, K411,       K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, K411, ____, K413, K414, K415 }  \
+}
+
+/* **************************************************************************************************************************************** */
+/* ISO with blocker and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |           |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |         |                                       |         |    |     |     |     |
+ * `------'   `---------------------------------------------------------------------------    ------------------'
+ */
+
+#define LAYOUT_iso_blocker_7u( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410,             K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, ____, ____, K413, K414, K415 }  \
+}
+
+/* ISO with blocker and small backspace and 7u spacebar
+ * ,------.   ,-------------------------------------------------------------------------------------------------.
+ * |      |   |       |     |     |     |     |     |     |     |     |     |     |     |     |     |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+   |      |   |        |     |     |     |     |     |     |     |     |     |     |     |     |          |     |
+ * |------|   |------------------------------------------------------------------------------------       |-----|
+ * |      |   |         |     |     |     |     |     |     |     |     |     |     |     |       |       |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |     |     |     |     |     |     |     |     |     |     |     |     |             |     |     |
+ * |------|   |-------------------------------------------------------------------------------------------------|
+ * |      |   |        |     |         |                                       |         |    |     |     |     |
+ * `------'   `---------------------------------------------------------------------------    ------------------'
+ */
+
+#define LAYOUT_iso_blocker_7u_small_bspc( \
+K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K013, K214, K015, \
+K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
+K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
+K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
+K400, K401, K402, K403,                   K407,             K410,             K413, K414, K415  \
+) { \
+{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
+{ K400, K401, K402, K403, ____, ____, ____, K407, ____, ____, K410, ____, ____, K413, K414, K415 }  \
+}
+#endif

+ 7 - 5
keyboards/wilba_tech/wt60_a/config.h

@@ -195,10 +195,12 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
-// Backlight config starts after EEPROM version
-#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
+// Dynamic keymap starts after EEPROM version
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
+// Dynamic macro starts after dynamic keymaps (35+(4*5*14*2)) = (35+560)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 595
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 429
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 7 - 5
keyboards/wilba_tech/wt65_a/config.h

@@ -195,10 +195,12 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
-// Backlight config starts after EEPROM version
-#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
+// Dynamic keymap starts after EEPROM version
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
+// Dynamic macro starts after dynamic keymaps (35+(4*5*15*2)) = (35+600)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 635
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 389
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 7 - 5
keyboards/wilba_tech/wt80_a/config.h

@@ -195,10 +195,12 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
-// Backlight config starts after EEPROM version
-#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
+// Dynamic keymap starts after EEPROM version
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
+// Dynamic macro starts after dynamic keymaps (35+(4*6*17*2)) = (35+816)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 851
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 173
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16

+ 85 - 7
keyboards/wilba_tech/wt_main.c

@@ -17,6 +17,7 @@
 #include "quantum.h"
 #include "keyboards/wilba_tech/wt_mono_backlight.h"
 #include "keyboards/zeal60/zeal60_api.h" // Temporary hack
+#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack
 
 #include "raw_hid.h"
 #include "dynamic_keymap.h"
@@ -91,22 +92,57 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
 			dynamic_keymap_reset();
 			break;
 		}
-#endif // DYNAMIC_KEYMAP_ENABLE
-		case id_backlight_config_set_value:
+		case id_dynamic_keymap_macro_get_count:
+		{
+			command_data[0] = dynamic_keymap_macro_get_count();
+			break;
+		}
+		case id_dynamic_keymap_macro_get_buffer_size:
+		{
+			uint16_t size = dynamic_keymap_macro_get_buffer_size();
+			command_data[0] = size >> 8;
+			command_data[1] = size & 0xFF;
+			break;
+		}
+		case id_dynamic_keymap_macro_get_buffer:
+		{
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_macro_get_buffer( offset, size, &command_data[3] );
+			break;
+		}
+		case id_dynamic_keymap_macro_set_buffer:
+		{
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_macro_set_buffer( offset, size, &command_data[3] );
+			break;
+		}
+		case id_dynamic_keymap_macro_reset:
+		{
+			dynamic_keymap_macro_reset();
+			break;
+		}
+		case id_dynamic_keymap_get_layer_count:
 		{
-			//backlight_config_set_value(command_data);
+			command_data[0] = dynamic_keymap_get_layer_count();
 			break;
 		}
-		case id_backlight_config_get_value:
+		case id_dynamic_keymap_get_buffer:
 		{
-			//backlight_config_get_value(command_data);
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_get_buffer( offset, size, &command_data[3] );
 			break;
 		}
-		case id_backlight_config_save:
+		case id_dynamic_keymap_set_buffer:
 		{
-			//backlight_config_save();
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_set_buffer( offset, size, &command_data[3] );
 			break;
 		}
+#endif // DYNAMIC_KEYMAP_ENABLE
 		case id_eeprom_reset:
 		{
 			eeprom_reset();
@@ -151,6 +187,8 @@ void main_init(void)
 #ifdef DYNAMIC_KEYMAP_ENABLE
 		// This resets the keymaps in EEPROM to what is in flash.
 		dynamic_keymap_reset();
+		// This resets the macros in EEPROM to nothing.
+		dynamic_keymap_macro_reset();
 #endif
 		// Save the magic number last, in case saving was interrupted
 		eeprom_set_valid(true);
@@ -196,3 +234,43 @@ void matrix_scan_kb(void)
 	backlight_update_pwm_buffers();
 	matrix_scan_user();
 }
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record)
+{
+	switch(keycode) {
+		case FN_MO13:
+			if (record->event.pressed) {
+				layer_on(1);
+				update_tri_layer(1, 2, 3);
+			} else {
+				layer_off(1);
+				update_tri_layer(1, 2, 3);
+			}
+			return false;
+			break;
+		case FN_MO23:
+			if (record->event.pressed) {
+				layer_on(2);
+				update_tri_layer(1, 2, 3);
+			} else {
+				layer_off(2);
+				update_tri_layer(1, 2, 3);
+			}
+			return false;
+			break;
+	}
+
+#ifdef DYNAMIC_KEYMAP_ENABLE
+	// Handle macros
+	if (record->event.pressed) {
+		if ( keycode >= MACRO00 && keycode <= MACRO15 )
+		{
+			uint8_t id = keycode - MACRO00;
+			dynamic_keymap_macro_send(id);
+			return false;
+		}
+	}
+#endif //DYNAMIC_KEYMAP_ENABLE
+
+	return process_record_user(keycode, record);
+}

+ 7 - 3
keyboards/zeal60/config.h

@@ -115,11 +115,15 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
 // Backlight config starts after EEPROM version
 #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
+// Dynamic keymap starts after backlight config (35+31)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 66
+// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16
 

+ 112 - 19
keyboards/zeal60/rgb_backlight.c

@@ -15,9 +15,9 @@
  */
 #if RGB_BACKLIGHT_ENABLED
 
-#if defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_ZEAL65) || defined (RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B)
+#if defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_ZEAL65) || defined (RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU)
 #else
-#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B
+#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU
 #endif
 
 #include "quantum.h"
@@ -55,18 +55,21 @@ backlight_config g_config = {
 	.brightness = 255,
 	.effect = RGB_BACKLIGHT_EFFECT,
 	.effect_speed = 0,
-	.color_1 = { .h = 0, .s = 255, .v = 255 },
-	.color_2 = { .h = 127, .s = 255, .v = 255 },
-	.caps_lock_indicator = { .color = { .h = 0, .s = 0, .v = 255 }, .index = 255 },
-	.layer_1_indicator = { .color = { .h = 0, .s = 0, .v = 255 }, .index = 255 },
-	.layer_2_indicator = { .color = { .h = 0, .s = 0, .v = 255 }, .index = 255 },
-	.layer_3_indicator = { .color = { .h = 0, .s = 0, .v = 255 }, .index = 255 },
+	.color_1 = { .h = 0, .s = 255 },
+	.color_2 = { .h = 127, .s = 255 },
+	.caps_lock_indicator = { .color = { .h = 0, .s = 0 }, .index = 255 },
+	.layer_1_indicator = { .color = { .h = 0, .s = 0 }, .index = 255 },
+	.layer_2_indicator = { .color = { .h = 0, .s = 0 }, .index = 255 },
+	.layer_3_indicator = { .color = { .h = 0, .s = 0 }, .index = 255 },
 	.alphas_mods = {
 		RGB_BACKLIGHT_ALPHAS_MODS_ROW_0,
 		RGB_BACKLIGHT_ALPHAS_MODS_ROW_1,
 		RGB_BACKLIGHT_ALPHAS_MODS_ROW_2,
 		RGB_BACKLIGHT_ALPHAS_MODS_ROW_3,
-		RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 }
+		RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 },
+#if defined(RGB_BACKLIGHT_M6_B)
+	.custom_color = { { 0, 255 }, { 43, 255 }, { 85, 255 }, { 128, 255 }, { 171, 255 }, { 213, 255 } }
+#endif
 };
 
 bool g_suspend_state = false;
@@ -199,7 +202,7 @@ const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
 };
 const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
 	// LA0..LA17
-	{64,128}, {75,132}, {84,145}, {91,164}, {97,187}, {102,213}, {105,242}, {109,255}, {128,247},
+	{64,128}, {75,132}, {84,145}, {91,164}, {97,187}, {102,213}, {105,242}, {109,255}, {128,243},
 	{61,255}, {67,255}, {72,255}, {77,255}, {82,255}, {86,255}, {90,255}, {93,255}, {96,255},
 	// LB0..LB17
 	{56,255}, {51,255}, {46,255}, {42,255}, {37,255}, {35,255}, {32,255}, {19,255}, {0,255},
@@ -208,8 +211,37 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
 	{184,255}, {179,135}, {170,149}, {163,169}, {157,193}, {153,220}, {255,255}, {167,255}, {165,255},
 	{128,26}, {128,60}, {128,94}, {128,128}, {128,162}, {128,196}, {145,233}, {148,255}, {161,255},
 	// LD0..LD17
-	{0,9}, {0,43}, {0,77}, {0,111}, {0,145}, {255,201}, {224,181}, {230,217}, {235,255},
-	{189,128}, {200,131}, {210,141}, {218,159}, {201,228}, {201,228}, {206,255}, {213,255}, {218,255}
+	{0,9}, {0,43}, {0,77}, {0,111}, {0,145}, {0,201}, {224,181}, {230,217}, {235,255},
+	{189,128}, {200,131}, {210,141}, {218,159}, {255,255}, {201,228}, {206,255}, {213,255}, {218,255}
+};
+#elif defined (RGB_BACKLIGHT_KOYU)
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+	// LA0..LA17
+	{120,16}, {104,16}, {88,16}, {72,16}, {56,16}, {40,16}, {24,16}, {4,16}, {4,32},
+	{128,0}, {112,0}, {96,0}, {80,0}, {64,0}, {48,0}, {32,0}, {16,0}, {0,0},
+	// LB0..LB17
+	{144,0}, {160,0}, {176,0}, {192,0}, {208,0}, {224,0}, {240,0}, {240,16}, {240,32},
+	{136,16}, {152,16}, {168,16}, {184,16}, {200,16}, {220,16}, {240,48}, {240,64}, {224,64},
+	// LC0..LC17
+	{112,64}, {100,48}, {84,48}, {68,48}, {52,48}, {36,48}, {64,60}, {44,60}, {24,64},
+	{108,32}, {92,32}, {76,32}, {60,32}, {44,32}, {28,32}, {255,255}, {10,48}, {4,64},
+	// LD0..LD17
+	{124,32}, {140,32}, {156,32}, {172,32}, {188,32}, {214,32}, {180,48}, {202,48}, {224,48},
+	{116,48}, {132,48}, {148,48}, {164,48}, {255,255}, {160,60}, {180,64}, {208,64}, {255,255}
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+	// LA0..LA17
+	{64,128}, {75,132}, {84,145}, {91,164}, {97,187}, {102,213}, {105,242}, {109,255}, {128,243},
+	{61,255}, {67,255}, {72,255}, {77,255}, {82,255}, {86,255}, {90,255}, {93,255}, {96,255},
+	// LB0..LB17
+	{56,255}, {51,255}, {46,255}, {42,255}, {38,255}, {35,255}, {32,255}, {19,255}, {0,255},
+	{53,132}, {44,145}, {37,164}, {31,187}, {26,213}, {22,249}, {237,255}, {224,255}, {221,255},
+	// LC0..LC17
+	{189,255}, {179,135}, {170,149}, {163,169}, {157,193}, {153,220}, {172,252}, {169,255}, {165,255},
+	{128,26}, {128,60}, {128,94}, {128,128}, {128,162}, {128,196}, {255,255}, {148,255}, {161,255},
+	// LD0..LD17
+	{0,9}, {0,43}, {0,77}, {0,111}, {0,145}, {0,201}, {224,181}, {230,217}, {235,255},
+	{189,128}, {200,131}, {210,141}, {218,159}, {255,255}, {207,238}, {211,255}, {218,255}, {255,255}
 };
 #elif defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_M60_A)
 const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
@@ -248,7 +280,7 @@ const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
 	{0,0}, {0,16}, {16,16}, {16,0}, {32,16}, {32,0}
 };
 const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
-	{0,0}, {0,16}, {16,16}, {16,0}, {32,16}, {32,0}
+	{160,255}, {96,255}, {77,255}, {179,255}, {51,255}, {205,255}
 };
 #endif
 
@@ -318,7 +350,7 @@ void map_led_to_point_polar( uint8_t index, Point *point )
 
 
 #if defined (RGB_BACKLIGHT_ZEAL65)
-// Note: Left spacebar stab is at 4,3 (LC7)
+// Note: Left spacebar stab is at 4,2 (LC7)
 // Right spacebar stab is at 4,9 (D14)
 //
 // A17, A16, A15, A14, A13, A12, A11, A10,  A9,  B0,  B1,  B2,  B3,  B4,  B6
@@ -333,6 +365,22 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
 	{ 36+16, 36+15,  36+5,  36+4,  36+3,  36+2,  36+1,  54+9, 54+10, 54+11, 54+12,  54+6,  54+7,  54+8, 18+15 },
 	{ 36+17,  36+8,  36+7,   255,   255,   255,   255,  36+0,  255,  54+14, 54+15, 54+16, 54+17, 18+17, 18+16 }
 };
+#elif defined(RGB_BACKLIGHT_KOYU)
+// Note: Left spacebar stab is at 4,4 (LC6)
+// Right spacebar stab is at 4,10 (D14)
+//
+// A17, A16, A15, A14, A13, A12, A11, A10,  A9,  B0,  B1,  B2,  B3,  B4,  B6
+//  A7,  A6,  A5,  A4,  A3,  A2,  A1,  A0,  B9, B10, B11, B12, B13, B14,  B7
+//  A8, C14, C13, C12, C11, C10,  C9,  D0,  D1,  D2,  D3,  D4,  D5,  B5,  B8
+// C16, C15,  C5,  C4,  C3,  C2,  C1,  D9, D10, D11, D12,  D6,  D7,  D8, B15
+// C17,  C8,  C7,  C6, ---, ---, ---,  C0, ---, ---, D14, D15, D16, B17, B16
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+	{  0+17,  0+16,  0+15,  0+14,  0+13,  0+12,  0+11,  0+10,   0+9,  18+0,  18+1,  18+2,  18+3,  18+4,  18+6 },
+	{   0+7,   0+6,   0+5,   0+4,   0+3,   0+2,   0+1,   0+0,  18+9, 18+10, 18+11, 18+12, 18+13, 18+14,  18+7 },
+	{   0+8, 36+14, 36+13, 36+12, 36+11, 36+10,  36+9,  54+0,  54+1,  54+2,  54+3,  54+4,  54+5,  18+5,  18+8 },
+	{ 36+16, 36+15,  36+5,  36+4,  36+3,  36+2,  36+1,  54+9, 54+10, 54+11, 54+12,  54+6,  54+7,  54+8, 18+15 },
+	{ 36+17,  36+8,  36+7,  36+6,   255,   255,   255,  36+0,  255,    255, 54+14, 54+15, 54+16, 18+17, 18+16 }
+};
 #elif defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_M60_A)
 // Note: Left spacebar stab is at 4,3 (LC6)
 // Right spacebar stab is at 4,9 (LD13) or 4,10 (LD14)
@@ -781,8 +829,24 @@ void backlight_effect_cycle_radial2(void)
 	}
 }
 
-void backlight_effect_indicators_set_colors( uint8_t index, HSV hsv )
+#if defined(RGB_BACKLIGHT_M6_B)
+void backlight_effect_custom_colors(void)
 {
+	RGB rgb;
+	for ( uint8_t i = 0; i < 6; i++ )
+	{
+		HSV hsv = { .h = g_config.custom_color[i].h, .s = g_config.custom_color[i].s, .v = g_config.brightness };
+		rgb = hsv_to_rgb( hsv );
+		uint8_t led;
+		map_row_column_to_led( 0, i, &led );
+		backlight_set_color( led, rgb.r, rgb.g, rgb.b );
+	}
+}
+#endif
+
+void backlight_effect_indicators_set_colors( uint8_t index, HS color )
+{
+	HSV hsv = { .h = color.h, .s = color.s, .v = g_config.brightness };
 	RGB rgb = hsv_to_rgb( hsv );
 	if ( index == 254 )
 	{
@@ -799,6 +863,9 @@ void backlight_effect_indicators_set_colors( uint8_t index, HSV hsv )
 #if defined (RGB_BACKLIGHT_ZEAL65)
 			backlight_set_color( 36+7, rgb.r, rgb.g, rgb.b ); // LC7
 			backlight_set_color( 54+14, rgb.r, rgb.g, rgb.b ); // LD14
+#elif defined (RGB_BACKLIGHT_KOYU)
+			backlight_set_color( 36+6, rgb.r, rgb.g, rgb.b ); // LC6
+			backlight_set_color( 54+14, rgb.r, rgb.g, rgb.b ); // LD14
 #elif defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_M60_A)
 			backlight_set_color( 36+6, rgb.r, rgb.g, rgb.b ); // LC6
 			backlight_set_color( 54+13, rgb.r, rgb.g, rgb.b ); // LD13
@@ -911,7 +978,11 @@ ISR(TIMER3_COMPA_vect)
 			backlight_effect_solid_color();
 			break;
 		case 2:
+#if defined(RGB_BACKLIGHT_M6_B)
+			backlight_effect_custom_colors();
+#else
 			backlight_effect_alphas_mods();
+#endif
 			break;
 		case 3:
 			backlight_effect_gradient_up_down();
@@ -989,18 +1060,16 @@ void backlight_get_indicator_row_col( uint8_t index, uint8_t *row, uint8_t *colu
 }
 
 // Some helpers for setting/getting HSV
-void _set_color( HSV *color, uint8_t *data )
+void _set_color( HS *color, uint8_t *data )
 {
 	color->h = data[0];
 	color->s = data[1];
-	color->v = data[2];
 }
 
-void _get_color( HSV *color, uint8_t *data )
+void _get_color( HS *color, uint8_t *data )
 {
 	data[0] = color->h;
 	data[1] = color->s;
-	data[2] = color->v;
 }
 
 void backlight_config_set_value( uint8_t *data )
@@ -1132,6 +1201,16 @@ void backlight_config_set_value( uint8_t *data )
 				g_config.alphas_mods[i] = ( *(value_data+i*2) << 8 ) | ( *(value_data+i*2+1) );
 			}
 		}
+#if defined(RGB_BACKLIGHT_M6_B)
+		case id_custom_color:
+		{
+			uint8_t index = value_data[0];
+			if ( index >= 0 && index <= 6 )
+			{
+				_set_color( &(g_config.custom_color[index]), &(value_data[1]) );
+			}
+		}
+#endif
 	}
 
 	if ( reinitialize )
@@ -1259,6 +1338,16 @@ void backlight_config_get_value( uint8_t *data )
 				*(value_data+i*2+1)	= g_config.alphas_mods[i] & 0xFF;
 			}
 		}
+#if defined(RGB_BACKLIGHT_M6_B)
+		case id_custom_color:
+		{
+			uint8_t index = value_data[0];
+			if ( index >= 0 && index <= 6 )
+			{
+				_get_color( &(g_config.custom_color[index]), &(value_data[1]) );
+			}
+		}
+#endif
 	}
 }
 
@@ -1301,6 +1390,10 @@ void backlight_init_drivers(void)
 		bool enabled = !( ( index == 18+5 && !g_config.use_split_backspace ) || // LB5
 						  ( index == 36+6 ) || // LC6
 						  ( index == 54+13 ) ); // LD13
+#elif defined (RGB_BACKLIGHT_KOYU)
+		bool enabled = !( ( index == 36+15 ) || // LC15
+						  ( index == 54+13 ) || // LD13
+						  ( index == 54+17 ) ); // LD17
 #elif defined (RGB_BACKLIGHT_M60_A)
 		bool enabled = !(
 		// LB6 LB7 LB8 LB15 LB16 LB17 not present on M60-A

+ 17 - 8
keyboards/zeal60/rgb_backlight.h

@@ -25,9 +25,15 @@
 
 #include "quantum/color.h"
 
+typedef struct PACKED
+{
+	uint8_t h;
+	uint8_t s;
+} HS;
+
 typedef struct
 {
-	HSV color;
+	HS color;
 	uint8_t index;
 } backlight_config_indicator;
 
@@ -45,14 +51,17 @@ typedef struct
 	uint8_t brightness;                 // 1 byte
 	uint8_t effect;                     // 1 byte
 	uint8_t effect_speed;				// 1 byte
-	HSV color_1;                        // 3 bytes
-	HSV color_2;                        // 3 bytes
-	backlight_config_indicator caps_lock_indicator;	// 4 bytes
-	backlight_config_indicator layer_1_indicator;	// 4 bytes
-	backlight_config_indicator layer_2_indicator;	// 4 bytes
-	backlight_config_indicator layer_3_indicator;	// 4 bytes
+	HS color_1;                         // 2 bytes
+	HS color_2;                         // 2 bytes
+	backlight_config_indicator caps_lock_indicator;	// 3 bytes
+	backlight_config_indicator layer_1_indicator;	// 3 bytes
+	backlight_config_indicator layer_2_indicator;	// 3 bytes
+	backlight_config_indicator layer_3_indicator;	// 3 bytes
 	uint16_t alphas_mods[5];            // 10 bytes
-} backlight_config;                // = 37 bytes
+#if defined(RGB_BACKLIGHT_M6_B)
+	HS custom_color[6];                 // 12 bytes
+#endif
+} backlight_config;                // = 31 bytes (M6-B = 43 bytes)
 
 void backlight_config_load(void);
 void backlight_config_save(void);

+ 2 - 1
keyboards/zeal60/rgb_backlight_api.h

@@ -38,5 +38,6 @@ enum backlight_config_value
 	id_layer_2_indicator_row_col = 0x13,
 	id_layer_3_indicator_color = 0x14,
 	id_layer_3_indicator_row_col = 0x15,
-	id_alphas_mods = 0x16
+	id_alphas_mods = 0x16,
+	id_custom_color = 0x17
 };

+ 65 - 23
keyboards/zeal60/zeal60.c

@@ -94,6 +94,56 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
 			dynamic_keymap_reset();
 			break;
 		}
+		case id_dynamic_keymap_macro_get_count:
+		{
+			command_data[0] = dynamic_keymap_macro_get_count();
+			break;
+		}
+		case id_dynamic_keymap_macro_get_buffer_size:
+		{
+			uint16_t size = dynamic_keymap_macro_get_buffer_size();
+			command_data[0] = size >> 8;
+			command_data[1] = size & 0xFF;
+			break;
+		}
+		case id_dynamic_keymap_macro_get_buffer:
+		{
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_macro_get_buffer( offset, size, &command_data[3] );
+			break;
+		}
+		case id_dynamic_keymap_macro_set_buffer:
+		{
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_macro_set_buffer( offset, size, &command_data[3] );
+			break;
+		}
+		case id_dynamic_keymap_macro_reset:
+		{
+			dynamic_keymap_macro_reset();
+			break;
+		}
+		case id_dynamic_keymap_get_layer_count:
+		{
+			command_data[0] = dynamic_keymap_get_layer_count();
+			break;
+		}
+		case id_dynamic_keymap_get_buffer:
+		{
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_get_buffer( offset, size, &command_data[3] );
+			break;
+		}
+		case id_dynamic_keymap_set_buffer:
+		{
+			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
+			uint16_t size = command_data[2]; // size <= 28
+			dynamic_keymap_set_buffer( offset, size, &command_data[3] );
+			break;
+		}
 #endif // DYNAMIC_KEYMAP_ENABLE
 #if RGB_BACKLIGHT_ENABLED
 		case id_backlight_config_set_value:
@@ -160,6 +210,8 @@ void main_init(void)
 #ifdef DYNAMIC_KEYMAP_ENABLE
 		// This resets the keymaps in EEPROM to what is in flash.
 		dynamic_keymap_reset();
+		// This resets the macros in EEPROM to nothing.
+		dynamic_keymap_macro_reset();
 #endif
 		// Save the magic number last, in case saving was interrupted
 		eeprom_set_valid(true);
@@ -238,7 +290,19 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record)
 			return false;
 			break;
 	}
-	
+
+#ifdef DYNAMIC_KEYMAP_ENABLE
+	// Handle macros
+	if (record->event.pressed) {
+		if ( keycode >= MACRO00 && keycode <= MACRO15 )
+		{
+			uint8_t id = keycode - MACRO00;
+			dynamic_keymap_macro_send(id);
+			return false;
+		}
+	}
+#endif //DYNAMIC_KEYMAP_ENABLE
+
 	return process_record_user(keycode, record);
 }
 
@@ -263,28 +327,6 @@ uint16_t keymap_function_id_to_action( uint16_t function_id )
 		}
 	}
 
-#if USE_KEYMAPS_IN_EEPROM
-
-#if 0
-	// This is how to implement actions stored in EEPROM.
-	// Not yet implemented. Not sure if it's worth the trouble
-	// before we have a nice GUI for keymap editing.
-	if ( eeprom_is_valid() &&
-		 function_id < 32 ) // TODO: replace magic number
-	{
-		uint16_t action = keymap_action_load(function_id);
-
-		// If action is not "empty", return it, otherwise
-		// drop down to return the one in flash
-		if ( action != 0x0000 ) // TODO: replace magic number
-		{
-			return action;
-		}
-	}
-#endif
-
-#endif // USE_KEYMAPS_IN_EEPROM
-
 	return pgm_read_word(&fn_actions[function_id]);
 }
 

+ 9 - 1
keyboards/zeal60/zeal60_api.h

@@ -15,7 +15,7 @@
  */
 #pragma once
 
-#define PROTOCOL_VERSION 0x0007
+#define PROTOCOL_VERSION 0x0008
 
 enum zeal60_command_id
 {
@@ -30,6 +30,14 @@ enum zeal60_command_id
 	id_backlight_config_save,
 	id_eeprom_reset,
 	id_bootloader_jump,
+	id_dynamic_keymap_macro_get_count,
+	id_dynamic_keymap_macro_get_buffer_size,
+	id_dynamic_keymap_macro_get_buffer,
+	id_dynamic_keymap_macro_set_buffer,
+	id_dynamic_keymap_macro_reset,
+	id_dynamic_keymap_get_layer_count,
+	id_dynamic_keymap_get_buffer,
+	id_dynamic_keymap_set_buffer,
 	id_unhandled = 0xFF,
 };
 

+ 17 - 1
keyboards/zeal60/zeal60_keycodes.h

@@ -22,7 +22,23 @@
 // Backlight keycodes are in range 0x5F00-0x5F0F
 enum zeal60_keycodes {
 	FN_MO13 = 0x5F10,
-	FN_MO23
+	FN_MO23,
+	MACRO00,
+	MACRO01,
+	MACRO02,
+	MACRO03,
+	MACRO04,
+	MACRO05,
+	MACRO06,
+	MACRO07,
+	MACRO08,
+	MACRO09,
+	MACRO10,
+	MACRO11,
+	MACRO12,
+	MACRO13,
+	MACRO14,
+	MACRO15,
 };
 
 // Zeal60 specific "action functions"

+ 7 - 3
keyboards/zeal65/config.h

@@ -115,11 +115,15 @@
 // Bump this every time we change what we store
 // This will automatically reset the EEPROM with defaults
 // and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x07
+#define EEPROM_VERSION 0x08
 #define EEPROM_VERSION_ADDR 34
 
 // Backlight config starts after EEPROM version
 #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
-// Dynamic keymap starts after backlight config (35+37)
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 72
+// Dynamic keymap starts after backlight config (35+31)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 66
+// Dynamic macro starts after dynamic keymaps (66+(4*5*15*2)) = (66+600)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 666
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 358
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16
 

+ 2 - 2
keyboards/zeal65/rules.mk

@@ -1,8 +1,8 @@
 
 
 # project specific files
-SRC =	../zeal60/zeal60.c \
-		../zeal60/rgb_backlight.c \
+SRC =	keyboards/zeal60/zeal60.c \
+		keyboards/zeal60/rgb_backlight.c \
 		quantum/color.c \
 		drivers/issi/is31fl3731.c \
 		drivers/avr/i2c_master.c

+ 21 - 0
layouts/default/60_ansi_tsangan_split_bs_rshift/default_60_ansi_tsangan_split_bs_rshift/keymap.c

@@ -0,0 +1,21 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+    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_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_RSFT,
+    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                                      KC_RALT, KC_RGUI, KC_RCTL
+  )
+};
+
+// 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) {
+
+};

+ 5 - 0
layouts/default/60_ansi_tsangan_split_bs_rshift/layout.json

@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:1.75},"",{w:1},""],
+[{w:1.5},"",{w:1},"",{w:1.5},"",{w:7},"",{w:1.5},"",{w:1},"",{w:1.5},""]

+ 3 - 0
layouts/default/60_ansi_tsangan_split_bs_rshift/readme.md

@@ -0,0 +1,3 @@
+# 60_ansi_tsangan_split_bs_rshift
+
+    LAYOUT_60_ansi_tsangan_split_bs_rshift

+ 146 - 1
quantum/dynamic_keymap.c

@@ -18,7 +18,7 @@
 #include "keymap.h" // to get keymaps[][][]
 #include "tmk_core/common/eeprom.h"
 #include "progmem.h" // to read default from flash
-
+#include "quantum.h" // for send_string()
 #include "dynamic_keymap.h"
 
 #ifdef DYNAMIC_KEYMAP_ENABLE
@@ -31,6 +31,23 @@
 #error DYNAMIC_KEYMAP_LAYER_COUNT not defined
 #endif
 
+#ifndef DYNAMIC_KEYMAP_MACRO_COUNT
+#error DYNAMIC_KEYMAP_MACRO_COUNT not defined
+#endif
+
+#ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR
+#error DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR not defined
+#endif
+
+#ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE
+#error DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE not defined
+#endif
+
+uint8_t dynamic_keymap_get_layer_count(void)
+{
+	return DYNAMIC_KEYMAP_LAYER_COUNT;
+}
+
 void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column)
 {
 	// TODO: optimize this with some left shifts
@@ -69,6 +86,36 @@ void dynamic_keymap_reset(void)
 	}
 }
 
+void dynamic_keymap_get_buffer( uint16_t offset, uint16_t size, uint8_t *data )
+{
+	uint16_t dynamic_keymap_eeprom_size = DYNAMIC_KEYMAP_LAYER_COUNT * MATRIX_ROWS * MATRIX_COLS * 2;
+	void *source = (void*)(DYNAMIC_KEYMAP_EEPROM_ADDR+offset);
+	uint8_t *target = data;
+	for ( uint16_t i = 0; i < size; i++ ) {
+		if ( offset + i < dynamic_keymap_eeprom_size ) {
+			*target = eeprom_read_byte(source);
+		} else {
+			*target = 0x00;
+		}
+		source++;
+		target++;
+	}
+}
+
+void dynamic_keymap_set_buffer( uint16_t offset, uint16_t size, uint8_t *data )
+{
+	uint16_t dynamic_keymap_eeprom_size = DYNAMIC_KEYMAP_LAYER_COUNT * MATRIX_ROWS * MATRIX_COLS * 2;
+	void *target = (void*)(DYNAMIC_KEYMAP_EEPROM_ADDR+offset);
+	uint8_t *source = data;
+	for ( uint16_t i = 0; i < size; i++ ) {
+		if ( offset + i < dynamic_keymap_eeprom_size ) {
+			eeprom_update_byte(target, *source);
+		}
+		source++;
+		target++;
+	}
+}
+
 // This overrides the one in quantum/keymap_common.c
 uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
 {
@@ -81,5 +128,103 @@ uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
 	}
 }
 
+
+
+uint8_t dynamic_keymap_macro_get_count(void)
+{
+	return DYNAMIC_KEYMAP_MACRO_COUNT;
+}
+
+uint16_t dynamic_keymap_macro_get_buffer_size(void)
+{
+	return DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE;
+}
+
+void dynamic_keymap_macro_get_buffer( uint16_t offset, uint16_t size, uint8_t *data )
+{
+	void *source = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR+offset);
+	uint8_t *target = data;
+	for ( uint16_t i = 0; i < size; i++ ) {
+		if ( offset + i < DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE ) {
+			*target = eeprom_read_byte(source);
+		} else {
+			*target = 0x00;
+		}
+		source++;
+		target++;
+	}
+}
+
+void dynamic_keymap_macro_set_buffer( uint16_t offset, uint16_t size, uint8_t *data )
+{
+	void *target = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR+offset);
+	uint8_t *source = data;
+	for ( uint16_t i = 0; i < size; i++ ) {
+		if ( offset + i < DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE ) {
+			eeprom_update_byte(target, *source);
+		}
+		source++;
+		target++;
+	}
+}
+
+void dynamic_keymap_macro_reset(void)
+{
+	void *p = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR);
+	void *end = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR+DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE);
+	while ( p != end ) {
+		eeprom_update_byte(p, 0);
+		++p;
+	}
+}
+
+void dynamic_keymap_macro_send( uint8_t id )
+{
+	if ( id >= DYNAMIC_KEYMAP_MACRO_COUNT )	{
+		return;
+	}
+
+	// Check the last byte of the buffer.
+	// If it's not zero, then we are in the middle
+	// of buffer writing, possibly an aborted buffer
+	// write. So do nothing.
+	void *p = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR+DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE-1);
+	if ( eeprom_read_byte(p) != 0 )	{
+		return;
+	}
+
+	// Skip N null characters
+	// p will then point to the Nth macro
+	p = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR);
+	void *end = (void*)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR+DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE);
+	while ( id > 0 ) {
+		// If we are past the end of the buffer, then the buffer
+		// contents are garbage, i.e. there were not DYNAMIC_KEYMAP_MACRO_COUNT
+		// nulls in the buffer.
+		if ( p == end ) {
+			return;
+		}
+		if ( eeprom_read_byte(p) == 0 ) {
+			--id;
+		}
+		++p;
+	}
+
+	// Send the macro string one char at a time
+	// by making temporary 1 char strings
+	char data[2] = { 0, 0 };
+	// We already checked there was a null at the end of
+	// the buffer, so this cannot go past the end
+	while ( 1 ) {
+		data[0] = eeprom_read_byte(p);
+		// Stop at the null terminator of this macro string
+		if ( data[0] == 0 ) {
+			break;
+		}
+		send_string(data);
+		++p;
+	}
+}
+
 #endif // DYNAMIC_KEYMAP_ENABLE
 

+ 35 - 0
quantum/dynamic_keymap.h

@@ -18,11 +18,46 @@
 #include <stdint.h>
 #include <stdbool.h>
 
+uint8_t dynamic_keymap_get_layer_count(void);
 void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column);
 uint16_t dynamic_keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t column);
 void dynamic_keymap_set_keycode(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode);
 void dynamic_keymap_reset(void);
+// These get/set the keycodes as stored in the EEPROM buffer
+// Data is big-endian 16-bit values (the keycodes)
+// Order is by layer/row/column
+// Thus offset 0 = 0,0,0, offset MATRIX_COLS*2 = 0,1,0, offset MATRIX_ROWS*MATRIX_COLS*2 = 1,0,0
+// Note the *2, because offset is in bytes and keycodes are two bytes
+// This is only really useful for host applications that want to get a whole keymap fast,
+// by reading 14 keycodes (28 bytes) at a time, reducing the number of raw HID transfers by
+// a factor of 14.
+void dynamic_keymap_get_buffer( uint16_t offset, uint16_t size, uint8_t *data );
+void dynamic_keymap_set_buffer( uint16_t offset, uint16_t size, uint8_t *data );
 
 // This overrides the one in quantum/keymap_common.c
 // uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
 
+
+
+// Note regarding dynamic_keymap_macro_set_buffer():
+// The last byte of the buffer is used as a valid flag,
+// so macro sending is disabled during writing a new buffer,
+// should it happen during, or after an interrupted transfer.
+//
+// Users writing to the buffer must first set the last byte of the buffer
+// to non-zero (i.e. 0xFF). After (or during) the final write, set the
+// last byte of the buffer to zero.
+//
+// Since the contents of the buffer must be a list of null terminated
+// strings, the last byte must be a null when at maximum capacity,
+// and it not being null means the buffer can be considered in an
+// invalid state.
+
+uint8_t dynamic_keymap_macro_get_count(void);
+uint16_t dynamic_keymap_macro_get_buffer_size(void);
+void dynamic_keymap_macro_get_buffer( uint16_t offset, uint16_t size, uint8_t *data );
+void dynamic_keymap_macro_set_buffer( uint16_t offset, uint16_t size, uint8_t *data );
+void dynamic_keymap_macro_reset(void);
+
+void dynamic_keymap_macro_send( uint8_t id );
+

Some files were not shown because too many files changed in this diff