Просмотр исходного кода

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

QMK Bot 11 месяцев назад
Родитель
Сommit
2be07cdb9b
30 измененных файлов с 1052 добавлено и 822 удалено
  1. 0 45
      keyboards/idobao/id42/id42.c
  2. 44 0
      keyboards/idobao/id42/keyboard.json
  3. 0 68
      keyboards/idobao/id61/id61.c
  4. 73 0
      keyboards/idobao/id61/keyboard.json
  5. 0 68
      keyboards/idobao/id63/id63.c
  6. 77 0
      keyboards/idobao/id63/keyboard.json
  7. 0 68
      keyboards/idobao/id67/id67.c
  8. 79 0
      keyboards/idobao/id67/keyboard.json
  9. 88 1
      keyboards/idobao/id75/v2/keyboard.json
  10. 0 49
      keyboards/idobao/id75/v2/v2.c
  11. 0 76
      keyboards/idobao/id80/v3/ansi/ansi.c
  12. 96 0
      keyboards/idobao/id80/v3/ansi/keyboard.json
  13. 105 0
      keyboards/idobao/id87/v2/keyboard.json
  14. 0 83
      keyboards/idobao/id87/v2/v2.c
  15. 33 0
      keyboards/idobao/montex/v1rgb/keyboard.json
  16. 0 58
      keyboards/idobao/montex/v1rgb/v1rgb.c
  17. 33 0
      keyboards/idobao/montex/v2/keyboard.json
  18. 0 82
      keyboards/idobao/montex/v2/v2.c
  19. 33 1
      keyboards/idyllic/tinny50_rgb/keyboard.json
  20. 0 45
      keyboards/idyllic/tinny50_rgb/tinny50_rgb.c
  21. 63 0
      keyboards/ilumkb/simpler61/keyboard.json
  22. 0 23
      keyboards/ilumkb/simpler61/simpler61.c
  23. 66 0
      keyboards/ilumkb/simpler64/keyboard.json
  24. 0 23
      keyboards/ilumkb/simpler64/simpler64.c
  25. 0 38
      keyboards/inett_studio/sqx/hotswap/hotswap.c
  26. 66 0
      keyboards/inett_studio/sqx/hotswap/keyboard.json
  27. 74 0
      keyboards/inett_studio/sqx/universal/keyboard.json
  28. 0 42
      keyboards/inett_studio/sqx/universal/universal.c
  29. 0 51
      keyboards/input_club/k_type/k_type.c
  30. 122 1
      keyboards/input_club/k_type/keyboard.json

+ 0 - 45
keyboards/idobao/id42/id42.c

@@ -1,45 +0,0 @@
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#ifdef RGB_MATRIX_ENABLE
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │41 │40 │39 │38 │37 │36 │35 │34 │33 │32 │31 │30 │
- * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ 29 │28 │27 │26 │25 │24 │23 │22 │21 │20 │  19  │
- * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
- * │ 18  │17 │16 │15 │14 │13 │12 │11 │ 10  │ 9 │ 8 │
- * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
- * │ 7  │ 6 │ 5  │    4    │    3    │ │ 2 │ 1 │ 0 │
- * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
- */
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    // WS2812 LED strings are addressed from 0 (1st) to RGB_MATRIX_LED_COUNT-1 (last)
-    { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30 },
-    { 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, __, 19 },
-    { 18, 17, 16, 15, 14, 13, 12, 11, 10, __, 9,  8  },
-    { 7,  6,  5,  4,  __, __, 3,  __, __, 2,  1,  0  }
-}, {
-    // LED Index to Physical Position
-    // **NB**: Reversed order
-    // Generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
-    {224,64 }, {204,64 }, {183,64 },                       {135,64 },                       { 84,64 }, { 48,64 }, { 25,64 }, {  3,64 },
-    {224,43 }, {204,43 },            {181,43 }, {158,43 }, {137,43 }, {117,43 }, { 97,43 }, { 76,43 }, { 56,43 }, { 36,43 }, {  8,43 },
-    {216,21 },            {188,21 }, {168,21 }, {148,21 }, {127,21 }, {107,21 }, { 87,21 }, { 66,21 }, { 46,21 }, { 25,21 }, {  3,21 },
-    {224,0  }, {204,0  }, {183,0  }, {163,0  }, {143,0  }, {122,0  }, {102,0  }, { 81,0  }, { 61,0  }, { 41,0  }, { 20,0  }, {  0,0  }
-}, {
-    // LED Index to Flag
-    // **NB**: Reversed order
-    4, 4, 4,       4,       4, 4, 4, 4,
-    4, 4,    4, 1, 1, 1, 1, 1, 1, 1, 4,
-    4,    1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
-    4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4
-} };
-
-#endif  // RGB_MATRIX_ENABLE

+ 44 - 0
keyboards/idobao/id42/keyboard.json

@@ -56,6 +56,50 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [3, 11], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [3, 10], "x": 204, "y": 64, "flags": 4},
+            {"matrix": [3, 9], "x": 183, "y": 64, "flags": 4},
+            {"matrix": [3, 6], "x": 135, "y": 64, "flags": 4},
+            {"matrix": [3, 3], "x": 84, "y": 64, "flags": 4},
+            {"matrix": [3, 2], "x": 48, "y": 64, "flags": 4},
+            {"matrix": [3, 1], "x": 25, "y": 64, "flags": 4},
+            {"matrix": [3, 0], "x": 3, "y": 64, "flags": 4},
+            {"matrix": [2, 11], "x": 224, "y": 43, "flags": 4},
+            {"matrix": [2, 10], "x": 204, "y": 43, "flags": 4},
+            {"matrix": [2, 8], "x": 181, "y": 43, "flags": 4},
+            {"matrix": [2, 7], "x": 158, "y": 43, "flags": 1},
+            {"matrix": [2, 6], "x": 137, "y": 43, "flags": 1},
+            {"matrix": [2, 5], "x": 117, "y": 43, "flags": 1},
+            {"matrix": [2, 4], "x": 97, "y": 43, "flags": 1},
+            {"matrix": [2, 3], "x": 76, "y": 43, "flags": 1},
+            {"matrix": [2, 2], "x": 56, "y": 43, "flags": 1},
+            {"matrix": [2, 1], "x": 36, "y": 43, "flags": 1},
+            {"matrix": [2, 0], "x": 8, "y": 43, "flags": 4},
+            {"matrix": [1, 11], "x": 216, "y": 21, "flags": 4},
+            {"matrix": [1, 9], "x": 188, "y": 21, "flags": 1},
+            {"matrix": [1, 8], "x": 168, "y": 21, "flags": 1},
+            {"matrix": [1, 7], "x": 148, "y": 21, "flags": 1},
+            {"matrix": [1, 6], "x": 127, "y": 21, "flags": 1},
+            {"matrix": [1, 5], "x": 107, "y": 21, "flags": 1},
+            {"matrix": [1, 4], "x": 87, "y": 21, "flags": 1},
+            {"matrix": [1, 3], "x": 66, "y": 21, "flags": 1},
+            {"matrix": [1, 2], "x": 46, "y": 21, "flags": 1},
+            {"matrix": [1, 1], "x": 25, "y": 21, "flags": 1},
+            {"matrix": [1, 0], "x": 3, "y": 21, "flags": 4},
+            {"matrix": [0, 11], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 204, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 183, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 163, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 143, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 122, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 102, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 81, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 61, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 41, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 20, "y": 0, "flags": 1},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}
+        ],
         "max_brightness": 180,
         "sleep": true
     },

+ 0 - 68
keyboards/idobao/id61/id61.c

@@ -1,68 +0,0 @@
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#if defined(RGB_MATRIX_ENABLE)
-
-/* Pre-key
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │60 │59 │58 │57 │56 │55 │54 │53 │52 │51 │50 │49 │48 │  47   │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ 46  │45 │44 │43 │42 │41 │40 │39 │38 │37 │36 │35 │34 │ 33  │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │  32  │31 │30 │29 │28 │27 │26 │25 │24 │23 │22 │21 │   20   │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
- * │   19   │18 │17 │16 │15 │14 │13 │12 │11 │10 │ 9 │    8     │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ 7  │ 6  │ 5  │            4           │ 3  │ 2  │ 1  │ 0  │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- *
- * Underglow (from top / [Esc] = top left)
- * ┌────┬────┬────┬────┬────┐
- * │ 61 │ 62 │ 63 │ 64 │ 65 │
- * ├────┴────┴────┴────┴────┤
- * ├────┬────┬────┬────┬────┤
- * │ 70 │ 69 │ 68 │ 67 │ 66 │
- * └────┴────┴────┴────┴────┘
- */
-
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    { 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47 },
-    { 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33 },
-    { 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, __ },
-    { 19, __, 18, 17, 16, 15, 14, 13, 12, 11, 10,  9,  8, __ },
-    {  7,  6,  5, __, __, __,  4, __, __, __,  3,  2,  1,  0 },
-}, {
-    // LED Index to Physical Position
-    // generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
-    /* NB: Reverse order! */
-    {224,64 }, {204,64 }, {184,64 }, {163,64 },                                  {103,64 },                                  { 42,64 }, { 22,64 }, {  2,64 },
-    {212,48 },            {182,48 }, {165,48 }, {149,48 }, {133,48 }, {117,48 }, {101,48 }, { 85,48 }, { 69,48 }, { 52,48 }, { 36,48 }, { 10,48 },
-    {216,32 }, {190,32 }, {174,32 }, {157,32 }, {141,32 }, {125,32 }, {109,32 }, { 93,32 }, { 77,32 }, { 61,32 }, { 44,32 }, { 28,32 }, {  6,32 },
-    {222,16 }, {202,16 }, {186,16 }, {170,16 }, {153,16 }, {137,16 }, {121,16 }, {105,16 }, { 89,16 }, { 73,16 }, { 57,16 }, { 40,16 }, { 24,16 }, {  4,16 },
-    {218,0  }, {194,0  }, {178,0  }, {161,0  }, {145,0  }, {129,0  }, {113,0  }, { 97,0  }, { 81,0  }, { 65,0  }, { 48,0  }, { 32,0  }, { 16,0  }, {  0,0  }
-    // underglow LEDs (positions pushed to nearest edge to match edge key colors)
-    #ifndef ID61_DISABLE_UNDERGLOW
-    , {  0,0  }, { 56,0  }, { 112,0  }, {168,0  }, {224,0  },
-    {224,64 }, {168,64 }, {112,64 }, { 56,64 }, { 0,64 }
-    #endif
-}, {
-    // LED Index to Flag
-    /* NB: Reverse order! */
-    1, 1, 1, 1,          4,          1, 1, 1,
-    1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
-    // underglow LEDs
-    #ifndef ID61_DISABLE_UNDERGLOW
-    , 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2
-    #endif
-} };
-
-#endif  // RGB_MATRIX_ENABLE

+ 73 - 0
keyboards/idobao/id61/keyboard.json

