Browse Source

Merge remote-tracking branch 'origin/develop' into xap

Drashna Jael're 2 years ago
parent
commit
e69909cc53
100 changed files with 4392 additions and 504 deletions
  1. 4 0
      .github/labeler.yml
  2. 1 0
      .gitignore
  3. 4 0
      data/mappings/info_config.hjson
  4. 1 0
      data/mappings/info_rules.hjson
  5. 13 1
      data/schemas/keyboard.jsonschema
  6. 1 0
      docs/feature_backlight.md
  7. 3 3
      docs/feature_rgblight.md
  8. 7 0
      docs/reference_info_json.md
  9. 4 4
      drivers/led/apa102.c
  10. 1 1
      drivers/led/apa102.h
  11. 16 16
      drivers/led/issi/is31fl3218.c
  12. 1 1
      drivers/ws2812.h
  13. 1 1
      keyboards/1k/keymaps/default/rgblite.h
  14. 1 1
      keyboards/1k/keymaps/media/rgblite.h
  15. 22 0
      keyboards/1upkeyboards/1upsuper16v3/config.h
  16. 164 0
      keyboards/1upkeyboards/1upsuper16v3/info.json
  17. 39 0
      keyboards/1upkeyboards/1upsuper16v3/keymaps/default/keymap.c
  18. 1 0
      keyboards/1upkeyboards/1upsuper16v3/keymaps/default/rules.mk
  19. 39 0
      keyboards/1upkeyboards/1upsuper16v3/keymaps/via/keymap.c
  20. 4 0
      keyboards/1upkeyboards/1upsuper16v3/keymaps/via/rules.mk
  21. 22 0
      keyboards/1upkeyboards/1upsuper16v3/readme.md
  22. 0 0
      keyboards/1upkeyboards/1upsuper16v3/rules.mk
  23. 1 1
      keyboards/1upkeyboards/super16/keymaps/15game/keymap.c
  24. 4 4
      keyboards/25keys/zinc/keymaps/ginjake/keymap.c
  25. 4 1
      keyboards/aeboards/ext65/rev1/info.json
  26. 2 18
      keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c
  27. 2 18
      keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c
  28. 4 1
      keyboards/aeboards/ext65/rev2/info.json
  29. 2 18
      keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c
  30. 2 18
      keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c
  31. 4 1
      keyboards/aeboards/ext65/rev3/info.json
  32. 2 18
      keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c
  33. 2 18
      keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c
  34. 80 74
      keyboards/ah/haven80/hotswap/info.json
  35. 1 1
      keyboards/ah/haven80/keymaps/default/keymap.c
  36. 1 1
      keyboards/ah/haven80/keymaps/via/keymap.c
  37. 381 78
      keyboards/ah/haven80/solder/info.json
  38. 4 1
      keyboards/anavi/macropad12/info.json
  39. 1 1
      keyboards/anavi/macropad12/keymaps/default/keymap.c
  40. 0 1
      keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c
  41. 430 2
      keyboards/cannonkeys/bastion60/info.json
  42. 24 0
      keyboards/cannonkeys/bastion60/matrix_diagram.md
  43. 618 1
      keyboards/cannonkeys/bastion65/info.json
  44. 2 2
      keyboards/cannonkeys/bastion65/keymaps/default/keymap.c
  45. 2 2
      keyboards/cannonkeys/bastion65/keymaps/via/keymap.c
  46. 27 0
      keyboards/cannonkeys/bastion65/matrix_diagram.md
  47. 729 2
      keyboards/cannonkeys/bastion75/info.json
  48. 2 2
      keyboards/cannonkeys/bastion75/keymaps/default/keymap.c
  49. 2 2
      keyboards/cannonkeys/bastion75/keymaps/via/keymap.c
  50. 27 0
      keyboards/cannonkeys/bastion75/matrix_diagram.md
  51. 1302 16
      keyboards/cannonkeys/bastiontkl/info.json
  52. 27 0
      keyboards/cannonkeys/bastiontkl/matrix_diagram.md
  53. 4 4
      keyboards/chosfox/cf81/info.json
  54. 3 3
      keyboards/clueboard/66/keymaps/magicmonty/keymap.c
  55. 6 2
      keyboards/crimsonkeyboards/resume1800/info.json
  56. 1 1
      keyboards/crimsonkeyboards/resume1800/keymaps/dee/keymap.c
  57. 1 1
      keyboards/crimsonkeyboards/resume1800/keymaps/default/keymap.c
  58. 1 1
      keyboards/crimsonkeyboards/resume1800/keymaps/iso/keymap.c
  59. 1 1
      keyboards/crimsonkeyboards/resume1800/keymaps/via/keymap.c
  60. 0 9
      keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c
  61. 0 2
      keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c
  62. 2 2
      keyboards/dp60/keymaps/indicator/indicator.c
  63. 1 1
      keyboards/dp60/keymaps/indicator/led_driver.c
  64. 20 0
      keyboards/era/divine/config.h
  65. 21 0
      keyboards/era/divine/halconf.h
  66. 7 2
      keyboards/era/divine/info.json
  67. 22 0
      keyboards/era/divine/mcuconf.h
  68. 2 2
      keyboards/era/divine/readme.md
  69. 0 1
      keyboards/ergodox_ez/keymaps/pvinis/keymap.c
  70. 1 1
      keyboards/ergodox_ez/led_i2c.c
  71. 4 4
      keyboards/ergoslab/keymaps/default/keymap.c
  72. 4 1
      keyboards/ergoslab/rev1/info.json
  73. 6 2
      keyboards/evolv/info.json
  74. 3 19
      keyboards/evolv/keymaps/default/keymap.c
  75. 4 4
      keyboards/evolv/keymaps/gondolindrim/keymap.c
  76. 3 19
      keyboards/evolv/keymaps/iso/keymap.c
  77. 3 19
      keyboards/evolv/keymaps/via/keymap.c
  78. 0 2
      keyboards/gboards/butterstick/sten.h
  79. 0 2
      keyboards/gboards/georgi/sten.h
  80. 10 10
      keyboards/handwired/lovelive9/keymaps/default/keymap.c
  81. 1 1
      keyboards/handwired/promethium/rgbsps.c
  82. 0 1
      keyboards/handwired/traveller/keymaps/default/keymap.c
  83. 7 7
      keyboards/hineybush/hbcp/hbcp.c
  84. 6 6
      keyboards/hineybush/hbcp/keymaps/hiney/keymap.c
  85. 11 11
      keyboards/ibm/model_m/mschwingen/mschwingen.c
  86. 5 1
      keyboards/jolofsor/denial75/info.json
  87. 3 3
      keyboards/jolofsor/denial75/keymaps/default/keymap.c
  88. 3 21
      keyboards/jolofsor/denial75/keymaps/via/keymap.c
  89. 1 1
      keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c
  90. 1 1
      keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c
  91. 2 2
      keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c
  92. 2 2
      keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c
  93. 25 0
      keyboards/kiserdesigns/madeline/config.h
  94. 77 0
      keyboards/kiserdesigns/madeline/info.json
  95. 53 0
      keyboards/kiserdesigns/madeline/keymaps/default/keymap.c
  96. 1 0
      keyboards/kiserdesigns/madeline/keymaps/default/rules.mk
  97. 23 0
      keyboards/kiserdesigns/madeline/readme.md
  98. 1 0
      keyboards/kiserdesigns/madeline/rules.mk
  99. 1 1
      keyboards/kprepublic/bm60hsrgb/rev2/rev2.c
  100. 1 1
      keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c

+ 4 - 0
.github/labeler.yml

@@ -40,3 +40,7 @@ translation:
   - docs/ru-ru/**/*
 CI:
   - .github/**/*
+dd:
+  - data/constants/**/*
+  - data/mappings/**/*
+  - data/schemas/**/*

+ 1 - 0
.gitignore

@@ -96,6 +96,7 @@ secrets.tar
 __pycache__
 .python-version
 *.egg-info
+.venv
 
 # Prerequisites for updating ChibiOS
 /util/fmpp*

+ 4 - 0
data/mappings/info_config.hjson

@@ -49,6 +49,10 @@
     "DYNAMIC_KEYMAP_EEPROM_MAX_ADDR": {"info_key": "dynamic_keymap.eeprom_max_addr", "value_type": "int"},
     "DYNAMIC_KEYMAP_LAYER_COUNT": {"info_key": "dynamic_keymap.layer_count", "value_type": "int"},
 
+    // EEPROM
+    "WEAR_LEVELING_BACKING_SIZE": {"info_key": "eeprom.wear_leveling.backing_size", "value_type": "int", "to_json": false},
+    "WEAR_LEVELING_LOGICAL_SIZE": {"info_key": "eeprom.wear_leveling.logical_size", "value_type": "int", "to_json": false},
+
     // Indicators
     "LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
     "LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},

+ 1 - 0
data/mappings/info_rules.hjson

@@ -42,6 +42,7 @@
     "STENO_ENABLE": {"info_key": "stenography.enabled", "value_type": "bool"},
     "STENO_PROTOCOL": {"info_key": "stenography.protocol"},
     "WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
+    "WEAR_LEVELING_DRIVER": {"info_key": "eeprom.wear_leveling.driver"},
     "WS2812_DRIVER": {"info_key": "ws2812.driver"},
 
     // Items we want flagged in lint

+ 13 - 1
data/schemas/keyboard.jsonschema