@@ -56,6 +56,79 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 204, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 184, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 163, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 103, "y": 64, "flags": 4},
+            {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [3, 12], "x": 212, "y": 48, "flags": 1},
+            {"matrix": [3, 11], "x": 182, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 165, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 149, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 133, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 117, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 101, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 85, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+            {"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
+            {"matrix": [2, 12], "x": 216, "y": 32, "flags": 1},
+            {"matrix": [2, 11], "x": 190, "y": 32, "flags": 1},
+            {"matrix": [2, 10], "x": 174, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 157, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 141, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 125, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 109, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 77, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 61, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 9},
+            {"matrix": [1, 13], "x": 222, "y": 16, "flags": 1},
+            {"matrix": [1, 12], "x": 202, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 186, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 170, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 153, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 137, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 121, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 105, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 89, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 73, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 57, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [0, 13], "x": 218, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 194, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 178, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 161, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 145, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 129, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 113, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 81, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 65, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 56, "y": 0, "flags": 2},
+            {"x": 112, "y": 0, "flags": 2},
+            {"x": 168, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 168, "y": 64, "flags": 2},
+            {"x": 112, "y": 64, "flags": 2},
+            {"x": 56, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2}
+        ],
         "max_brightness": 170,
         "sleep": true
     },

+ 0 - 68
keyboards/idobao/id63/id63.c

@@ -1,68 +0,0 @@
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#ifdef RGB_MATRIX_ENABLE
-
-/* Pre-key LED addresses
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │62 │61 │60 │59 │58 │57 │56 │55 │54 │53 │52 │51 │50 │  49   │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ 48  │47 │46 │45 │44 │43 │42 │41 │40 │39 │38 │37 │36 │ 35  │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │  34  │33 │32 │31 │30 │29 │28 │27 │26 │25 │24 │23 │   22   │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
- * │   21   │20 │19 │18 │17 │16 │15 │14 │13 │12 │  11  │10 │ 9 │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
- * │ 8  │ 7  │ 6  │            5           │ 4 │ 3 │ 2 │ 1 │ 0 │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
- *
- * Underglow LED addresses (as seen from top / [Esc] = top left)
- * ┌────┬────┬────┬────┬────┬────┐
- * │ 63 │ 64 │ 65 │ 66 │ 67 │ 68 │
- * ├────┴────┴────┴────┴────┴────┤
- * ├────┬────┬────┬────┬────┬────┤
- * │ 74 │ 73 │ 72 │ 71 │ 70 │ 69 │
- * └────┴────┴────┴────┴────┴────┘
- */
-
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    {  62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49 },
-    {  48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35 },
-    {  34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, __, 22 },
-    {  21, __, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9  },
-    {  8,  7,  __, 6,  __, __, 5,  __, __, 4,  3,  2,  1,  0  },
-}, {
-    // LED Index to Physical Position
-    // generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
-    /* NB: Reverse & upside-down order! */
-    {224,64 }, {208,64 }, {192,64 }, {176,64 }, {160,64 },                       {102,64 },                       { 42,64 },            { 22,64 }, {  2,64 },
-    {224,48 }, {208,48 }, {186,48 }, {164,48 }, {148,48 }, {132,48 }, {116,48 }, {100,48 }, { 84,48 }, { 68,48 }, { 52,48 }, { 36,48 },            { 10,48 },
-    {214,32 },            {188,32 }, {172,32 }, {156,32 }, {140,32 }, {124,32 }, {108,32 }, { 92,32 }, { 76,32 }, { 60,32 }, { 44,32 }, { 28,32 }, {  6,32 },
-    {220,16 }, {200,16 }, {184,16 }, {168,16 }, {152,16 }, {136,16 }, {120,16 }, {104,16 }, { 88,16 }, { 72,16 }, { 56,16 }, { 40,16 }, { 24,16 }, {  4,16 },
-    {216,0  }, {192,0  }, {176,0  }, {160,0  }, {144,0  }, {128,0  }, {112,0  }, { 96,0  }, { 80,0  }, { 64,0  }, { 48,0  }, { 32,0  }, { 16,0  }, {  0,0  }
-    // underglow LEDs (positions pushed to nearest edge to match edge key colors)
-    #ifndef ID63_DISABLE_UNDERGLOW
-    , {  0,0  }, { 45,0  }, { 90,0  }, {134,0  }, {179,0  }, {224,0  },
-    {224,64 }, {179,64 }, {134,64 }, { 90,64 }, { 45,64 }, {  0,64 }
-    #endif
-}, {
-    // LED Index to Flag
-    /* NB: Reverse & upside-down order! */
-    4, 4, 4, 1, 1,       4,       1,    1, 1,
-    1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,
-    1,    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
-    // underglow LEDs
-    #ifndef ID63_DISABLE_UNDERGLOW
-    , 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2
-    #endif
-} };
-
-#endif  // RGB_MATRIX_ENABLE

+ 77 - 0
keyboards/idobao/id63/keyboard.json

@@ -56,6 +56,83 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [4, 12], "x": 208, "y": 64, "flags": 4},
+            {"matrix": [4, 11], "x": 192, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 176, "y": 64, "flags": 1},
+            {"matrix": [4, 9], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 102, "y": 64, "flags": 4},
+            {"matrix": [4, 3], "x": 42, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [3, 13], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [3, 12], "x": 208, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 186, "y": 48, "flags": 1},
+            {"matrix": [3, 10], "x": 164, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 148, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 132, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 116, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 100, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 84, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 68, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+            {"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
+            {"matrix": [2, 13], "x": 214, "y": 32, "flags": 1},
+            {"matrix": [2, 11], "x": 188, "y": 32, "flags": 1},
+            {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 124, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 9},
+            {"matrix": [1, 13], "x": 220, "y": 16, "flags": 1},
+            {"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [0, 13], "x": 216, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 192, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 45, "y": 0, "flags": 2},
+            {"x": 90, "y": 0, "flags": 2},
+            {"x": 134, "y": 0, "flags": 2},
+            {"x": 179, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 179, "y": 64, "flags": 2},
+            {"x": 134, "y": 64, "flags": 2},
+            {"x": 90, "y": 64, "flags": 2},
+            {"x": 45, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2}
+        ],
         "max_brightness": 180,
         "sleep": true
     },

+ 0 - 68
keyboards/idobao/id67/id67.c

@@ -1,68 +0,0 @@
-// Copyright 2021 Tybera (@tybera)
-// Copyright 2021 Werther (@thewerther)
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#if defined(RGB_MATRIX_ENABLE)
-
-/* NB!!: Indices are reversed on the physical board, top left is bottom right.
- * These "LED Index to *" arrays are in that reversed order!
- * i.e., Space row on top, listed right to left */
-led_config_t g_led_config = { {
-    /* Under- / Per-Key
-     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
-     * │66 │65 │64 │63 │62 │61 │60 │59 │58 │57 │56 │55 │54 │  53   │52 │
-     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
-     * │ 51  │50 │49 │48 │47 │46 │45 │44 │43 │42 │41 │40 │39 │ 38  │37 │
-     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
-     * │  36  │35 │34 │33 │32 │31 │30 │29 │28 │27 │26 │25 │   24   │23 │
-     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
-     * │   22   │21 │20 │19 │18 │17 │16 │15 │14 │13 │12 │  11  │10 │ 9 │
-     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
-     * │  8 │  7 │  6 │            5           │  4 │  3 │ │ 2 │ 1 │ 0 │
-     * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
-     *
-     * Bottom Side (as seen from top orientation)
-     *   67  68  69  70  71
-     *   76  75  74  73  72
-     */
-    // Key Matrix to LED Index
-    {66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52},
-    {51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37},
-    {36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, __, 24, 23},
-    {22, __, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10,  9},
-    { 8,  7, __,  6, __, __,  5, __, __, __,  4,  3,  2,  1,  0},
-}, {
-    // LED Index to Physical Position
-    // based on: https://gist.github.com/vinorodrigues/07fd735683856b2a06c7c52b9b3878cb
-    // **NB: In reverse order**
-    {224,64 }, {209,64 }, {194,64 }, {170,64 }, {151,64 },                                  { 95,64 },                       { 39,64 },            { 21,64 }, {  2,64 },
-    {224,48 }, {209,48 }, {189,48 }, {168,48 }, {153,48 }, {138,48 }, {123,48 }, {108,48 }, { 93,48 }, { 78,48 }, { 63,48 }, { 49,48 }, { 34,48 },            {  9,48 },
-    {224,32 }, {200,32 },            {175,32 }, {161,32 }, {146,32 }, {131,32 }, {116,32 }, {101,32 }, { 86,32 }, { 71,32 }, { 56,32 }, { 41,32 }, { 26,32 }, {  6,32 },
-    {224,16 }, {205,16 }, {187,16 }, {172,16 }, {157,16 }, {142,16 }, {127,16 }, {112,16 }, { 97,16 }, { 82,16 }, { 67,16 }, { 52,16 }, { 37,16 }, { 22,16 }, {  4,16 },
-    {224,0  }, {202,0  }, {179,0  }, {164,0  }, {149,0  }, {134,0  }, {119,0  }, {105,0  }, { 90,0  }, { 75,0  }, { 60,0  }, { 45,0  }, { 30,0  }, { 15,0  }, {  0,0  }
-    // underglow LEDs
-    #ifndef ID67_DISABLE_UNDERGLOW
-    , {0, 0}, {56, 0}, {112, 0}, {168, 0}, {224, 0},
-    {224, 64}, {168, 64}, {112, 64}, {56, 64}, {0, 64}
-    #endif
-},  {
-    // LED Index to Flag
-    // **NB: In reverse order**
-    1, 1, 1, 1, 1,          4,       1,    1, 1,  // fifth/bottom row
-    1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,  // fourth row
-    1,    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9,  // third row
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,  // second row
-    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1   // first/top row
-    // underglow LEDs
-    #ifndef ID67_DISABLE_UNDERGLOW
-    , 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2
-    #endif
-} };
-
-#endif  // RGB_MATRIX_ENABLE

+ 79 - 0
keyboards/idobao/id67/keyboard.json

@@ -56,6 +56,85 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 209, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 194, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 170, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 151, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 95, "y": 64, "flags": 4},
+            {"matrix": [4, 3], "x": 39, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 21, "y": 64, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [3, 14], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [3, 13], "x": 209, "y": 48, "flags": 1},
+            {"matrix": [3, 12], "x": 189, "y": 48, "flags": 1},
+            {"matrix": [3, 11], "x": 168, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 153, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 138, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 123, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 108, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 93, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 78, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 63, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 34, "y": 48, "flags": 4},
+            {"matrix": [3, 0], "x": 9, "y": 48, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 1},
+            {"matrix": [2, 13], "x": 200, "y": 32, "flags": 1},
+            {"matrix": [2, 11], "x": 175, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 161, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 131, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 101, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 71, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 56, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 41, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 26, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 9},
+            {"matrix": [1, 14], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [1, 13], "x": 205, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 187, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 172, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 157, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 142, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 127, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 112, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 97, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 82, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 67, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 52, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 37, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 22, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [0, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [0, 13], "x": 202, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 179, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 164, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 149, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 134, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 119, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 56, "y": 0, "flags": 2},
+            {"x": 112, "y": 0, "flags": 2},
+            {"x": 168, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 168, "y": 64, "flags": 2},
+            {"x": 112, "y": 64, "flags": 2},
+            {"x": 56, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2}
+        ],
         "max_brightness": 180,
         "sleep": true
     },

+ 88 - 1
keyboards/idobao/id75/v2/keyboard.json