@@ -247,7 +247,19 @@
         },
         "eeprom": {
             "properties": {
-                "driver": {"type": "string"}
+                "driver": {"type": "string"},
+                "wear_leveling": {
+                    "type": "object",
+                    "additionalProperties": false,
+                    "properties": {
+                        "driver": {
+                            "type": "string",
+                            "enum": ["custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"]
+                        },
+                        "backing_size": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+                        "logical_size": {"$ref": "qmk.definitions.v1#/unsigned_int"}
+                    }
+                }
             }
         },
         "encoder": {

+ 1 - 0
docs/feature_backlight.md

@@ -39,6 +39,7 @@ Add the following to your `config.h`:
 |`BACKLIGHT_LIMIT_VAL`        |`255`             |The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum.|
 |`BACKLIGHT_DEFAULT_LEVEL`    |`BACKLIGHT_LEVELS`|The default backlight level to use upon clearing the EEPROM                                                      |
 |`BACKLIGHT_DEFAULT_BREATHING`|*Not defined*     |Whether to enable backlight breathing upon clearing the EEPROM                                                   |
+|`BACKLIGHT_PWM_PERIOD`       |2048Hz            |Defaults to `BACKLIGHT_PWM_COUNTER_FREQUENCY / 2048`, which results in a PWM frequency of 2048Hz.                |
 
 Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`.
 

+ 3 - 3
docs/feature_rgblight.md

@@ -370,9 +370,9 @@ If you need to change your RGB lighting in code, for example in a macro to chang
 
 Example:
 ```c
-sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); // led 0
-sethsv(HSV_RED,   (LED_TYPE *)&led[1]); // led 1
-sethsv(HSV_GREEN, (LED_TYPE *)&led[2]); // led 2
+sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); // led 0
+sethsv(HSV_RED,   (rgb_led_t *)&led[1]); // led 1
+sethsv(HSV_GREEN, (rgb_led_t *)&led[2]); // led 2
 rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly.
 ```
 

+ 7 - 0
docs/reference_info_json.md

@@ -202,6 +202,13 @@ Configures the [EEPROM](eeprom_driver.md) driver.
     * `driver`
         * The EEPROM backend to use. Must be one of `custom`, `i2c`, `legacy_stm32_flash`, `spi`, `transient`, `vendor`, `wear_leveling`.
         * Default: `"vendor"`
+    * `wear_leveling`
+        * `driver`
+            * The driver to use. Must be one of `embedded_flash`, `legacy`, `rp2040_flash`, `spi_flash`, `custom`.
+        * `backing_size`
+            * Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
+        * `logical_size`
+            * Number of bytes “exposed” to the rest of QMK and denotes the size of the usable EEPROM.
 
 ## Encoder :id=encoder
 

+ 4 - 4
drivers/led/apa102.c

@@ -61,18 +61,18 @@ void static apa102_end_frame(uint16_t num_leds);
 void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness);
 void static apa102_send_byte(uint8_t byte);
 
-void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) {
-    LED_TYPE *end = start_led + num_leds;
+void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
+    rgb_led_t *end = start_led + num_leds;
 
     apa102_start_frame();
-    for (LED_TYPE *led = start_led; led < end; led++) {
+    for (rgb_led_t *led = start_led; led < end; led++) {
         apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
     }
     apa102_end_frame(num_leds);
 }
 
 // Overwrite the default rgblight_call_driver to use apa102 driver
-void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
+void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
     apa102_setleds(start_led, num_leds);
 }
 

+ 1 - 1
drivers/led/apa102.h

@@ -37,5 +37,5 @@ extern uint8_t apa102_led_brightness;
  *         - Set the data-out pin as output
  *         - Send out the LED data
  */
-void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds);
+void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds);
 void apa102_set_brightness(uint8_t brightness);

+ 16 - 16
drivers/led/issi/is31fl3218.c

@@ -17,17 +17,17 @@
 #include "i2c_master.h"
 
 // This is the full 8-bit address
-#define ISSI_ADDRESS 0b10101000
+#define IS31FL3218_I2C_ADDRESS 0xA8
 
 // These are the register addresses
-#define ISSI_REG_SHUTDOWN 0x00
-#define ISSI_REG_PWM 0x01
-#define ISSI_REG_CONTROL 0x13
-#define ISSI_REG_UPDATE 0x16
-#define ISSI_REG_RESET 0x17
+#define IS31FL3218_REG_SHUTDOWN 0x00
+#define IS31FL3218_REG_PWM 0x01
+#define IS31FL3218_REG_CONTROL 0x13
+#define IS31FL3218_REG_UPDATE 0x16
+#define IS31FL3218_REG_RESET 0x17
 
 // Default timeout if no I2C response
-#define ISSI_TIMEOUT 100
+#define IS31FL3218_I2C_TIMEOUT 100
 
 // Reusable buffer for transfers
 uint8_t g_twi_transfer_buffer[20];
@@ -40,35 +40,35 @@ bool    g_pwm_buffer_update_required = false;
 void is31fl3218_write_register(uint8_t reg, uint8_t data) {
     g_twi_transfer_buffer[0] = reg;
     g_twi_transfer_buffer[1] = data;
-    i2c_transmit(ISSI_ADDRESS, g_twi_transfer_buffer, 2, ISSI_TIMEOUT);
+    i2c_transmit(IS31FL3218_I2C_ADDRESS, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
 }
 
 void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) {
-    g_twi_transfer_buffer[0] = ISSI_REG_PWM;
+    g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM;
     memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18);
 
-    i2c_transmit(ISSI_ADDRESS, g_twi_transfer_buffer, 19, ISSI_TIMEOUT);
+    i2c_transmit(IS31FL3218_I2C_ADDRESS, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
 }
 
 void is31fl3218_init(void) {
     // In case we ever want to reinitialize (?)
-    is31fl3218_write_register(ISSI_REG_RESET, 0x00);
+    is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00);
 
     // Turn off software shutdown
-    is31fl3218_write_register(ISSI_REG_SHUTDOWN, 0x01);
+    is31fl3218_write_register(IS31FL3218_REG_SHUTDOWN, 0x01);
 
     // Set all PWM values to zero
     for (uint8_t i = 0; i < 18; i++) {
-        is31fl3218_write_register(ISSI_REG_PWM + i, 0x00);
+        is31fl3218_write_register(IS31FL3218_REG_PWM + i, 0x00);
     }
 
     // Enable all channels
     for (uint8_t i = 0; i < 3; i++) {
-        is31fl3218_write_register(ISSI_REG_CONTROL + i, 0b00111111);
+        is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, 0b00111111);
     }
 
     // Load PWM registers and LED Control register data
-    is31fl3218_write_register(ISSI_REG_UPDATE, 0x01);
+    is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
 }
 
 void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
@@ -91,7 +91,7 @@ void is31fl3218_update_pwm_buffers(void) {
     if (g_pwm_buffer_update_required) {
         is31fl3218_write_pwm_buffer(g_pwm_buffer);
         // Load PWM registers and LED Control register data
-        is31fl3218_write_register(ISSI_REG_UPDATE, 0x01);
+        is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
     }
     g_pwm_buffer_update_required = false;
 }

+ 1 - 1
drivers/ws2812.h

@@ -73,4 +73,4 @@
  *         - Send out the LED data
  *         - Wait 50us to reset the LEDs
  */
-void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
+void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds);

+ 1 - 1
keyboards/1k/keymaps/default/rgblite.h

@@ -7,7 +7,7 @@
 #include "color.h"
 
 static inline void rgblite_setrgb(RGB rgb) {
-    LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
+    rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
     ws2812_setleds(leds, RGBLED_NUM);
 }
 

+ 1 - 1
keyboards/1k/keymaps/media/rgblite.h

@@ -7,7 +7,7 @@
 #include "color.h"
 
 static inline void rgblite_setrgb(RGB rgb) {
-    LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
+    rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
     ws2812_setleds(leds, RGBLED_NUM);
 }
 

+ 22 - 0
keyboards/1upkeyboards/1upsuper16v3/config.h

@@ -0,0 +1,22 @@
+/* Copyright 2023 ziptyze
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define RGB_MATRIX_LED_COUNT 48
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS

+ 164 - 0
keyboards/1upkeyboards/1upsuper16v3/info.json

@@ -0,0 +1,164 @@
+{
+    "manufacturer": "1upkeyboards",
+    "keyboard_name": "1upsuper16v3",
+    "maintainer": "ziptyze",
+    "bootloader": "rp2040",
+    "dynamic_keymap": {
+        "layer_count": 10
+    },
+    "encoder": {
+        "rotary": [
+            {"pin_a": "GP20", "pin_b": "GP21"},
+            {"pin_a": "GP25", "pin_b": "GP26"},
+            {"pin_a": "GP2", "pin_b": "GP3"},
+            {"pin_a": "GP6", "pin_b": "GP7"}
+        ]
+    },
+    "features": {
+        "bootmagic": true,
+        "command": false,
+        "console": false,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": false,
+        "rgb_matrix": true
+    },
+    "matrix_pins": {
+        "direct": [
+            ["GP23", "GP24", "GP4", "GP5"],
+            ["GP19", "GP27", "GP1", "GP8"],
+            ["GP18", "GP28", "GP0", "GP9"],
+            ["GP17", "GP16", "GP15", "GP11"]
+        ]
+    },
+    "processor": "RP2040",
+    "rgb_matrix": {
+        "animations": {
+            "band_pinwheel_sat": true,
+            "band_pinwheel_val": true,
+            "band_sat": true,
+            "band_spiral_sat": true,
+            "band_spiral_val": true,
+            "band_val": true,
+            "breathing": true,
+            "cycle_all": true,
+            "cycle_left_right": true,
+            "cycle_out_in": true,
+            "cycle_out_in_dual": true,
+            "cycle_pinwheel": true,
+            "cycle_spiral": true,
+            "cycle_up_down": true,
+            "digital_rain": true,
+            "dual_beacon": true,
+            "gradient_left_right": true,
+            "gradient_up_down": true,
+            "hue_breathing": true,
+            "hue_pendulum": true,
+            "hue_wave": true,
+            "jellybean_raindrops": true,
+            "multisplash": true,
+            "pixel_flow": true,
+            "pixel_rain": true,
+            "rainbow_beacon": true,
+            "rainbow_moving_chevron": true,
+            "rainbow_pinwheels": true,
+            "raindrops": true,
+            "solid_multisplash": true,
+            "solid_reactive": true,
+            "solid_reactive_cross": true,
+            "solid_reactive_multicross": true,
+            "solid_reactive_multinexus": true,
+            "solid_reactive_multiwide": true,
+            "solid_reactive_nexus": true,
+            "solid_reactive_simple": true,
+            "solid_reactive_wide": true,
+            "solid_splash": true,
+            "splash": true,
+            "typing_heatmap": true
+        },
+        "driver": "ws2812",
+        "layout": [
+            {"x": 99, "y": 1, "flags": 2},
+            {"x": 70, "y": 1, "flags": 2},
+            {"x": 42, "y": 1, "flags": 2},
+            {"x": 14, "y": 1, "flags": 2},
+            {"x": 4, "y": 4, "flags": 2},
+            {"x": 4, "y": 12, "flags": 2},
+            {"matrix": [0, 0], "x": 28, "y": 8, "flags": 4},
+            {"matrix": [0, 1], "x": 84, "y": 8, "flags": 4},
+            {"x": 4, "y": 20, "flags": 2},
+            {"x": 4, "y": 28, "flags": 2},
+            {"matrix": [1, 0], "x": 28, "y": 24, "flags": 4},
+            {"matrix": [1, 1], "x": 84, "y": 24, "flags": 4},
+            {"x": 4, "y": 36, "flags": 2},
+            {"x": 4, "y": 44, "flags": 2},
+            {"matrix": [2, 0], "x": 28, "y": 40, "flags": 4},
+            {"matrix": [2, 1], "x": 84, "y": 40, "flags": 4},
+            {"x": 4, "y": 52, "flags": 2},
+            {"x": 4, "y": 60, "flags": 2},
+            {"x": 14, "y": 63, "flags": 2},
+            {"matrix": [3, 0], "x": 28, "y": 56, "flags": 4},
+            {"x": 42, "y": 63, "flags": 2},
+            {"x": 70, "y": 63, "flags": 2},
+            {"matrix": [3, 1], "x": 84, "y": 56, "flags": 4},
+            {"x": 99, "y": 63, "flags": 2},
+            {"x": 126, "y": 63, "flags": 2},
+            {"matrix": [3, 2], "x": 140, "y": 56, "flags": 4},
+            {"x": 154, "y": 63, "flags": 2},
+            {"x": 182, "y": 63, "flags": 2},
+            {"matrix": [3, 3], "x": 196, "y": 56, "flags": 4},
+            {"x": 210, "y": 63, "flags": 2},
+            {"x": 220, "y": 60, "flags": 2},
+            {"x": 220, "y": 52, "flags": 2},
+            {"x": 220, "y": 44, "flags": 2},
+            {"matrix": [2, 3], "x": 196, "y": 40, "flags": 4},
+            {"matrix": [2, 2], "x": 140, "y": 40, "flags": 4},
+            {"x": 220, "y": 36, "flags": 2},
+            {"x": 220, "y": 28, "flags": 2},
+            {"matrix": [1, 3], "x": 196, "y": 24, "flags": 4},
+            {"matrix": [1, 2], "x": 140, "y": 24, "flags": 4},
+            {"x": 220, "y": 20, "flags": 2},
+            {"x": 220, "y": 12, "flags": 2},
+            {"matrix": [0, 3], "x": 196, "y": 8, "flags": 4},
+            {"matrix": [0, 2], "x": 140, "y": 8, "flags": 4},
+            {"x": 220, "y": 4, "flags": 2},
+            {"x": 210, "y": 1, "flags": 2},
+            {"x": 182, "y": 1, "flags": 2},
+            {"x": 154, "y": 1, "flags": 2},
+            {"x": 126, "y": 1, "flags": 2}
+        ]
+    },
+    "usb": {
+        "device_version": "1.0.0",
+        "pid": "0x5610",
+        "vid": "0x6F75"
+    },
+    "ws2812": {
+        "driver": "vendor",
+        "pin": "GP29"
+    },
+    "community_layouts": ["ortho_4x4"],
+    "layouts": {
+        "LAYOUT_ortho_4x4": {
+            "layout": [
+                {"label": "00", "matrix": [0, 0], "x": 0, "y": 0},
+                {"label": "01", "matrix": [0, 1], "x": 1, "y": 0},
+                {"label": "02", "matrix": [0, 2], "x": 2, "y": 0},
+                {"label": "03", "matrix": [0, 3], "x": 3, "y": 0},
+                {"label": "10", "matrix": [1, 0], "x": 0, "y": 1},
+                {"label": "11", "matrix": [1, 1], "x": 1, "y": 1},
+                {"label": "12", "matrix": [1, 2], "x": 2, "y": 1},
+                {"label": "13", "matrix": [1, 3], "x": 3, "y": 1},
+                {"label": "20", "matrix": [2, 0], "x": 0, "y": 2},
+                {"label": "21", "matrix": [2, 1], "x": 1, "y": 2},
+                {"label": "22", "matrix": [2, 2], "x": 2, "y": 2},
+                {"label": "23", "matrix": [2, 3], "x": 3, "y": 2},
+                {"label": "30", "matrix": [3, 0], "x": 0, "y": 3},
+                {"label": "31", "matrix": [3, 1], "x": 1, "y": 3},
+                {"label": "32", "matrix": [3, 2], "x": 2, "y": 3},
+                {"label": "33", "matrix": [3, 3], "x": 3, "y": 3}
+            ]
+        }
+    }
+}

+ 39 - 0
keyboards/1upkeyboards/1upsuper16v3/keymaps/default/keymap.c

@@ -0,0 +1,39 @@
+/* Copyright 2023 ziptyze
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ortho_4x4(
+        KC_P7, KC_P8, KC_P9,   KC_PMNS,
+        KC_P4, KC_P5, KC_P6,   KC_PPLS,
+        KC_P1, KC_P2, KC_P3,   KC_PSLS,
+        MO(1), KC_P0, KC_PDOT, KC_PENT
+    ),
+    [1] = LAYOUT_ortho_4x4(
+        RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+        RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+        RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
+    )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+    [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)  },
+    [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif

+ 1 - 0
keyboards/1upkeyboards/1upsuper16v3/keymaps/default/rules.mk

@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes

+ 39 - 0
keyboards/1upkeyboards/1upsuper16v3/keymaps/via/keymap.c

@@ -0,0 +1,39 @@
+/* Copyright 2023 ziptyze
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ortho_4x4(
+        KC_P7, KC_P8, KC_P9,   KC_PMNS,
+        KC_P4, KC_P5, KC_P6,   KC_PPLS,
+        KC_P1, KC_P2, KC_P3,   KC_PSLS,
+        MO(1), KC_P0, KC_PDOT, KC_PENT
+    ),
+    [1] = LAYOUT_ortho_4x4(
+        RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+        RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+        RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
+    )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+    [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)  },
+    [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif

+ 4 - 0
keyboards/1upkeyboards/1upsuper16v3/keymaps/via/rules.mk

@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+
+ENCODER_MAP_ENABLE = yes

+ 22 - 0
keyboards/1upkeyboards/1upsuper16v3/readme.md

@@ -0,0 +1,22 @@
+# 1upSuper16v3
+
+This keyboard is the Super16v3 from 1upkeyboards, a 4x4 macropad with the option for up to four encoders in the top row.  Notable features include in-switch per-key addressable RGB LEDs and thirty two 1mm underglow RGB LEDs; for bright and smooth lighting effects. The Super16v3 utilises an rp2040 microcontroller, wired using direct pins.
+
+* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make 1upkeyboards/1upsuper16v3:default
+
+Flashing example for this keyboard:
+
+    make 1upkeyboards/1upsuper16v3:default:flash
+
+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).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix. For this keyboard it is the top left button
+* **Physical reset button**: Hold the button on the back of the PCB and plug in the keyboard

+ 0 - 0
keyboards/1upkeyboards/1upsuper16v3/rules.mk


+ 1 - 1
keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

@@ -85,7 +85,7 @@ uint8_t remap[16] = {
 void refresh_leds(void) {
     for (uint8_t index = 0; index < 16; ++index) {
         uint8_t tile = tiles[index];
-        setrgb(r[tile], g[tile], b[tile], (LED_TYPE *)&led[remap[index]]);
+        setrgb(r[tile], g[tile], b[tile], (rgb_led_t *)&led[remap[index]]);
     }
     rgblight_set();
 }

+ 4 - 4
keyboards/25keys/zinc/keymaps/ginjake/keymap.c

@@ -341,10 +341,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     //キー毎に時間差で色が変化していく
     if (aqours_next_color_timer_count % NEXT_CHANGE_TARGET_TIME == 0) {
       if (target_col < MATRIX_COLS) {
-        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[target_col]);
-        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[11 - target_col]);
-        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[12 + target_col]);
-        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[23 - target_col]);
+        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[target_col]);
+        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[11 - target_col]);
+        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[12 + target_col]);
+        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[23 - target_col]);
         target_col++;
         rgblight_set();
       }

+ 4 - 1
keyboards/aeboards/ext65/rev1/info.json

@@ -14,8 +14,11 @@
         "cols": ["B2", "B3", "B1", "B0", "F7", "F0", "F1", "F4", "F5", "F6"],
         "rows": ["C6", "C7", "B5", "B6", "D7", "B4", "D4", "D6", "B7", "E6"]
     },
+    "layout_aliases": {
+        "LAYOUT_ext65": "LAYOUT"
+    },
     "layouts": {
-        "LAYOUT_ext65": {
+        "LAYOUT": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [1, 0], "x": 1, "y": 0},

+ 2 - 18
keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
    * `------------------------------------------------------------------------------------------'
    */
-  [0] = LAYOUT_ext65(
+  [0] = LAYOUT(
     KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
     KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
     KC_PPLS, KC_P6  , KC_P5  , KC_P4  , 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_PGUP,
@@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_PENT, KC_PDOT, KC_P0  , KC_P0  , KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,                   KC_LEFT, KC_DOWN, KC_RGHT
   ),
 
-  [1] = LAYOUT_ext65(
+  [1] = LAYOUT(
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
     KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
     KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
     KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [2] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [3] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
   )
 };

+ 2 - 18
keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
    * `------------------------------------------------------------------------------------------'
    */
-  [0] = LAYOUT_ext65(
+  [0] = LAYOUT(
     KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
     KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
     KC_PPLS, KC_P6  , KC_P5  , KC_P4  , 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_PGUP,
@@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_PENT, KC_PDOT, KC_P0  , KC_P0  , KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,                   KC_LEFT, KC_DOWN, KC_RGHT
   ),
 
-  [1] = LAYOUT_ext65(
+  [1] = LAYOUT(
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
     KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
     KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
     KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [2] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [3] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
   )
 };

+ 4 - 1
keyboards/aeboards/ext65/rev2/info.json

@@ -38,8 +38,11 @@
         "cols": ["B14", "B6", "A0", "B1", "B0", "A7", "A6", "A5", "A4", "A3"],
         "rows": ["A10", "A9", "A8", "B7", "A2", "A1", "B12", "B11", "B10", "B2"]
     },
+    "layout_aliases": {
+        "LAYOUT_ext65": "LAYOUT"
+    },
     "layouts": {
-        "LAYOUT_ext65": {
+        "LAYOUT": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [1, 0], "x": 1, "y": 0},

+ 2 - 18
keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
    * `------------------------------------------------------------------------------------------'
    */
-  [0] = LAYOUT_ext65(
+  [0] = LAYOUT(
     KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
     KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
     KC_PPLS, KC_P6  , KC_P5  , KC_P4  , 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_PGUP,
@@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_PENT, KC_PDOT, KC_P0  , KC_P0  , KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,                   KC_LEFT, KC_DOWN, KC_RGHT
   ),
 
-  [1] = LAYOUT_ext65(
+  [1] = LAYOUT(
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
     KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
     KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
     KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [2] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [3] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
   )
 };

+ 2 - 18
keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
    * `------------------------------------------------------------------------------------------'
    */
-  [0] = LAYOUT_ext65(
+  [0] = LAYOUT(
     KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
     KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
     KC_PPLS, KC_P6  , KC_P5  , KC_P4  , 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_PGUP,
@@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_PENT, KC_PDOT, KC_P0  , KC_P0  , KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,                   KC_LEFT, KC_DOWN, KC_RGHT
   ),
 
-  [1] = LAYOUT_ext65(
+  [1] = LAYOUT(
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
     KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
     KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
     KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [2] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [3] = LAYOUT_ext65(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
   )
 };

+ 4 - 1
keyboards/aeboards/ext65/rev3/info.json

@@ -19,8 +19,11 @@
         "cols": ["F6", "F7", "B1", "B3", "B2", "D5", "D3", "D2", "D1", "D0"],
         "rows": ["B5", "B6", "C6", "C7", "E6", "B0", "B4", "D7", "D4", "D6"]
     },
+    "layout_aliases": {
+        "LAYOUT_ext65_hotswap": "LAYOUT"
+    },
     "layouts": {
-        "LAYOUT_ext65_hotswap": {
+        "LAYOUT": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [1, 0], "x": 1, "y": 0},

+ 2 - 18
keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
    * `------------------------------------------------------------------------------------------'
    */
-  [0] = LAYOUT_ext65_hotswap(
+  [0] = LAYOUT(
     KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSPC, KC_PSCR,
     KC_PPLS, KC_P9  , KC_P8  , KC_P7  , 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_P6  , KC_P5  , KC_P4  , 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_PGUP,
@@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              KC_PDOT, KC_P0  ,          KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT
   ),
 
-  [1] = LAYOUT_ext65_hotswap(
+  [1] = LAYOUT(
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
     KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR,
              RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          DB_TOGG,
     KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
              KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [2] = LAYOUT_ext65_hotswap(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [3] = LAYOUT_ext65_hotswap(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
   )
 };

+ 2 - 18
keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
    * `------------------------------------------------------------------------------------------'
    */
-  [0] = LAYOUT_ext65_hotswap(
+  [0] = LAYOUT(
     KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSPC, KC_PSCR,
     KC_PPLS, KC_P9  , KC_P8  , KC_P7  , 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_P6  , KC_P5  , KC_P4  , 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_PGUP,
@@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              KC_PDOT, KC_P0  ,          KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT
   ),
 
-  [1] = LAYOUT_ext65_hotswap(
+  [1] = LAYOUT(
     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
     KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR,
              RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          DB_TOGG,
     KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
              KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [2] = LAYOUT_ext65_hotswap(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-
-  [3] = LAYOUT_ext65_hotswap(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
-             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
   )
 };

+ 80 - 74
keyboards/ah/haven80/hotswap/info.json

@@ -9,8 +9,14 @@
         "rows": ["F0", "F1", "F4", "F5", "F6", "B1", "B2", "B3", "D3", "D5", "F7"],
         "cols": ["D0", "D1", "D2", "B0", "D4", "B4", "D6", "D7", "B5"]
     },
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_tkl_f13_ansi_tsangan"
+    },
+    "community_layouts": [
+        "tkl_f13_ansi_tsangan"
+    ],
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_tkl_f13_ansi_tsangan": {
             "layout": [
               { "label": "Esc",             "matrix":[0,0],"x": 0, "y": 0 },
               { "label": "F1",              "matrix":[0,1],"x": 1.25, "y": 0 },
@@ -21,90 +27,90 @@
               { "label": "F6",              "matrix":[0,6],"x": 6.5, "y": 0 },
               { "label": "F7",              "matrix":[0,7],"x": 7.5, "y": 0 },
               { "label": "F8",              "matrix":[5,8],"x": 8.5, "y": 0 },
-              { "label": "F9",              "matrix":[5,7],"x": 9.5, "y": 0 },
+              { "label": "F9",              "matrix":[5,7],"x": 9.75, "y": 0 },
               { "label": "F10",             "matrix":[5,6],"x": 10.75, "y": 0 },
               { "label": "F11",             "matrix":[5,5],"x": 11.75, "y": 0 },
               { "label": "F12",             "matrix":[5,4],"x": 12.75, "y": 0 },
-              { "label": "F13",             "matrix":[5,3],"x": 13.75, "y": 0 },
+              { "label": "F13",             "matrix":[5,3],"x": 14, "y": 0 },
               { "label": "Prtsc",           "matrix":[5,2],"x": 15.25, "y": 0 },
               { "label": "Scrlk",           "matrix":[5,1],"x": 16.25, "y": 0 },
               { "label": "Pause",           "matrix":[5,0],"x": 17.25, "y": 0 },
 
-              { "label": "~",              "matrix":[1,0],"x": 0, "y": 1.5 },
-              { "label": "1",               "matrix":[1,1],"x": 1, "y": 1.5 },
-              { "label": "2",               "matrix":[1,2],"x": 2, "y": 1.5 },
-              { "label": "3",               "matrix":[1,3],"x": 3, "y": 1.5 },
-              { "label": "4",               "matrix":[1,4],"x": 4, "y": 1.5 },
-              { "label": "5",               "matrix":[1,5],"x": 5, "y": 1.5 },
-              { "label": "6",               "matrix":[1,6],"x": 6, "y": 1.5 },
-              { "label": "7",               "matrix":[1,7],"x": 7, "y": 1.5 },
-              { "label": "8",               "matrix":[1,8],"x": 8, "y": 1.5 },
-              { "label": "9",               "matrix":[6,8],"x": 9, "y": 1.5 },
-              { "label": "0",               "matrix":[6,7],"x": 10, "y": 1.5 },
-              { "label": "-",               "matrix":[6,6],"x": 11, "y": 1.5 },
-              { "label": "=",               "matrix":[6,5],"x": 12, "y": 1.5 },
-              { "label": "backspace",       "matrix":[6,4],"x": 13, "y": 1.5, "w": 2 },
-              { "label": "insert",          "matrix":[6,2],"x": 15.25, "y": 1.5 },
-              { "label": "home",            "matrix":[6,1],"x": 16.25, "y": 1.5 },
-              { "label": "pg up",           "matrix":[6,0],"x": 17.25, "y": 1.5 },
+              { "label": "~",              "matrix":[1,0],"x": 0, "y": 1.25 },
+              { "label": "1",               "matrix":[1,1],"x": 1, "y": 1.25 },
+              { "label": "2",               "matrix":[1,2],"x": 2, "y": 1.25 },
+              { "label": "3",               "matrix":[1,3],"x": 3, "y": 1.25 },
+              { "label": "4",               "matrix":[1,4],"x": 4, "y": 1.25 },
+              { "label": "5",               "matrix":[1,5],"x": 5, "y": 1.25 },
+              { "label": "6",               "matrix":[1,6],"x": 6, "y": 1.25 },
+              { "label": "7",               "matrix":[1,7],"x": 7, "y": 1.25 },
+              { "label": "8",               "matrix":[1,8],"x": 8, "y": 1.25 },
+              { "label": "9",               "matrix":[6,8],"x": 9, "y": 1.25 },
+              { "label": "0",               "matrix":[6,7],"x": 10, "y": 1.25 },
+              { "label": "-",               "matrix":[6,6],"x": 11, "y": 1.25 },
+              { "label": "=",               "matrix":[6,5],"x": 12, "y": 1.25 },
+              { "label": "backspace",       "matrix":[6,4],"x": 13, "y": 1.25, "w": 2 },
+              { "label": "insert",          "matrix":[6,2],"x": 15.25, "y": 1.25 },
+              { "label": "home",            "matrix":[6,1],"x": 16.25, "y": 1.25 },
+              { "label": "pg up",           "matrix":[6,0],"x": 17.25, "y": 1.25 },
 
-              { "label": "tab",             "matrix":[2,0],"x": 0, "y": 2.5, "w": 1.5 },
-              { "label": "q",               "matrix":[2,1],"x": 1.5, "y": 2.5 },
-              { "label": "w",               "matrix":[2,2],"x": 2.5, "y": 2.5 },
-              { "label": "e",               "matrix":[2,3],"x": 3.5, "y": 2.5 },
-              { "label": "r",               "matrix":[2,4],"x": 4.5, "y": 2.5 },
-              { "label": "t",               "matrix":[2,5],"x": 5.5, "y": 2.5 },
-              { "label": "y",               "matrix":[2,6],"x": 6.5, "y": 2.5 },
-              { "label": "u",               "matrix":[2,7],"x": 7.5, "y": 2.5 },
-              { "label": "i",               "matrix":[2,8],"x": 8.5, "y": 2.5 },
-              { "label": "o",               "matrix":[7,8],"x": 9.5, "y": 2.5 },
-              { "label": "p",               "matrix":[7,7],"x": 10.5, "y": 2.5 },
-              { "label": "{",               "matrix":[7,6],"x": 11.5, "y": 2.5 },
-              { "label": "}",               "matrix":[7,5],"x": 12.5, "y": 2.5 },
-              { "label": "|",               "matrix":[7,4],"x": 13.5, "y": 2.5, "w": 1.5 },
-              { "label": "delete",          "matrix":[7,2],"x": 15.25, "y": 2.5 },
-              { "label": "end",             "matrix":[7,1],"x": 16.25, "y": 2.5 },
-              { "label": "pg dn",           "matrix":[7,0],"x": 17.25, "y": 2.5 },
+              { "label": "tab",             "matrix":[2,0],"x": 0, "y": 2.25, "w": 1.5 },
+              { "label": "q",               "matrix":[2,1],"x": 1.5, "y": 2.25 },
+              { "label": "w",               "matrix":[2,2],"x": 2.5, "y": 2.25 },
+              { "label": "e",               "matrix":[2,3],"x": 3.5, "y": 2.25 },
+              { "label": "r",               "matrix":[2,4],"x": 4.5, "y": 2.25 },
+              { "label": "t",               "matrix":[2,5],"x": 5.5, "y": 2.25 },
+              { "label": "y",               "matrix":[2,6],"x": 6.5, "y": 2.25 },
+              { "label": "u",               "matrix":[2,7],"x": 7.5, "y": 2.25 },
+              { "label": "i",               "matrix":[2,8],"x": 8.5, "y": 2.25 },
+              { "label": "o",               "matrix":[7,8],"x": 9.5, "y": 2.25 },
+              { "label": "p",               "matrix":[7,7],"x": 10.5, "y": 2.25 },
+              { "label": "{",               "matrix":[7,6],"x": 11.5, "y": 2.25 },
+              { "label": "}",               "matrix":[7,5],"x": 12.5, "y": 2.25 },
+              { "label": "|",               "matrix":[7,4],"x": 13.5, "y": 2.25, "w": 1.5 },
+              { "label": "delete",          "matrix":[7,2],"x": 15.25, "y": 2.25 },
+              { "label": "end",             "matrix":[7,1],"x": 16.25, "y": 2.25 },
+              { "label": "pg dn",           "matrix":[7,0],"x": 17.25, "y": 2.25 },
 
-              { "label": "capslock",        "matrix":[3,0],"x": 0, "y": 3.5, "w": 1.75 },
-              { "label": "a",               "matrix":[3,1],"x": 1.75, "y": 3.5 },
-              { "label": "s",               "matrix":[3,2],"x": 2.75, "y": 3.5 },
-              { "label": "d",               "matrix":[3,3],"x": 3.75, "y": 3.5 },
-              { "label": "f",               "matrix":[3,4],"x": 4.75, "y": 3.5 },
-              { "label": "g",               "matrix":[3,5],"x": 5.75, "y": 3.5 },
-              { "label": "h",               "matrix":[3,6],"x": 6.75, "y": 3.5 },
-              { "label": "j",               "matrix":[3,7],"x": 7.75, "y": 3.5 },
-              { "label": "k",               "matrix":[3,8],"x": 8.75, "y": 3.5 },
-              { "label": "l",               "matrix":[8,8],"x": 9.75, "y": 3.5 },
-              { "label": ";",               "matrix":[8,7],"x": 10.75, "y": 3.5 },
-              { "label": "'",               "matrix":[8,6],"x": 11.75, "y": 3.5 },
-              { "label": "enter",           "matrix":[8,5],"x": 12.75, "y": 3.5, "w": 2.25 },
+              { "label": "capslock",        "matrix":[3,0],"x": 0, "y": 3.25, "w": 1.75 },
+              { "label": "a",               "matrix":[3,1],"x": 1.75, "y": 3.25 },
+              { "label": "s",               "matrix":[3,2],"x": 2.75, "y": 3.25 },
+              { "label": "d",               "matrix":[3,3],"x": 3.75, "y": 3.25 },
+              { "label": "f",               "matrix":[3,4],"x": 4.75, "y": 3.25 },
+              { "label": "g",               "matrix":[3,5],"x": 5.75, "y": 3.25 },
+              { "label": "h",               "matrix":[3,6],"x": 6.75, "y": 3.25 },
+              { "label": "j",               "matrix":[3,7],"x": 7.75, "y": 3.25 },
+              { "label": "k",               "matrix":[3,8],"x": 8.75, "y": 3.25 },
+              { "label": "l",               "matrix":[8,8],"x": 9.75, "y": 3.25 },
+              { "label": ";",               "matrix":[8,7],"x": 10.75, "y": 3.25 },
+              { "label": "'",               "matrix":[8,6],"x": 11.75, "y": 3.25 },
+              { "label": "enter",           "matrix":[8,5],"x": 12.75, "y": 3.25, "w": 2.25 },
 
-              { "label": "leftshift",       "matrix":[4,0],"x": 0, "y": 4.5, "w": 2.25 },
-              { "label": "z",               "matrix":[4,1],"x": 2.25, "y": 4.5 },
-              { "label": "x",               "matrix":[4,2],"x": 3.25, "y": 4.5 },
-              { "label": "c",               "matrix":[4,3],"x": 4.25, "y": 4.5 },
-              { "label": "v",               "matrix":[4,4],"x": 5.25, "y": 4.5 },
-              { "label": "b",               "matrix":[4,5],"x": 6.25, "y": 4.5 },
-              { "label": "n",               "matrix":[4,6],"x": 7.25, "y": 4.5 },
-              { "label": "m",               "matrix":[4,7],"x": 8.25, "y": 4.5 },
-              { "label": ",",               "matrix":[4,8],"x": 9.25, "y": 4.5 },
-              { "label": ".",               "matrix":[9,8],"x": 10.25, "y": 4.5 },
-              { "label": "/",               "matrix":[9,7],"x": 11.25, "y": 4.5 },
-              { "label": "rightshift",      "matrix":[9,6],"x": 12.25, "y": 4.5, "w": 2.75 },
-              { "label": "up",              "matrix":[8,1],"x": 16.25, "y": 4.5 },
+              { "label": "leftshift",       "matrix":[4,0],"x": 0, "y": 4.25, "w": 2.25 },
+              { "label": "z",               "matrix":[4,1],"x": 2.25, "y": 4.25 },
+              { "label": "x",               "matrix":[4,2],"x": 3.25, "y": 4.25 },
+              { "label": "c",               "matrix":[4,3],"x": 4.25, "y": 4.25 },
+              { "label": "v",               "matrix":[4,4],"x": 5.25, "y": 4.25 },
+              { "label": "b",               "matrix":[4,5],"x": 6.25, "y": 4.25 },
+              { "label": "n",               "matrix":[4,6],"x": 7.25, "y": 4.25 },
+              { "label": "m",               "matrix":[4,7],"x": 8.25, "y": 4.25 },
+              { "label": ",",               "matrix":[4,8],"x": 9.25, "y": 4.25 },
+              { "label": ".",               "matrix":[9,8],"x": 10.25, "y": 4.25 },
+              { "label": "/",               "matrix":[9,7],"x": 11.25, "y": 4.25 },
+              { "label": "rightshift",      "matrix":[9,6],"x": 12.25, "y": 4.25, "w": 2.75 },
+              { "label": "up",              "matrix":[8,1],"x": 16.25, "y": 4.25 },
 
-              { "label": "lctrl",           "matrix":[10,0],"x": 0, "y": 5.5, "w": 1.5 },
-              { "label": "lwin",            "matrix":[10,1],"x": 1.5, "y": 5.5 },
-              { "label": "lalt",            "matrix":[10,2],"x": 2.5, "y": 5.5, "w": 1.5 },
-              { "label": "space",           "matrix":[10,3],"x": 4, "y": 5.5, "w": 7 },
-              { "label": "ralt",            "matrix":[10,5],"x": 11, "y": 5.5, "w": 1.5 },
-              { "label": "rwin",            "matrix":[10,6],"x": 12.5, "y": 5.5, "w": 1 },
-              { "label": "rctrl",           "matrix":[10,7],"x": 13.5, "y": 5.5, "w":1.5},
-              { "label": "left",            "matrix":[9,2],"x": 15.25, "y": 5.5 },
-              { "label": "down",            "matrix":[9,1],"x": 16.25, "y": 5.5 },
-              { "label": "right",           "matrix":[9,0],"x": 17.25, "y": 5.5 }
+              { "label": "lctrl",           "matrix":[10,0],"x": 0, "y": 5.25, "w": 1.5 },
+              { "label": "lwin",            "matrix":[10,1],"x": 1.5, "y": 5.25 },
+              { "label": "lalt",            "matrix":[10,2],"x": 2.5, "y": 5.25, "w": 1.5 },
+              { "label": "space",           "matrix":[10,3],"x": 4, "y": 5.25, "w": 7 },
+              { "label": "ralt",            "matrix":[10,5],"x": 11, "y": 5.25, "w": 1.5 },
+              { "label": "rwin",            "matrix":[10,6],"x": 12.5, "y": 5.25, "w": 1 },
+              { "label": "rctrl",           "matrix":[10,7],"x": 13.5, "y": 5.25, "w":1.5},
+              { "label": "left",            "matrix":[9,2],"x": 15.25, "y": 5.25 },
+              { "label": "down",            "matrix":[9,1],"x": 16.25, "y": 5.25 },
+              { "label": "right",           "matrix":[9,0],"x": 17.25, "y": 5.25 }
            ]
         }
-    },
+    }
 }

+ 1 - 1
keyboards/ah/haven80/keymaps/default/keymap.c

@@ -4,7 +4,7 @@
 #include QMK_KEYBOARD_H
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT(
+  [0] = LAYOUT_tkl_f13_ansi_tsangan(
       KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_F13,  KC_PSCR, KC_SCRL, KC_PAUS,
       KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_INS,  KC_HOME, KC_PGUP,
       KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,  KC_END,  KC_PGDN,

+ 1 - 1
keyboards/ah/haven80/keymaps/via/keymap.c

@@ -4,7 +4,7 @@
 #include QMK_KEYBOARD_H
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT(
+  [0] = LAYOUT_tkl_f13_ansi_tsangan(
       KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_F13,  KC_PSCR, KC_SCRL, KC_PAUS,
       KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_INS,  KC_HOME, KC_PGUP,
       KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,  KC_END,  KC_PGDN,

+ 381 - 78
keyboards/ah/haven80/solder/info.json

@@ -9,8 +9,17 @@
         "rows": ["F0", "F1", "F4", "F5", "C6", "B1", "B2", "B3", "D3", "D5", "D6"],
         "cols": ["D0", "D1", "D2", "B0", "C7", "B5", "D7", "B4", "B6"]
     },
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_tkl_f13_ansi_tsangan"
+    },
+    "community_layouts": [
+        "tkl_f13_ansi_tsangan",
+        "tkl_f13_ansi_tsangan_split_bs_rshift",
+        "tkl_f13_iso_tsangan",
+        "tkl_f13_iso_tsangan_split_bs_rshift"
+    ],
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_tkl_f13_ansi_tsangan": {
             "layout": [
               { "label": "Esc",             "matrix":[0,0],"x": 0, "y": 0 },
               { "label": "F1",              "matrix":[0,1],"x": 1.25, "y": 0 },
@@ -21,90 +30,384 @@
               { "label": "F6",              "matrix":[0,6],"x": 6.5, "y": 0 },
               { "label": "F7",              "matrix":[0,7],"x": 7.5, "y": 0 },
               { "label": "F8",              "matrix":[5,8],"x": 8.5, "y": 0 },
-              { "label": "F9",              "matrix":[5,7],"x": 9.5, "y": 0 },
+              { "label": "F9",              "matrix":[5,7],"x": 9.75, "y": 0 },
               { "label": "F10",             "matrix":[5,6],"x": 10.75, "y": 0 },
               { "label": "F11",             "matrix":[5,5],"x": 11.75, "y": 0 },
               { "label": "F12",             "matrix":[5,4],"x": 12.75, "y": 0 },
-              { "label": "F13",             "matrix":[5,3],"x": 13.75, "y": 0 },
+              { "label": "F13",             "matrix":[5,3],"x": 14, "y": 0 },
               { "label": "Prtsc",           "matrix":[5,2],"x": 15.25, "y": 0 },
               { "label": "Scrlk",           "matrix":[5,1],"x": 16.25, "y": 0 },
               { "label": "Pause",           "matrix":[5,0],"x": 17.25, "y": 0 },
 
-              { "label": "~",              "matrix":[1,0],"x": 0, "y": 1.5 },
-              { "label": "1",               "matrix":[1,1],"x": 1, "y": 1.5 },
-              { "label": "2",               "matrix":[1,2],"x": 2, "y": 1.5 },
-              { "label": "3",               "matrix":[1,3],"x": 3, "y": 1.5 },
-              { "label": "4",               "matrix":[1,4],"x": 4, "y": 1.5 },
-              { "label": "5",               "matrix":[1,5],"x": 5, "y": 1.5 },
-              { "label": "6",               "matrix":[1,6],"x": 6, "y": 1.5 },
-              { "label": "7",               "matrix":[1,7],"x": 7, "y": 1.5 },
-              { "label": "8",               "matrix":[1,8],"x": 8, "y": 1.5 },
-              { "label": "9",               "matrix":[6,8],"x": 9, "y": 1.5 },
-              { "label": "0",               "matrix":[6,7],"x": 10, "y": 1.5 },
-              { "label": "-",               "matrix":[6,6],"x": 11, "y": 1.5 },
-              { "label": "=",               "matrix":[6,5],"x": 12, "y": 1.5 },
-              { "label": "backspace",       "matrix":[6,4],"x": 13, "y": 1.5, "w": 2 },
-              { "label": "insert",          "matrix":[6,2],"x": 15.25, "y": 1.5 },
-              { "label": "home",            "matrix":[6,1],"x": 16.25, "y": 1.5 },
-              { "label": "pg up",           "matrix":[6,0],"x": 17.25, "y": 1.5 },
-
-              { "label": "tab",             "matrix":[2,0],"x": 0, "y": 2.5, "w": 1.5 },
-              { "label": "q",               "matrix":[2,1],"x": 1.5, "y": 2.5 },
-              { "label": "w",               "matrix":[2,2],"x": 2.5, "y": 2.5 },
-              { "label": "e",               "matrix":[2,3],"x": 3.5, "y": 2.5 },
-              { "label": "r",               "matrix":[2,4],"x": 4.5, "y": 2.5 },
-              { "label": "t",               "matrix":[2,5],"x": 5.5, "y": 2.5 },
-              { "label": "y",               "matrix":[2,6],"x": 6.5, "y": 2.5 },
-              { "label": "u",               "matrix":[2,7],"x": 7.5, "y": 2.5 },
-              { "label": "i",               "matrix":[2,8],"x": 8.5, "y": 2.5 },
-              { "label": "o",               "matrix":[7,8],"x": 9.5, "y": 2.5 },
-              { "label": "p",               "matrix":[7,7],"x": 10.5, "y": 2.5 },
-              { "label": "{",               "matrix":[7,6],"x": 11.5, "y": 2.5 },
-              { "label": "}",               "matrix":[7,5],"x": 12.5, "y": 2.5 },
-              { "label": "|",               "matrix":[7,4],"x": 13.5, "y": 2.5, "w": 1.5 },
-              { "label": "delete",          "matrix":[7,2],"x": 15.25, "y": 2.5 },
-              { "label": "end",             "matrix":[7,1],"x": 16.25, "y": 2.5 },
-              { "label": "pg dn",           "matrix":[7,0],"x": 17.25, "y": 2.5 },
-
-              { "label": "capslock",        "matrix":[3,0],"x": 0, "y": 3.5, "w": 1.75 },
-              { "label": "a",               "matrix":[3,1],"x": 1.75, "y": 3.5 },
-              { "label": "s",               "matrix":[3,2],"x": 2.75, "y": 3.5 },
-              { "label": "d",               "matrix":[3,3],"x": 3.75, "y": 3.5 },
-              { "label": "f",               "matrix":[3,4],"x": 4.75, "y": 3.5 },
-              { "label": "g",               "matrix":[3,5],"x": 5.75, "y": 3.5 },
-              { "label": "h",               "matrix":[3,6],"x": 6.75, "y": 3.5 },
-              { "label": "j",               "matrix":[3,7],"x": 7.75, "y": 3.5 },
-              { "label": "k",               "matrix":[3,8],"x": 8.75, "y": 3.5 },
-              { "label": "l",               "matrix":[8,8],"x": 9.75, "y": 3.5 },
-              { "label": ";",               "matrix":[8,7],"x": 10.75, "y": 3.5 },
-              { "label": "'",               "matrix":[8,6],"x": 11.75, "y": 3.5 },
-              { "label": "enter",           "matrix":[8,5],"x": 12.75, "y": 3.5, "w": 2.25 },
-
-              { "label": "leftshift",       "matrix":[4,0],"x": 0, "y": 4.5, "w": 2.25 },
-              { "label": "z",               "matrix":[4,1],"x": 2.25, "y": 4.5 },
-              { "label": "x",               "matrix":[4,2],"x": 3.25, "y": 4.5 },
-              { "label": "c",               "matrix":[4,3],"x": 4.25, "y": 4.5 },
-              { "label": "v",               "matrix":[4,4],"x": 5.25, "y": 4.5 },
-              { "label": "b",               "matrix":[4,5],"x": 6.25, "y": 4.5 },
-              { "label": "n",               "matrix":[4,6],"x": 7.25, "y": 4.5 },
-              { "label": "m",               "matrix":[4,7],"x": 8.25, "y": 4.5 },
-              { "label": ",",               "matrix":[4,8],"x": 9.25, "y": 4.5 },
-              { "label": ".",               "matrix":[9,8],"x": 10.25, "y": 4.5 },
-              { "label": "/",               "matrix":[9,7],"x": 11.25, "y": 4.5 },
-              { "label": "rightshift",      "matrix":[9,6],"x": 12.25, "y": 4.5, "w": 2.75 },
-              { "label": "up",              "matrix":[8,1],"x": 16.25, "y": 4.5 },
-
-              { "label": "lctrl",           "matrix":[10,0],"x": 0, "y": 5.5, "w": 1.5 },
-              { "label": "lwin",            "matrix":[10,1],"x": 1.5, "y": 5.5 },
-              { "label": "lalt",            "matrix":[10,2],"x": 2.5, "y": 5.5, "w": 1.5 },
-              { "label": "space",           "matrix":[10,3],"x": 4, "y": 5.5, "w": 7 },
-              { "label": "ralt",            "matrix":[10,5],"x": 11, "y": 5.5, "w": 1.5 },
-              { "label": "rwin",            "matrix":[10,6],"x": 12.5, "y": 5.5, "w": 1 },
-              { "label": "rctrl",           "matrix":[10,7],"x": 13.5, "y": 5.5, "w":1.5},
-              { "label": "left",            "matrix":[9,2],"x": 15.25, "y": 5.5 },
-              { "label": "down",            "matrix":[9,1],"x": 16.25, "y": 5.5 },
-              { "label": "right",           "matrix":[9,0],"x": 17.25, "y": 5.5 }
+              { "label": "~",              "matrix":[1,0],"x": 0, "y": 1.25 },
+              { "label": "1",               "matrix":[1,1],"x": 1, "y": 1.25 },
+              { "label": "2",               "matrix":[1,2],"x": 2, "y": 1.25 },
+              { "label": "3",               "matrix":[1,3],"x": 3, "y": 1.25 },
+              { "label": "4",               "matrix":[1,4],"x": 4, "y": 1.25 },
+              { "label": "5",               "matrix":[1,5],"x": 5, "y": 1.25 },
+              { "label": "6",               "matrix":[1,6],"x": 6, "y": 1.25 },
+              { "label": "7",               "matrix":[1,7],"x": 7, "y": 1.25 },
+              { "label": "8",               "matrix":[1,8],"x": 8, "y": 1.25 },
+              { "label": "9",               "matrix":[6,8],"x": 9, "y": 1.25 },
+              { "label": "0",               "matrix":[6,7],"x": 10, "y": 1.25 },
+              { "label": "-",               "matrix":[6,6],"x": 11, "y": 1.25 },
+              { "label": "=",               "matrix":[6,5],"x": 12, "y": 1.25 },
+              { "label": "backspace",       "matrix":[6,4],"x": 13, "y": 1.25, "w": 2 },
+              { "label": "insert",          "matrix":[6,2],"x": 15.25, "y": 1.25 },
+              { "label": "home",            "matrix":[6,1],"x": 16.25, "y": 1.25 },
+              { "label": "pg up",           "matrix":[6,0],"x": 17.25, "y": 1.25 },
+
+              { "label": "tab",             "matrix":[2,0],"x": 0, "y": 2.25, "w": 1.5 },
+              { "label": "q",               "matrix":[2,1],"x": 1.5, "y": 2.25 },
+              { "label": "w",               "matrix":[2,2],"x": 2.5, "y": 2.25 },
+              { "label": "e",               "matrix":[2,3],"x": 3.5, "y": 2.25 },
+              { "label": "r",               "matrix":[2,4],"x": 4.5, "y": 2.25 },
+              { "label": "t",               "matrix":[2,5],"x": 5.5, "y": 2.25 },
+              { "label": "y",               "matrix":[2,6],"x": 6.5, "y": 2.25 },
+              { "label": "u",               "matrix":[2,7],"x": 7.5, "y": 2.25 },
+              { "label": "i",               "matrix":[2,8],"x": 8.5, "y": 2.25 },
+              { "label": "o",               "matrix":[7,8],"x": 9.5, "y": 2.25 },
+              { "label": "p",               "matrix":[7,7],"x": 10.5, "y": 2.25 },
+              { "label": "{",               "matrix":[7,6],"x": 11.5, "y": 2.25 },
+              { "label": "}",               "matrix":[7,5],"x": 12.5, "y": 2.25 },
+              { "label": "|",               "matrix":[7,4],"x": 13.5, "y": 2.25, "w": 1.5 },
+              { "label": "delete",          "matrix":[7,2],"x": 15.25, "y": 2.25 },
+              { "label": "end",             "matrix":[7,1],"x": 16.25, "y": 2.25 },
+              { "label": "pg dn",           "matrix":[7,0],"x": 17.25, "y": 2.25 },
+
+              { "label": "capslock",        "matrix":[3,0],"x": 0, "y": 3.25, "w": 1.75 },
+              { "label": "a",               "matrix":[3,1],"x": 1.75, "y": 3.25 },
+              { "label": "s",               "matrix":[3,2],"x": 2.75, "y": 3.25 },
+              { "label": "d",               "matrix":[3,3],"x": 3.75, "y": 3.25 },
+              { "label": "f",               "matrix":[3,4],"x": 4.75, "y": 3.25 },
+              { "label": "g",               "matrix":[3,5],"x": 5.75, "y": 3.25 },
+              { "label": "h",               "matrix":[3,6],"x": 6.75, "y": 3.25 },
+              { "label": "j",               "matrix":[3,7],"x": 7.75, "y": 3.25 },
+              { "label": "k",               "matrix":[3,8],"x": 8.75, "y": 3.25 },
+              { "label": "l",               "matrix":[8,8],"x": 9.75, "y": 3.25 },
+              { "label": ";",               "matrix":[8,7],"x": 10.75, "y": 3.25 },
+              { "label": "'",               "matrix":[8,6],"x": 11.75, "y": 3.25 },
+              { "label": "enter",           "matrix":[8,5],"x": 12.75, "y": 3.25, "w": 2.25 },
+
+              { "label": "leftshift",       "matrix":[4,0],"x": 0, "y": 4.25, "w": 2.25 },
+              { "label": "z",               "matrix":[4,1],"x": 2.25, "y": 4.25 },
+              { "label": "x",               "matrix":[4,2],"x": 3.25, "y": 4.25 },
+              { "label": "c",               "matrix":[4,3],"x": 4.25, "y": 4.25 },
+              { "label": "v",               "matrix":[4,4],"x": 5.25, "y": 4.25 },
+              { "label": "b",               "matrix":[4,5],"x": 6.25, "y": 4.25 },
+              { "label": "n",               "matrix":[4,6],"x": 7.25, "y": 4.25 },
+              { "label": "m",               "matrix":[4,7],"x": 8.25, "y": 4.25 },
+              { "label": ",",               "matrix":[4,8],"x": 9.25, "y": 4.25 },
+              { "label": ".",               "matrix":[9,8],"x": 10.25, "y": 4.25 },
+              { "label": "/",               "matrix":[9,7],"x": 11.25, "y": 4.25 },
+              { "label": "rightshift",      "matrix":[9,6],"x": 12.25, "y": 4.25, "w": 2.75 },
+              { "label": "up",              "matrix":[8,1],"x": 16.25, "y": 4.25 },
+
+              { "label": "lctrl",           "matrix":[10,0],"x": 0, "y": 5.25, "w": 1.5 },
+              { "label": "lwin",            "matrix":[10,1],"x": 1.5, "y": 5.25 },
+              { "label": "lalt",            "matrix":[10,2],"x": 2.5, "y": 5.25, "w": 1.5 },
+              { "label": "space",           "matrix":[10,3],"x": 4, "y": 5.25, "w": 7 },
+              { "label": "ralt",            "matrix":[10,5],"x": 11, "y": 5.25, "w": 1.5 },
+              { "label": "rwin",            "matrix":[10,6],"x": 12.5, "y": 5.25, "w": 1 },
+              { "label": "rctrl",           "matrix":[10,7],"x": 13.5, "y": 5.25, "w":1.5},
+              { "label": "left",            "matrix":[9,2],"x": 15.25, "y": 5.25 },
+              { "label": "down",            "matrix":[9,1],"x": 16.25, "y": 5.25 },
+              { "label": "right",           "matrix":[9,0],"x": 17.25, "y": 5.25 }
            ]
+        },
+        "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": {
+            "layout": [
+                {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+                {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+                {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+                {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+                {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+                {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+                {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+                {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+                {"label": "F8", "matrix": [5, 8], "x": 8.5, "y": 0},
+                {"label": "F9", "matrix": [5, 7], "x": 9.75, "y": 0},
+                {"label": "F10", "matrix": [5, 6], "x": 10.75, "y": 0},
+                {"label": "F11", "matrix": [5, 5], "x": 11.75, "y": 0},
+                {"label": "F12", "matrix": [5, 4], "x": 12.75, "y": 0},
+                {"label": "F13", "matrix": [5, 3], "x": 14, "y": 0},
+                {"label": "Prtsc", "matrix": [5, 2], "x": 15.25, "y": 0},
+                {"label": "Scrlk", "matrix": [5, 1], "x": 16.25, "y": 0},
+                {"label": "Pause", "matrix": [5, 0], "x": 17.25, "y": 0},
+
+                {"label": "~", "matrix": [1, 0], "x": 0, "y": 1.25},
+                {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+                {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+                {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+                {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+                {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+                {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+                {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+                {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+                {"label": "9", "matrix": [6, 8], "x": 9, "y": 1.25},
+                {"label": "0", "matrix": [6, 7], "x": 10, "y": 1.25},
+                {"label": "-", "matrix": [6, 6], "x": 11, "y": 1.25},
+                {"label": "=", "matrix": [6, 5], "x": 12, "y": 1.25},
+                {"label": "backspace", "matrix": [6, 4], "x": 13, "y": 1.25},
+                {"label": "backspace", "matrix": [6, 3], "x": 14, "y": 1.25},
+                {"label": "insert", "matrix": [6, 2], "x": 15.25, "y": 1.25},
+                {"label": "home", "matrix": [6, 1], "x": 16.25, "y": 1.25},
+                {"label": "pg up", "matrix": [6, 0], "x": 17.25, "y": 1.25},
+
+                {"label": "tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"label": "q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"label": "w", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"label": "e", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"label": "r", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"label": "t", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"label": "y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"label": "u", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"label": "i", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"label": "o", "matrix": [7, 8], "x": 9.5, "y": 2.25},
+                {"label": "p", "matrix": [7, 7], "x": 10.5, "y": 2.25},
+                {"label": "{", "matrix": [7, 6], "x": 11.5, "y": 2.25},
+                {"label": "}", "matrix": [7, 5], "x": 12.5, "y": 2.25},
+                {"label": "|", "matrix": [7, 4], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"label": "delete", "matrix": [7, 2], "x": 15.25, "y": 2.25},
+                {"label": "end", "matrix": [7, 1], "x": 16.25, "y": 2.25},
+                {"label": "pg dn", "matrix": [7, 0], "x": 17.25, "y": 2.25},
+
+                {"label": "capslock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"label": "a", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"label": "s", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"label": "d", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"label": "f", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"label": "g", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"label": "h", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"label": "j", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"label": "k", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"label": "l", "matrix": [8, 8], "x": 9.75, "y": 3.25},
+                {"label": ";", "matrix": [8, 7], "x": 10.75, "y": 3.25},
+                {"label": "'", "matrix": [8, 6], "x": 11.75, "y": 3.25},
+                {"label": "enter", "matrix": [8, 5], "x": 12.75, "y": 3.25, "w": 2.25},
+
+                {"label": "leftshift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"label": "z", "matrix": [4, 1], "x": 2.25, "y": 4.25},
+                {"label": "x", "matrix": [4, 2], "x": 3.25, "y": 4.25},
+                {"label": "c", "matrix": [4, 3], "x": 4.25, "y": 4.25},
+                {"label": "v", "matrix": [4, 4], "x": 5.25, "y": 4.25},
+                {"label": "b", "matrix": [4, 5], "x": 6.25, "y": 4.25},
+                {"label": "n", "matrix": [4, 6], "x": 7.25, "y": 4.25},
+                {"label": "m", "matrix": [4, 7], "x": 8.25, "y": 4.25},
+                {"label": ",", "matrix": [4, 8], "x": 9.25, "y": 4.25},
+                {"label": ".", "matrix": [9, 8], "x": 10.25, "y": 4.25},
+                {"label": "/", "matrix": [9, 7], "x": 11.25, "y": 4.25},
+                {"label": "rightshift", "matrix": [9, 6], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"label": "rightshift", "matrix": [9, 5], "x": 14, "y": 4.25},
+                {"label": "up", "matrix": [8, 1], "x": 16.25, "y": 4.25},
+
+                {"label": "lctrl", "matrix": [10, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"label": "lwin", "matrix": [10, 1], "x": 1.5, "y": 5.25},
+                {"label": "lalt", "matrix": [10, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"label": "space", "matrix": [10, 3], "x": 4, "y": 5.25, "w": 7},
+                {"label": "ralt", "matrix": [10, 5], "x": 11, "y": 5.25, "w": 1.5},
+                {"label": "rwin", "matrix": [10, 6], "x": 12.5, "y": 5.25},
+                {"label": "rctrl", "matrix": [10, 7], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"label": "left", "matrix": [9, 2], "x": 15.25, "y": 5.25},
+                {"label": "down", "matrix": [9, 1], "x": 16.25, "y": 5.25},
+                {"label": "right", "matrix": [9, 0], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_iso_tsangan": {
+            "layout": [
+                {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+                {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+                {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+                {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+                {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+                {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+                {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+                {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+                {"label": "F8", "matrix": [5, 8], "x": 8.5, "y": 0},
+                {"label": "F9", "matrix": [5, 7], "x": 9.75, "y": 0},
+                {"label": "F10", "matrix": [5, 6], "x": 10.75, "y": 0},
+                {"label": "F11", "matrix": [5, 5], "x": 11.75, "y": 0},
+                {"label": "F12", "matrix": [5, 4], "x": 12.75, "y": 0},
+                {"label": "F13", "matrix": [5, 3], "x": 14, "y": 0},
+                {"label": "Prtsc", "matrix": [5, 2], "x": 15.25, "y": 0},
+                {"label": "Scrlk", "matrix": [5, 1], "x": 16.25, "y": 0},
+                {"label": "Pause", "matrix": [5, 0], "x": 17.25, "y": 0},
+
+                {"label": "~", "matrix": [1, 0], "x": 0, "y": 1.25},
+                {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+                {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+                {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+                {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+                {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+                {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+                {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+                {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+                {"label": "9", "matrix": [6, 8], "x": 9, "y": 1.25},
+                {"label": "0", "matrix": [6, 7], "x": 10, "y": 1.25},
+                {"label": "-", "matrix": [6, 6], "x": 11, "y": 1.25},
+                {"label": "=", "matrix": [6, 5], "x": 12, "y": 1.25},
+                {"label": "backspace", "matrix": [6, 4], "x": 13, "y": 1.25, "w": 2},
+                {"label": "insert", "matrix": [6, 2], "x": 15.25, "y": 1.25},
+                {"label": "home", "matrix": [6, 1], "x": 16.25, "y": 1.25},
+                {"label": "pg up", "matrix": [6, 0], "x": 17.25, "y": 1.25},
+
+                {"label": "tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"label": "q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"label": "w", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"label": "e", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"label": "r", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"label": "t", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"label": "y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"label": "u", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"label": "i", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"label": "o", "matrix": [7, 8], "x": 9.5, "y": 2.25},
+                {"label": "p", "matrix": [7, 7], "x": 10.5, "y": 2.25},
+                {"label": "{", "matrix": [7, 6], "x": 11.5, "y": 2.25},
+                {"label": "}", "matrix": [7, 5], "x": 12.5, "y": 2.25},
+                {"label": "delete", "matrix": [7, 2], "x": 15.25, "y": 2.25},
+                {"label": "end", "matrix": [7, 1], "x": 16.25, "y": 2.25},
+                {"label": "pg dn", "matrix": [7, 0], "x": 17.25, "y": 2.25},
+
+                {"label": "capslock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"label": "a", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"label": "s", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"label": "d", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"label": "f", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"label": "g", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"label": "h", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"label": "j", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"label": "k", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"label": "l", "matrix": [8, 8], "x": 9.75, "y": 3.25},
+                {"label": ";", "matrix": [8, 7], "x": 10.75, "y": 3.25},
+                {"label": "'", "matrix": [8, 6], "x": 11.75, "y": 3.25},
+                {"label": "#", "matrix": [7, 4], "x": 12.75, "y": 3.25},
+                {"label": "enter", "matrix": [8, 5], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"label": "leftshift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"label": "\\", "matrix": [9, 3], "x": 1.25, "y": 4.25},
+                {"label": "z", "matrix": [4, 1], "x": 2.25, "y": 4.25},
+                {"label": "x", "matrix": [4, 2], "x": 3.25, "y": 4.25},
+                {"label": "c", "matrix": [4, 3], "x": 4.25, "y": 4.25},
+                {"label": "v", "matrix": [4, 4], "x": 5.25, "y": 4.25},
+                {"label": "b", "matrix": [4, 5], "x": 6.25, "y": 4.25},
+                {"label": "n", "matrix": [4, 6], "x": 7.25, "y": 4.25},
+                {"label": "m", "matrix": [4, 7], "x": 8.25, "y": 4.25},
+                {"label": ",", "matrix": [4, 8], "x": 9.25, "y": 4.25},
+                {"label": ".", "matrix": [9, 8], "x": 10.25, "y": 4.25},
+                {"label": "/", "matrix": [9, 7], "x": 11.25, "y": 4.25},
+                {"label": "rightshift", "matrix": [9, 6], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"label": "up", "matrix": [8, 1], "x": 16.25, "y": 4.25},
+
+                {"label": "lctrl", "matrix": [10, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"label": "lwin", "matrix": [10, 1], "x": 1.5, "y": 5.25},
+                {"label": "lalt", "matrix": [10, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"label": "space", "matrix": [10, 3], "x": 4, "y": 5.25, "w": 7},
+                {"label": "ralt", "matrix": [10, 5], "x": 11, "y": 5.25, "w": 1.5},
+                {"label": "rwin", "matrix": [10, 6], "x": 12.5, "y": 5.25},
+                {"label": "rctrl", "matrix": [10, 7], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"label": "left", "matrix": [9, 2], "x": 15.25, "y": 5.25},
+                {"label": "down", "matrix": [9, 1], "x": 16.25, "y": 5.25},
+                {"label": "right", "matrix": [9, 0], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift": {
+            "layout": [
+                {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+                {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+                {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+                {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+                {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+                {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+                {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+                {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+                {"label": "F8", "matrix": [5, 8], "x": 8.5, "y": 0},
+                {"label": "F9", "matrix": [5, 7], "x": 9.75, "y": 0},
+                {"label": "F10", "matrix": [5, 6], "x": 10.75, "y": 0},
+                {"label": "F11", "matrix": [5, 5], "x": 11.75, "y": 0},
+                {"label": "F12", "matrix": [5, 4], "x": 12.75, "y": 0},
+                {"label": "F13", "matrix": [5, 3], "x": 14, "y": 0},
+                {"label": "Prtsc", "matrix": [5, 2], "x": 15.25, "y": 0},
+                {"label": "Scrlk", "matrix": [5, 1], "x": 16.25, "y": 0},
+                {"label": "Pause", "matrix": [5, 0], "x": 17.25, "y": 0},
+
+                {"label": "~", "matrix": [1, 0], "x": 0, "y": 1.25},
+                {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+                {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+                {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+                {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+                {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+                {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+                {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+                {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+                {"label": "9", "matrix": [6, 8], "x": 9, "y": 1.25},
+                {"label": "0", "matrix": [6, 7], "x": 10, "y": 1.25},
+                {"label": "-", "matrix": [6, 6], "x": 11, "y": 1.25},
+                {"label": "=", "matrix": [6, 5], "x": 12, "y": 1.25},
+                {"label": "backspace", "matrix": [6, 4], "x": 13, "y": 1.25},
+                {"label": "backspace", "matrix": [6, 3], "x": 14, "y": 1.25},
+                {"label": "insert", "matrix": [6, 2], "x": 15.25, "y": 1.25},
+                {"label": "home", "matrix": [6, 1], "x": 16.25, "y": 1.25},
+                {"label": "pg up", "matrix": [6, 0], "x": 17.25, "y": 1.25},
+
+                {"label": "tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"label": "q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"label": "w", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"label": "e", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"label": "r", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"label": "t", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"label": "y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"label": "u", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"label": "i", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"label": "o", "matrix": [7, 8], "x": 9.5, "y": 2.25},
+                {"label": "p", "matrix": [7, 7], "x": 10.5, "y": 2.25},
+                {"label": "{", "matrix": [7, 6], "x": 11.5, "y": 2.25},
+                {"label": "}", "matrix": [7, 5], "x": 12.5, "y": 2.25},
+                {"label": "delete", "matrix": [7, 2], "x": 15.25, "y": 2.25},
+                {"label": "end", "matrix": [7, 1], "x": 16.25, "y": 2.25},
+                {"label": "pg dn", "matrix": [7, 0], "x": 17.25, "y": 2.25},
+
+                {"label": "capslock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"label": "a", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"label": "s", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"label": "d", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"label": "f", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"label": "g", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"label": "h", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"label": "j", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"label": "k", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"label": "l", "matrix": [8, 8], "x": 9.75, "y": 3.25},
+                {"label": ";", "matrix": [8, 7], "x": 10.75, "y": 3.25},
+                {"label": "'", "matrix": [8, 6], "x": 11.75, "y": 3.25},
+                {"label": "#", "matrix": [7, 4], "x": 12.75, "y": 3.25},
+                {"label": "enter", "matrix": [8, 5], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"label": "leftshift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"label": "\\", "matrix": [9, 3], "x": 1.25, "y": 4.25},
+                {"label": "z", "matrix": [4, 1], "x": 2.25, "y": 4.25},
+                {"label": "x", "matrix": [4, 2], "x": 3.25, "y": 4.25},
+                {"label": "c", "matrix": [4, 3], "x": 4.25, "y": 4.25},
+                {"label": "v", "matrix": [4, 4], "x": 5.25, "y": 4.25},
+                {"label": "b", "matrix": [4, 5], "x": 6.25, "y": 4.25},
+                {"label": "n", "matrix": [4, 6], "x": 7.25, "y": 4.25},
+                {"label": "m", "matrix": [4, 7], "x": 8.25, "y": 4.25},
+                {"label": ",", "matrix": [4, 8], "x": 9.25, "y": 4.25},
+                {"label": ".", "matrix": [9, 8], "x": 10.25, "y": 4.25},
+                {"label": "/", "matrix": [9, 7], "x": 11.25, "y": 4.25},
+                {"label": "rightshift", "matrix": [9, 6], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"label": "rightshift", "matrix": [9, 5], "x": 14, "y": 4.25},
+                {"label": "up", "matrix": [8, 1], "x": 16.25, "y": 4.25},
+
+                {"label": "lctrl", "matrix": [10, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"label": "lwin", "matrix": [10, 1], "x": 1.5, "y": 5.25},
+                {"label": "lalt", "matrix": [10, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"label": "space", "matrix": [10, 3], "x": 4, "y": 5.25, "w": 7},
+                {"label": "ralt", "matrix": [10, 5], "x": 11, "y": 5.25, "w": 1.5},
+                {"label": "rwin", "matrix": [10, 6], "x": 12.5, "y": 5.25},
+                {"label": "rctrl", "matrix": [10, 7], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"label": "left", "matrix": [9, 2], "x": 15.25, "y": 5.25},
+                {"label": "down", "matrix": [9, 1], "x": 16.25, "y": 5.25},
+                {"label": "right", "matrix": [9, 0], "x": 17.25, "y": 5.25}
+            ]
         }
-    },
+    }
 }

+ 4 - 1
keyboards/anavi/macropad12/info.json

@@ -43,8 +43,11 @@
     "backlight": {
         "pin": "GP26"
     },
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_ortho_4x3"
+    },
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_ortho_4x3": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [0, 1], "x": 1, "y": 0},

+ 1 - 1
keyboards/anavi/macropad12/keymaps/default/keymap.c

@@ -8,7 +8,7 @@ enum layer_names {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [_BASE] = LAYOUT(
+    [_BASE] = LAYOUT_ortho_4x3(
         KC_1, KC_2, KC_3,
         KC_4, KC_5, KC_6,
         KC_7, KC_8, KC_9,

+ 0 - 1
keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c

@@ -1,5 +1,4 @@
 #include QMK_KEYBOARD_H
-#include "mousekey.h"
 
 #define MEDAPP LT(MEDIA, KC_APP)
 

+ 430 - 2
keyboards/cannonkeys/bastion60/info.json

@@ -49,7 +49,16 @@
         "driver": "vendor",
         "pin": "GP7"
     },
-    "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_iso_tsangan"],
+    "community_layouts": [
+        "60_ansi",
+        "60_ansi_split_bs_rshift",
+        "60_ansi_tsangan",
+        "60_tsangan_hhkb",
+        "60_hhkb",
+        "60_iso",
+        "60_iso_split_bs_rshift",
+        "60_iso_tsangan"
+    ],
     "layouts": {
         "LAYOUT_60_ansi": {
             "layout": [
@@ -183,7 +192,7 @@
                 {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
             ]
         },
-        "LAYOUT_60_iso_tsangan": {
+        "LAYOUT_60_ansi_tsangan": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [0, 1], "x": 1, "y": 0},
@@ -199,6 +208,284 @@
                 {"matrix": [0, 11], "x": 11, "y": 0},
                 {"matrix": [0, 12], "x": 12, "y": 0},
                 {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 12.5, "y": 4},
+                {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
+            ]
+        },
+        "LAYOUT_60_tsangan_hhkb": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 12.5, "y": 4},
+                {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
+            ]
+        },
+        "LAYOUT_60_hhkb": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 12.5, "y": 4}
+            ]
+        },
+        "LAYOUT_60_iso": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+                {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+            ]
+        },
+        "LAYOUT_60_iso_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+
                 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
                 {"matrix": [1, 1], "x": 1.5, "y": 1},
                 {"matrix": [1, 2], "x": 2.5, "y": 1},
@@ -212,7 +499,76 @@
                 {"matrix": [1, 10], "x": 10.5, "y": 1},
                 {"matrix": [1, 11], "x": 11.5, "y": 1},
                 {"matrix": [1, 12], "x": 12.5, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
                 {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+                {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+            ]
+        },
+        "LAYOUT_60_iso_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
                 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
                 {"matrix": [2, 1], "x": 1.75, "y": 2},
                 {"matrix": [2, 2], "x": 2.75, "y": 2},
@@ -226,6 +582,7 @@
                 {"matrix": [2, 10], "x": 10.75, "y": 2},
                 {"matrix": [2, 11], "x": 11.75, "y": 2},
                 {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
                 {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
                 {"matrix": [3, 1], "x": 1.25, "y": 3},
                 {"matrix": [3, 2], "x": 2.25, "y": 3},
@@ -248,6 +605,77 @@
                 {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
             ]
         },
+        "LAYOUT_60_iso_tsangan_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 12.5, "y": 4},
+                {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
+            ]
+        },
         "LAYOUT_all": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},

+ 24 - 0
keyboards/cannonkeys/bastion60/matrix_diagram.md

@@ -0,0 +1,24 @@
+# Matrix Diagram for CannonKeys Bastion60
+
+```
+                                                    ┌───────┐
+                                       2u Backspace │0D     │
+                                                    └───────┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2C │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤      ┌─────┐
+│10   │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D   │      │     │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤   ┌──┴┐2D  │ ISO Enter
+│20    │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D      │   │1D │    │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤   └───┴────┘
+│30  │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C    │3D │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+│40  │41  │42  │46                      │4A  │4B  │4C  │4D  │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+┌────────┐                                       ┌──────────┐
+│30      │ 2.25u LShift             2.75u RShift │3C        │
+└────────┘                                       └──────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+│40   │41 │42   │46                         │4B   │4C │4D   │ Tsangan/WKL/HHKB
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+```

+ 618 - 1
keyboards/cannonkeys/bastion65/info.json

@@ -49,8 +49,21 @@
         "driver": "vendor",
         "pin": "GP7"
     },
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_all"
+    },
+    "community_layouts": [
+        "65_ansi_blocker",
+        "65_ansi_blocker_split_bs",
+        "65_ansi_blocker_tsangan",
+        "65_ansi_blocker_tsangan_split_bs",
+        "65_iso_blocker",
+        "65_iso_blocker_split_bs",
+        "65_iso_blocker_tsangan",
+        "65_iso_blocker_tsangan_split_bs"
+    ],
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_all": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [0, 1], "x": 1, "y": 0},
@@ -124,6 +137,610 @@
                 {"matrix": [4, 13], "x": 14, "y": 4},
                 {"matrix": [4, 14], "x": 15, "y": 4}
             ]
+        },
+        "LAYOUT_65_ansi_blocker": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+                {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_ansi_blocker_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+                {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_ansi_blocker_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_ansi_blocker_tsangan_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_iso_blocker": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+                {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_iso_blocker_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+                {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+                {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_iso_blocker_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        },
+        "LAYOUT_65_iso_blocker_tsangan_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10, "y": 0},
+                {"matrix": [0, 11], "x": 11, "y": 0},
+                {"matrix": [0, 12], "x": 12, "y": 0},
+                {"matrix": [0, 13], "x": 13, "y": 0},
+                {"matrix": [2, 12], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+                {"matrix": [1, 1], "x": 1.5, "y": 1},
+                {"matrix": [1, 2], "x": 2.5, "y": 1},
+                {"matrix": [1, 3], "x": 3.5, "y": 1},
+                {"matrix": [1, 4], "x": 4.5, "y": 1},
+                {"matrix": [1, 5], "x": 5.5, "y": 1},
+                {"matrix": [1, 6], "x": 6.5, "y": 1},
+                {"matrix": [1, 7], "x": 7.5, "y": 1},
+                {"matrix": [1, 8], "x": 8.5, "y": 1},
+                {"matrix": [1, 9], "x": 9.5, "y": 1},
+                {"matrix": [1, 10], "x": 10.5, "y": 1},
+                {"matrix": [1, 11], "x": 11.5, "y": 1},
+                {"matrix": [1, 12], "x": 12.5, "y": 1},
+                {"matrix": [1, 14], "x": 15, "y": 1},
+
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 5.75, "y": 2},
+                {"matrix": [2, 6], "x": 6.75, "y": 2},
+                {"matrix": [2, 7], "x": 7.75, "y": 2},
+                {"matrix": [2, 8], "x": 8.75, "y": 2},
+                {"matrix": [2, 9], "x": 9.75, "y": 2},
+                {"matrix": [2, 10], "x": 10.75, "y": 2},
+                {"matrix": [2, 11], "x": 11.75, "y": 2},
+                {"matrix": [1, 13], "x": 12.75, "y": 2},
+                {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+                {"matrix": [2, 14], "x": 15, "y": 2},
+
+                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+                {"matrix": [3, 1], "x": 1.25, "y": 3},
+                {"matrix": [3, 2], "x": 2.25, "y": 3},
+                {"matrix": [3, 3], "x": 3.25, "y": 3},
+                {"matrix": [3, 4], "x": 4.25, "y": 3},
+                {"matrix": [3, 5], "x": 5.25, "y": 3},
+                {"matrix": [3, 6], "x": 6.25, "y": 3},
+                {"matrix": [3, 7], "x": 7.25, "y": 3},
+                {"matrix": [3, 8], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 9.25, "y": 3},
+                {"matrix": [3, 10], "x": 10.25, "y": 3},
+                {"matrix": [3, 11], "x": 11.25, "y": 3},
+                {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"matrix": [3, 13], "x": 14, "y": 3},
+                {"matrix": [3, 14], "x": 15, "y": 3},
+
+                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+                {"matrix": [4, 1], "x": 1.5, "y": 4},
+                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+                {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+                {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+                {"matrix": [4, 12], "x": 13, "y": 4},
+                {"matrix": [4, 13], "x": 14, "y": 4},
+                {"matrix": [4, 14], "x": 15, "y": 4}
+            ]
         }
     }
 }

+ 2 - 2
keyboards/cannonkeys/bastion65/keymaps/default/keymap.c

@@ -27,7 +27,7 @@ enum layer_names {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_BASE] = LAYOUT(
+  [_BASE] = LAYOUT_all(
     QK_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_DEL, KC_HOME,
     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_END,
     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_PGUP,
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,  KC_SPC,  KC_SPC,                                          KC_RALT, MO(_FN1), KC_LEFT, KC_DOWN, KC_RIGHT
   ),
 
-  [_FN1] = LAYOUT(
+  [_FN1] = LAYOUT_all(
     QK_GESC, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL, _______, _______,
     RGB_TOG, RGB_MOD, KC_UP,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,

+ 2 - 2
keyboards/cannonkeys/bastion65/keymaps/via/keymap.c

@@ -27,7 +27,7 @@ enum layer_names {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_BASE] = LAYOUT(
+  [_BASE] = LAYOUT_all(
     QK_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_DEL, KC_HOME,
     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_END,
     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_PGUP,
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,  KC_SPC,  KC_SPC,                                          KC_RALT, MO(_FN1), KC_LEFT, KC_DOWN, KC_RIGHT
   ),
 
-  [_FN1] = LAYOUT(
+  [_FN1] = LAYOUT_all(
     QK_GESC, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL, _______, _______,
     RGB_TOG, RGB_MOD, KC_UP,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,

+ 27 - 0
keyboards/cannonkeys/bastion65/matrix_diagram.md

@@ -0,0 +1,27 @@
+# Matrix Diagram for CannonKeys Bastion65
+
+```
+                                                    ┌───────┐
+                                       2u Backspace │0D     │
+                                                    └───────┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2C │0E │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤      ┌─────┐
+│10   │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D   │1E │      │     │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤   ┌──┴┐2D  │ ISO Enter
+│20    │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D      │2E │   │1D │    │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤   └───┴────┘
+│30  │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C    │3D │3E │
+├────┴┬──┴┬──┴──┬┴───┴───┴──┬┴──┬┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+│40   │41 │42   │45         │46 │49         │4B   │ │4C │4D │4E │
+└─────┴───┴─────┴───────────┴───┴───────────┴─────┘ └───┴───┴───┘
+┌────────┐
+│30      │ 2.25u LShift
+└────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┐
+│40   │41 │42   │46                         │4B   │ Blocker Tsangan
+└─────┴───┴─────┴───────────────────────────┴─────┘
+┌────┬────┬────┬────────────────────────┬────┬────┐
+│40  │41  │42  │46                      │4A  │4B  │ Blocker
+└────┴────┴────┴────────────────────────┴────┴────┘
+```

+ 729 - 2
keyboards/cannonkeys/bastion75/info.json

@@ -49,8 +49,11 @@
             "rainbow_swirl": true
         }
     },
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_all"
+    },
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_all": {
             "layout": [
                 { "matrix": [0, 0], "x": 0, "y": 0 },
                 { "matrix": [0, 1], "x": 1.5, "y": 0 },
@@ -138,6 +141,730 @@
                 { "matrix": [5, 13], "x": 14, "y": 5.25 },
                 { "matrix": [5, 14], "x": 15, "y": 5.25 }
             ]
+        },
+        "LAYOUT_ansi_blocker": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_ansi_blocker_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_ansi_blocker_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_ansi_blocker_tsangan_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_iso_blocker": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_iso_blocker_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_iso_blocker_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
+        },
+        "LAYOUT_iso_blocker_tsangan_split_bs": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.5, "y": 0},
+                {"matrix": [0, 2], "x": 2.5, "y": 0},
+                {"matrix": [0, 3], "x": 3.5, "y": 0},
+                {"matrix": [0, 4], "x": 4.5, "y": 0},
+                {"matrix": [0, 6], "x": 6, "y": 0},
+                {"matrix": [0, 7], "x": 7, "y": 0},
+                {"matrix": [0, 8], "x": 8, "y": 0},
+                {"matrix": [0, 9], "x": 9, "y": 0},
+                {"matrix": [0, 10], "x": 10.5, "y": 0},
+                {"matrix": [0, 11], "x": 11.5, "y": 0},
+                {"matrix": [0, 12], "x": 12.5, "y": 0},
+                {"matrix": [0, 13], "x": 13.5, "y": 0},
+                {"matrix": [0, 14], "x": 15, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+                {"matrix": [3, 14], "x": 15, "y": 3.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 14], "x": 15, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 13, "y": 5.25},
+                {"matrix": [5, 13], "x": 14, "y": 5.25},
+                {"matrix": [5, 14], "x": 15, "y": 5.25}
+            ]
         }
     }
-}
+}

+ 2 - 2
keyboards/cannonkeys/bastion75/keymaps/default/keymap.c

@@ -27,7 +27,7 @@ enum layer_names {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_BASE] = LAYOUT(
+  [_BASE] = LAYOUT_all(
     KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, KC_MPLY,
     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_DEL, KC_HOME,
     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_END,
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,  KC_SPC,  KC_SPC,                                          KC_RALT, MO(_FN1), KC_LEFT, KC_DOWN, KC_RIGHT
   ),
 
-  [_FN1] = LAYOUT(
+  [_FN1] = LAYOUT_all(
     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     QK_GESC, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL, _______, _______,
     RGB_TOG, RGB_MOD, KC_UP,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,

+ 2 - 2
keyboards/cannonkeys/bastion75/keymaps/via/keymap.c

@@ -27,7 +27,7 @@ enum layer_names {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_BASE] = LAYOUT(
+  [_BASE] = LAYOUT_all(
     KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, KC_MPLY,
     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_DEL, KC_HOME,
     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_END,
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,  KC_SPC,  KC_SPC,                                          KC_RALT, MO(_FN1), KC_LEFT, KC_DOWN, KC_RIGHT
   ),
 
-  [_FN1] = LAYOUT(
+  [_FN1] = LAYOUT_all(
     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     QK_GESC, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL, _______, _______,
     RGB_TOG, RGB_MOD, KC_UP,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,

+ 27 - 0
keyboards/cannonkeys/bastion75/matrix_diagram.md

@@ -0,0 +1,27 @@
+# Matrix Diagram for CannonKeys Bastion75
+
+```
+┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐
+│00 │ │01 │02 │03 │04 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐    ┌───────┐
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │3C │1E │    │1D     │ 2u Backspace
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤    └─┬─────┤
+│20   │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D   │2E │      │     │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤   ┌──┴┐3D  │ ISO Enter
+│30    │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D      │3E │   │2D │    │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤   └───┴────┘
+│40  │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C    │4D │4E │
+├────┴┬──┴┬──┴──┬┴───┴───┴──┬┴──┬┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+│50   │51 │52   │55         │56 │59         │5B   │ │5C │5D │5E │
+└─────┴───┴─────┴───────────┴───┴───────────┴─────┘ └───┴───┴───┘
+┌────────┐
+│40      │ 2.25u LShift
+└────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┐
+│50   │51 │52   │56                         │5B   │ Blocker Tsangan
+└─────┴───┴─────┴───────────────────────────┴─────┘
+┌────┬────┬────┬────────────────────────┬────┬────┐
+│50  │51  │52  │56                      │5A  │5B  │ Blocker
+└────┴────┴────┴────────────────────────┴────┴────┘
+```

+ 1302 - 16
keyboards/cannonkeys/bastiontkl/info.json

@@ -28,7 +28,24 @@
         "pid": "0x0023",
         "vid": "0xCA04"
     },
-    "community_layouts": ["tkl_ansi", "tkl_iso", "tkl_f13_ansi_tsangan_split_bs_rshift"],
+    "community_layouts": [
+        "tkl_ansi",
+        "tkl_ansi_split_bs_rshift",
+        "tkl_ansi_tsangan",
+        "tkl_ansi_tsangan_split_bs_rshift",
+        "tkl_f13_ansi",
+        "tkl_f13_ansi_split_bs_rshift",
+        "tkl_f13_ansi_tsangan",
+        "tkl_f13_ansi_tsangan_split_bs_rshift",
+        "tkl_iso",
+        "tkl_iso_split_bs_rshift",
+        "tkl_iso_tsangan",
+        "tkl_iso_tsangan_split_bs_rshift",
+        "tkl_f13_iso",
+        "tkl_f13_iso_split_bs_rshift",
+        "tkl_f13_iso_tsangan",
+        "tkl_f13_iso_tsangan_split_bs_rshift"
+    ],
     "layouts": {
         "LAYOUT_all": {
             "layout": [
@@ -216,25 +233,25 @@
                 {"matrix": [5, 16], "x": 17.25, "y": 5.25}
             ]
         },
-        "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": {
+        "LAYOUT_tkl_ansi_split_bs_rshift": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
-                {"matrix": [0, 1], "x": 1.25, "y": 0},
-                {"matrix": [0, 2], "x": 2.25, "y": 0},
-                {"matrix": [0, 3], "x": 3.25, "y": 0},
-                {"matrix": [0, 4], "x": 4.25, "y": 0},
-                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
                 {"matrix": [0, 6], "x": 6.5, "y": 0},
                 {"matrix": [0, 7], "x": 7.5, "y": 0},
                 {"matrix": [0, 8], "x": 8.5, "y": 0},
-                {"matrix": [0, 9], "x": 9.75, "y": 0},
-                {"matrix": [0, 10], "x": 10.75, "y": 0},
-                {"matrix": [0, 11], "x": 11.75, "y": 0},
-                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 9], "x": 9.5, "y": 0},
+                {"matrix": [0, 10], "x": 11, "y": 0},
+                {"matrix": [0, 11], "x": 12, "y": 0},
+                {"matrix": [0, 12], "x": 13, "y": 0},
                 {"matrix": [0, 13], "x": 14, "y": 0},
                 {"matrix": [0, 14], "x": 15.25, "y": 0},
                 {"matrix": [0, 15], "x": 16.25, "y": 0},
                 {"matrix": [0, 16], "x": 17.25, "y": 0},
+
                 {"matrix": [1, 0], "x": 0, "y": 1.25},
                 {"matrix": [1, 1], "x": 1, "y": 1.25},
                 {"matrix": [1, 2], "x": 2, "y": 1.25},
@@ -253,6 +270,7 @@
                 {"matrix": [1, 14], "x": 15.25, "y": 1.25},
                 {"matrix": [1, 15], "x": 16.25, "y": 1.25},
                 {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
                 {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
                 {"matrix": [2, 1], "x": 1.5, "y": 2.25},
                 {"matrix": [2, 2], "x": 2.5, "y": 2.25},
@@ -270,6 +288,7 @@
                 {"matrix": [2, 14], "x": 15.25, "y": 2.25},
                 {"matrix": [2, 15], "x": 16.25, "y": 2.25},
                 {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
                 {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
                 {"matrix": [3, 1], "x": 1.75, "y": 3.25},
                 {"matrix": [3, 2], "x": 2.75, "y": 3.25},
@@ -283,6 +302,7 @@
                 {"matrix": [3, 10], "x": 10.75, "y": 3.25},
                 {"matrix": [3, 11], "x": 11.75, "y": 3.25},
                 {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
                 {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
                 {"matrix": [4, 2], "x": 2.25, "y": 4.25},
                 {"matrix": [4, 3], "x": 3.25, "y": 4.25},
@@ -297,6 +317,103 @@
                 {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
                 {"matrix": [4, 13], "x": 14, "y": 4.25},
                 {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_ansi_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.5, "y": 0},
+                {"matrix": [0, 10], "x": 11, "y": 0},
+                {"matrix": [0, 11], "x": 12, "y": 0},
+                {"matrix": [0, 12], "x": 13, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
                 {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
                 {"matrix": [5, 1], "x": 1.5, "y": 5.25},
                 {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
@@ -309,7 +426,7 @@
                 {"matrix": [5, 16], "x": 17.25, "y": 5.25}
             ]
         },
-        "LAYOUT_tkl_iso": {
+        "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [0, 2], "x": 2, "y": 0},
@@ -327,6 +444,105 @@
                 {"matrix": [0, 14], "x": 15.25, "y": 0},
                 {"matrix": [0, 15], "x": 16.25, "y": 0},
                 {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_ansi": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
                 {"matrix": [1, 0], "x": 0, "y": 1.25},
                 {"matrix": [1, 1], "x": 1, "y": 1.25},
                 {"matrix": [1, 2], "x": 2, "y": 1.25},
@@ -344,6 +560,7 @@
                 {"matrix": [1, 14], "x": 15.25, "y": 1.25},
                 {"matrix": [1, 15], "x": 16.25, "y": 1.25},
                 {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
                 {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
                 {"matrix": [2, 1], "x": 1.5, "y": 2.25},
                 {"matrix": [2, 2], "x": 2.5, "y": 2.25},
@@ -357,10 +574,11 @@
                 {"matrix": [2, 10], "x": 10.5, "y": 2.25},
                 {"matrix": [2, 11], "x": 11.5, "y": 2.25},
                 {"matrix": [2, 12], "x": 12.5, "y": 2.25},
-                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
                 {"matrix": [2, 14], "x": 15.25, "y": 2.25},
                 {"matrix": [2, 15], "x": 16.25, "y": 2.25},
                 {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
                 {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
                 {"matrix": [3, 1], "x": 1.75, "y": 3.25},
                 {"matrix": [3, 2], "x": 2.75, "y": 3.25},
@@ -373,9 +591,9 @@
                 {"matrix": [3, 9], "x": 9.75, "y": 3.25},
                 {"matrix": [3, 10], "x": 10.75, "y": 3.25},
                 {"matrix": [3, 11], "x": 11.75, "y": 3.25},
-                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
-                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
-                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
                 {"matrix": [4, 2], "x": 2.25, "y": 4.25},
                 {"matrix": [4, 3], "x": 3.25, "y": 4.25},
                 {"matrix": [4, 4], "x": 4.25, "y": 4.25},
@@ -388,6 +606,7 @@
                 {"matrix": [4, 11], "x": 11.25, "y": 4.25},
                 {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
                 {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
                 {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
                 {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
                 {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
@@ -400,6 +619,1073 @@
                 {"matrix": [5, 15], "x": 16.25, "y": 5.25},
                 {"matrix": [5, 16], "x": 17.25, "y": 5.25}
             ]
+        },
+        "LAYOUT_tkl_f13_ansi_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_ansi_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_iso": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.5, "y": 0},
+                {"matrix": [0, 10], "x": 11, "y": 0},
+                {"matrix": [0, 11], "x": 12, "y": 0},
+                {"matrix": [0, 12], "x": 13, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_iso_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.5, "y": 0},
+                {"matrix": [0, 10], "x": 11, "y": 0},
+                {"matrix": [0, 11], "x": 12, "y": 0},
+                {"matrix": [0, 12], "x": 13, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_iso_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.5, "y": 0},
+                {"matrix": [0, 10], "x": 11, "y": 0},
+                {"matrix": [0, 11], "x": 12, "y": 0},
+                {"matrix": [0, 12], "x": 13, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_iso_tsangan_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.5, "y": 0},
+                {"matrix": [0, 10], "x": 11, "y": 0},
+                {"matrix": [0, 11], "x": 12, "y": 0},
+                {"matrix": [0, 12], "x": 13, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_iso": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_iso_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+                {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_iso_tsangan": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
+        },
+        "LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1.25, "y": 0},
+                {"matrix": [0, 2], "x": 2.25, "y": 0},
+                {"matrix": [0, 3], "x": 3.25, "y": 0},
+                {"matrix": [0, 4], "x": 4.25, "y": 0},
+                {"matrix": [0, 5], "x": 5.5, "y": 0},
+                {"matrix": [0, 6], "x": 6.5, "y": 0},
+                {"matrix": [0, 7], "x": 7.5, "y": 0},
+                {"matrix": [0, 8], "x": 8.5, "y": 0},
+                {"matrix": [0, 9], "x": 9.75, "y": 0},
+                {"matrix": [0, 10], "x": 10.75, "y": 0},
+                {"matrix": [0, 11], "x": 11.75, "y": 0},
+                {"matrix": [0, 12], "x": 12.75, "y": 0},
+                {"matrix": [0, 13], "x": 14, "y": 0},
+                {"matrix": [0, 14], "x": 15.25, "y": 0},
+                {"matrix": [0, 15], "x": 16.25, "y": 0},
+                {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.25},
+                {"matrix": [1, 1], "x": 1, "y": 1.25},
+                {"matrix": [1, 2], "x": 2, "y": 1.25},
+                {"matrix": [1, 3], "x": 3, "y": 1.25},
+                {"matrix": [1, 4], "x": 4, "y": 1.25},
+                {"matrix": [1, 5], "x": 5, "y": 1.25},
+                {"matrix": [1, 6], "x": 6, "y": 1.25},
+                {"matrix": [1, 7], "x": 7, "y": 1.25},
+                {"matrix": [1, 8], "x": 8, "y": 1.25},
+                {"matrix": [1, 9], "x": 9, "y": 1.25},
+                {"matrix": [1, 10], "x": 10, "y": 1.25},
+                {"matrix": [1, 11], "x": 11, "y": 1.25},
+                {"matrix": [1, 12], "x": 12, "y": 1.25},
+                {"matrix": [1, 13], "x": 13, "y": 1.25},
+                {"matrix": [3, 12], "x": 14, "y": 1.25},
+                {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+                {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+                {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+                {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+                {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+                {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+                {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+                {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+                {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+                {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+                {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+                {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+                {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+                {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+                {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+                {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+                {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+                {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+
+                {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+                {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+                {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+                {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+                {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+                {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+                {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+                {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+                {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+                {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+                {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+                {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+                {"matrix": [2, 13], "x": 12.75, "y": 3.25},
+                {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+                {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+                {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+                {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+                {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+                {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+                {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+                {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+                {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+                {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+                {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+                {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+                {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+                {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+                {"matrix": [4, 13], "x": 14, "y": 4.25},
+                {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+
+                {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+                {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+                {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+                {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+                {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+                {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+                {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+            ]
         }
     }
 }

+ 27 - 0
keyboards/cannonkeys/bastiontkl/matrix_diagram.md

@@ -0,0 +1,27 @@
+# Matrix Diagram for CannonKeys BastionTKL
+
+```
+┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┬───┬───┐
+│00 │   │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D ││0E │0F │0G │ F12 Row
+└───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┴───┴───┘
+┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐
+│00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D ││0E │0F │0G │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐    ┌───────┐
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │3C ││1E │1F │1G │    │1D     │ 2u Backspace
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤    └─┬─────┤
+│20   │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D   ││2E │2F │2G │      │     │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘   ┌──┴┐3D  │ ISO Enter
+│30    │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D      │                │2D │    │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤    ┌───┐       └───┴────┘
+│40  │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C    │4D │    │4F │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐
+│50  │51  │52  │56                      │5A  │5B  │5C  │5D  ││5E │5F │5G │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+┌────────┐                                       ┌──────────┐
+│40      │ 2.25u LShift             2.75u RShift │4C        │
+└────────┘                                       └──────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+│50   │51 │52   │56                         │5B   │5C │5D   │ Tsangan/WKL
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+```

+ 4 - 4
keyboards/chosfox/cf81/info.json

@@ -252,7 +252,7 @@
                 { "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 },
                 { "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 },
                 { "label": "Shift", "matrix": [4, 13], "w": 1.75, "x": 12.25, "y": 4.25 },
-                { "label": "Up", "matrix": [4, 14], "x": 14.25, "y": 4.25 },
+                { "label": "Up", "matrix": [4, 14], "x": 14.25, "y": 4.5 },
 
                 { "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.25 },
                 { "label": "Win", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.25 },
@@ -261,9 +261,9 @@
                 { "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25 },
                 { "label": "Fn", "matrix": [5, 10], "x": 11, "y": 5.25 },
                 { "label": "Ctrl", "matrix": [5, 11], "x": 12, "y": 5.25 },
-                { "label": "Left", "matrix": [5, 13], "x": 13.25, "y": 5.25 },
-                { "label": "Down", "matrix": [5, 14], "x": 14.25, "y": 5.25 },
-                { "label": "Right", "matrix": [5, 15], "x": 15.25, "y": 5.25 }
+                { "label": "Left", "matrix": [5, 13], "x": 13.25, "y": 5.5 },
+                { "label": "Down", "matrix": [5, 14], "x": 14.25, "y": 5.5 },
+                { "label": "Right", "matrix": [5, 15], "x": 15.25, "y": 5.5 }
             ]
         }
     }

+ 3 - 3
keyboards/clueboard/66/keymaps/magicmonty/keymap.c

@@ -172,7 +172,7 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val)
   uint8_t sat = 255;
 
   for (uint8_t i = 0; i < RGBLED_NUM; i++) {
-    sethsv(oct_hues[base_oct], sat, val, (LED_TYPE *)&led[i]);
+    sethsv(oct_hues[base_oct], sat, val, (rgb_led_t *)&led[i]);
   }
 
   uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct;
@@ -183,11 +183,11 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val)
 
 
   for (uint8_t i = 0; i < 3; i++) {
-    sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]);
+    sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]);
   }
 
   for (uint8_t i = 11; i < 14; i++) {
-    sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]);
+    sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]);
   }
 
   rgblight_set();

+ 6 - 2
keyboards/crimsonkeyboards/resume1800/info.json

@@ -20,8 +20,12 @@
     },
     "processor": "atmega32a",
     "bootloader": "usbasploader",
+    "layout_aliases": {
+        "LAYOUT_resume1800_ansi_all": "LAYOUT_ansi_all",
+        "LAYOUT_resume1800_iso_all": "LAYOUT_iso_all"
+    },
     "layouts": {
-        "LAYOUT_resume1800_ansi_all": {
+        "LAYOUT_ansi_all": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [0, 1], "x": 1, "y": 0},
@@ -138,7 +142,7 @@
                 {"matrix": [5, 19], "x": 19, "y": 5}
             ]
         },
-        "LAYOUT_resume1800_iso_all": {
+        "LAYOUT_iso_all": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
                 {"matrix": [0, 1], "x": 1, "y": 0},

+ 1 - 1
keyboards/crimsonkeyboards/resume1800/keymaps/dee/keymap.c

@@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT_resume1800_iso_all(
+  [0] = LAYOUT_iso_all(
   /*    Esc      F1       F2       F3       F4      F5      F6      F7      F8      F9       F10      F11       F12      F13      F14     Print     Scroll Lock   Pause   Insert    End		*/
 	  KC_ESC, 	KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,   KC_F12,  KC_F13,  KC_F14, KC_PRINT_SCREEN,      KC_SCRL,     KC_PAUS, KC_INS,  KC_END,
   /*    ~         1        2        3        4       5       6       7       8       9        0        -         =     Backspace          Delete    Num Lock      Num /   Num *     Num -	*/

+ 1 - 1
keyboards/crimsonkeyboards/resume1800/keymaps/default/keymap.c

@@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT_resume1800_ansi_all(
+  [0] = LAYOUT_ansi_all(
   /*    Esc      F1       F2       F3       F4      F5      F6      F7      F8      F9       F10      F11       F12      F13      F14     Print     Scroll Lock   Pause   Insert    End		*/
 	  KC_ESC, 	KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,   KC_F12,  KC_F13,  KC_F14, KC_PSCR,   KC_SCRL,     KC_PAUS, KC_INS,  KC_END,
   /*    ~         1        2        3        4       5       6       7       8       9        0        -         =     Backspace          Delete    Num Lock      Num /   Num *     Num -	*/

+ 1 - 1
keyboards/crimsonkeyboards/resume1800/keymaps/iso/keymap.c

@@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT_resume1800_iso_all(
+  [0] = LAYOUT_iso_all(
   /*    Esc      F1       F2       F3       F4      F5      F6      F7      F8      F9       F10      F11       F12      F13      F14     Print     Scroll Lock   Pause   Insert    End		*/
 	  KC_ESC, 	KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,   KC_F12,  KC_F13,  KC_F14, KC_PSCR,   KC_SCRL,     KC_PAUS, KC_INS,  KC_END,
   /*    ~         1        2        3        4       5       6       7       8       9        0        -         =     Backspace          Delete    Num Lock      Num /   Num *     Num -	*/

+ 1 - 1
keyboards/crimsonkeyboards/resume1800/keymaps/via/keymap.c

@@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT_resume1800_ansi_all(
+  [0] = LAYOUT_ansi_all(
   /*    Esc      F1       F2       F3       F4      F5      F6      F7      F8      F9       F10      F11       F12      F13      F14     Print     Scroll Lock   Pause   Insert    End		*/
 	  KC_ESC, 	KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,   KC_F12,  KC_F13,  KC_F14, KC_PSCR,   KC_SCRL,     KC_PAUS, KC_INS,  KC_END,
   /*    ~         1        2        3        4       5       6       7       8       9        0        -         =     Backspace          Delete    Num Lock      Num /   Num *     Num -	*/

+ 0 - 9
keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c

@@ -1,13 +1,4 @@
 #include QMK_KEYBOARD_H
-#include "bootloader.h"
-#include "mousekey.h"
-#include "pointing_device.h"
-#include "report.h"
-
-#ifdef PROTOCOL_LUFA
-  #include "lufa.h"
-  #include "split_util.h"
-#endif
 
 extern bool isScrollMode;
 

+ 0 - 2
keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c

@@ -15,8 +15,6 @@
  */
 
 #include QMK_KEYBOARD_H
-#include "mousekey.h"
-
 
 enum plaid_layers {
   _QWERTY,

+ 2 - 2
keyboards/dp60/keymaps/indicator/indicator.c

@@ -70,9 +70,9 @@ void keyboard_post_init_user(void) {
 
 extern rgblight_config_t rgblight_config;
 extern void              rgblight_layers_write(void);
-extern void              indicator_write(LED_TYPE *start_led, uint8_t num_leds);
+extern void              indicator_write(rgb_led_t *start_led, uint8_t num_leds);
 
-void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
+void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 {
     ws2812_setleds(start_led, RGBLED_NUM-RGB_INDICATOR_NUM);
 

+ 1 - 1
keyboards/dp60/keymaps/indicator/led_driver.c

@@ -20,7 +20,7 @@
 #define ws2812_setleds_pin indicator_setleds_pin
 #include "ws2812_bitbang.c"
 
-void indicator_write(LED_TYPE *start_led, uint8_t num_leds)
+void indicator_write(rgb_led_t *start_led, uint8_t num_leds)
 {
     indicator_setleds(start_led, num_leds);
 }

+ 20 - 0
keyboards/era/divine/config.h

@@ -0,0 +1,20 @@
+/* Copyright 2023 eerraa
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+ 
+#pragma once
+
+#define BACKLIGHT_PWM_DRIVER PWMD0
+#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A

+ 21 - 0
keyboards/era/divine/halconf.h

@@ -0,0 +1,21 @@
+/* Copyright 2023 eerraa
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+ 
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>

+ 7 - 2
keyboards/era/divine/info.json

@@ -2,12 +2,17 @@
     "manufacturer": "ERA",
     "keyboard_name": "DIVINE 1.0.0",
     "maintainer": "eerraa",
+    "backlight": {
+        "pin": "GP0",
+        "levels": 5
+    },
     "bootloader": "rp2040",
     "build": {
         "debounce_type": "sym_defer_pk"
     },
     "diode_direction": "COL2ROW",
     "features": {
+        "backlight": true,
         "bootmagic": true,
         "command": false,
         "console": false,
@@ -18,8 +23,8 @@
     "indicators": {
         "caps_lock": "GP1",
         "num_lock": "GP2",
-        "scroll_lock": "GP3",
-        "on_state": 0
+        "on_state": 0,
+        "scroll_lock": "GP3"
     },
     "matrix_pins": {
         "cols": ["GP13", "GP12", "GP19", "GP20", "GP21", "GP22", "GP23", "GP24", "GP25", "GP26", "GP27", "GP28", "GP29", "GP18", "GP5", "GP6", "GP7"],

+ 22 - 0
keyboards/era/divine/mcuconf.h

@@ -0,0 +1,22 @@
+/* Copyright 2023 eerraa
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+ 
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_PWM_USE_PWM0
+#define RP_PWM_USE_PWM0 TRUE

+ 2 - 2
keyboards/era/divine/readme.md

@@ -3,7 +3,7 @@
 DIVINE Keyboard
 
 * Keyboard Maintainer: [ERA](https://github.com/eerraa)
-* Hardware Supported: RP2040
+* Hardware Supported: DIVINE 1.0.0 PCB
 * Hardware Availability: [ERA](https://github.com/eerraa)
 
 Make example for this keyboard (after setting up your build environment):
@@ -21,5 +21,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
 Enter the bootloader in 3 ways:
 
 * **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Short the reset hole of the PCB twice within 1 second.
+* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard
 * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

+ 0 - 1
keyboards/ergodox_ez/keymaps/pvinis/keymap.c

@@ -20,7 +20,6 @@
 
 #include QMK_KEYBOARD_H
 #include "pvinis.h"
-#include "mousekey.h"
 
 // layers
 enum {

+ 1 - 1
keyboards/ergodox_ez/led_i2c.c

@@ -22,7 +22,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #    include "ergodox_ez.h"
 
-void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) {
+void rgblight_call_driver(rgb_led_t *led, uint8_t led_num) {
     i2c_init();
     i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
     int i = 0;

+ 4 - 4
keyboards/ergoslab/keymaps/default/keymap.c

@@ -16,7 +16,7 @@ enum layer_names {
 #endif
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [BASE] = LAYOUT_ergoslab(
+  [BASE] = LAYOUT(
     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                           KC_Y,     KC_U,     KC_I,     KC_O,    KC_P,
     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                           KC_H,     KC_J,     KC_K,     KC_L,    KC_SCLN,
     KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                           KC_N,     KC_M,     KC_COMM,  KC_DOT,  KC_SLSH,
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              KC_LBRC, KC_LPRN, KC_ESC,  MO(MDIA),KC_RGUI,     KC_TAB,   TG(MOUS), KC_BSPC,  KC_RPRN,  KC_RBRC
   ),
 
-  [MDIA] = LAYOUT_ergoslab(
+  [MDIA] = 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_HOME,  KC_PGDN,  KC_PGUP, KC_END,
     _______, _______, _______, _______, _______,                        RGB_TOG,  _______,  _______,  _______, KC_MUTE,
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              _______, _______, _______, _______, _______,     _______,  _______,  _______,  _______,  _______
   ),
 
-  [NUMB] = LAYOUT_ergoslab(
+  [NUMB] = LAYOUT(
     KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                        KC_CIRC,  KC_AMPR,  KC_ASTR,  KC_BSLS, KC_PIPE,
     KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                           KC_6,     KC_7,     KC_8,     KC_9,    KC_0,
     KC_UNDS, KC_MINS, KC_PLUS, KC_EQL,  KC_GRV,                         KC_COLN,  KC_TILD,  _______,  _______, _______,
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              _______, _______, _______, _______, _______,     _______,  _______,  _______,  _______,  _______
   ),
 
-  [MOUS] = LAYOUT_ergoslab(
+  [MOUS] = LAYOUT(
     _______, _______, KC_MS_U, _______, _______,                        _______,  _______,  KC_WH_U,  _______, _______,
     _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,                        _______,  KC_BTN3,  KC_WH_D,  _______, _______,
     _______, _______, _______, _______, _______,                        _______,  _______,  _______,  _______, _______,

+ 4 - 1
keyboards/ergoslab/rev1/info.json

@@ -24,8 +24,11 @@
   },
   "processor": "atmega32u4",
   "bootloader": "caterina",
+  "layout_aliases": {
+    "LAYOUT_ergoslab": "LAYOUT"
+  },
   "layouts": {
-    "LAYOUT_ergoslab": {
+    "LAYOUT": {
       "layout": [
         {"matrix": [0, 0], "x": 0, "y": 0.625},
         {"matrix": [0, 1], "x": 1, "y": 0.125},

+ 6 - 2
keyboards/evolv/info.json

@@ -40,8 +40,12 @@
     },
     "processor": "STM32F072",
     "bootloader": "stm32-dfu",
+    "layout_aliases": {
+        "LAYOUT_evolv_ansi": "LAYOUT_ansi",
+        "LAYOUT_iso_ansi": "LAYOUT_iso"
+    },
     "layouts": {
-        "LAYOUT_evolv_ansi": {
+        "LAYOUT_ansi": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
 
@@ -150,7 +154,7 @@
                 {"matrix": [5, 14], "x": 15, "y": 5.5}
             ]
         },
-        "LAYOUT_evolv_iso": {
+        "LAYOUT_iso": {
             "layout": [
                 {"matrix": [0, 0], "x": 0, "y": 0},
 

+ 3 - 19
keyboards/evolv/keymaps/default/keymap.c

@@ -17,35 +17,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include QMK_KEYBOARD_H
 
-#define MEDIA_KEY_DELAY 100
-
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-   [0] = LAYOUT_evolv_ansi(
+   [0] = LAYOUT_ansi(
         KC_ESC , KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 , KC_INS ,           
-	KC_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_DEL ,          KC_VOLU,
+        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_DEL ,          KC_VOLU,
         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_PGUP, KC_MPRV, KC_MPLY, KC_MNXT,
         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_PGDN,          KC_VOLD,
         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  , MO(1)  ,
         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                            KC_RALT, KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT),
-   [1] = LAYOUT_evolv_ansi(                                                                                                                                                  
+   [1] = LAYOUT_ansi(                                                                                                                                                  
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           RGB_VAI,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,  RGB_MOD, RGB_TOG, RGB_MOD,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,           RGB_VAD,
-        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, KC_TRNS,  
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [2] = LAYOUT_evolv_ansi(                                                                                                                                                  
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,          _______,
-        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [3] = LAYOUT_evolv_ansi(                                                                                                                                                  
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,          _______,
         _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
         _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______)
 };

+ 4 - 4
keyboards/evolv/keymaps/gondolindrim/keymap.c

@@ -145,28 +145,28 @@ Due to the way rgblight.c stores to and re-stores RGB configurations from EEPROM
 Adapt this at will with the caveat that you should not have more nor less than four layers. And let's be honest, if you find yourself needing more than four layers on a 75% keyboard you are probably doing something wrong.
 */
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-   [0] = LAYOUT_evolv_iso( 
+   [0] = LAYOUT_iso( 
         KC_ESC , KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 , KC_INS ,           
 	KC_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_DEL ,          ENCNTH,
         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_ENT ,          KC_PGUP, ENCWST , ENCCLK, ENCEST,
         KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_NUHS,                   KC_PGDN,          ENCSTH,
         KC_LSFT, KC_BSLS, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,          KC_UP  , MO(1)  ,
         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                            KC_RALT, KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT),
-   [1] = LAYOUT_evolv_iso(                                                                                                                                                  
+   [1] = LAYOUT_iso(                                                                                                                                                  
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           ENCNTH,        
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,  ENCWST , ENCCLK, ENCEST,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,           ENCSTH,        
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, KC_TRNS,  
         _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [2] = LAYOUT_evolv_iso(                                                                                                                                                  
+   [2] = LAYOUT_iso(                                                                                                                                                  
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           ENCNTH,        
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,  ENCWST , ENCCLK, ENCEST,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,           ENCSTH,        
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
         _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [3] = LAYOUT_evolv_iso(                                                                                                                                                  
+   [3] = LAYOUT_iso(                                                                                                                                                  
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,            ENCNTH,        
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,   ENCWST , ENCCLK, ENCEST,

+ 3 - 19
keyboards/evolv/keymaps/iso/keymap.c

@@ -17,35 +17,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include QMK_KEYBOARD_H
 
-#define MEDIA_KEY_DELAY 100
-
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-   [0] = LAYOUT_evolv_iso( 
+   [0] = LAYOUT_iso( 
         KC_ESC , KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 , KC_INS ,           
-	KC_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_DEL ,          KC_VOLU,
+        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_DEL ,          KC_VOLU,
         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_ENT ,          KC_PGUP, KC_MPRV, KC_MPLY, KC_MNXT,
         KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_NUHS,                   KC_PGDN,          KC_VOLD,
         KC_LSFT, KC_BSLS, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,          KC_UP  , MO(1)  ,
         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                            KC_RALT, KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT),
-   [1] = LAYOUT_evolv_iso(                                                                                                                                                  
+   [1] = LAYOUT_iso(                                                                                                                                                  
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           RGB_VAI,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,  RGB_MOD, RGB_TOG, RGB_MOD,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,           RGB_VAD,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, KC_TRNS,  
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [2] = LAYOUT_evolv_iso(                                                                                                                                                  
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [3] = LAYOUT_evolv_iso(                                                                                                                                                  
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,          _______,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
         _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______)
 };

+ 3 - 19
keyboards/evolv/keymaps/via/keymap.c

@@ -17,35 +17,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include QMK_KEYBOARD_H
 
-#define MEDIA_KEY_DELAY 100
-
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-   [0] = LAYOUT_evolv_iso( 
+   [0] = LAYOUT_iso( 
         KC_ESC , KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 , KC_INS ,           
-	KC_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_DEL ,          KC_VOLU,
+        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_DEL ,          KC_VOLU,
         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_ENT ,          KC_PGUP, KC_MPRV, KC_MPLY, KC_MNXT,
         KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_NUHS,                   KC_PGDN,          KC_VOLD,
         KC_LSFT, KC_BSLS, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,          KC_UP  , MO(1)  ,
         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                            KC_RALT, KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT),
-   [1] = LAYOUT_evolv_iso(                                                                                                                                                  
+   [1] = LAYOUT_iso(                                                                                                                                                  
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           RGB_VAI,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,  RGB_MOD, RGB_TOG, RGB_MOD,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,           RGB_VAD,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, KC_TRNS,  
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [2] = LAYOUT_evolv_iso(                                                                                                                                                  
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______),
-   [3] = LAYOUT_evolv_iso(                                                                                                                                                  
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,          _______,
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,  
         _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______)
 };

+ 0 - 2
keyboards/gboards/butterstick/sten.h

@@ -8,9 +8,7 @@
 #pragma once
 
 #include QMK_KEYBOARD_H
-#include "mousekey.h"
 #include "keymap_steno.h"
-#include "wait.h"
 
 extern size_t keymapsCount;			// Total keymaps
 extern uint32_t cChord;				// Current Chord

+ 0 - 2
keyboards/gboards/georgi/sten.h

@@ -7,9 +7,7 @@
 #pragma once
 
 #include "georgi.h"
-#include "mousekey.h"
 #include "keymap_steno.h"
-#include "wait.h"
 
 extern size_t keymapsCount;			// Total keymaps
 extern uint32_t cChord;				// Current Chord

+ 10 - 10
keyboards/handwired/lovelive9/keymaps/default/keymap.c

@@ -154,15 +154,15 @@ int aqours_color_v[] = {255, 255, 255, 255, 255, 255, 200, 255, 255};
 
 void LED_default_set(void) {
 
-  sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (LED_TYPE *)&led[0]);
-  sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (LED_TYPE *)&led[1]);
-  sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (LED_TYPE *)&led[2]);
-  sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (LED_TYPE *)&led[3]);
-  sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (LED_TYPE *)&led[4]);
-  sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (LED_TYPE *)&led[5]);
-  sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (LED_TYPE *)&led[6]);
-  sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (LED_TYPE *)&led[7]);
-  sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (LED_TYPE *)&led[8]);
+  sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (rgb_led_t *)&led[0]);
+  sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (rgb_led_t *)&led[1]);
+  sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (rgb_led_t *)&led[2]);
+  sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (rgb_led_t *)&led[3]);
+  sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (rgb_led_t *)&led[4]);
+  sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (rgb_led_t *)&led[5]);
+  sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (rgb_led_t *)&led[6]);
+  sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (rgb_led_t *)&led[7]);
+  sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (rgb_led_t *)&led[8]);
 
   rgblight_set();
 
@@ -171,7 +171,7 @@ void LED_default_set(void) {
 
 void LED_layer_set(int aqours_index) {
   for (int c = 0; c < 9; c++) {
-    sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (LED_TYPE *)&led[c]);
+    sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (rgb_led_t *)&led[c]);
   }
   rgblight_set();
 }

+ 1 - 1
keyboards/handwired/promethium/rgbsps.c

@@ -1,7 +1,7 @@
 #include "ws2812.h"
 #include "rgbsps.h"
 
-cRGB led[RGBSPS_NUM];
+rgb_led_t led[RGBSPS_NUM];
 
 void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) {
   led[index].r = r;

+ 0 - 1
keyboards/handwired/traveller/keymaps/default/keymap.c

@@ -1,5 +1,4 @@
 #include QMK_KEYBOARD_H
-#include "mousekey.h"
 
 enum layer_names {
     _QW,

+ 7 - 7
keyboards/hineybush/hbcp/hbcp.c

@@ -49,19 +49,19 @@ bool led_update_kb(led_t led_state) {
     bool res = led_update_user(led_state);
     if (res) {
         if (led_state.caps_lock) {
-            sethsv_raw(HSV_CAPS, (LED_TYPE *)&led[0]);
+            sethsv_raw(HSV_CAPS, (rgb_led_t *)&led[0]);
         } else {
-            sethsv(HSV_BLACK, (LED_TYPE *)&led[0]);
+            sethsv(HSV_BLACK, (rgb_led_t *)&led[0]);
         }
         if (led_state.num_lock) {
-            sethsv_raw(HSV_NLCK, (LED_TYPE *)&led[1]);
+            sethsv_raw(HSV_NLCK, (rgb_led_t *)&led[1]);
         } else {
-            sethsv(HSV_BLACK, (LED_TYPE *)&led[1]);
+            sethsv(HSV_BLACK, (rgb_led_t *)&led[1]);
         }
         if (led_state.scroll_lock) {
-            sethsv_raw(HSV_SCRL, (LED_TYPE *)&led[2]);
+            sethsv_raw(HSV_SCRL, (rgb_led_t *)&led[2]);
         } else {
-            sethsv(HSV_BLACK, (LED_TYPE *)&led[2]);
+            sethsv(HSV_BLACK, (rgb_led_t *)&led[2]);
         }
         rgblight_set();
     }
@@ -83,7 +83,7 @@ void keyboard_post_init_user(void) {
 
 __attribute__ ((weak))
 void hbcp_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) {
-  LED_TYPE tmp_led;
+  rgb_led_t tmp_led;
   sethsv_raw(hue, sat, val, &tmp_led);
   for (uint8_t i = start; i < end; i++) {
       led[i] = tmp_led;

+ 6 - 6
keyboards/hineybush/hbcp/keymaps/hiney/keymap.c

@@ -79,19 +79,19 @@ void matrix_scan_user(void) {
 // The first three LEDs are used as indicators for CAPS_LOCK, NUM_LOCK and SCROLL_LOCK.
 bool led_update_user(led_t led_state) {
     if (led_state.caps_lock) {
-        sethsv_raw(HSV_SOFT_RED, (LED_TYPE *)&led[0]);
+        sethsv_raw(HSV_SOFT_RED, (rgb_led_t *)&led[0]);
     } else {
-        sethsv(HSV_BLACK, (LED_TYPE *)&led[0]);
+        sethsv(HSV_BLACK, (rgb_led_t *)&led[0]);
     }
     if (led_state.num_lock) {
-        sethsv_raw(HSV_WARM_WHITE, (LED_TYPE *)&led[1]);
+        sethsv_raw(HSV_WARM_WHITE, (rgb_led_t *)&led[1]);
     } else {
-        sethsv(HSV_BLACK, (LED_TYPE *)&led[1]);
+        sethsv(HSV_BLACK, (rgb_led_t *)&led[1]);
     }
     if (led_state.scroll_lock) {
-        sethsv_raw(HSV_SOFT_BLUE, (LED_TYPE *)&led[2]);
+        sethsv_raw(HSV_SOFT_BLUE, (rgb_led_t *)&led[2]);
     } else {
-        sethsv(HSV_BLACK, (LED_TYPE *)&led[2]);
+        sethsv(HSV_BLACK, (rgb_led_t *)&led[2]);
     }
     rgblight_set();
     return false;

+ 11 - 11
keyboards/ibm/model_m/mschwingen/mschwingen.c

@@ -39,26 +39,26 @@ static uint8_t  isRecording = 0;
 #    if RGBLED_NUM < 3
 #        error we need at least 3 RGB LEDs!
 #    endif
-static cRGB led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
+static rgb_led_t led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
 
 #    define BRIGHT 32
 #    define DIM 6
 
-static const cRGB black = {.r = 0, .g = 0, .b = 0};
+static const rgb_led_t black = {.r = 0, .g = 0, .b = 0};
 
-static const __attribute__((unused)) cRGB green  = {.r = 0, .g = BRIGHT, .b = 0};
-static const __attribute__((unused)) cRGB lgreen = {.r = 0, .g = DIM, .b = 0};
+static const __attribute__((unused)) rgb_led_t green  = {.r = 0, .g = BRIGHT, .b = 0};
+static const __attribute__((unused)) rgb_led_t lgreen = {.r = 0, .g = DIM, .b = 0};
 
-static const __attribute__((unused)) cRGB red  = {.r = BRIGHT, .g = 0, .b = 0};
-static const __attribute__((unused)) cRGB lred = {.r = DIM, .g = 0, .b = 0};
+static const __attribute__((unused)) rgb_led_t red  = {.r = BRIGHT, .g = 0, .b = 0};
+static const __attribute__((unused)) rgb_led_t lred = {.r = DIM, .g = 0, .b = 0};
 
-static const __attribute__((unused)) cRGB blue  = {.r = 0, .g = 0, .b = BRIGHT};
-static const __attribute__((unused)) cRGB lblue = {.r = 0, .g = 0, .b = DIM};
+static const __attribute__((unused)) rgb_led_t blue  = {.r = 0, .g = 0, .b = BRIGHT};
+static const __attribute__((unused)) rgb_led_t lblue = {.r = 0, .g = 0, .b = DIM};
 
-static const __attribute__((unused)) cRGB turq  = {.r = 0, .g = BRIGHT, .b = BRIGHT};
-static const __attribute__((unused)) cRGB lturq = {.r = 0, .g = DIM, .b = DIM};
+static const __attribute__((unused)) rgb_led_t turq  = {.r = 0, .g = BRIGHT, .b = BRIGHT};
+static const __attribute__((unused)) rgb_led_t lturq = {.r = 0, .g = DIM, .b = DIM};
 
-static const __attribute__((unused)) cRGB white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT};
+static const __attribute__((unused)) rgb_led_t white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT};
 
 static led_t   led_state;
 static uint8_t layer;

+ 5 - 1
keyboards/jolofsor/denial75/info.json

@@ -27,8 +27,12 @@
     },
     "processor": "atmega32u4",
     "bootloader": "atmel-dfu",
+    "community_layouts": ["75_ansi"],
+    "layout_aliases": {
+        "LAYOUT_denial75_ansi": "LAYOUT_75_ansi"
+    },
     "layouts": {
-        "LAYOUT_denial75_ansi": {
+        "LAYOUT_75_ansi": {
             "layout": [
                 {"x": 0, "y": 0, "matrix": [0, 0]},
                 {"x": 1.25, "y": 0, "matrix": [0, 1]},

+ 3 - 3
keyboards/jolofsor/denial75/keymaps/default/keymap.c

@@ -114,7 +114,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-	[0] = LAYOUT_denial75_ansi(
+	[0] = LAYOUT_75_ansi(
 	    KC_ESC,   KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR,  KC_INS,   KC_DEL,
     	KC_GRV,   KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,    KC_MINS, KC_EQL,            KC_BSPC,  KC_HOME,
     	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_PGUP,
@@ -123,12 +123,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     	KC_LCTL,  KC_LGUI, KC_LALT,                KC_SPC,                          KC_RALT, MO(1),           KC_RCTL, KC_LEFT,  KC_DOWN,  KC_RGHT
 	),
 
-	[1] = LAYOUT_denial75_ansi(
+	[1] = LAYOUT_75_ansi(
 	    KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP,
     	KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,             KC_NO,    KC_BRIU,
     	KC_NO,            LEDRED,  LEDBLUE,  LEDYELLOW,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,    KC_BRID,
     	KC_NO,  	      LEDORANGE,   LEDGREEN,  LEDPURPLE,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,              RGB_VAI,
    		 KC_NO,  LEDWHITE,   LEDPINK,  LEDBLACK,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,            KC_NO,    KC_NO,    RGB_VAD,
-    	KC_NO,   KC_NO, 	   KC_NO,                  KC_NO,                           KC_NO,   MO(1),   RGB_TOG, KC_NO,    KC_NO,    KC_NO
+    	KC_NO,   KC_NO, 	   KC_NO,                  KC_NO,                           KC_NO,  KC_TRNS,  RGB_TOG, KC_NO,    KC_NO,    KC_NO
 	)
 };

+ 3 - 21
keyboards/jolofsor/denial75/keymaps/via/keymap.c

@@ -114,7 +114,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-	[0] = LAYOUT_denial75_ansi(
+	[0] = LAYOUT_75_ansi(
 	    KC_ESC,   KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR,  KC_INS,   KC_DEL,
     	KC_GRV,   KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,    KC_MINS, KC_EQL,            KC_BSPC,  KC_HOME,
     	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_PGUP,
@@ -123,30 +123,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     	KC_LCTL,  KC_LGUI, KC_LALT,                KC_SPC,                          KC_RALT, MO(1),           KC_RCTL, KC_LEFT,  KC_DOWN,  KC_RGHT
 	),
 
-	[1] = LAYOUT_denial75_ansi(
+	[1] = LAYOUT_75_ansi(
 	    KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP,
     	KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,             KC_NO,    KC_BRIU,
     	KC_NO,            LEDRED,  LEDBLUE,  LEDYELLOW,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,    KC_BRID,
     	KC_NO,  	      LEDORANGE,   LEDGREEN,  LEDPURPLE,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,              RGB_VAI,
    		 KC_NO,  LEDWHITE,   LEDPINK,  LEDBLACK,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,            KC_NO,    KC_NO,    RGB_VAD,
-    	KC_NO,   KC_NO, 	   KC_NO,                  KC_NO,                           KC_NO,   MO(1),   RGB_TOG, KC_NO,    KC_NO,    KC_NO
-	),
-
-    [2] = LAYOUT_denial75_ansi(
-	    KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-    	KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,          KC_NO,  KC_NO,
-    	KC_NO,            KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-    	KC_NO,  	      KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,          KC_NO,
-   		KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,          KC_NO,          KC_NO,  KC_NO,
-    	KC_NO,   KC_NO,   KC_NO,                  KC_NO,                          KC_NO,   KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO
-	),
-
-    [3] = LAYOUT_denial75_ansi(
-	    KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-    	KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,          KC_NO,  KC_NO,
-    	KC_NO,            KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-    	KC_NO,  	      KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,          KC_NO,
-   		KC_NO,   KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,          KC_NO,          KC_NO,  KC_NO,
-    	KC_NO,   KC_NO,   KC_NO,                  KC_NO,                          KC_NO,   KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO
+    	KC_NO,   KC_NO, 	   KC_NO,                  KC_NO,                           KC_NO,  KC_TRNS,  RGB_TOG, KC_NO,    KC_NO,    KC_NO
 	)
 };

+ 1 - 1
keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c

@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /** Set just 4 LEDs closest to the user. Slightly less annoying to bystanders.*/
 void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) {
-  LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led;
+  rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led;
   for (int i = 0; i < RGBLED_NUM; i++)  {
     switch (i) {
     case 12: case 13:

+ 1 - 1
keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c

@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 #define C_ORG 0xFF, 0x93, 0x00
 
 void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) {
-  LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led;
+  rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led;
   for (int i = 0; i < RGBLED_NUM; i++)  {
     switch (i) {
     case 10: case 11:

+ 2 - 2
keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c

@@ -217,7 +217,7 @@ void keyboard_post_init_user(void) {
         rgblight_sethsv_noeeprom(50, 255, 100);
         rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 // Init the second LED to a static color:
-        setrgb(225, 185, 0, (LED_TYPE *)&led[1]);
+        setrgb(225, 185, 0, (rgb_led_t *)&led[1]);
     rgblight_set();
   #endif // RGBLIGHT_ENABLE
 }
@@ -232,7 +232,7 @@ layer_state_t layer_state_set_user(layer_state_t state){
             if (layer_state_cmp(state, 3)) {
                 led1r = 200;
             }
-            setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
+            setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]);
         rgblight_set();
     #endif //RGBLIGHT_ENABLE
   return state;

+ 2 - 2
keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c

@@ -217,7 +217,7 @@ void keyboard_post_init_user(void) {
         rgblight_sethsv_noeeprom(50, 255, 100);
         rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 // Init the second LED to a static color:
-        setrgb(225, 185, 0, (LED_TYPE *)&led[1]);
+        setrgb(225, 185, 0, (rgb_led_t *)&led[1]);
     rgblight_set();
   #endif // RGBLIGHT_ENABLE
 }
@@ -232,7 +232,7 @@ layer_state_t layer_state_set_user(layer_state_t state){
             if (layer_state_cmp(state, 3)) {
                 led1r = 200;
             }
-            setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
+            setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]);
         rgblight_set();
     #endif //RGBLIGHT_ENABLE
   return state;

+ 25 - 0
keyboards/kiserdesigns/madeline/config.h

@@ -0,0 +1,25 @@
+/* Copyright 2021 Noah Kiser (NCKiser)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+#define RP2040_FLASH_GENERIC_03H

+ 77 - 0
keyboards/kiserdesigns/madeline/info.json

@@ -0,0 +1,77 @@
+{
+    "manufacturer": "rubybuilds",
+    "keyboard_name": "Madeline",
+    "maintainer": "NCKiser",
+    "bootloader": "rp2040",
+    "diode_direction": "COL2ROW",
+    "encoder": {
+        "enabled": true,
+        "rotary": [
+            {"pin_a": "GP13", "pin_b": "GP15"}
+        ]
+    },
+    "features": {
+        "bootmagic": true,
+        "command": false,
+        "console": false,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true
+    },
+    "matrix_pins": {
+        "cols": ["GP25", "GP26", "GP27", "GP28", "GP29", "GP9", "GP0", "GP1", "GP2", "GP3"],
+        "rows": ["GP5", "GP4", "GP12", "GP7"]
+    },
+    "processor": "RP2040",
+    "qmk": {
+        "tap_keycode_delay": 10
+    },
+    "url": "https://qmk.fm/keyboards",
+    "usb": {
+        "device_version": "0.0.1",
+        "pid": "0x6D64",
+        "vid": "0x5242"
+    },
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 6.5, "y": 0},
+                {"matrix": [0, 6], "x": 7.5, "y": 0},
+                {"matrix": [0, 7], "x": 8.5, "y": 0},
+                {"matrix": [0, 8], "x": 9.5, "y": 0},
+                {"matrix": [0, 9], "x": 10.5, "y": 0, "w": 1.25},
+                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+                {"matrix": [1, 1], "x": 1.25, "y": 1},
+                {"matrix": [1, 2], "x": 2.25, "y": 1},
+                {"matrix": [1, 3], "x": 3.25, "y": 1},
+                {"matrix": [1, 4], "x": 4.25, "y": 1},
+                {"matrix": [1, 5], "x": 6.75, "y": 1},
+                {"matrix": [1, 6], "x": 7.75, "y": 1},
+                {"matrix": [1, 7], "x": 8.75, "y": 1},
+                {"matrix": [1, 8], "x": 9.75, "y": 1},
+                {"matrix": [1, 9], "x": 10.75, "y": 1},
+                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+                {"matrix": [2, 1], "x": 1.75, "y": 2},
+                {"matrix": [2, 2], "x": 2.75, "y": 2},
+                {"matrix": [2, 3], "x": 3.75, "y": 2},
+                {"matrix": [2, 4], "x": 4.75, "y": 2},
+                {"matrix": [2, 5], "x": 6.25, "y": 2},
+                {"matrix": [2, 6], "x": 7.25, "y": 2},
+                {"matrix": [2, 7], "x": 8.25, "y": 2},
+                {"matrix": [2, 8], "x": 9.25, "y": 2},
+                {"matrix": [2, 9], "x": 10.25, "y": 2, "w": 1.5},
+                {"matrix": [3, 0], "x": 0, "y": 3},
+                {"matrix": [3, 1], "x": 2.5, "y": 3},
+                {"matrix": [3, 3], "x": 3.5, "y": 3, "w": 2.25},
+                {"matrix": [3, 6], "x": 6.25, "y": 3, "w": 2},
+                {"matrix": [3, 7], "x": 8.25, "y": 3},
+                {"matrix": [3, 9], "x": 10.75, "y": 3}
+            ]
+        }
+    }
+}

+ 53 - 0
keyboards/kiserdesigns/madeline/keymaps/default/keymap.c

@@ -0,0 +1,53 @@
+/* Copyright 2021 Noah Kiser (NCKiser)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layers {
+    _BASE,
+    _NUM_SYM
+};
+
+#define KC_NUM_SPC LT(_NUM_SYM, KC_SPC)
+#define KC_GA LGUI_T(KC_A)
+#define KC_AS LALT_T(KC_S)
+#define KC_CD LCTL_T(KC_D)
+#define KC_SF LSFT_T(KC_F)
+#define KC_SJ RSFT_T(KC_J)
+#define KC_CK RCTL_T(KC_K)
+#define KC_AL RALT_T(KC_L)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_BASE] = LAYOUT(
+        KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,    KC_I,   KC_O,     KC_P,
+        KC_GA,  KC_AS,  KC_CD,  KC_SF,   KC_G,   KC_H,  KC_SJ,   KC_CK,  KC_AL, KC_ENT,
+        KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_B, KC_N,   KC_M, KC_COMM, KC_DOT,
+        KC_LCTL, KC_LALT, KC_BSPC, KC_NUM_SPC, KC_RGUI, KC_RCTL
+    ),
+
+    [_NUM_SYM] = LAYOUT(
+        KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+        KC_ESC, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_BSPC,
+        KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_NO, KC_RPRN, KC_RBRC, KC_RCBR, KC_SCLN, KC_QUOTE,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+    )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+    const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+        [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+        [1] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+    };
+#endif

+ 1 - 0
keyboards/kiserdesigns/madeline/keymaps/default/rules.mk

@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes

+ 23 - 0
keyboards/kiserdesigns/madeline/readme.md

@@ -0,0 +1,23 @@
+# Madeline
+
+![Madeline](https://i.imgur.com/MBT5kg2h.jpg)
+
+*A cool QAZ-Alice hybrid designed based on the Adalyn by [Marv](https://github.com/MarvFPV/Adalyn) with a PCB by [Rossman360](https://github.com/Rossman360)*
+* Keyboard Maintainer: [NCKiser](https://github.com/NCKiser)
+* Hardware Supported: Madeline PCB, rp2040
+* Hardware Availability: kb.rubybuilds.com
+
+Make example for this keyboard (after setting up your build environment):
+
+    make kiserdesigns/madeline:default
+
+Flashing example for this keyboard:
+
+    make kiserdesigns/madeline:default:flash
+    
+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).
+## Bootloader
+Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly double-tap the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

+ 1 - 0
keyboards/kiserdesigns/madeline/rules.mk

@@ -0,0 +1 @@
+# This file intentionally left blank

+ 1 - 1
keyboards/kprepublic/bm60hsrgb/rev2/rev2.c

@@ -148,7 +148,7 @@ bool rgb_matrix_indicators_kb(void) {
 // ==========================================================================
 
 #    if WS2812_LED_TOTAL > 0
-LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
+rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 #    endif
 
 static void rgb_matrix_driver_init(void) {

+ 1 - 1
keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c

@@ -148,7 +148,7 @@ bool rgb_matrix_indicators_kb(void) {
 // ==========================================================================
 
 #    if WS2812_LED_TOTAL > 0
-LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
+rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 #    endif
 
 static void rgb_matrix_driver_init(void) {

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