@@ -44,7 +44,94 @@
             "solid_splash": true,
             "solid_multisplash": true
         },
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"x": 8, "y": 12, "flags": 2},
+            {"x": 60, "y": 12, "flags": 2},
+            {"x": 112, "y": 12, "flags": 2},
+            {"x": 164, "y": 12, "flags": 2},
+            {"x": 216, "y": 12, "flags": 2},
+            {"x": 216, "y": 60, "flags": 2},
+            {"x": 164, "y": 60, "flags": 2},
+            {"x": 112, "y": 60, "flags": 2},
+            {"x": 60, "y": 60, "flags": 2},
+            {"x": 8, "y": 60, "flags": 2},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [4, 13], "x": 208, "y": 64, "flags": 4},
+            {"matrix": [4, 12], "x": 192, "y": 64, "flags": 4},
+            {"matrix": [4, 11], "x": 176, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 160, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 144, "y": 64, "flags": 4},
+            {"matrix": [4, 8], "x": 128, "y": 64, "flags": 4},
+            {"matrix": [4, 7], "x": 112, "y": 64, "flags": 4},
+            {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4},
+            {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4},
+            {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4},
+            {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4},
+            {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4},
+            {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [3, 14], "x": 224, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 208, "y": 48, "flags": 4},
+            {"matrix": [3, 12], "x": 192, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 176, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 160, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 144, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 128, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 112, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
+            {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 208, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 192, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 176, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 144, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 128, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 112, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 96, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4},
+            {"matrix": [1, 14], "x": 224, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 208, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 176, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 160, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 144, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 112, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 96, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 64, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4},
+            {"matrix": [0, 14], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 208, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}
+        ]
     },
     "build": {
         "lto": true

+ 0 - 49
keyboards/idobao/id75/v2/v2.c

@@ -1,49 +0,0 @@
-/* Copyright 2022 peepeetee
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include "quantum.h"
-
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-{ 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70 },
-{ 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55 },
-{ 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40 },
-{ 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25 },
-{ 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10 }
-}, {
-    // LED Index to Physical Position
-{8, 12},{60, 12},{112, 12},{164, 12},{216, 12},
-{216, 60},{164, 60},{112, 60},{60, 60},{8, 60},
-
-
-{224, 64}, {208, 64}, {192, 64}, {176, 64}, {160, 64}, {144, 64}, {128, 64}, {112, 64}, {96, 64}, {80, 64}, {64, 64}, {48, 64}, {32, 64}, {16, 64}, {0, 64},
-{224, 48}, {208, 48}, {192, 48}, {176, 48}, {160, 48}, {144, 48}, {128, 48}, {112, 48}, {96, 48}, {80, 48}, {64, 48}, {48, 48}, {32, 48}, {16, 48}, {0, 48},
-{224, 32}, {208, 32}, {192, 32}, {176, 32}, {160, 32}, {144, 32}, {128, 32}, {112, 32}, {96, 32}, {80, 32}, {64, 32}, {48, 32}, {32, 32}, {16, 32}, {0, 32},
-{224, 16}, {208, 16}, {192, 16}, {176, 16}, {160, 16}, {144, 16}, {128, 16}, {112, 16}, {96, 16}, {80, 16}, {64, 16}, {48, 16}, {32, 16}, {16, 16}, {0, 16},
-{224,  0}, {208,  0}, {192,  0}, {176,  0}, {160,  0}, {144,  0}, {128,  0}, {112,  0}, {96,  0}, {80,  0}, {64,  0}, {48,  0}, {32,  0}, {16,  0}, {0,  0},
-
-}, {
-    // LED Index to Flag
-2,2,2,2,2,2,2,2,2,2,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-
-} };
-
-#endif

+ 0 - 76
keyboards/idobao/id80/v3/ansi/ansi.c

@@ -1,76 +0,0 @@
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#ifdef RGB_MATRIX_ENABLE
-
-/* Per-key LED's
- * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┐
- * │79 ││78 │77 │76 │75 ││74 │73 │72 │71 ││70 │69 │68 │67 ││66 ││65 │
- * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
- * │64 │63 │62 │61 │60 │59 │58 │57 │56 │55 │54 │53 │52 │  51   ││50 │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
- * │ 49  │48 │47 │46 │45 │44 │43 │42 │41 │40 │39 │38 │37 │ 36  ││35 │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
- * │  34  │33 │32 │31 │30 │29 │28 │27 │26 │25 │24 │23 │   22   │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
- * │   21   │20 │19 │18 │17 │16 │15 │14 │13 │12 │11 │  10  │┌───┐
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│ 9 │
- * │  8 │  7 │  6 │            5           │  4  │  3  │┌───┼───┼───┐
- * └────┴────┴────┴────────────────────────┴─────┴─────┘│ 2 │ 1 │ 0 │
- *                                                      └───┴───┴───┘
- * Underglow (as seen from top)
- * ┌────┬────┬────┬────┬────┬────┐
- * │ 80 │ 81 │ 82 │ 83 │ 84 │ 85 │
- * ├────┼────┴────┴────┴────┼────┤
- * │ 93 │                   │ 86 │
- * ├────┼────┬────┬────┬────┼────┤
- * │ 92 │ 91 │ 90 │ 89 │ 88 │ 87 │
- * └────┴────┴────┴────┴────┴────┘
- */
-
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    /* Generated with: https://xelus.netlify.app/guides/KLE_to_RGB_parser */
-    {   8,  21,  34,  49,  64,  79,  __,  __,  __,  __,  __ },
-    {   7,  __,  33,  48,  63,  78,  __,  __,  __,  __,  __ },
-    {   6,  20,  32,  47,  62,  77,  __,  __,  35,  50,  65 },
-    {   0,  19,  31,  46,  61,  76,   9,  __,  36,  __,  67 },
-    {   1,  18,  30,  45,  60,  75,  10,  22,  37,  52,  68 },
-    {   2,  17,  29,  44,  59,  74,  11,  23,  38,  53,  69 },
-    {   5,  16,  28,  43,  58,  73,  __,  __,  __,  51,  66 },
-    {   3,  15,  27,  42,  57,  72,  12,  24,  39,  54,  70 },
-    {   4,  14,  26,  41,  56,  71,  13,  25,  40,  55,  __ },
-}, {
-    /* NB: Reversed order */
-    // per-key
-    {224,64 }, {209,64 }, {195,64 },                       {173,61 }, {151,61 },                       { 94,61 },                       { 39,61 }, { 20,61 }, {  2,61 },
-               {209,52 }, {185,49 }, {165,49 }, {151,49 }, {136,49 }, {121,49 }, {106,49 }, { 92,49 }, { 77,49 }, { 62,49 }, { 48,49 }, { 33,49 },            {  9,49 },
-               {196,38 },            {173,38 }, {158,38 }, {143,38 }, {129,38 }, {114,38 }, { 99,38 }, { 84,38 }, { 70,38 }, { 55,38 }, { 40,38 }, { 26,38 }, {  6,38 },
-    {224,26 }, {202,26 }, {184,26 }, {169,26 }, {154,26 }, {140,26 }, {125,26 }, {110,26 }, { 95,26 }, { 81,26 }, { 66,26 }, { 51,26 }, { 37,26 }, { 22,26 }, {  4,26 },
-    {224,15 }, {198,15 }, {176,15 }, {162,15 }, {147,15 }, {132,15 }, {118,15 }, {103,15 }, { 88,15 }, { 73,15 }, { 59,15 }, { 44,15 }, { 29,15 }, { 15,15 }, {  0,15 },
-    {224,0  }, {206,0  }, {187,0  }, {173,0  }, {158,0  }, {143,0  }, {125,0  }, {110,0  }, { 95,0  }, { 81,0  }, { 62,0  }, { 48,0  }, { 33,0  }, { 18,0  }, {  0,0  },
-    // underglow
-    {  0,0  }, { 45,0  }, { 90,0  }, {134,0  }, {179,0  }, {224,0  },
-    {224,32 },
-    {224,64 }, {179,64 }, {134,64 }, { 90,64 }, { 45,64 }, {  0,64 },
-    {  0,32 }
-}, {
-    /* NB: Reversed order */
-    4, 4, 4,       4, 4,       1,       4, 4, 4,
-       4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,    4,
-       4,    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
-    4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
-    4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-    //
-    2, 2, 2, 2, 2, 2,
-    2,
-    2, 2, 2, 2, 2, 2,
-    2
-} };
-
-#endif

+ 96 - 0
keyboards/idobao/id80/v3/ansi/keyboard.json

@@ -53,6 +53,102 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [3, 0], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [4, 0], "x": 209, "y": 64, "flags": 4},
+            {"matrix": [5, 0], "x": 195, "y": 64, "flags": 4},
+            {"matrix": [7, 0], "x": 173, "y": 61, "flags": 4},
+            {"matrix": [8, 0], "x": 151, "y": 61, "flags": 4},
+            {"matrix": [6, 0], "x": 94, "y": 61, "flags": 1},
+            {"matrix": [2, 0], "x": 39, "y": 61, "flags": 4},
+            {"matrix": [1, 0], "x": 20, "y": 61, "flags": 4},
+            {"matrix": [0, 0], "x": 2, "y": 61, "flags": 4},
+            {"matrix": [3, 6], "x": 209, "y": 52, "flags": 4},
+            {"matrix": [4, 6], "x": 185, "y": 49, "flags": 4},
+            {"matrix": [5, 6], "x": 165, "y": 49, "flags": 1},
+            {"matrix": [7, 6], "x": 151, "y": 49, "flags": 1},
+            {"matrix": [8, 6], "x": 136, "y": 49, "flags": 1},
+            {"matrix": [8, 1], "x": 121, "y": 49, "flags": 1},
+            {"matrix": [7, 1], "x": 106, "y": 49, "flags": 1},
+            {"matrix": [6, 1], "x": 92, "y": 49, "flags": 1},
+            {"matrix": [5, 1], "x": 77, "y": 49, "flags": 1},
+            {"matrix": [4, 1], "x": 62, "y": 49, "flags": 1},
+            {"matrix": [3, 1], "x": 48, "y": 49, "flags": 1},
+            {"matrix": [2, 1], "x": 33, "y": 49, "flags": 1},
+            {"matrix": [0, 1], "x": 9, "y": 49, "flags": 4},
+            {"matrix": [4, 7], "x": 196, "y": 38, "flags": 4},
+            {"matrix": [5, 7], "x": 173, "y": 38, "flags": 1},
+            {"matrix": [7, 7], "x": 158, "y": 38, "flags": 1},
+            {"matrix": [8, 7], "x": 143, "y": 38, "flags": 1},
+            {"matrix": [8, 2], "x": 129, "y": 38, "flags": 1},
+            {"matrix": [7, 2], "x": 114, "y": 38, "flags": 1},
+            {"matrix": [6, 2], "x": 99, "y": 38, "flags": 1},
+            {"matrix": [5, 2], "x": 84, "y": 38, "flags": 1},
+            {"matrix": [4, 2], "x": 70, "y": 38, "flags": 1},
+            {"matrix": [3, 2], "x": 55, "y": 38, "flags": 1},
+            {"matrix": [2, 2], "x": 40, "y": 38, "flags": 1},
+            {"matrix": [1, 2], "x": 26, "y": 38, "flags": 1},
+            {"matrix": [0, 2], "x": 6, "y": 38, "flags": 4},
+            {"matrix": [2, 8], "x": 224, "y": 26, "flags": 4},
+            {"matrix": [3, 8], "x": 202, "y": 26, "flags": 1},
+            {"matrix": [4, 8], "x": 184, "y": 26, "flags": 1},
+            {"matrix": [5, 8], "x": 169, "y": 26, "flags": 1},
+            {"matrix": [7, 8], "x": 154, "y": 26, "flags": 1},
+            {"matrix": [8, 8], "x": 140, "y": 26, "flags": 1},
+            {"matrix": [8, 3], "x": 125, "y": 26, "flags": 1},
+            {"matrix": [7, 3], "x": 110, "y": 26, "flags": 1},
+            {"matrix": [6, 3], "x": 95, "y": 26, "flags": 1},
+            {"matrix": [5, 3], "x": 81, "y": 26, "flags": 1},
+            {"matrix": [4, 3], "x": 66, "y": 26, "flags": 1},
+            {"matrix": [3, 3], "x": 51, "y": 26, "flags": 1},
+            {"matrix": [2, 3], "x": 37, "y": 26, "flags": 1},
+            {"matrix": [1, 3], "x": 22, "y": 26, "flags": 1},
+            {"matrix": [0, 3], "x": 4, "y": 26, "flags": 4},
+            {"matrix": [2, 9], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [6, 9], "x": 198, "y": 15, "flags": 4},
+            {"matrix": [4, 9], "x": 176, "y": 15, "flags": 1},
+            {"matrix": [5, 9], "x": 162, "y": 15, "flags": 1},
+            {"matrix": [7, 9], "x": 147, "y": 15, "flags": 1},
+            {"matrix": [8, 9], "x": 132, "y": 15, "flags": 1},
+            {"matrix": [8, 4], "x": 118, "y": 15, "flags": 1},
+            {"matrix": [7, 4], "x": 103, "y": 15, "flags": 1},
+            {"matrix": [6, 4], "x": 88, "y": 15, "flags": 1},
+            {"matrix": [5, 4], "x": 73, "y": 15, "flags": 1},
+            {"matrix": [4, 4], "x": 59, "y": 15, "flags": 1},
+            {"matrix": [3, 4], "x": 44, "y": 15, "flags": 1},
+            {"matrix": [2, 4], "x": 29, "y": 15, "flags": 1},
+            {"matrix": [1, 4], "x": 15, "y": 15, "flags": 1},
+            {"matrix": [0, 4], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [2, 10], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [6, 10], "x": 206, "y": 0, "flags": 4},
+            {"matrix": [3, 10], "x": 187, "y": 0, "flags": 4},
+            {"matrix": [4, 10], "x": 173, "y": 0, "flags": 4},
+            {"matrix": [5, 10], "x": 158, "y": 0, "flags": 4},
+            {"matrix": [7, 10], "x": 143, "y": 0, "flags": 4},
+            {"matrix": [8, 5], "x": 125, "y": 0, "flags": 4},
+            {"matrix": [7, 5], "x": 110, "y": 0, "flags": 4},
+            {"matrix": [6, 5], "x": 95, "y": 0, "flags": 4},
+            {"matrix": [5, 5], "x": 81, "y": 0, "flags": 4},
+            {"matrix": [4, 5], "x": 62, "y": 0, "flags": 4},
+            {"matrix": [3, 5], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [2, 5], "x": 33, "y": 0, "flags": 4},
+            {"matrix": [1, 5], "x": 18, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 0, "y": 0, "flags": 4},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 45, "y": 0, "flags": 2},
+            {"x": 90, "y": 0, "flags": 2},
+            {"x": 134, "y": 0, "flags": 2},
+            {"x": 179, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 32, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 179, "y": 64, "flags": 2},
+            {"x": 134, "y": 64, "flags": 2},
+            {"x": 90, "y": 64, "flags": 2},
+            {"x": 45, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 0, "y": 32, "flags": 2}
+        ],
         "max_brightness": 180,
         "sleep": true
     },

+ 105 - 0
keyboards/idobao/id87/v2/keyboard.json

@@ -56,6 +56,111 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 37, "y": 64, "flags": 2},
+            {"x": 75, "y": 64, "flags": 2},
+            {"x": 112, "y": 64, "flags": 2},
+            {"x": 149, "y": 64, "flags": 2},
+            {"x": 187, "y": 64, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 224, "y": 32, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 187, "y": 0, "flags": 2},
+            {"x": 149, "y": 0, "flags": 2},
+            {"x": 112, "y": 0, "flags": 2},
+            {"x": 75, "y": 0, "flags": 2},
+            {"x": 37, "y": 0, "flags": 2},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 0, "y": 32, "flags": 2},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
+            {"matrix": [5, 8], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 7], "x": 148, "y": 64, "flags": 1},
+            {"matrix": [5, 4], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [5, 3], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [10, 6], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [10, 2], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [10, 1], "x": 224, "y": 64, "flags": 1},
+            {"matrix": [9, 2], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [10, 4], "x": 170, "y": 52, "flags": 1},
+            {"matrix": [10, 5], "x": 146, "y": 52, "flags": 4},
+            {"matrix": [10, 7], "x": 133, "y": 52, "flags": 4},
+            {"matrix": [10, 8], "x": 120, "y": 52, "flags": 4},
+            {"matrix": [4, 8], "x": 107, "y": 52, "flags": 4},
+            {"matrix": [4, 7], "x": 94, "y": 52, "flags": 4},
+            {"matrix": [4, 6], "x": 81, "y": 52, "flags": 4},
+            {"matrix": [4, 5], "x": 68, "y": 52, "flags": 4},
+            {"matrix": [4, 4], "x": 55, "y": 52, "flags": 4},
+            {"matrix": [4, 3], "x": 42, "y": 52, "flags": 4},
+            {"matrix": [4, 2], "x": 29, "y": 52, "flags": 4},
+            {"matrix": [4, 0], "x": 8, "y": 52, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 1},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [9, 8], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [9, 7], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [9, 5], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [9, 3], "x": 174, "y": 40, "flags": 1},
+            {"matrix": [8, 1], "x": 224, "y": 27, "flags": 1},
+            {"matrix": [8, 2], "x": 211, "y": 27, "flags": 1},
+            {"matrix": [8, 6], "x": 198, "y": 27, "flags": 1},
+            {"matrix": [8, 3], "x": 179, "y": 27, "flags": 4},
+            {"matrix": [8, 4], "x": 162, "y": 27, "flags": 4},
+            {"matrix": [8, 5], "x": 149, "y": 27, "flags": 4},
+            {"matrix": [8, 7], "x": 136, "y": 27, "flags": 4},
+            {"matrix": [8, 8], "x": 123, "y": 27, "flags": 4},
+            {"matrix": [2, 8], "x": 110, "y": 27, "flags": 4},
+            {"matrix": [2, 7], "x": 97, "y": 27, "flags": 4},
+            {"matrix": [2, 6], "x": 84, "y": 27, "flags": 4},
+            {"matrix": [2, 5], "x": 71, "y": 27, "flags": 4},
+            {"matrix": [2, 4], "x": 58, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 45, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 27, "flags": 4},
+            {"matrix": [2, 1], "x": 19, "y": 27, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 4},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [7, 8], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [7, 0], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [7, 7], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [7, 5], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [7, 3], "x": 175, "y": 15, "flags": 1},
+            {"matrix": [7, 6], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [7, 2], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [7, 1], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [6, 1], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [6, 2], "x": 211, "y": 0, "flags": 1},
+            {"matrix": [6, 6], "x": 198, "y": 0, "flags": 1},
+            {"matrix": [6, 3], "x": 182, "y": 0, "flags": 1},
+            {"matrix": [6, 4], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [6, 5], "x": 156, "y": 0, "flags": 1},
+            {"matrix": [6, 7], "x": 143, "y": 0, "flags": 1},
+            {"matrix": [6, 8], "x": 123, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 110, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 97, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 84, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 65, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 52, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 39, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 26, "y": 0, "flags": 1},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}
+        ],
         "max_brightness": 180,
         "sleep": true
     },

+ 0 - 83
keyboards/idobao/id87/v2/v2.c

@@ -1,83 +0,0 @@
-// Copyright 2022 vinorodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#if defined(RGB_MATRIX_ENABLE)
-
-/* Under-, Per-Key
- * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
- * │102│   │101│100│99 │98 │ │97 │96 │95 │94 │ │93 │92 │91 │90 │ │89 │88 │87 │
- * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
- * │70 │71 │72 │73 │74 │75 │76 │77 │78 │79 │80 │81 │82 │  83   │ │84 │85 │86 │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
- * │  69 │68 │67 │66 │65 │64 │63 │62 │61 │60 │59 │58 │57 │ 56  │ │55 │54 │53 │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
- * │  40  │41 │42 │43 │44 │45 │46 │47 │48 │49 │50 │51 │  52    │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐
- * │   39   │38 │37 │36 │35 │34 │33 │32 │31 │30 │29 │    28    │     │27 │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
- * │ 16 │ 17 │ 18 │           19           │ 20 │ 21 │ 22 │ 23 │ │24 │25 │26 │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
- *
- * Underglow (as seen from top)
- * ┌───┬───┬───┬───┬───┬───┬───┐
- * │14 │13 │12 │11 │10 │ 9 │ 8 │
- * ├───┼───┴───┴───┴───┴───┼───┤
- * │15 │                   │ 7 │
- * ├───┼───┬───┬───┬───┬───┼───┤
- * │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │
- * └───┴───┴───┴───┴───┴───┴───┘
-*/
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    // partially generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser & CSV Excel formula
-
-    { 102, __, 101, 100, 99, 98, 97, 96, 95 },
-    { 70,  71,  72, 73,  74, 75, 76, 77, 78 },
-    { 69,  68,  67, 66,  65, 64, 63, 62, 61 },
-    { 40,  41,  42, 43,  44, 45, 46, 47, 48 },
-    { 39,  __,  38, 37,  36, 35, 34, 33, 32 },
-    { 16,  17,  18, 23,  22, __, 19, 21, 20 },
-    { __,  87,  88, 90,  91, 92, 89, 93, 94 },
-    { 80,  86,  85, 83,  __, 82, 84, 81, 79 },
-    { __,  53,  54, 56,  57, 58, 55, 59, 60 },
-    { __,  __,  27, 52,  __, 51, __, 50, 49 },
-    { __,  26,  25, __,  28, 29, 24, 30, 31 }
-}, {
-    // LED Index to Physical Position
-    // generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
-    // underglow
-    /* colors are pushed to the edge as only the edges can be seen */
-    {  0,64 }, { 37,64 }, { 75,64 }, {112,64 }, {149,64 }, {187,64 }, {224,64 },
-    {224,32 },
-    {224,0  }, {187,0  }, {149,0  }, {112,0  }, { 75,0  }, { 37,0  }, {  0,0  },
-    {  0,32  },
-    // under-, per-key
-    /* pattern is complex; starts at btm-lft, zig-zags up, and ends top-lft */
-    {  2,64 }, { 18,64 }, { 34,64 }, { 83,64 }, {131,64 }, {148,64 }, {164,64 }, {180,64 }, {198,64 }, {211,64 }, {224,64 },  // lf-2-rt, btm
-    {211,52 }, {170,52 }, {146,52 }, {133,52 }, {120,52 }, {107,52 }, { 94,52 }, { 81,52 }, { 68,52 }, { 55,52 }, { 42,52 }, { 29,52 }, {  8,52 },  // rt-2-lf**
-    {  5,40 }, { 23,40 }, { 36,40 }, { 49,40 }, { 62,40 }, { 75,40 }, { 88,40 }, {101,40 }, {114,40 }, {127,40 }, {140,40 }, {153,40 }, {174,40 },  // lf-2-rt
-    {224,27 }, {211,27 }, {198,27 }, {179,27 }, {162,27 }, {149,27 }, {136,27 }, {123,27 }, {110,27 }, { 97,27 }, { 84,27 }, { 71,27 }, { 58,27 }, { 45,27 }, { 32,27 }, { 19,27 }, {  3,27 },  // rt-2-lf**
-    {  0,15 }, { 13,15 }, { 26,15 }, { 39,15 }, { 52,15 }, { 65,15 }, { 78,15 }, { 91,15 }, {104,15 }, {117,15 }, {130,15 }, {143,15 }, {156,15 }, {175,15 }, {198,15 }, {211,15 }, {224,15 },  // lf-2-rt
-    {224,0  }, {211,0  }, {198,0  }, {182,0  }, {169,0  }, {156,0  }, {143,0  }, {123,0  }, {110,0  }, { 97,0  }, { 84,0  }, { 65,0  }, { 52,0  }, { 39,0  }, { 26,0  }, {  0,0  },  // rt-2-lf**, top
-}, {
-    // LED Index to Flag
-    // underglow
-    2, 2, 2, 2, 2, 2, 2,
-    2,
-    2, 2, 2, 2, 2, 2, 2,
-    2,
-    // under-, per-key
-    1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-} };
-
-#endif  // RGB_MATRIX_ENABLE

+ 33 - 0
keyboards/idobao/montex/v1rgb/keyboard.json

@@ -33,6 +33,39 @@
             "solid_splash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 0, "y": 0, "flags": 2},
+            {"matrix": [0, 2], "x": 112, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 56, "y": 0, "flags": 1},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [5, 1], "x": 84, "y": 64, "flags": 4},
+            {"matrix": [5, 2], "x": 168, "y": 64, "flags": 4},
+            {"matrix": [5, 3], "x": 224, "y": 58, "flags": 4},
+            {"matrix": [4, 3], "x": 168, "y": 41, "flags": 4},
+            {"matrix": [4, 2], "x": 112, "y": 41, "flags": 4},
+            {"matrix": [4, 1], "x": 56, "y": 41, "flags": 4},
+            {"matrix": [4, 0], "x": 0, "y": 41, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 29, "flags": 4},
+            {"matrix": [3, 1], "x": 56, "y": 29, "flags": 4},
+            {"matrix": [3, 2], "x": 112, "y": 29, "flags": 4},
+            {"matrix": [3, 3], "x": 168, "y": 29, "flags": 4},
+            {"matrix": [2, 4], "x": 224, "y": 35, "flags": 4},
+            {"matrix": [2, 3], "x": 168, "y": 29, "flags": 4},
+            {"matrix": [2, 2], "x": 112, "y": 29, "flags": 4},
+            {"matrix": [2, 1], "x": 56, "y": 29, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 29, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 17, "flags": 4},
+            {"matrix": [1, 1], "x": 56, "y": 17, "flags": 4},
+            {"matrix": [1, 2], "x": 112, "y": 17, "flags": 4},
+            {"matrix": [1, 3], "x": 168, "y": 17, "flags": 4},
+            {"matrix": [1, 4], "x": 224, "y": 17, "flags": 4},
+            {"matrix": [0, 4], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 168, "y": 0, "flags": 1}
+        ],
         "max_brightness": 170
     },
     "features": {

+ 0 - 58
keyboards/idobao/montex/v1rgb/v1rgb.c

@@ -1,58 +0,0 @@
-// Copyright 2022 peepeetee (@peepeetee)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#ifdef RGB_MATRIX_ENABLE
-
-/* WS2812 indices always start at 0
- * underglow = 0-3
- * note: starting point of 4 and jump from 6 to 7
- * ┌───┌───┐───┬───┬───┐
- * │ 6 │ 5 │ 4 │30 │29 │
- * ├───┼───┘───┼───┼───┤
- * │24 │25 │26 │27 │28 │
- * ├───┼───┼───┼───┼───┤
- * │23 │22 │21 │20 │19 │
- * ├───┼───┼───┼───┤   │
- * │15 │16 │17 │18 │   │
- * ├───┼───┼───┼───┤───┤
- * │14 │13 │12 │11 │10 │
- * ├───┼───┴───┼───┤   │
- * │ 7 │   8   │ 9 │   │
- * └───┴───────┴───┘───┘
- */
-
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    { 6,  5,  4,  30, 29},
-    { 24, 25, 26, 27, 28},
-    { 23, 22, 21, 20, 19},
-    { 15, 16, 17, 18, NO_LED},
-    { 14, 13, 12, 11, NO_LED},
-    { 7,  8,  9,  10, NO_LED}
-}, {
-    // LED Index to Physical Position
-    /* underglow: because this is under the kb, you want the colors on the edge (corners) of the acrylic plate */
-    { 224,0  }, { 224,64},  {   0,64 }, {  0,0   },              // 0-3 (underglow)
-    /* per-key: origins generated from https://xelus.netlify.app/guides/KLE_to_RGB_parser */
-    { 112,0  }, {  56,0  }, {   0,0  }, /* ---- */  /* ---- */   // 4-6 (top row middle to left)
-    {   0,64 }, {  84,64 }, { 168,64 },                          // 7-9 (jump to bottom left)
-    { 224,58 }, { 168,41 }, { 112,41 }, {  56,41 }, {   0,41 },  // 10-14 (flow Z pattern upwards...)
-    {   0,29 }, {  56,29 }, { 112,29 }, { 168,29 },              // 15-18
-    { 224,35 }, { 168,29 }, { 112,29 }, {  56,29 }, {   0,29 },  // 19-23
-    {   0,17 }, {  56,17 }, { 112,17 }, { 168,17 }, { 224,17 },  // 24-28
-    /* ---- */  /* ---- */  /* ---- */  { 224,0  }, { 168,0  }   // 29-30 (end at top)
-}, {
-    // LED Index to Flag
-    2, 2, 2, 2,     // 0 1 2 3 (underglow)
-    1, 1, 1,        // 4 5 6
-    4, 4, 4, 4,     // 7 - 10
-    4, 4, 4, 4,     //11 - 14
-    4, 4, 4, 4,     //15 - 18
-    4, 4, 4, 4, 4,  //19 - 23
-    4, 4, 4, 4, 4,  //24 - 28
-    1, 1            //29 30
-} };
-
-#endif

+ 33 - 0
keyboards/idobao/montex/v2/keyboard.json

@@ -41,6 +41,39 @@
             "solid_splash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 4], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 168, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 112, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 56, "y": 0, "flags": 1},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 17, "flags": 4},
+            {"matrix": [1, 1], "x": 56, "y": 17, "flags": 4},
+            {"matrix": [1, 2], "x": 112, "y": 17, "flags": 4},
+            {"matrix": [1, 3], "x": 168, "y": 17, "flags": 4},
+            {"matrix": [1, 4], "x": 224, "y": 17, "flags": 4},
+            {"matrix": [2, 4], "x": 224, "y": 35, "flags": 4},
+            {"matrix": [2, 3], "x": 168, "y": 29, "flags": 4},
+            {"matrix": [2, 2], "x": 112, "y": 29, "flags": 4},
+            {"matrix": [2, 1], "x": 56, "y": 29, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 29, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 41, "flags": 4},
+            {"matrix": [3, 1], "x": 56, "y": 41, "flags": 4},
+            {"matrix": [3, 2], "x": 112, "y": 41, "flags": 4},
+            {"matrix": [3, 3], "x": 168, "y": 41, "flags": 4},
+            {"matrix": [5, 3], "x": 224, "y": 58, "flags": 4},
+            {"matrix": [4, 3], "x": 168, "y": 52, "flags": 4},
+            {"matrix": [4, 2], "x": 112, "y": 52, "flags": 4},
+            {"matrix": [4, 1], "x": 56, "y": 52, "flags": 4},
+            {"matrix": [4, 0], "x": 0, "y": 52, "flags": 4},
+            {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [5, 1], "x": 84, "y": 64, "flags": 4},
+            {"matrix": [5, 2], "x": 168, "y": 64, "flags": 4},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2}
+        ],
         "max_brightness": 180,
         "sleep": true
     },

+ 0 - 82
keyboards/idobao/montex/v2/v2.c

@@ -1,82 +0,0 @@
-// Copyright 2022 IBNobody (@IBNobody)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "quantum.h"
-
-#define __ NO_LED
-
-#ifdef RGB_MATRIX_ENABLE
-
-/* Under-, Per-key
- * ┌───┬───┬───┬───┬───┐
- * │ 4 │ 3 │ 2 │ 1 │ 0 │
- * ├───┼───┼───┼───┼───┤
- * │ 5 │ 6 │ 7 │ 8 │ 9 │
- * ├───┼───┼───┼───┼───┤
- * │14 │13 │12 │11 │   │
- * ├───┼───┼───┼───┤10 │
- * │15 │16 │17 │18 │   │
- * ├───┼───┼───┼───┼───┤
- * │23 │22 │21 │20 │   │
- * ├───┼───┴───┼───┤19 │
- * │24 │  25   │26 │   │
- * └───┴───────┴───┴───┘
- *
- * Underglow (from top / [Esc] = top left)
- * ┌─────────┬─────────┐
- * │         │         │
- * │         │         │
- * │   29    │   30    │
- * │         │         │
- * │         │         │
- * ├─────────┼─────────┤
- * │         │         │
- * │         │         │
- * │   28    │   27    │
- * │         │         │
- * │         │         │
- * └─────────┴─────────┘
- */
-
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    // Montex v2 WS2812 are laid in a Z-shape with index 0 = top-right
-    // Based on: https://xelus.netlify.app/guides/KLE_to_RGB_parser
-    { 4,  3,  2,  1,  0},
-    { 5,  6,  7,  8,  9},
-    { 14, 13, 12, 11, 10},
-    { 15, 16, 17, 18, __},
-    { 23, 22, 21, 20, __},
-    { 24, 25, 26, 19, __}
-}, {
-    // LED Index to Physical Position
-    // per-key
-    // Based on: https://xelus.netlify.app/guides/KLE_to_RGB_parser
-    {224,0  }, {168,0  }, {112,0  }, { 56,0  }, {  0,0  },  // top row
-    {  0,17 }, { 56,17 }, {112,17 }, {168,17 }, {224,17 },  // num-lk & /*- (reversed)
-    {224,35 }, {168,29 }, {112,29 }, { 56,29 }, {  0,29 },  // 789+
-    {  0,41 }, { 56,41 }, {112,41 }, {168,41 },             // 456  (reversed)
-    {224,58 }, {168,52 }, {112,52 }, { 56,52 },             // 123
-    {  0,52 }, {  0,64 }, { 84,64 }, {168,64 }              // 0. & enter (reversed)
-    // underglow LEDs (positions pushed to nearest edge to match edge key colors)
-    #ifndef ID27_DISABLE_UNDERGLOW
-    , {224,64 }, {  0,64  },
-      {  0,0  }, { 224,0  }
-    #endif
-}, {
-    // LED Index to Flag
-    // LED_FLAG_MODIFIER 0x01, LED_FLAG_UNDERGLOW 0x02, LED_FLAG_KEYLIGHT 0x04, LED_FLAG_INDICATOR 0x08
-    // per-key
-    1, 1, 1, 1, 1,
-    4, 4, 4, 4, 4,
-    4, 4, 4, 4, 4,
-    4, 4, 4, 4,
-    4, 4, 4, 4,
-    4, 4, 4, 4
-    // underglow
-    #ifndef ID27_DISABLE_UNDERGLOW
-    , 2, 2, 2, 2
-    #endif
-} };
-
-#endif

+ 33 - 1
keyboards/idyllic/tinny50_rgb/keyboard.json

@@ -59,7 +59,39 @@
         "default": {
             "val": 223
         },
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"x": 126, "y": 64, "flags": 2},
+            {"x": 108, "y": 64, "flags": 2},
+            {"x": 90, "y": 64, "flags": 2},
+            {"x": 72, "y": 64, "flags": 2},
+            {"x": 54, "y": 64, "flags": 2},
+            {"x": 36, "y": 64, "flags": 2},
+            {"x": 18, "y": 64, "flags": 2},
+            {"x": 0, "y": 52, "flags": 2},
+            {"x": 0, "y": 39, "flags": 2},
+            {"x": 0, "y": 26, "flags": 2},
+            {"x": 0, "y": 13, "flags": 2},
+            {"x": 18, "y": 0, "flags": 2},
+            {"x": 36, "y": 0, "flags": 2},
+            {"x": 54, "y": 0, "flags": 2},
+            {"x": 72, "y": 0, "flags": 2},
+            {"x": 90, "y": 0, "flags": 2},
+            {"x": 108, "y": 0, "flags": 2},
+            {"x": 126, "y": 0, "flags": 2},
+            {"x": 144, "y": 0, "flags": 2},
+            {"x": 162, "y": 0, "flags": 2},
+            {"x": 180, "y": 0, "flags": 2},
+            {"x": 198, "y": 0, "flags": 2},
+            {"x": 224, "y": 13, "flags": 2},
+            {"x": 224, "y": 26, "flags": 2},
+            {"x": 224, "y": 39, "flags": 2},
+            {"x": 224, "y": 52, "flags": 2},
+            {"x": 198, "y": 64, "flags": 2},
+            {"x": 180, "y": 64, "flags": 2},
+            {"x": 162, "y": 64, "flags": 2},
+            {"x": 144, "y": 64, "flags": 2}
+        ]
     },
     "ws2812": {
         "pin": "GP10",

+ 0 - 45
keyboards/idyllic/tinny50_rgb/tinny50_rgb.c

@@ -1,45 +0,0 @@
-/*
-Copyright 2022 Zykrah
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "quantum.h"
-
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = {
-    {
-        // Key Matrix to LED Index
-        {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
-        {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
-        {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
-        {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
-        {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}
-    }, {
-        // LED Index to Physical Position
-        {150,  64}, {130,  64}, {110,  64}, { 90,  64}, { 70,  64}, { 50,  64}, { 30,  64},
-        {  0,  52}, {  0,  39}, {  0,  26}, {  0,  13},
-        { 30,   0}, { 50,   0}, { 70,   0}, { 90,   0}, {110,   0}, {130,   0}, {150,   0}, {170,   0}, {190,   0}, {210,   0}, {230,   0},
-        {255,  13}, {255,  26}, {255,  39}, {255,  52},
-        {230,  64}, {210,  64}, {190,  64}, {170,  64}
-    }, {
-        // LED Index to Flag
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  // UNDERGLOW
-        2, 2, 2, 2,                       // UNDERGLOW
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  // UNDERGLOW
-        2, 2, 2, 2,                       // UNDERGLOW
-    }
-};
-#endif
-

+ 63 - 0
keyboards/ilumkb/simpler61/keyboard.json

@@ -43,6 +43,69 @@
             "animation": "cycle_all"
         },
         "driver": "is31fl3741",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 216, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 220, "y": 16, "flags": 4},
+            {"matrix": [2, 0], "x": 2, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 114, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 130, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 162, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 178, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 204, "y": 32, "flags": 4},
+            {"matrix": [3, 0], "x": 9, "y": 48, "flags": 4},
+            {"matrix": [3, 1], "x": 36, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 52, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 68, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 84, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 100, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 116, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 132, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 148, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 164, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 180, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 202, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
+            {"matrix": [4, 0], "x": 4, "y": 64, "flags": 4},
+            {"matrix": [4, 1], "x": 24, "y": 64, "flags": 4},
+            {"matrix": [4, 2], "x": 44, "y": 64, "flags": 4},
+            {"matrix": [4, 5], "x": 112, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 180, "y": 64, "flags": 4},
+            {"matrix": [4, 11], "x": 200, "y": 64, "flags": 4},
+            {"matrix": [4, 13], "x": 220, "y": 64, "flags": 4}
+        ],
         "led_process_limit": 4,
         "led_flush_limit": 26,
         "sleep": true

+ 0 - 23
keyboards/ilumkb/simpler61/simpler61.c

@@ -84,27 +84,4 @@ const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
     {0, SW7_CS30, SW7_CS29, SW7_CS28},
     {0, SW5_CS30, SW5_CS29, SW5_CS28},
 };
-
-led_config_t g_led_config = {
-	{
-		{  0,       1,       2,       3,       4,       5,       6,       7,       8,       9,      10,      11,      12,      13},
-		{ 14,      15,      16,      17,      18,      19,      20,      21,      22,      23,      24,      25,      26,      27},
-		{ 28,      29,      30,      31,      32,      33,      34,      35,      36,      37,      38,      39,  NO_LED,      40},
-		{ 41,      42,      43,      44,      45,      46,      47,      48,      49,      50,      51,      52,  NO_LED,      53},
-		{ 54,      55,      56,  NO_LED,  NO_LED,      57,  NO_LED,  NO_LED,  NO_LED,  NO_LED,      58,      59,  NO_LED,      60},
-    }, {
-		{0,  0}, {16,  0}, {32,  0},  {48, 0},  {64, 0},   {80, 0},   {96, 0},  {112, 0},  {128, 0},  {144, 0},  {160, 0},  {176, 0},  {192, 0},  {216, 0},
-		{4, 16}, {24, 16}, {40, 16}, {56, 16}, {72, 16},  {88, 16}, {104, 16}, {120, 16}, {136, 16}, {152, 16}, {168, 16}, {184, 16}, {200, 16}, {220, 16},
-		{2, 32}, {28, 32}, {44, 32}, {60, 32}, {76, 32},  {92, 32}, {108, 32}, {114, 32}, {130, 32}, {146, 32}, {162, 32}, {178, 32},            {204, 32},
-		{9, 48}, {36, 48}, {52, 48}, {68, 48}, {84, 48}, {100, 48}, {116, 48}, {132, 48}, {148, 48}, {164, 48}, {180, 48}, {202, 48},            {224, 48},
-		{4, 64}, {24, 64}, {44, 64},                     {112, 64},                                             {180, 64}, {200, 64},            {220, 64},
-	}, {
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,                4,
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,                4,
-		4,       4,       4,                         4,                                           4,       4,                4,
-	}
-};
-
 #endif

+ 66 - 0
keyboards/ilumkb/simpler64/keyboard.json

@@ -43,6 +43,72 @@
             "animation": "cycle_all"
         },
         "driver": "is31fl3741",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 216, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 220, "y": 16, "flags": 4},
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 114, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 130, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 162, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 178, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 204, "y": 32, "flags": 4},
+            {"matrix": [3, 0], "x": 8, "y": 48, "flags": 4},
+            {"matrix": [3, 1], "x": 32, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 48, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 80, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 96, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 112, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 138, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 154, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 160, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 176, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 192, "y": 48, "flags": 4},
+            {"matrix": [3, 12], "x": 208, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 4},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 4},
+            {"matrix": [4, 2], "x": 42, "y": 64, "flags": 4},
+            {"matrix": [4, 5], "x": 102, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 160, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 176, "y": 64, "flags": 4},
+            {"matrix": [4, 11], "x": 192, "y": 64, "flags": 4},
+            {"matrix": [4, 12], "x": 208, "y": 64, "flags": 4},
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 4}
+        ],
         "led_process_limit": 4,
         "led_flush_limit": 26,
         "sleep": true

+ 0 - 23
keyboards/ilumkb/simpler64/simpler64.c

@@ -87,27 +87,4 @@ const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
     {0, SW6_CS30, SW6_CS29, SW6_CS28},
     {0, SW5_CS30, SW5_CS29, SW5_CS28},
 };
-
-led_config_t g_led_config = {
-	{
-		{  0,       1,       2,       3,       4,       5,       6,       7,       8,       9,      10,      11,      12,      13},
-		{ 14,      15,      16,      17,      18,      19,      20,      21,      22,      23,      24,      25,      26,      27},
-		{ 28,      29,      30,      31,      32,      33,      34,      35,      36,      37,      38,      39,  NO_LED,      40},
-		{ 41,      42,      43,      44,      45,      46,      47,      48,      49,      50,      51,      52,      53,      54},
-		{ 55,      56,      57,  NO_LED,  NO_LED,      58,  NO_LED,  NO_LED,  NO_LED,      59,      60,      61,      62,      63},
-    }, {
-		{0,  0}, {16,  0}, {32,  0},  {48, 0},  {64, 0},  {80, 0},   {96, 0},  {112, 0},  {128, 0},  {144, 0},  {160, 0},  {176, 0},  {192, 0},  {216, 0},
-		{4, 16}, {24, 16}, {40, 16}, {56, 16}, {72, 16}, {88, 16}, {104, 16}, {120, 16}, {136, 16}, {152, 16}, {168, 16}, {184, 16}, {200, 16}, {220, 16},
-		{6, 32}, {28, 32}, {44, 32}, {60, 32}, {76, 32}, {92, 32}, {108, 32}, {114, 32}, {130, 32}, {146, 32}, {162, 32}, {178, 32},            {204, 32},
-		{8, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {138, 48}, {154, 48}, {160, 48}, {176, 48}, {192, 48}, {208, 48}, {224, 48},
-		{2, 64}, {22, 64}, {42, 64},                    {102, 64},                                  {160, 64}, {176, 64}, {192, 64}, {208, 64}, {224, 64},
-	}, {
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,                4,
-		4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,       4,
-		4,       4,       4,                         4,                                  4,       4,       4,       4,       4,
-	}
-};
-
 #endif

+ 0 - 38
keyboards/inett_studio/sqx/hotswap/hotswap.c

@@ -114,44 +114,6 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
     {1, C9_16,  C7_15,  C6_15},
 };
 
-led_config_t g_led_config = {
-    {
-        { 18,      19,     20,     21,     22,     23,  24,     16,     17,     36, 37,   38,     39, 40},
-        { 26,      27,     28,     29,     30,     31,  25,     48,     41,     42, 43,   44,     45, 46},
-        {  8,       7,      0,     32,     33,     34,  35,     49,     50,     51, 52,   53, NO_LED, 47},
-        {  9, NO_LED,     10,      1,      2,      3,    4,      5,     56,     55, 57,   58,     59, 54},
-        {  14,     13,     12,     11, NO_LED, NO_LED,   6,     15, NO_LED, NO_LED, 60,   61,     62, 63},
-    },
-    {
-        { 48, 32},{ 48, 48},{ 64, 48},{ 80, 48},{ 96, 48},{112, 48},{112, 64},{ 32, 32},
-        { 16, 32},{ 16, 48},          { 32, 48},{ 64, 64},{ 40, 64},{ 20, 64},{  0, 64},
-
-        {  0,  0},{ 16,  0},{ 32,  0},{ 48,  0},{ 64,  0},{ 80, 0},{ 96,  0},{ 96, 16},
-        {  0, 16},{ 16, 16},
-        { 32, 16},{ 48, 16},{ 64, 16},{ 80, 16},{ 64, 32},{ 80, 32},{ 96, 32},{112, 32},
-
-        {112,  0},{128,  0},{144,  0},{160,  0},{176,  0},{192,  0},{208,  0},{224,  0},
-        {128, 16},{144, 16},{160, 16},{176, 16},{192, 16},{216, 16},{216, 32},{112, 16},
-
-        {128, 32},{144, 32},{160, 32},{176, 32},{192, 32},          {224, 48},{144, 48},
-        {128, 48},{160, 48},{176, 48},{192, 48},{160, 64},{180, 64},{200, 64},{224, 64}
-    },
-    {
-        4, 4, 4, 4, 4, 4, 4, 4,
-        1, 1,    4, 1, 1, 1, 1,
-
-        1, 4, 4, 4, 4, 4, 4, 4,
-        1, 4,
-        4, 4, 4, 4, 4, 4, 4, 4,
-
-        4, 4, 4, 4, 4, 4, 1, 1,
-        4, 4, 4, 4, 4, 1, 1, 4,
-
-        4, 4, 4, 4, 4,    1, 4,
-        4, 4, 4, 1, 1, 1, 1, 1,
-    }
-};
-
 bool rgb_matrix_indicators_kb(void) {
     if (!rgb_matrix_indicators_user()) {
         return false;

+ 66 - 0
keyboards/inett_studio/sqx/hotswap/keyboard.json

@@ -40,6 +40,72 @@
             "pixel_fractal": true
         },
         "driver": "is31fl3731",
+        "layout": [
+            {"matrix": [2, 2], "x": 48, "y": 32, "flags": 4},
+            {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 112, "y": 48, "flags": 4},
+            {"matrix": [4, 6], "x": 112, "y": 64, "flags": 4},
+            {"matrix": [2, 1], "x": 32, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 16, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 16, "y": 48, "flags": 1},
+            {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
+            {"matrix": [4, 3], "x": 64, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 40, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 20, "y": 64, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 64, "flags": 1},
+            {"matrix": [4, 7], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 96, "y": 16, "flags": 4},
+            {"matrix": [0, 5], "x": 0, "y": 16, "flags": 1},
+            {"matrix": [0, 6], "x": 16, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 32, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 48, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 64, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 80, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 64, "y": 32, "flags": 4},
+            {"matrix": [1, 4], "x": 80, "y": 32, "flags": 4},
+            {"matrix": [1, 5], "x": 96, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 112, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [2, 5], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [2, 6], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 208, "y": 0, "flags": 1},
+            {"matrix": [0, 13], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 8], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 144, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 160, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 176, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 216, "y": 16, "flags": 1},
+            {"matrix": [2, 13], "x": 216, "y": 32, "flags": 1},
+            {"matrix": [1, 7], "x": 112, "y": 16, "flags": 4},
+            {"matrix": [2, 7], "x": 128, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 144, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 176, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 192, "y": 32, "flags": 4},
+            {"matrix": [3, 13], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [3, 9], "x": 144, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 128, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 160, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 176, "y": 48, "flags": 4},
+            {"matrix": [3, 12], "x": 192, "y": 48, "flags": 1},
+            {"matrix": [4, 10], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 200, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}
+        ],
         "max_brightness": 170
     },
     "rgblight": {

+ 74 - 0
keyboards/inett_studio/sqx/universal/keyboard.json

@@ -40,6 +40,80 @@
             "pixel_fractal": true
         },
         "driver": "is31fl3731",
+        "layout": [
+            {"matrix": [0, 0], "x": 32, "y": 32, "flags": 4},
+            {"matrix": [0, 1], "x": 48, "y": 48, "flags": 4},
+            {"matrix": [0, 2], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [0, 3], "x": 80, "y": 48, "flags": 4},
+            {"matrix": [0, 4], "x": 96, "y": 48, "flags": 4},
+            {"matrix": [0, 5], "x": 112, "y": 48, "flags": 4},
+            {"matrix": [0, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [1, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 32, "flags": 1},
+            {"matrix": [1, 1], "x": 16, "y": 32, "flags": 4},
+            {"matrix": [1, 2], "x": 0, "y": 48, "flags": 4},
+            {"matrix": [1, 3], "x": 0, "y": 48, "flags": 4},
+            {"matrix": [1, 4], "x": 16, "y": 48, "flags": 1},
+            {"matrix": [1, 5], "x": 32, "y": 48, "flags": 1},
+            {"matrix": [2, 3], "x": 64, "y": 64, "flags": 1},
+            {"matrix": [2, 4], "x": 32, "y": 64, "flags": 4},
+            {"matrix": [2, 5], "x": 16, "y": 64, "flags": 4},
+            {"matrix": [2, 6], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [2, 2], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [3, 3], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [3, 4], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [3, 5], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [3, 6], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [3, 7], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [4, 6], "x": 96, "y": 0, "flags": 4},
+            {"x": 96, "y": 16, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 16, "flags": 1},
+            {"matrix": [2, 1], "x": 16, "y": 16, "flags": 4},
+            {"x": 32, "y": 16, "flags": 4},
+            {"matrix": [3, 0], "x": 48, "y": 16, "flags": 4},
+            {"matrix": [3, 1], "x": 64, "y": 16, "flags": 4},
+            {"matrix": [3, 2], "x": 80, "y": 16, "flags": 4},
+            {"x": 48, "y": 32, "flags": 4},
+            {"matrix": [4, 2], "x": 64, "y": 32, "flags": 4},
+            {"matrix": [4, 1], "x": 80, "y": 32, "flags": 4},
+            {"matrix": [4, 0], "x": 96, "y": 32, "flags": 4},
+            {"matrix": [0, 7], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 208, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 216, "y": 0, "flags": 1},
+            {"x": 224, "y": 0, "flags": 1},
+            {"matrix": [4, 7], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [1, 7], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 144, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 160, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 176, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 208, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 224, "y": 16, "flags": 1},
+            {"x": 224, "y": 32, "flags": 1},
+            {"matrix": [2, 13], "x": 216, "y": 32, "flags": 1},
+            {"matrix": [2, 7], "x": 128, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 144, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 176, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 192, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 208, "y": 32, "flags": 4},
+            {"x": 208, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [3, 8], "x": 128, "y": 48, "flags": 1},
+            {"matrix": [3, 9], "x": 144, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 160, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 176, "y": 48, "flags": 4},
+            {"matrix": [3, 12], "x": 192, "y": 48, "flags": 4},
+            {"x": 142, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 176, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 208, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}
+        ],
         "max_brightness": 170
     },
     "rgblight": {

+ 0 - 42
keyboards/inett_studio/sqx/universal/universal.c

@@ -114,48 +114,6 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
     {1, C9_16,  C7_15,  C6_15},
 };
 
-led_config_t g_led_config = {
-    {
-        {  0,  1,      2,      3,      4,      5,   6,  36,     37,     38,      39,   40,   41, 42},
-        {  8,  9,     10,     11,     12,     13,   7,  45,     46,     47,      48,   49,   50, 51},
-        {  26,27,     18,     14,     15,     16,  17,  54,     55,     56,      57,   58,   59, 53},
-        {  29,30,     31,     19,     20,     21,  22,  23,     62,     63,      64,   65,   66, 61},
-        {  35,34,     33, NO_LED, NO_LED, NO_LED,  24,  44, NO_LED, NO_LED,      68,   69,   70, 71},
-    },
-    {
-        { 32, 32},{ 48, 48},{ 64, 48},{ 80, 48},{ 96, 48},{112, 48},{ 96, 64},{ 96, 64},
-        {  0, 32},{ 16, 32},
-        {  0, 48},{  0, 48},{ 16, 48},{ 32, 48},{ 64, 64},{ 32, 64},{ 16, 64},{  0, 64},
-        {  0,  0},{ 16,  0},{ 32,  0},{ 48,  0},{ 64,  0},{ 80,  0},{ 96,  0},{ 96, 16},
-        { 0,  16},{ 16, 16},
-        { 32, 16},{ 48, 16},{ 64, 16},{ 80, 16},{ 48, 32},{ 64, 32},{ 80, 32},{ 96, 32},
-
-        {128,  0},{144,  0},{160,  0},{176,  0},{192,  0},{208,  0},{216,  0},{224,  0},
-        {112,  0},{128, 16},
-        {144, 16},{160, 16},{176, 16},{192, 16},{208, 16},{224, 16},{224, 32},{216, 32},
-        {128, 32},{144, 32},{160, 32},{176, 32},{192, 32},{208, 32},{208, 48},{224, 48},
-        {128, 48},{144, 48},
-        {160, 48},{176, 48},{192, 48},{142, 64},{160, 64},{176, 64},{208, 64},{224, 64}
-    },
-    {
-        4, 4, 4, 4, 4, 4, 4, 4,
-        1, 4,
-        4, 4, 1, 1, 1, 4, 4, 4,
-
-        1, 4, 4, 4, 4, 4, 4, 4,
-        1, 4,
-        4, 4, 4, 4, 4, 4, 4, 4,
-
-        4, 4, 4, 4, 4, 4, 1, 1,
-        4, 4,
-        4, 4, 4, 4, 4, 1, 1, 1,
-
-        4, 4, 4, 4, 4, 4, 4, 1,
-        1, 4,
-        4, 4, 4, 4, 1, 1, 1, 1,
-    }
-};
-
 bool rgb_matrix_indicators_kb(void) {
     if (!rgb_matrix_indicators_user()) {
         return false;

+ 0 - 51
keyboards/input_club/k_type/k_type.c

@@ -150,57 +150,6 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
     { 1, SW11_CS7,  SW10_CS7,  SW12_CS7  }
 };
 
-led_config_t g_led_config = {
-    {
-        // Key Matrix to LED Index
-        {      0,      1,      2,      3,      4,      5,      6,      7,      8,      9 },
-        {     10,     11,     12,     13,     14,     15,     16,     17,     18,     19 },
-        {     20,     21,     22,     23,     24,     25,     26,     27,     28, NO_LED },
-        {     29, NO_LED,     30,     31,     32,     33,     34,     35,     36,     37 },
-        {     38,     39,     40,     41,     42,     43,     44,     45,     46, NO_LED },
-        {     47,     48,     49,     50,     51,     52,     53,     54,     55,     56 },
-        {     57,     58,     59,     60,     61, NO_LED,     62, NO_LED,     63, NO_LED },
-        {     64,     65,     66,     67,     68,     69,     70,     71,     72,     73 },
-        { NO_LED,     74, NO_LED,     75,     76,     77,     78,     79,     80,     81 },
-        {     82,     83,     84,     85,     86, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
-    }, {
-        // LED Index to Physical Position
-        // Key LED
-        { 0,  0    },                   { 26,  0    }, { 39,  0    }, { 52,  0    }, { 65,  0    }, { 79,  0    }, { 92,  0    }, { 105,  0    }, { 118,  0    }, { 131,  0    }, { 144,  0    }, { 158,  0    }, { 171,  0    },           { 197,  0    }, { 210,  0    }, { 224,  0    },
-
-        { 0, 21 }, { 13, 21 }, { 26, 21 }, { 39, 21 }, { 52, 21 }, { 65, 21 }, { 79, 21 }, { 92, 21 }, { 105, 21 }, { 118, 21 }, { 131, 21 }, { 144, 21 }, { 158, 21 }, { 171, 21 },           { 197, 21 }, { 210, 21 }, { 224, 21 },
-        { 0, 32    }, { 13, 32    }, { 26, 32    }, { 39, 32    }, { 52, 32    }, { 65, 32    }, { 79, 32    }, { 92, 32    }, { 105, 32    }, { 118, 32    }, { 131, 32    }, { 144, 32    }, { 158, 32    }, { 171, 32    },           { 197, 32    }, { 210, 32    }, { 224, 32    },
-        { 0, 42 }, { 13, 42 }, { 26, 42 }, { 39, 42 }, { 52, 42 }, { 65, 42 }, { 79, 42 }, { 92, 42 }, { 105, 42 }, { 118, 42 }, { 131, 42 }, { 144, 42 },                    { 171, 42 },
-        { 0, 53 },                   { 26, 53 }, { 39, 53 }, { 52, 53 }, { 65, 53 }, { 79, 53 }, { 92, 53 }, { 105, 53 }, { 118, 53 }, { 131, 53 }, { 144, 53 },                    { 171, 53 },                              { 210, 53 },
-        { 0, 64    }, { 13, 64    }, { 26, 64    },                                                       { 79, 64    },                                                         { 131, 64    }, { 144, 64    }, { 158, 64    }, { 171, 64    },           { 197, 64    }, { 210, 64    }, { 224, 64    },
-
-        // Underglow LED
-        { 224, 64 }, { 206, 64 }, { 189, 64 }, { 172, 64 }, { 155, 64 }, { 137, 64 }, { 120, 64 }, { 103, 64 }, { 86, 64 }, { 68, 64 }, { 51, 64 }, { 34, 64 }, { 17, 64 }, { 0, 64 },
-        { 0, 42 }, { 0, 21 },
-        { 0, 0 }, { 17, 0 }, { 34, 0 }, { 51, 0 }, { 68, 0 }, { 86, 0 }, { 103, 0 }, { 120, 0 }, { 137, 0 }, { 155, 0 }, { 172, 0 }, { 189, 0 }, { 206, 0 }, { 224, 0 },
-        { 224, 21 }, { 224, 42 }
-    }, {
-        // LED Index to Flag
-        //Key LED
-        1,  4, 4, 4, 4,  1, 1, 1, 1,  4, 4, 4, 4,    1, 1, 1,
-
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,
-        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,       1,
-        1, 1, 1,          4,          1, 1, 1, 1,    1, 1, 1,
-
-        // Underglow LED
-        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-
-        2,                                                  2,
-
-        2,                                                  2,
-
-        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-    }
-};
-
 void matrix_init_kb(void) {
     // put your keyboard start-up code here
     // runs once when the firmware starts up

+ 122 - 1
keyboards/input_club/k_type/keyboard.json

@@ -53,7 +53,128 @@
             "solid_splash": true,
             "solid_multisplash": true
         },
-        "driver": "custom"
+        "driver": "custom",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 26, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 39, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 52, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 65, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 79, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 92, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 105, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 118, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 131, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [1, 1], "x": 158, "y": 0, "flags": 4},
+            {"matrix": [1, 2], "x": 171, "y": 0, "flags": 4},
+            {"matrix": [1, 3], "x": 197, "y": 0, "flags": 1},
+            {"matrix": [1, 4], "x": 210, "y": 0, "flags": 1},
+            {"matrix": [1, 5], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 6], "x": 0, "y": 21, "flags": 1},
+            {"matrix": [1, 7], "x": 13, "y": 21, "flags": 4},
+            {"matrix": [1, 8], "x": 26, "y": 21, "flags": 4},
+            {"matrix": [1, 9], "x": 39, "y": 21, "flags": 4},
+            {"matrix": [2, 0], "x": 52, "y": 21, "flags": 4},
+            {"matrix": [2, 1], "x": 65, "y": 21, "flags": 4},
+            {"matrix": [2, 2], "x": 79, "y": 21, "flags": 4},
+            {"matrix": [2, 3], "x": 92, "y": 21, "flags": 4},
+            {"matrix": [2, 4], "x": 105, "y": 21, "flags": 4},
+            {"matrix": [2, 5], "x": 118, "y": 21, "flags": 4},
+            {"matrix": [2, 6], "x": 131, "y": 21, "flags": 4},
+            {"matrix": [2, 7], "x": 144, "y": 21, "flags": 4},
+            {"matrix": [2, 8], "x": 158, "y": 21, "flags": 4},
+            {"matrix": [3, 0], "x": 171, "y": 21, "flags": 1},
+            {"matrix": [3, 2], "x": 197, "y": 21, "flags": 4},
+            {"matrix": [3, 3], "x": 210, "y": 21, "flags": 4},
+            {"matrix": [3, 4], "x": 224, "y": 21, "flags": 4},
+            {"matrix": [3, 5], "x": 0, "y": 32, "flags": 1},
+            {"matrix": [3, 6], "x": 13, "y": 32, "flags": 4},
+            {"matrix": [3, 7], "x": 26, "y": 32, "flags": 4},
+            {"matrix": [3, 8], "x": 39, "y": 32, "flags": 4},
+            {"matrix": [3, 9], "x": 52, "y": 32, "flags": 4},
+            {"matrix": [4, 0], "x": 65, "y": 32, "flags": 4},
+            {"matrix": [4, 1], "x": 79, "y": 32, "flags": 4},
+            {"matrix": [4, 2], "x": 92, "y": 32, "flags": 4},
+            {"matrix": [4, 3], "x": 105, "y": 32, "flags": 4},
+            {"matrix": [4, 4], "x": 118, "y": 32, "flags": 4},
+            {"matrix": [4, 5], "x": 131, "y": 32, "flags": 4},
+            {"matrix": [4, 6], "x": 144, "y": 32, "flags": 4},
+            {"matrix": [4, 7], "x": 158, "y": 32, "flags": 4},
+            {"matrix": [4, 8], "x": 171, "y": 32, "flags": 4},
+            {"matrix": [5, 0], "x": 197, "y": 32, "flags": 4},
+            {"matrix": [5, 1], "x": 210, "y": 32, "flags": 4},
+            {"matrix": [5, 2], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [5, 3], "x": 0, "y": 42, "flags": 1},
+            {"matrix": [5, 4], "x": 13, "y": 42, "flags": 4},
+            {"matrix": [5, 5], "x": 26, "y": 42, "flags": 4},
+            {"matrix": [5, 6], "x": 39, "y": 42, "flags": 4},
+            {"matrix": [5, 7], "x": 52, "y": 42, "flags": 4},
+            {"matrix": [5, 8], "x": 65, "y": 42, "flags": 4},
+            {"matrix": [5, 9], "x": 79, "y": 42, "flags": 4},
+            {"matrix": [6, 0], "x": 92, "y": 42, "flags": 4},
+            {"matrix": [6, 1], "x": 105, "y": 42, "flags": 4},
+            {"matrix": [6, 2], "x": 118, "y": 42, "flags": 4},
+            {"matrix": [6, 3], "x": 131, "y": 42, "flags": 4},
+            {"matrix": [6, 4], "x": 144, "y": 42, "flags": 4},
+            {"matrix": [6, 6], "x": 171, "y": 42, "flags": 1},
+            {"matrix": [6, 8], "x": 0, "y": 53, "flags": 1},
+            {"matrix": [7, 0], "x": 26, "y": 53, "flags": 4},
+            {"matrix": [7, 1], "x": 39, "y": 53, "flags": 4},
+            {"matrix": [7, 2], "x": 52, "y": 53, "flags": 4},
+            {"matrix": [7, 3], "x": 65, "y": 53, "flags": 4},
+            {"matrix": [7, 4], "x": 79, "y": 53, "flags": 4},
+            {"matrix": [7, 5], "x": 92, "y": 53, "flags": 4},
+            {"matrix": [7, 6], "x": 105, "y": 53, "flags": 4},
+            {"matrix": [7, 7], "x": 118, "y": 53, "flags": 4},
+            {"matrix": [7, 8], "x": 131, "y": 53, "flags": 4},
+            {"matrix": [7, 9], "x": 144, "y": 53, "flags": 4},
+            {"matrix": [8, 1], "x": 171, "y": 53, "flags": 1},
+            {"matrix": [8, 3], "x": 210, "y": 53, "flags": 1},
+            {"matrix": [8, 4], "x": 0, "y": 64, "flags": 1},
+            {"matrix": [8, 5], "x": 13, "y": 64, "flags": 1},
+            {"matrix": [8, 6], "x": 26, "y": 64, "flags": 1},
+            {"matrix": [8, 7], "x": 79, "y": 64, "flags": 4},
+            {"matrix": [8, 8], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [8, 9], "x": 144, "y": 64, "flags": 1},
+            {"matrix": [9, 0], "x": 158, "y": 64, "flags": 1},
+            {"matrix": [9, 1], "x": 171, "y": 64, "flags": 1},
+            {"matrix": [9, 2], "x": 197, "y": 64, "flags": 1},
+            {"matrix": [9, 3], "x": 210, "y": 64, "flags": 1},
+            {"matrix": [9, 4], "x": 224, "y": 64, "flags": 1},
+            {"x": 224, "y": 64, "flags": 2},
+            {"x": 206, "y": 64, "flags": 2},
+            {"x": 189, "y": 64, "flags": 2},
+            {"x": 172, "y": 64, "flags": 2},
+            {"x": 155, "y": 64, "flags": 2},
+            {"x": 137, "y": 64, "flags": 2},
+            {"x": 120, "y": 64, "flags": 2},
+            {"x": 103, "y": 64, "flags": 2},
+            {"x": 86, "y": 64, "flags": 2},
+            {"x": 68, "y": 64, "flags": 2},
+            {"x": 51, "y": 64, "flags": 2},
+            {"x": 34, "y": 64, "flags": 2},
+            {"x": 17, "y": 64, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 0, "y": 42, "flags": 2},
+            {"x": 0, "y": 21, "flags": 2},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 17, "y": 0, "flags": 2},
+            {"x": 34, "y": 0, "flags": 2},
+            {"x": 51, "y": 0, "flags": 2},
+            {"x": 68, "y": 0, "flags": 2},
+            {"x": 86, "y": 0, "flags": 2},
+            {"x": 103, "y": 0, "flags": 2},
+            {"x": 120, "y": 0, "flags": 2},
+            {"x": 137, "y": 0, "flags": 2},
+            {"x": 155, "y": 0, "flags": 2},
+            {"x": 172, "y": 0, "flags": 2},
+            {"x": 189, "y": 0, "flags": 2},
+            {"x": 206, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 21, "flags": 2},
+            {"x": 224, "y": 42, "flags": 2}
+        ]
     },
     "features": {
         "bootmagic": false,