Parcourir la source

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

QMK Bot il y a 11 mois
Parent
commit
004bb9ee55
66 fichiers modifiés avec 1851 ajouts et 1303 suppressions
  1. 85 0
      keyboards/merge/um70/keyboard.json
  2. 0 77
      keyboards/merge/um70/um70.c
  3. 0 20
      keyboards/miller/gm862/gm862.c
  4. 63 0
      keyboards/miller/gm862/keyboard.json
  5. 0 34
      keyboards/ml/gas75/gas75.c
  6. 5 0
      keyboards/ml/gas75/keyboard.json
  7. 6 0
      keyboards/momokai/tap_duo/keyboard.json
  8. 0 31
      keyboards/momokai/tap_duo/tap_duo.c
  9. 7 0
      keyboards/momokai/tap_trio/keyboard.json
  10. 0 31
      keyboards/momokai/tap_trio/tap_trio.c
  11. 112 0
      keyboards/monstargear/xo87/rgb/keyboard.json
  12. 0 50
      keyboards/monstargear/xo87/rgb/rgb.c
  13. 77 0
      keyboards/mss_studio/m63_rgb/keyboard.json
  14. 0 50
      keyboards/mss_studio/m63_rgb/m63_rgb.c
  15. 78 0
      keyboards/mss_studio/m64_rgb/keyboard.json
  16. 0 50
      keyboards/mss_studio/m64_rgb/m64_rgb.c
  17. 85 0
      keyboards/mwstudio/mw65_rgb/keyboard.json
  18. 0 47
      keyboards/mwstudio/mw65_rgb/mw65_rgb.c
  19. 99 0
      keyboards/mwstudio/mw75/keyboard.json
  20. 0 47
      keyboards/mwstudio/mw75/mw75.c
  21. 24 1
      keyboards/mwstudio/mw75r2/keyboard.json
  22. 0 31
      keyboards/mwstudio/mw75r2/mw75r2.c
  23. 54 0
      keyboards/nack/keyboard.json
  24. 0 39
      keyboards/nack/nack.c
  25. 19 1
      keyboards/ning/tiny_board/tb16_rgb/keyboard.json
  26. 0 31
      keyboards/ning/tiny_board/tb16_rgb/tb16_rgb.c
  27. 22 0
      keyboards/novelkeys/nk20/keyboard.json
  28. 0 40
      keyboards/novelkeys/nk20/nk20.c
  29. 70 0
      keyboards/novelkeys/nk65b/keyboard.json
  30. 0 24
      keyboards/novelkeys/nk65b/nk65b.c
  31. 89 0
      keyboards/novelkeys/nk87b/keyboard.json
  32. 0 27
      keyboards/novelkeys/nk87b/nk87b.c
  33. 0 52
      keyboards/omkbd/runner3680/5x6_5x8/5x6_5x8.c
  34. 72 0
      keyboards/omkbd/runner3680/5x6_5x8/keyboard.json
  35. 0 23
      keyboards/owlab/voice65/hotswap/hotswap.c
  36. 69 0
      keyboards/owlab/voice65/hotswap/keyboard.json
  37. 73 0
      keyboards/owlab/voice65/soldered/keyboard.json
  38. 0 23
      keyboards/owlab/voice65/soldered/soldered.c
  39. 0 30
      keyboards/paprikman/albacore/albacore.c
  40. 10 0
      keyboards/paprikman/albacore/keyboard.json
  41. 0 119
      keyboards/percent/canoe_gen2/canoe_gen2.c
  42. 79 0
      keyboards/percent/canoe_gen2/keyboard.json
  43. 93 0
      keyboards/phage_studio/pila87/keyboard.json
  44. 0 23
      keyboards/phage_studio/pila87/pila87.c
  45. 0 42
      keyboards/phase_studio/titan65/hotswap/hotswap.c
  46. 69 0
      keyboards/phase_studio/titan65/hotswap/keyboard.json
  47. 51 0
      keyboards/planck/light/keyboard.json
  48. 0 19
      keyboards/planck/light/light.c
  49. 11 0
      keyboards/planck/rev6/keyboard.json
  50. 1 28
      keyboards/planck/rev6/rev6.c
  51. 11 0
      keyboards/planck/rev6_drop/keyboard.json
  52. 1 29
      keyboards/planck/rev6_drop/rev6_drop.c
  53. 11 0
      keyboards/planck/rev7/keyboard.json
  54. 1 29
      keyboards/planck/rev7/rev7.c
  55. 12 1
      keyboards/preonic/rev3/keyboard.json
  56. 0 29
      keyboards/preonic/rev3/rev3.c
  57. 12 1
      keyboards/preonic/rev3_drop/keyboard.json
  58. 0 29
      keyboards/preonic/rev3_drop/rev3_drop.c
  59. 49 0
      keyboards/quarkeys/z40/keyboard.json
  60. 0 44
      keyboards/quarkeys/z40/z40.c
  61. 100 0
      keyboards/rgbkb/mun/rev1/keyboard.json
  62. 0 47
      keyboards/rgbkb/mun/rev1/rev1.c
  63. 73 1
      keyboards/rgbkb/sol/rev1/keyboard.json
  64. 0 46
      keyboards/rgbkb/sol/rev1/rev1.c
  65. 158 0
      keyboards/rgbkb/sol3/rev1/keyboard.json
  66. 0 57
      keyboards/rgbkb/sol3/rev1/rev1.c

+ 85 - 0
keyboards/merge/um70/keyboard.json

@@ -38,6 +38,91 @@
     },
     "rgb_matrix": {
         "driver": "ws2812",
+        "layout": [
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 13, "flags": 2},
+            {"x": 224, "y": 26, "flags": 2},
+            {"x": 148, "y": 39, "flags": 2},
+            {"x": 185, "y": 52, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"matrix": [0, 0], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 32, "y": 16, "flags": 1},
+            {"matrix": [1, 1], "x": 64, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 96, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 160, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [4, 5], "x": 0, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 32, "y": 32, "flags": 1},
+            {"matrix": [2, 1], "x": 64, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 96, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 128, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 192, "y": 32, "flags": 4},
+            {"matrix": [4, 6], "x": 0, "y": 48, "flags": 4},
+            {"matrix": [3, 0], "x": 32, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 96, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 128, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 160, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 192, "y": 48, "flags": 4},
+            {"matrix": [4, 7], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [4, 0], "x": 32, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 64, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 96, "y": 64, "flags": 1},
+            {"matrix": [4, 3], "x": 128, "y": 64, "flags": 1},
+            {"matrix": [4, 4], "x": 160, "y": 64, "flags": 1},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 13, "flags": 2},
+            {"x": 224, "y": 26, "flags": 2},
+            {"x": 148, "y": 39, "flags": 2},
+            {"x": 185, "y": 52, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2},
+            {"matrix": [5, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [5, 1], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [5, 2], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [5, 3], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [5, 4], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [5, 5], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [5, 6], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [5, 7], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [6, 0], "x": 0, "y": 16, "flags": 4},
+            {"matrix": [6, 1], "x": 32, "y": 16, "flags": 4},
+            {"matrix": [6, 2], "x": 64, "y": 16, "flags": 4},
+            {"matrix": [6, 3], "x": 96, "y": 16, "flags": 4},
+            {"matrix": [6, 4], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [6, 5], "x": 160, "y": 16, "flags": 4},
+            {"matrix": [6, 6], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [6, 7], "x": 223, "y": 16, "flags": 1},
+            {"matrix": [8, 7], "x": 224, "y": 16, "flags": 4},
+            {"matrix": [7, 0], "x": 0, "y": 32, "flags": 4},
+            {"matrix": [7, 1], "x": 32, "y": 32, "flags": 4},
+            {"matrix": [7, 2], "x": 64, "y": 32, "flags": 4},
+            {"matrix": [7, 3], "x": 96, "y": 32, "flags": 4},
+            {"matrix": [7, 4], "x": 128, "y": 32, "flags": 4},
+            {"matrix": [7, 5], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [7, 6], "x": 192, "y": 32, "flags": 1},
+            {"matrix": [9, 7], "x": 223, "y": 32, "flags": 4},
+            {"matrix": [8, 0], "x": 0, "y": 48, "flags": 4},
+            {"matrix": [8, 1], "x": 32, "y": 48, "flags": 4},
+            {"matrix": [8, 2], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [8, 3], "x": 96, "y": 48, "flags": 4},
+            {"matrix": [8, 4], "x": 128, "y": 48, "flags": 4},
+            {"matrix": [8, 5], "x": 160, "y": 48, "flags": 1},
+            {"matrix": [8, 6], "x": 192, "y": 48, "flags": 4},
+            {"matrix": [9, 0], "x": 0, "y": 46, "flags": 1},
+            {"matrix": [9, 1], "x": 32, "y": 46, "flags": 1},
+            {"matrix": [9, 2], "x": 64, "y": 64, "flags": 1},
+            {"matrix": [9, 3], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [9, 4], "x": 128, "y": 64, "flags": 4},
+            {"matrix": [9, 5], "x": 160, "y": 64, "flags": 4}
+        ],
         "split_count": [39, 44]
     },
     "rgblight": {

+ 0 - 77
keyboards/merge/um70/um70.c

@@ -1,77 +0,0 @@
-/* Copyright 2021 duoshock 
- * 
- * 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
-/*
-                          Underglow      Underglow             13,14 = split bksp, 14 = 2u bksp
-    07 08 09 10 11 12 13     01             01        07 08 09 10 11 12 13 14
-     14  15 16 17 18 19      02             02      15 16 17 18 19 20 21  22     23
-20    21  22 23 24 25 26     03             03       24 25 26 27 28 29   30      31
-27     28   29 30 31 32 33   04             04        32 33 34 35 36   37     38
-34   35  36  37  38   39     05             05            39    40   41    42 43 44
-                             06             06
-*/
-
-#define XX NO_LED
-
-led_config_t g_led_config = { {
-    {  6,  7,  8,  9, 10, 11, 12, XX },
-    { 13, 14, 15, 16, 17, 18, XX, XX },
-    { 20, 21, 22, 23, 24, 25, XX, XX },
-    { 27, 28, 29, 30, 31, 32, XX, XX },
-    { 34, 35, 36, 37, 38, 19, 26, 33 },
-
-    { 45, 46, 47, 48, 49, 50, 51, 52 },
-    { 53, 54, 55, 56, 57, 58, 59, 60 },
-    { 62, 63, 64, 65, 66, 67, 68, XX },
-    { 70, 71, 72, 73, 74, 75, 76, 61 },
-    { 77, 78, 79, 80, 81, 82, XX, 69 },
-}, {
-    { 224, 0  }, { 224, 13 }, { 224, 26 }, { 148, 39 }, { 185, 52 }, {  224,  64 },
-
-                 {  32,  0 }, {  64, 0  }, {  96, 0  }, { 128, 0  }, { 160, 0  }, {  192,  0  }, {  224,  0  }, 
-                 {  32, 16 }, {  64, 16 }, {  96, 16 }, { 128, 16 }, { 160, 16 }, {  192,  16 },
-    {   0, 32 }, {  32, 32 }, {  64, 32 }, {  96, 32 }, { 128, 32 }, { 160, 32 }, {  192,  32 },
-    {   0, 48 }, {  32, 48 }, {  64, 48 }, {  96, 48 }, { 128, 48 }, { 160, 48 }, {  192,  48 },
-    {   0, 64 }, {  32, 64 }, {  64, 64 }, {  96, 64 }, { 128, 64 }, { 160, 64 },
-
-    { 224, 0  }, { 224, 13 }, { 224, 26 }, { 148, 39 }, { 185, 52 }, {  224,  64 },
-    
-    {   0,  0  }, {  32,  0 }, {  64, 0  }, {  96, 0  }, { 128, 0  }, { 160, 0  }, {  192,  0  }, {  224,  0  },
-    {   0,  16 }, {  32, 16 }, {  64, 16 }, {  96, 16 }, { 128, 16 }, { 160, 16 }, {  192,  16 }, {  223,  16  }, {  224,  16  },
-    {   0,  32 }, {  32, 32 }, {  64, 32 }, {  96, 32 }, { 128, 32 }, { 160, 32 }, {  192,  32 }, {  223,  32  },
-    {   0,  48 }, {  32, 48 }, {  64, 48 }, {  96, 48 }, { 128, 48 }, { 160, 48 }, {  192,  48 },
-    {   0,  46 }, {  32, 46 }, {  64, 64 }, {  96, 64 }, { 128, 64 }, { 160, 64 }
-
-}, {
-    2, 2, 2, 2, 2, 2,
-    4, 4, 4, 4, 4, 4, 4,
-    1, 4, 4, 4, 4, 4,
-    4, 1, 4, 4, 4, 4, 4,
-    4, 1, 4, 4, 4, 4, 4,
-    4, 1, 1, 1, 1, 1,
-
-    2, 2, 2, 2, 2, 2,
-    4, 4, 4, 4, 4, 4, 4, 1,
-    4, 4, 4, 4, 4, 4, 4, 1, 4,
-    4, 4, 4, 4, 4, 4, 1, 4,
-    4, 4, 4, 4, 4, 1, 4,
-    1, 1, 1, 4, 4, 4
-} };
-
-#endif

+ 0 - 20
keyboards/miller/gm862/gm862.c

@@ -64,26 +64,6 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
     {0, SW11_CS13,   SW10_CS13,   SW12_CS13},
     {0, SW8_CS14,   SW7_CS14,   SW9_CS14},
 };
-
-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,  NO_LED,NO_LED, 52 },
-    {  53,  54,  55,  NO_LED, NO_LED,  56,  NO_LED, NO_LED, NO_LED, 57,  58,  NO_LED,59,     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 },
-    {   6,  32 }, {  28,  32 }, {  44,  32 }, {  60,  32 }, {  76,  32 }, {  92,  32 }, { 108,  32 }, { 124,  32 },  { 140,  32 },  { 156,  32 }, { 172,  32 }, { 188,  32 }, { 204,  32 },
-    {  10,  48 }, {  20,  48 }, {  52,  48 }, {  68,  48 }, {  84,  48 }, { 100,  48 }, { 116,  48 }, { 132,  48 },  { 148,  48 },  { 164,  48 }, { 180,  48 }, { 210,  48 },
-    {   2,  64 }, {  22,  64 }, {  42,  64 }, { 102,  64 }, { 162,  64 }, { 182,  64 }, { 202,  64 }, { 222,  64 },
-}, {
-    1, 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, 4,
-    4, 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, 4, 1, 1, 1, 1
-} };
 #endif
 
 bool rgb_matrix_indicators_kb(void) {

+ 63 - 0
keyboards/miller/gm862/keyboard.json

@@ -39,6 +39,69 @@
             "solid_reactive": true
         },
         "driver": "is31fl3733",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"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": 1},
+            {"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": 124, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 204, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 20, "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, 13], "x": 210, "y": 48, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+            {"matrix": [4, 5], "x": 102, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 162, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 182, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 202, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 222, "y": 64, "flags": 1}
+        ],
         "sleep": true
     },
     "features": {

+ 0 - 34
keyboards/ml/gas75/gas75.c

@@ -1,34 +0,0 @@
-/* Copyright 2022 ML
- *
- * 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 = { {
-    { 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 },
-    { 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 }
-}, {
-    //Key matrix (0 -> 2)
-    {224,  0}, {0  ,  0}, {6  , 38},
-}, {
-    //Key matrix (0 -> 2)
-    4, 1, 8,
-} };
-#endif

+ 5 - 0
keyboards/ml/gas75/keyboard.json

@@ -58,6 +58,11 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"x": 224, "y": 0, "flags": 4},
+            {"x": 0, "y": 0, "flags": 1},
+            {"x": 6, "y": 38, "flags": 8}
+        ],
         "max_brightness": 200
     },
     "features": {

+ 6 - 0
keyboards/momokai/tap_duo/keyboard.json

@@ -42,6 +42,12 @@
             "solid_splash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 168, "y": 0, "flags": 4},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2}
+        ],
         "max_brightness": 200,
         "sleep": true
     },

+ 0 - 31
keyboards/momokai/tap_duo/tap_duo.c

@@ -1,31 +0,0 @@
-/* Copyright 2022 Momokai
- *
- * 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
-    { 0, 1, NO_LED, NO_LED, NO_LED}
-}, {
-    // LED Index to Physical Position
-    { 112,  0}, { 168,  0}, { 0,  64}, { 224,  64}
-}, {
-    // LED Index to Flag
-    4,4,2,2
-} };
-
-#endif

+ 7 - 0
keyboards/momokai/tap_trio/keyboard.json

@@ -42,6 +42,13 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 56, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 168, "y": 0, "flags": 4},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2}
+        ],
         "max_brightness": 200,
         "sleep": true
     },

+ 0 - 31
keyboards/momokai/tap_trio/tap_trio.c

@@ -1,31 +0,0 @@
-/* Copyright 2022 Momokai
- *
- * 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
-    { 0, 1, 2, NO_LED, NO_LED, NO_LED}
-}, {
-    // LED Index to Physical Position
-    {  56,  0}, { 112,  0}, { 168,  0}, { 0,  64}, { 224,  64}
-}, {
-    // LED Index to Flag
-    4,4,4,2,2
-} };
-
-#endif

+ 112 - 0
keyboards/monstargear/xo87/rgb/keyboard.json

@@ -58,6 +58,118 @@
       "solid_multisplash": true
     },
     "driver": "ws2812",
+    "layout": [
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"x": 224, "y": 63, "flags": 2},
+        {"matrix": [5, 15], "x": 224, "y": 63, "flags": 1},
+        {"matrix": [5, 14], "x": 215, "y": 63, "flags": 1},
+        {"matrix": [5, 13], "x": 206, "y": 63, "flags": 1},
+        {"matrix": [4, 15], "x": 180, "y": 63, "flags": 1},
+        {"matrix": [5, 12], "x": 168, "y": 63, "flags": 1},
+        {"matrix": [5, 11], "x": 153, "y": 63, "flags": 1},
+        {"matrix": [5, 10], "x": 135, "y": 63, "flags": 1},
+        {"matrix": [5, 6], "x": 101, "y": 63, "flags": 4},
+        {"matrix": [5, 2], "x": 33, "y": 63, "flags": 1},
+        {"matrix": [5, 1], "x": 22, "y": 63, "flags": 1},
+        {"matrix": [5, 0], "x": 0, "y": 63, "flags": 1},
+        {"matrix": [4, 0], "x": 0, "y": 48, "flags": 1},
+        {"matrix": [4, 2], "x": 30, "y": 48, "flags": 4},
+        {"matrix": [4, 3], "x": 45, "y": 48, "flags": 4},
+        {"matrix": [4, 4], "x": 60, "y": 48, "flags": 4},
+        {"matrix": [4, 5], "x": 75, "y": 48, "flags": 4},
+        {"matrix": [4, 6], "x": 90, "y": 48, "flags": 4},
+        {"matrix": [4, 7], "x": 105, "y": 48, "flags": 4},
+        {"matrix": [4, 8], "x": 120, "y": 48, "flags": 4},
+        {"matrix": [4, 9], "x": 135, "y": 48, "flags": 4},
+        {"matrix": [4, 10], "x": 150, "y": 48, "flags": 4},
+        {"matrix": [4, 11], "x": 165, "y": 48, "flags": 4},
+        {"matrix": [4, 12], "x": 198, "y": 48, "flags": 1},
+        {"matrix": [4, 14], "x": 215, "y": 48, "flags": 1},
+        {"matrix": [3, 12], "x": 198, "y": 36, "flags": 1},
+        {"matrix": [3, 11], "x": 180, "y": 36, "flags": 4},
+        {"matrix": [3, 10], "x": 176, "y": 36, "flags": 4},
+        {"matrix": [3, 9], "x": 161, "y": 36, "flags": 4},
+        {"matrix": [3, 8], "x": 146, "y": 36, "flags": 4},
+        {"matrix": [3, 7], "x": 131, "y": 36, "flags": 4},
+        {"matrix": [3, 6], "x": 116, "y": 36, "flags": 4},
+        {"matrix": [3, 5], "x": 101, "y": 36, "flags": 4},
+        {"matrix": [3, 4], "x": 86, "y": 36, "flags": 4},
+        {"matrix": [3, 3], "x": 71, "y": 36, "flags": 4},
+        {"matrix": [3, 2], "x": 56, "y": 36, "flags": 4},
+        {"matrix": [3, 1], "x": 41, "y": 36, "flags": 4},
+        {"matrix": [3, 0], "x": 0, "y": 36, "flags": 1},
+        {"matrix": [2, 0], "x": 0, "y": 24, "flags": 1},
+        {"matrix": [2, 1], "x": 22, "y": 24, "flags": 4},
+        {"matrix": [2, 2], "x": 37, "y": 24, "flags": 4},
+        {"matrix": [2, 3], "x": 52, "y": 24, "flags": 4},
+        {"matrix": [2, 4], "x": 67, "y": 24, "flags": 4},
+        {"matrix": [2, 5], "x": 82, "y": 24, "flags": 4},
+        {"matrix": [2, 6], "x": 97, "y": 24, "flags": 4},
+        {"matrix": [2, 7], "x": 112, "y": 24, "flags": 4},
+        {"matrix": [2, 8], "x": 127, "y": 24, "flags": 4},
+        {"matrix": [2, 9], "x": 142, "y": 24, "flags": 4},
+        {"matrix": [2, 10], "x": 157, "y": 24, "flags": 4},
+        {"matrix": [2, 11], "x": 172, "y": 24, "flags": 4},
+        {"matrix": [2, 12], "x": 187, "y": 24, "flags": 4},
+        {"matrix": [4, 13], "x": 202, "y": 24, "flags": 1},
+        {"matrix": [2, 13], "x": 206, "y": 24, "flags": 1},
+        {"matrix": [2, 14], "x": 215, "y": 24, "flags": 1},
+        {"matrix": [2, 15], "x": 224, "y": 24, "flags": 1},
+        {"matrix": [1, 15], "x": 224, "y": 12, "flags": 1},
+        {"matrix": [1, 14], "x": 215, "y": 12, "flags": 1},
+        {"matrix": [1, 13], "x": 206, "y": 12, "flags": 1},
+        {"matrix": [3, 13], "x": 202, "y": 12, "flags": 1},
+        {"matrix": [1, 12], "x": 187, "y": 12, "flags": 4},
+        {"matrix": [1, 11], "x": 172, "y": 12, "flags": 4},
+        {"matrix": [1, 10], "x": 157, "y": 12, "flags": 4},
+        {"matrix": [1, 9], "x": 142, "y": 12, "flags": 4},
+        {"matrix": [1, 8], "x": 127, "y": 12, "flags": 4},
+        {"matrix": [1, 7], "x": 112, "y": 12, "flags": 4},
+        {"matrix": [1, 6], "x": 97, "y": 12, "flags": 4},
+        {"matrix": [1, 5], "x": 82, "y": 12, "flags": 4},
+        {"matrix": [1, 4], "x": 67, "y": 12, "flags": 4},
+        {"matrix": [1, 3], "x": 52, "y": 12, "flags": 4},
+        {"matrix": [1, 2], "x": 37, "y": 12, "flags": 4},
+        {"matrix": [1, 1], "x": 22, "y": 12, "flags": 4},
+        {"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
+        {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+        {"x": 0, "y": 0, "flags": 8},
+        {"x": 0, "y": 0, "flags": 8},
+        {"x": 0, "y": 0, "flags": 8},
+        {"matrix": [0, 1], "x": 25, "y": 0, "flags": 4},
+        {"matrix": [0, 2], "x": 40, "y": 0, "flags": 4},
+        {"matrix": [0, 3], "x": 55, "y": 0, "flags": 4},
+        {"matrix": [0, 4], "x": 82, "y": 0, "flags": 4},
+        {"matrix": [0, 5], "x": 108, "y": 0, "flags": 1},
+        {"matrix": [0, 6], "x": 120, "y": 0, "flags": 1},
+        {"matrix": [0, 7], "x": 130, "y": 0, "flags": 1},
+        {"matrix": [0, 8], "x": 148, "y": 0, "flags": 1},
+        {"matrix": [0, 9], "x": 172, "y": 0, "flags": 4},
+        {"matrix": [0, 10], "x": 187, "y": 0, "flags": 4},
+        {"matrix": [0, 11], "x": 190, "y": 0, "flags": 4},
+        {"matrix": [0, 12], "x": 195, "y": 0, "flags": 4},
+        {"matrix": [0, 13], "x": 206, "y": 0, "flags": 1},
+        {"matrix": [0, 14], "x": 215, "y": 0, "flags": 1},
+        {"matrix": [0, 15], "x": 224, "y": 0, "flags": 1}
+    ],
     "max_brightness": 100,
     "sleep": true
   },

+ 0 - 50
keyboards/monstargear/xo87/rgb/rgb.c

@@ -15,56 +15,6 @@
  */
 #include "quantum.h"
 
-led_config_t g_led_config = { {
-  // esc  f1   f2   f3   f4   f5   f6   f7     f8    f9    f10   f11   f12   prtscr scrl  brk
-  {  91,  95,  96,  97,  98,  99,  100,  101,  102,  103,  104,  105,  106,  107,  108,  109 },
-  //tilde 1    2   3    4    5    6    7    8    9    0    -    =    ins  home  pgup
-  {  90,  89,  88, 87,  86,  85,  84,  83,  82,  81,  80,  79,  78,  76,  75,  74 },
-  //tab   q    w    e    r    t    y    u    i    o    p    [    ]    del   end  pgdn
-  {  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  71,  72,  73 },
-  //caps  a    s    d    f    g    h    j    k   l     ;    '  return bspc
-  {  56,  55,  54,  53,  52,  51,  50,  49,  48,  47,  46,  45,  44,  77,  NO_LED,  NO_LED },
-  //lshift         z   x    c    v    b    n    m    ,    .    /   rshift  bsls  up  rctl
-  {  31,  NO_LED,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  70,  43,  23 },
-  //ctrl win  alt                             space                           alt  win  mod  left down right
-  {  30,  29,  28,  NO_LED,  NO_LED,  NO_LED,  27,  NO_LED,  NO_LED,  NO_LED,  26,  25,  24,  22,  21,  20 },
-  //underglow lights
-  //{ 10,  11,  12,  13,  14,  15,  16,  17,  18,  19 },
-  //{  0,   1,   2,   3,   4,   5,   6,   7,   8,   9 }
-
-}, {
-    // Underglow lights
-    { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 }, { 254,  63 },
-    // right         down         left            rctl         mod           rwin          ralt          space         lalt           lwin         lctl
-    { 225,  63 }, { 215,  63 }, { 206,  63 }, { 180,  63 }, { 168,  63}, { 153,  63 }, { 135,  63 }, { 101,  63 }, {  33,  63 }, {  22,  63 }, {  0,  63 },
-    // lshift          z             x            c              v            b            n              m              comma       period       question       rshift         up
-    {  0,  48 }, {  30,  48 }, {  45,  48 }, {  60,  48 }, {  75,  48 }, {  90,  48 }, { 105,  48 }, { 120,  48 }, { 135,  48 }, { 150,  48 }, { 165,  48 }, { 198,  48 }, { 215,  48},
-    // return         '              ;             l              k             j             h             g              f            d            s               a        capslock
-    { 198,  36 }, { 180,  36 }, { 176,  36 }, { 161,  36 }, { 146,  36 }, { 131,  36 }, { 116,  36 }, { 101,  36 }, {  86,  36 }, {  71,  36 }, {  56,  36 }, {  41,  36 }, {  0,  36 },
-    //   tab           q             w             e             r            t             y             u              i             o             p              [             ]         backslash      del          end         pgdn
-    {   0,  24 }, {  22,  24}, {  37,  24 }, {  52,  24 }, {  67,  24 }, {  82,  24 }, {  97,  24 }, { 112,  24 }, { 127,  24 }, { 142,  24 }, { 157,  24 }, { 172,  24 }, { 187,  24 }, { 202,  24}, { 206,  24 }, {215,  24}, { 225,  24 },
-    // pgup          home          ins        backspace        =            -             0              9             8             7            6               5              4             3             2            1         tilde
-    { 225,  12 }, {215,  12}, { 206,  12 }, { 202,  12}, { 187,  12 }, { 172,  12 }, { 157,  12 }, { 142,  12 }, { 127,  12 }, { 112,  12 }, {  97,  12 }, {  82,  12 }, {  67,  12 }, {  52,  12 }, {  37,  12 }, {  22,  12}, {   0,  12 },
-    //   esc          ind1         ind2         ind3           F1           F2           F3            F4            F5             F6             F7               F8            F9            F10          F11           F12        prtscr      scrlck         pause
-    {   0,   0 }, {  0,  0 }, {  0,   0 }, {   0,   0 }, {  25,   0 }, {  40,   0 }, {  55,   0 }, {  82,   0 }, {  108,   0 }, {  120,   0 }, {  130,   0 }, { 148,   0 }, { 172,   0 }, { 187,   0 }, { 190,   0 }, { 195,   0 }, { 206,   0 }, { 215,  0}, { 225,   0 }
-}, {
-    // underglow
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    // bottom row
-    1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1,
-    // 2nd row up
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
-    // 3rd row up
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    // 4th row up
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
-    // 5th row up
-    1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-    // top row
-    1, 8, 8, 8, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1
-} };
-
-
 bool rgb_matrix_indicators_kb(void) {
     if (!rgb_matrix_indicators_user()) {
         return false;

+ 77 - 0
keyboards/mss_studio/m63_rgb/keyboard.json

@@ -61,6 +61,83 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"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": 1},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"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": 8},
+            {"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": 124, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 214, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
+            {"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": 186, "y": 48, "flags": 1},
+            {"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": 1},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+            {"matrix": [4, 5], "x": 102, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 176, "y": 64, "flags": 1},
+            {"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},
+            {"x": 216, "y": 56, "flags": 2},
+            {"x": 181, "y": 57, "flags": 2},
+            {"x": 138, "y": 59, "flags": 2},
+            {"x": 105, "y": 58, "flags": 2},
+            {"x": 52, "y": 60, "flags": 2},
+            {"x": 10, "y": 60, "flags": 2},
+            {"x": 20, "y": 12, "flags": 2},
+            {"x": 54, "y": 12, "flags": 2},
+            {"x": 102, "y": 10, "flags": 2},
+            {"x": 145, "y": 13, "flags": 2},
+            {"x": 182, "y": 9, "flags": 2},
+            {"x": 211, "y": 10, "flags": 2}
+        ],
         "max_brightness": 200
     },
     "features": {

+ 0 - 50
keyboards/mss_studio/m63_rgb/m63_rgb.c

@@ -1,50 +0,0 @@
-/* Copyright 2021 Mss Studio
- * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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 = { {
-    {  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, NO_LED,     52,     53 },
-    { 54,     55,     56, NO_LED, NO_LED,     57, NO_LED, NO_LED, NO_LED,     58,     59,     60,     61,     62 }
-}, {
-    // Key matrix (0 -> 62)
-    {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}, {124, 32}, {140, 32}, {156, 32}, {172, 32}, {188, 32},            {214, 32},
-    {10 , 48}, {36 , 48}, {52 , 48}, {68 , 48}, {84 , 48}, {100, 48}, {116, 48}, {132, 48}, {148, 48}, {164, 48}, {186, 48},            {208, 48}, {224, 48},
-    {2  , 64}, {22 , 64}, {42 , 64},                       {102, 64},                                  {160, 64}, {176, 64}, {192, 64}, {208, 64}, {224, 64},
-
-    // Underglow (63 -> 74)
-    {216, 56}, {181, 57}, {138, 59}, {105, 58}, {52 , 60}, {10 , 60},
-    {20 , 12}, {54 , 12}, {102, 10}, {145, 13}, {182,  9}, {211, 10},
-}, {
-    // Key matrix (0 -> 62)
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-    8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    4, 4,
-    1, 1, 1,       4,          1, 1, 4, 4, 4,
-
-    // Underglow (63 -> 74)
-    2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2
-} };
-#endif

+ 78 - 0
keyboards/mss_studio/m64_rgb/keyboard.json

@@ -61,6 +61,84 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"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": 1},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"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": 8},
+            {"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": 124, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 214, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 8, "y": 48, "flags": 1},
+            {"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": 128, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 144, "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": 1},
+            {"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": 1},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+            {"matrix": [4, 5], "x": 102, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 176, "y": 64, "flags": 1},
+            {"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},
+            {"x": 216, "y": 56, "flags": 2},
+            {"x": 181, "y": 57, "flags": 2},
+            {"x": 138, "y": 59, "flags": 2},
+            {"x": 105, "y": 58, "flags": 2},
+            {"x": 52, "y": 60, "flags": 2},
+            {"x": 10, "y": 60, "flags": 2},
+            {"x": 20, "y": 12, "flags": 2},
+            {"x": 54, "y": 12, "flags": 2},
+            {"x": 102, "y": 10, "flags": 2},
+            {"x": 145, "y": 13, "flags": 2},
+            {"x": 182, "y": 9, "flags": 2},
+            {"x": 211, "y": 10, "flags": 2}
+        ],
         "max_brightness": 200
     },
     "features": {

+ 0 - 50
keyboards/mss_studio/m64_rgb/m64_rgb.c

@@ -1,50 +0,0 @@
-/* Copyright 2021 Mss Studio
- * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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 = { {
-    {  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 }
-}, {
-    // Key matrix (0 -> 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}, {124, 32}, {140, 32}, {156, 32}, {172, 32}, {188, 32},            {214, 32},
-    {8  , 48}, {32 , 48}, {48 , 48}, {64 , 48}, {80 , 48}, {96 , 48}, {112, 48}, {128, 48}, {144, 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},
-
-    // Underglow (64 -> 75)
-    {216, 56}, {181, 57}, {138, 59}, {105, 58}, {52 , 60}, {10 , 60},
-    {20 , 12}, {54 , 12}, {102, 10}, {145, 13}, {182,  9}, {211, 10},
-}, {
-    // Key matrix (0 -> 63)
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-    8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4,
-    1, 1, 1,       4,          1, 1, 4, 4, 4,
-
-    // Underglow (64 -> 75)
-    2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2
-} };
-#endif

+ 85 - 0
keyboards/mwstudio/mw65_rgb/keyboard.json

@@ -54,6 +54,91 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"x": 180, "y": 52, "flags": 2},
+            {"x": 146, "y": 52, "flags": 2},
+            {"x": 86, "y": 52, "flags": 2},
+            {"x": 45, "y": 52, "flags": 2},
+            {"x": 7, "y": 52, "flags": 2},
+            {"x": 7, "y": 36, "flags": 2},
+            {"x": 7, "y": 20, "flags": 2},
+            {"x": 7, "y": 4, "flags": 2},
+            {"x": 45, "y": 4, "flags": 2},
+            {"x": 86, "y": 4, "flags": 2},
+            {"x": 146, "y": 4, "flags": 2},
+            {"x": 180, "y": 4, "flags": 2},
+            {"x": 217, "y": 4, "flags": 2},
+            {"x": 217, "y": 20, "flags": 2},
+            {"x": 217, "y": 36, "flags": 2},
+            {"x": 217, "y": 52, "flags": 2},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [4, 13], "x": 209, "y": 64, "flags": 4},
+            {"matrix": [4, 12], "x": 194, "y": 64, "flags": 4},
+            {"matrix": [4, 11], "x": 173, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 156, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [4, 2], "x": 36, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 19, "y": 64, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [3, 0], "x": 8, "y": 48, "flags": 1},
+            {"matrix": [3, 2], "x": 31, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 46, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 61, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 76, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 91, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 106, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 121, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 136, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 151, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 166, "y": 48, "flags": 4},
+            {"matrix": [3, 12], "x": 188, "y": 48, "flags": 1},
+            {"matrix": [3, 13], "x": 210, "y": 48, "flags": 4},
+            {"matrix": [3, 14], "x": 224, "y": 48, "flags": 4},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 200, "y": 32, "flags": 1},
+            {"matrix": [2, 11], "x": 175, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 145, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 130, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 115, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 100, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 85, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 70, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 55, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 40, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 25, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 5, "y": 32, "flags": 8},
+            {"matrix": [1, 0], "x": 3, "y": 16, "flags": 1},
+            {"matrix": [1, 1], "x": 21, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 36, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 51, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 66, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 81, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 96, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 111, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 126, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 141, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 156, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 171, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 186, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 205, "y": 16, "flags": 4},
+            {"matrix": [1, 14], "x": 224, "y": 16, "flags": 4},
+            {"matrix": [0, 14], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 202, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 180, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 165, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 150, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 135, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 120, "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}
+        ],
         "max_brightness": 200
     },
     "features": {

+ 0 - 47
keyboards/mwstudio/mw65_rgb/mw65_rgb.c

@@ -1,47 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * 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 = { {
-    { 82,     81,     80,     79,     78,     77,     76,     75,     74,     73,     72,     71,     70,     69,     68 },
-    { 53,     54,     55,     56,     57,     58,     59,     60,     61,     62,     63,     64,     65,     66,     67 },
-    { 52,     51,     50,     49,     48,     47,     46,     45,     44,     43,     42,     41, NO_LED,     40,     39 },
-    { 25, NO_LED,     26,     27,     28,     29,     30,     31,     32,     33,     34,     35,     36,     37,     38 },
-    { 24,     23,     22, NO_LED, NO_LED, NO_LED,     21, NO_LED, NO_LED, NO_LED,     20,     19,     18,     17,     16 }
-}, {
-    //Underglow (0 -> 15)
-    {180, 52}, {146, 52}, {86 , 52}, {45 , 52}, {7  , 52}, {7  , 36}, {7  , 20}, {7  ,  4}, {45 ,  4}, {86 ,  4}, {146,  4}, {180,  4}, {217,  4}, {217, 20}, {217, 36}, {217, 52},
-
-    //Key matrix (16 -> 83)
-    {224, 64}, {209, 64}, {194, 64}, {173, 64}, {156, 64},                                  {96 , 64},                                  {36 , 64}, {19 , 64}, {2  , 64},
-    {8  , 48}, {31 , 48}, {46 , 48}, {61 , 48}, {76 , 48}, {91 , 48}, {106, 48}, {121, 48}, {136, 48}, {151, 48}, {166, 48}, {188, 48}, {210, 48},            {224, 48},
-    {224, 32}, {200, 32},            {175, 32}, {160, 32}, {145, 32}, {130, 32}, {115, 32}, {100, 32}, {85 , 32}, {70 , 32}, {55 , 32}, {40 , 32}, {25 , 32}, {5  , 32},
-    {3  , 16}, {21 , 16}, {36 , 16}, {51 , 16}, {66 , 16}, {81 , 16}, {96 , 16}, {111, 16}, {126, 16}, {141, 16}, {156, 16}, {171, 16}, {186, 16}, {205, 16}, {224, 16},
-    {224,  0}, {202,  0}, {180,  0}, {165,  0}, {150,  0}, {135,  0}, {120,  0}, {105,  0}, {90 ,  0}, {75 ,  0}, {60 ,  0}, {45 ,  0}, {30 ,  0}, {15 ,  0}, {0  ,  0},
-}, {
-    //Underglow (0 -> 15)
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-
-    //Key matrix (16 -> 82)
-    4, 4, 4, 1, 1,          4,          1, 1, 1,
-    1, 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, 8,
-    1, 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, 4, 1,
-} };
-#endif

+ 99 - 0
keyboards/mwstudio/mw75/keyboard.json

@@ -51,6 +51,105 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [5, 14], "x": 217, "y": 60, "flags": 1},
+            {"matrix": [5, 13], "x": 203, "y": 60, "flags": 1},
+            {"matrix": [5, 12], "x": 189, "y": 60, "flags": 1},
+            {"matrix": [5, 11], "x": 166, "y": 60, "flags": 1},
+            {"matrix": [5, 10], "x": 150, "y": 60, "flags": 1},
+            {"matrix": [5, 6], "x": 95, "y": 60, "flags": 1},
+            {"matrix": [5, 2], "x": 40, "y": 60, "flags": 1},
+            {"matrix": [5, 1], "x": 24, "y": 60, "flags": 1},
+            {"matrix": [5, 0], "x": 8, "y": 60, "flags": 1},
+            {"matrix": [4, 14], "x": 217, "y": 50, "flags": 1},
+            {"matrix": [4, 13], "x": 203, "y": 50, "flags": 1},
+            {"matrix": [4, 12], "x": 184, "y": 50, "flags": 1},
+            {"matrix": [4, 11], "x": 165, "y": 50, "flags": 1},
+            {"matrix": [4, 10], "x": 151, "y": 50, "flags": 1},
+            {"matrix": [4, 9], "x": 137, "y": 50, "flags": 1},
+            {"matrix": [4, 8], "x": 123, "y": 50, "flags": 1},
+            {"matrix": [4, 7], "x": 109, "y": 50, "flags": 1},
+            {"matrix": [4, 6], "x": 95, "y": 50, "flags": 1},
+            {"matrix": [4, 5], "x": 81, "y": 50, "flags": 1},
+            {"matrix": [4, 4], "x": 67, "y": 50, "flags": 1},
+            {"matrix": [4, 3], "x": 53, "y": 50, "flags": 1},
+            {"matrix": [4, 2], "x": 39, "y": 50, "flags": 1},
+            {"matrix": [4, 0], "x": 17, "y": 50, "flags": 1},
+            {"matrix": [3, 14], "x": 217, "y": 40, "flags": 1},
+            {"matrix": [3, 13], "x": 195, "y": 40, "flags": 1},
+            {"matrix": [3, 11], "x": 172, "y": 40, "flags": 1},
+            {"matrix": [3, 10], "x": 158, "y": 40, "flags": 1},
+            {"matrix": [3, 9], "x": 144, "y": 40, "flags": 1},
+            {"matrix": [3, 8], "x": 130, "y": 40, "flags": 1},
+            {"matrix": [3, 7], "x": 116, "y": 40, "flags": 1},
+            {"matrix": [3, 6], "x": 102, "y": 40, "flags": 1},
+            {"matrix": [3, 5], "x": 88, "y": 40, "flags": 1},
+            {"matrix": [3, 4], "x": 74, "y": 40, "flags": 1},
+            {"matrix": [3, 3], "x": 60, "y": 40, "flags": 1},
+            {"matrix": [3, 2], "x": 46, "y": 40, "flags": 1},
+            {"matrix": [3, 1], "x": 32, "y": 40, "flags": 1},
+            {"matrix": [3, 0], "x": 13, "y": 40, "flags": 1},
+            {"matrix": [2, 14], "x": 217, "y": 30, "flags": 1},
+            {"matrix": [2, 13], "x": 199, "y": 30, "flags": 1},
+            {"matrix": [2, 12], "x": 181, "y": 30, "flags": 1},
+            {"matrix": [2, 11], "x": 165, "y": 30, "flags": 1},
+            {"matrix": [2, 10], "x": 151, "y": 30, "flags": 1},
+            {"matrix": [2, 9], "x": 137, "y": 30, "flags": 1},
+            {"matrix": [2, 8], "x": 123, "y": 30, "flags": 1},
+            {"matrix": [2, 7], "x": 109, "y": 30, "flags": 1},
+            {"matrix": [2, 6], "x": 95, "y": 30, "flags": 1},
+            {"matrix": [2, 5], "x": 81, "y": 30, "flags": 1},
+            {"matrix": [2, 4], "x": 67, "y": 30, "flags": 1},
+            {"matrix": [2, 3], "x": 53, "y": 30, "flags": 1},
+            {"matrix": [2, 2], "x": 39, "y": 30, "flags": 1},
+            {"matrix": [2, 1], "x": 25, "y": 30, "flags": 1},
+            {"matrix": [2, 0], "x": 9, "y": 30, "flags": 1},
+            {"matrix": [1, 14], "x": 217, "y": 20, "flags": 1},
+            {"matrix": [1, 13], "x": 196, "y": 20, "flags": 1},
+            {"matrix": [1, 12], "x": 175, "y": 20, "flags": 1},
+            {"matrix": [1, 11], "x": 161, "y": 20, "flags": 1},
+            {"matrix": [1, 10], "x": 147, "y": 20, "flags": 1},
+            {"matrix": [1, 9], "x": 133, "y": 20, "flags": 1},
+            {"matrix": [1, 8], "x": 119, "y": 20, "flags": 1},
+            {"matrix": [1, 7], "x": 105, "y": 20, "flags": 1},
+            {"matrix": [1, 6], "x": 91, "y": 20, "flags": 1},
+            {"matrix": [1, 5], "x": 77, "y": 20, "flags": 1},
+            {"matrix": [1, 4], "x": 63, "y": 20, "flags": 1},
+            {"matrix": [1, 3], "x": 49, "y": 20, "flags": 1},
+            {"matrix": [1, 2], "x": 35, "y": 20, "flags": 1},
+            {"matrix": [1, 1], "x": 21, "y": 20, "flags": 1},
+            {"matrix": [1, 0], "x": 7, "y": 20, "flags": 1},
+            {"matrix": [0, 14], "x": 217, "y": 5, "flags": 1},
+            {"matrix": [0, 13], "x": 196, "y": 5, "flags": 1},
+            {"matrix": [0, 12], "x": 182, "y": 5, "flags": 1},
+            {"matrix": [0, 11], "x": 168, "y": 5, "flags": 1},
+            {"matrix": [0, 10], "x": 154, "y": 5, "flags": 1},
+            {"matrix": [0, 9], "x": 133, "y": 5, "flags": 1},
+            {"matrix": [0, 8], "x": 119, "y": 5, "flags": 1},
+            {"matrix": [0, 7], "x": 105, "y": 5, "flags": 1},
+            {"matrix": [0, 6], "x": 91, "y": 5, "flags": 1},
+            {"matrix": [0, 5], "x": 70, "y": 5, "flags": 1},
+            {"matrix": [0, 4], "x": 56, "y": 5, "flags": 1},
+            {"matrix": [0, 3], "x": 42, "y": 5, "flags": 1},
+            {"matrix": [0, 2], "x": 28, "y": 5, "flags": 1},
+            {"matrix": [0, 1], "x": 7, "y": 5, "flags": 1},
+            {"matrix": [0, 0], "x": 14, "y": 14, "flags": 1},
+            {"matrix": [6, 0], "x": 42, "y": 14, "flags": 1},
+            {"matrix": [6, 1], "x": 98, "y": 14, "flags": 1},
+            {"matrix": [6, 2], "x": 154, "y": 14, "flags": 1},
+            {"matrix": [6, 3], "x": 182, "y": 14, "flags": 1},
+            {"matrix": [6, 4], "x": 210, "y": 14, "flags": 1},
+            {"matrix": [6, 5], "x": 210, "y": 25, "flags": 1},
+            {"matrix": [6, 6], "x": 210, "y": 40, "flags": 1},
+            {"matrix": [6, 7], "x": 210, "y": 55, "flags": 1},
+            {"matrix": [6, 8], "x": 182, "y": 55, "flags": 1},
+            {"matrix": [6, 9], "x": 126, "y": 55, "flags": 1},
+            {"matrix": [6, 10], "x": 98, "y": 55, "flags": 1},
+            {"matrix": [6, 11], "x": 42, "y": 55, "flags": 1},
+            {"matrix": [6, 12], "x": 14, "y": 55, "flags": 1},
+            {"matrix": [6, 13], "x": 14, "y": 40, "flags": 1},
+            {"matrix": [6, 14], "x": 14, "y": 25, "flags": 1}
+        ],
         "max_brightness": 200
     },
     "features": {

+ 0 - 47
keyboards/mwstudio/mw75/mw75.c

@@ -1,47 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * 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 = { {
-  { 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,     NO_LED, 24,     23 },
-  { 22,     NO_LED, 21,     20,     19,     18,     17,     16,     15,     14,     13,     12,     11,     10,     9 },
-  { 8,      7,      6,      NO_LED, NO_LED, NO_LED, 5,      NO_LED, NO_LED, NO_LED, 4,      3,      2,      1,      0 },
-  { 82,     83,     84,     85,     86,     87,     88,     89,     90,     91,     92,     93,     94,     95,     96 }
-}, {
-    { 217, 60 }, { 203, 60 }, { 189, 60 }, { 166, 60 }, { 150, 60 }, { 95, 60 }, { 40, 60 },  { 24, 60 },  { 8, 60 },
-    { 217, 50 }, { 203, 50 }, { 184, 50 }, { 165, 50 }, { 151, 50 }, { 137, 50 }, { 123, 50 }, { 109, 50 }, { 95, 50 }, { 81, 50 }, { 67, 50 }, { 53, 50 }, { 39, 50 }, { 17, 50 },
-    { 217, 40 }, { 195, 40 }, { 172, 40 }, { 158, 40 }, { 144, 40 }, { 130, 40 }, { 116, 40 }, { 102, 40 }, { 88, 40 }, { 74, 40 }, { 60, 40 }, { 46, 40 }, { 32, 40 }, { 13, 40 },
-    { 217, 30 }, { 199, 30 }, { 181, 30 }, { 165, 30 }, { 151, 30 }, { 137, 30 }, { 123, 30 }, { 109, 30 }, { 95, 30 }, { 81, 30 }, { 67, 30 }, { 53, 30 }, { 39, 30 }, { 25, 30 }, { 9, 30 },
-    { 217, 20 }, { 196, 20 }, { 175, 20 }, { 161, 20 }, { 147, 20 }, { 133, 20 }, { 119, 20 }, { 105, 20 }, { 91, 20 }, { 77, 20 }, { 63, 20 }, { 49, 20 }, { 35, 20 }, { 21, 20 }, { 7, 20 },
-    { 217, 5 },  { 196, 5 },  { 182, 5 },  { 168, 5 },  { 154, 5 },  { 133, 5 },  { 119, 5 },  { 105, 5 },  { 91, 5 },  { 70, 5 },  { 56, 5 },  { 42, 5 },  { 28, 5 },  { 7, 5 },
-
-    { 14, 14 }, { 42, 14 }, { 98, 14 }, { 154, 14 }, { 182, 14 }, { 210, 14 }, { 210, 25 }, { 210, 40 },
-    { 210, 55 },{ 182, 55 },{ 126, 55 },{ 98, 55 },  { 42, 55 },  {  14, 55 }, { 14, 40 },  { 14, 25 }
-}, {
-    1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-} };
-#endif

+ 24 - 1
keyboards/mwstudio/mw75r2/keyboard.json

@@ -39,7 +39,30 @@
             "pixel_fractal": true,
             "pixel_rain": true
         },
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"x": 105, "y": 60, "flags": 1},
+            {"x": 70, "y": 60, "flags": 1},
+            {"x": 35, "y": 60, "flags": 1},
+            {"x": 0, "y": 60, "flags": 1},
+            {"x": 0, "y": 40, "flags": 1},
+            {"x": 0, "y": 20, "flags": 1},
+            {"x": 0, "y": 0, "flags": 1},
+            {"x": 42, "y": 0, "flags": 1},
+            {"x": 84, "y": 0, "flags": 1},
+            {"x": 126, "y": 0, "flags": 1},
+            {"x": 168, "y": 0, "flags": 1},
+            {"x": 210, "y": 0, "flags": 1},
+            {"x": 210, "y": 20, "flags": 1},
+            {"x": 210, "y": 40, "flags": 1},
+            {"x": 40, "y": 20, "flags": 1},
+            {"x": 120, "y": 20, "flags": 1},
+            {"x": 40, "y": 40, "flags": 1},
+            {"x": 120, "y": 40, "flags": 1},
+            {"x": 210, "y": 60, "flags": 1},
+            {"x": 175, "y": 60, "flags": 1},
+            {"x": 140, "y": 60, "flags": 1}
+        ]
     },
     "features": {
         "bootmagic": true,

+ 0 - 31
keyboards/mwstudio/mw75r2/mw75r2.c

@@ -1,31 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * 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 = { {
-    { 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 },
-    { 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 }
-}, {
-    { 105, 60 }, { 70, 60 }, { 35, 60 }, { 0, 60 }, {  0, 40 }, { 0, 20 }, { 0, 0 }, { 42, 0 }, { 84, 0 }, { 126, 0 }, { 168, 0 }, { 210, 0 }, { 210, 20 }, { 210, 40 }, { 40, 20 }, { 120, 20 }, { 40, 40 }, { 120, 40 }, { 210, 60 }, { 175, 60 },{ 140, 60 }
-}, {
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-} };
-#endif

+ 54 - 0
keyboards/nack/keyboard.json

@@ -73,6 +73,60 @@
             "val": 64
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 19, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 38, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 57, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 76, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 95, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 114, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 133, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 152, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 171, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 190, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 209, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 223, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4},
+            {"matrix": [1, 1], "x": 19, "y": 21, "flags": 4},
+            {"matrix": [1, 2], "x": 38, "y": 21, "flags": 4},
+            {"matrix": [1, 3], "x": 57, "y": 21, "flags": 4},
+            {"matrix": [1, 4], "x": 76, "y": 21, "flags": 4},
+            {"matrix": [1, 5], "x": 95, "y": 21, "flags": 4},
+            {"matrix": [1, 6], "x": 114, "y": 21, "flags": 4},
+            {"matrix": [1, 7], "x": 133, "y": 21, "flags": 4},
+            {"matrix": [1, 8], "x": 152, "y": 21, "flags": 4},
+            {"matrix": [1, 9], "x": 171, "y": 21, "flags": 4},
+            {"matrix": [1, 10], "x": 190, "y": 21, "flags": 4},
+            {"matrix": [1, 11], "x": 209, "y": 21, "flags": 4},
+            {"matrix": [1, 12], "x": 223, "y": 21, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4},
+            {"matrix": [2, 1], "x": 19, "y": 42, "flags": 4},
+            {"matrix": [2, 2], "x": 38, "y": 42, "flags": 4},
+            {"matrix": [2, 3], "x": 57, "y": 42, "flags": 4},
+            {"matrix": [2, 4], "x": 76, "y": 42, "flags": 4},
+            {"matrix": [2, 5], "x": 95, "y": 42, "flags": 4},
+            {"matrix": [2, 6], "x": 114, "y": 42, "flags": 4},
+            {"matrix": [2, 7], "x": 133, "y": 42, "flags": 4},
+            {"matrix": [2, 8], "x": 152, "y": 42, "flags": 4},
+            {"matrix": [2, 9], "x": 171, "y": 42, "flags": 4},
+            {"matrix": [2, 10], "x": 190, "y": 42, "flags": 4},
+            {"matrix": [2, 11], "x": 209, "y": 42, "flags": 4},
+            {"matrix": [2, 12], "x": 223, "y": 42, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 63, "flags": 4},
+            {"matrix": [3, 1], "x": 19, "y": 63, "flags": 4},
+            {"matrix": [3, 2], "x": 38, "y": 63, "flags": 4},
+            {"matrix": [3, 3], "x": 57, "y": 63, "flags": 4},
+            {"matrix": [3, 4], "x": 76, "y": 63, "flags": 4},
+            {"matrix": [3, 5], "x": 95, "y": 63, "flags": 4},
+            {"matrix": [3, 6], "x": 114, "y": 63, "flags": 4},
+            {"matrix": [3, 7], "x": 133, "y": 63, "flags": 4},
+            {"matrix": [3, 8], "x": 152, "y": 63, "flags": 4},
+            {"matrix": [3, 9], "x": 171, "y": 63, "flags": 4},
+            {"matrix": [3, 10], "x": 190, "y": 63, "flags": 4},
+            {"matrix": [3, 11], "x": 209, "y": 63, "flags": 4},
+            {"matrix": [3, 12], "x": 223, "y": 63, "flags": 4}
+        ],
         "hue_steps": 10,
         "sat_steps": 10,
         "val_steps": 10,

+ 0 - 39
keyboards/nack/nack.c

@@ -1,39 +0,0 @@
-/* Copyright 2020 farfalleflickan <farfalleflickan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "quantum.h"
-
-#ifdef RGB_MATRIX_ENABLE
-    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, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 },
-      {  39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 }
-    }, {
-      // LED Index to Physical Position
-      { 0, 0 }, { 19,  0 }, { 38,  0 }, { 57,  0 }, { 76,  0 }, { 95, 0 }, { 114,  0 }, { 133,  0 }, { 152,  0 }, { 171,  0 }, { 190, 0 }, { 209,  0 }, { 223,  0 },
-      { 0, 21 }, { 19,  21 }, { 38,  21 }, { 57,  21 }, { 76,  21 }, { 95, 21 }, { 114,  21 }, { 133,  21 }, { 152,  21 }, { 171,  21 }, { 190, 21 }, { 209,  21 }, { 223,  21 },
-      { 0, 42 }, { 19,  42 }, { 38,  42 }, { 57,  42 }, { 76,  42 }, { 95, 42 }, { 114,  42 }, { 133,  42 }, { 152,  42 }, { 171,  42 }, { 190, 42 }, { 209,  42 }, { 223,  42 },
-      { 0, 63 }, { 19,  63 }, { 38,  63 }, { 57,  63 }, { 76,  63 }, { 95, 63 }, { 114,  63 }, { 133,  63 }, { 152,  63 }, { 171,  63 }, { 190, 63 }, { 209,  63 }, { 223,  63 }
-    }, {
-      // LED Index to Flag
-      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

+ 19 - 1
keyboards/ning/tiny_board/tb16_rgb/keyboard.json

@@ -20,7 +20,25 @@
         "default": {
             "animation": "typing_heatmap"
         },
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 75, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 150, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4},
+            {"matrix": [1, 1], "x": 75, "y": 21, "flags": 4},
+            {"matrix": [1, 2], "x": 150, "y": 21, "flags": 4},
+            {"matrix": [1, 3], "x": 224, "y": 21, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4},
+            {"matrix": [2, 1], "x": 75, "y": 42, "flags": 4},
+            {"matrix": [2, 2], "x": 150, "y": 42, "flags": 4},
+            {"matrix": [2, 3], "x": 224, "y": 42, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [3, 1], "x": 75, "y": 64, "flags": 4},
+            {"matrix": [3, 2], "x": 150, "y": 64, "flags": 4},
+            {"matrix": [3, 3], "x": 224, "y": 64, "flags": 4}
+        ]
     },
     "matrix_pins": {
         "cols": ["B6", "B1", "B3", "B2"],

+ 0 - 31
keyboards/ning/tiny_board/tb16_rgb/tb16_rgb.c

@@ -1,31 +0,0 @@
-/* Copyright 2023 Ning (@ningjx)
- *
- * 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"
-
-led_config_t g_led_config = { {
-  { 0, 1, 2, 3 },
-  { 4, 5, 6, 7 },
-  { 8, 9, 10, 11 },
-  { 12, 13, 14, 15 }
-}, {
-  {0,0},{75,0},{150,0},{224,0},
-  {0,21},{75,21},{150,21},{224,21},
-  {0,42},{75,42},{150,42},{224,42},
-  {0,64},{75,64},{150,64},{224,64}
-}, {
-  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
-} };

+ 22 - 0
keyboards/novelkeys/nk20/keyboard.json

@@ -66,6 +66,28 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 75, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 149, "y": 0, "flags": 1},
+            {"matrix": [1, 3], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [1, 2], "x": 149, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 75, "y": 15, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 0, "y": 27, "flags": 4},
+            {"matrix": [2, 1], "x": 75, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 149, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 224, "y": 34, "flags": 1},
+            {"matrix": [3, 2], "x": 149, "y": 40, "flags": 4},
+            {"matrix": [3, 1], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 40, "flags": 4},
+            {"matrix": [4, 0], "x": 0, "y": 52, "flags": 4},
+            {"matrix": [4, 1], "x": 75, "y": 52, "flags": 4},
+            {"matrix": [4, 2], "x": 149, "y": 52, "flags": 4},
+            {"matrix": [4, 3], "x": 224, "y": 58, "flags": 1},
+            {"matrix": [5, 2], "x": 149, "y": 64, "flags": 4},
+            {"matrix": [5, 0], "x": 37, "y": 64, "flags": 4}
+        ],
         "max_brightness": 210,
         "sleep": true
     },

+ 0 - 40
keyboards/novelkeys/nk20/nk20.c

@@ -1,40 +0,0 @@
-/* Copyright 2022 Yiancar
- *
- * 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
-// clang-format off
-led_config_t g_led_config = { {   
-    {   0,      1,   2, NO_LED }, 
-    {   6,      5,   4,      3 }, 
-    {   7,      8,   9,     10 }, 
-    {  13,     12,  11, NO_LED }, 
-    {  14,     15,  16,     17 }, 
-    {  19, NO_LED,  18, NO_LED }, 
-}, {
-    {  0,0  }, { 75,0  }, {149,0  }, {224,15 }, {149,15 }, { 75,15 }, {  0,15 }, {  0,27 }, { 75,27 }, {149,27 }, 
-    {224,34 }, {149,40 }, { 75,40 }, {  0,40 }, {  0,52 }, { 75,52 }, {149,52 }, {224,58 }, {149,64 }, { 37,64 }
-}, {
-    1, 1, 1,
-    1, 1, 1, 1,
-    4, 4, 4, 1,
-    4, 4, 4,
-    4, 4, 4, 1,
-    4, 4
-} };
-// clang-format on
-#endif

+ 70 - 0
keyboards/novelkeys/nk65b/keyboard.json

@@ -66,6 +66,76 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 120, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 135, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 150, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 165, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 180, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 203, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 225, "y": 0, "flags": 1},
+            {"matrix": [1, 14], "x": 225, "y": 16, "flags": 1},
+            {"matrix": [2, 13], "x": 206, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 188, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 173, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 158, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 143, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 113, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 98, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 83, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 68, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 53, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 38, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 23, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 1},
+            {"matrix": [2, 1], "x": 26, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 41, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 56, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 71, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 101, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 131, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 161, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 176, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 201, "y": 32, "flags": 1},
+            {"matrix": [2, 14], "x": 225, "y": 32, "flags": 1},
+            {"matrix": [3, 14], "x": 225, "y": 48, "flags": 1},
+            {"matrix": [3, 13], "x": 210, "y": 48, "flags": 1},
+            {"matrix": [3, 12], "x": 189, "y": 48, "flags": 1},
+            {"matrix": [3, 11], "x": 169, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 154, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 139, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 124, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 109, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 94, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 79, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 64, "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": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 21, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 39, "y": 64, "flags": 1},
+            {"matrix": [4, 9], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 150, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 165, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 195, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 210, "y": 64, "flags": 1},
+            {"x": 225, "y": 64, "flags": 1}
+        ],
         "max_brightness": 130,
         "sleep": true
     },

+ 0 - 24
keyboards/novelkeys/nk65b/nk65b.c

@@ -28,27 +28,3 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
     gpio_write_pin(B3, !layer_state_cmp(state, 2));
     return layer_state_set_user(state);
 }
-
-#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-led_config_t g_led_config = { {
-    {  0,      1,  2,      3,      4,      5,  6,      7,     8,   9, 10, 11, 12,     13, 14 },
-    { 29,     28, 27,     26,     25,     24, 23,     22,     21, 20, 19, 18, 17, NO_LED, 15 },
-    { 30,     31, 32,     33,     34,     35, 36,     37,     38, 39, 40, 41, 42,     16, 43 },
-    { 57, NO_LED, 56,     55,     54,     53, 52,     51,     50, 49, 48, 47, 46,     45, 44 },
-    { 58,     59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 61, 62, 63, 64,     65, 66 }
-}, {
-    {  0,0  }, { 15,0  }, { 30,0  }, { 45,0  }, { 60,0  }, { 75,0  }, { 90,0  }, {105,0  }, {120,0  }, {135,0  }, {150,0  }, {165,0  }, {180,0  }, {203,0  }, 
-    {225,0  }, {225,16 }, {206,16 }, {188,16 }, {173,16 }, {158,16 }, {143,16 }, {128,16 }, {113,16 }, { 98,16 }, { 83,16 }, { 68,16 }, { 53,16 }, { 38,16 }, 
-    { 23,16 }, {  4,16 }, {  6,32 }, { 26,32 }, { 41,32 }, { 56,32 }, { 71,32 }, { 86,32 }, {101,32 }, {116,32 }, {131,32 }, {146,32 }, {161,32 }, {176,32 }, 
-    {201,32 }, {225,32 }, {225,48 }, {210,48 }, {189,48 }, {169,48 }, {154,48 }, {139,48 }, {124,48 }, {109,48 }, { 94,48 }, { 79,48 }, { 64,48 }, { 49,48 }, 
-    { 34,48 }, {  9,48 }, {  2,64 }, { 21,64 }, { 39,64 }, { 96,64 }, {150,64 }, {165,64 }, {180,64 }, {195,64 }, {210,64 }, {225,64 }
-}, {
-    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, 4, 1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
-    1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 4, 1, 1, 1, 1, 1, 1
-} };
-// clang-format on
-#endif

+ 89 - 0
keyboards/novelkeys/nk87b/keyboard.json

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

+ 0 - 27
keyboards/novelkeys/nk87b/nk87b.c

@@ -29,30 +29,3 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
     gpio_write_pin(A4, !layer_state_cmp(state, 2));
     return layer_state_set_user(state);
 }
-
-#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-led_config_t g_led_config = { {   
-    {   0,      1,  2,      3,      4,      5,  6,      7,      8,      9,     10,  11,  12,     13,     14,    15,      16 }, 
-    {  33,     32, 31,     30,     29,     28, 27,     26,     25,     24,     23,  22,  21,     20,     19,    18,      17 }, 
-    {  34,     35, 36,     37,     38,     39, 40,     41,     42,     43,     44,  45,  46, NO_LED,     48,    49,      50 }, 
-    {  63,     62, 61,     60,     59,     58, 57,     56,     55,     54,     53,  52,  47,     51, NO_LED, NO_LED, NO_LED }, 
-    {  64, NO_LED, 65,     66,     67,     68, 69,     70,     71,     72,     73,  74,  75, NO_LED, NO_LED,     76, NO_LED }, 
-    {  86,     85, 84, NO_LED, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, NO_LED,  82,  81,     80,     79,     78,     77 }, 
-}, {
-    {  0,0  }, { 16,0  }, { 29,0  }, { 42,0  }, { 55,0  }, { 71,0  }, { 84,0  }, { 97,0  }, {110,0  }, {127,0  }, {140,0  }, {153,0  }, {166,0  }, {182,0  }, {198,0  }, {211,0  }, {224,0  }, 
-    {224,15 }, {211,15 }, {198,15 }, {175,15 }, {156,15 }, {143,15 }, {130,15 }, {117,15 }, {104,15 }, { 91,15 }, { 78,15 }, { 65,15 }, { 52,15 }, { 39,15 }, { 26,15 }, { 13,15 }, {  0,15 }, 
-    {  3,27 }, { 19,27 }, { 32,27 }, { 45,27 }, { 58,27 }, { 71,27 }, { 84,27 }, { 97,27 }, {110,27 }, {123,27 }, {136,27 }, {149,27 }, {162,27 }, {179,27 }, {198,27 }, {211,27 }, {224,27 }, 
-    {174,40 }, {153,40 }, {140,40 }, {127,40 }, {114,40 }, {101,40 }, { 88,40 }, { 75,40 }, { 62,40 }, { 49,40 }, { 36,40 }, { 23,40 }, {  5,40 }, {  8,52 }, { 29,52 }, { 42,52 }, { 55,52 }, 
-    { 68,52 }, { 81,52 }, { 94,52 }, {107,52 }, {120,52 }, {133,52 }, {146,52 }, {170,52 }, {211,52 }, {224,64 }, {211,64 }, {198,64 }, {179,64 }, {162,64 }, {146,64 }, { 91,64 }, { 36,64 }, 
-    { 19,64 }, {  3,64 }
-}, {
-    1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
-    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, 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, 1, 1, 1, 4, 1, 1, 1
-} };
-// clang-format on
-#endif

+ 0 - 52
keyboards/omkbd/runner3680/5x6_5x8/5x6_5x8.c

@@ -1,52 +0,0 @@
-/* Copyright 2021 omkbd
- *
- * 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, 5, 4, 3, 2, 1, 0 },
-  { NO_LED, NO_LED, 6, 7, 8, 9, 10, 11 },
-  { NO_LED, NO_LED, 17, 16, 15, 14, 13, 12 },
-  { NO_LED, NO_LED, 18, 19, 20, 21, 22, 23 },
-  { NO_LED, NO_LED, 29, 28, 27, 26, 25, 24 },
-  { 37, 36, 35, 34, 33, 32, 31, 30 },
-  { 38, 39, 40, 41, 42, 43, 44, 45 },
-  { 53, 52, 51, 50, 49, 48, 47, 46 },
-  { 54, 55, 56, 57, 58, 59, 60, 61 },
-  { 69, 68, 67, 66, 65, 64, 63, 62 }
-}, {
-  // LED Index to Physical Position
-  { 86, 0 }, { 69, 0 }, { 52, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 },
-  { 0, 16 }, { 17, 16 }, { 34, 16 }, { 52, 16 }, { 69, 16 }, { 86, 16 },
-  { 86, 32 }, { 69, 32 }, { 52, 32 }, { 34, 32 }, { 17, 32 }, { 0, 32 },
-  { 0, 48 }, { 17, 48 }, { 34, 48 }, { 52, 48 }, { 69, 48 }, { 86, 48 },
-  { 86, 64 }, { 69, 64 }, { 52, 64 }, { 34, 64 }, { 17, 64 }, { 0, 64 },
-  { 103, 0 }, { 121, 0 }, { 138, 0 }, { 155, 0 }, { 172, 0 }, { 190, 0 }, { 207, 0 }, { 224, 0 },
-  { 224, 16 }, { 207, 16 }, { 190, 16 }, { 172, 16 }, { 155, 16 }, { 138, 16 }, { 121, 16 }, { 103, 16 },
-  { 103, 32 }, { 121, 32 }, { 138, 32 }, { 155, 32 }, { 172, 32 }, { 190, 32 }, { 207, 32 }, { 224, 32 },
-  { 224, 48 }, { 207, 48 }, { 190, 48 }, { 172, 48 }, { 155, 48 }, { 138, 48 }, { 121, 48 }, { 103, 48 },
-  { 103, 64 }, { 121, 64 }, { 138, 64 }, { 155, 64 }, { 172, 64 }, { 190, 64 }, { 207, 64 }, { 224, 64 }
-}, {
-  // LED Index to Flag
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
-} };
-#endif

+ 72 - 0
keyboards/omkbd/runner3680/5x6_5x8/keyboard.json

@@ -15,6 +15,78 @@
     },
     "rgb_matrix": {
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 7], "x": 86, "y": 0, "flags": 255},
+            {"matrix": [0, 6], "x": 69, "y": 0, "flags": 255},
+            {"matrix": [0, 5], "x": 52, "y": 0, "flags": 255},
+            {"matrix": [0, 4], "x": 34, "y": 0, "flags": 255},
+            {"matrix": [0, 3], "x": 17, "y": 0, "flags": 255},
+            {"matrix": [0, 2], "x": 0, "y": 0, "flags": 255},
+            {"matrix": [1, 2], "x": 0, "y": 16, "flags": 255},
+            {"matrix": [1, 3], "x": 17, "y": 16, "flags": 255},
+            {"matrix": [1, 4], "x": 34, "y": 16, "flags": 255},
+            {"matrix": [1, 5], "x": 52, "y": 16, "flags": 255},
+            {"matrix": [1, 6], "x": 69, "y": 16, "flags": 255},
+            {"matrix": [1, 7], "x": 86, "y": 16, "flags": 255},
+            {"matrix": [2, 7], "x": 86, "y": 32, "flags": 255},
+            {"matrix": [2, 6], "x": 69, "y": 32, "flags": 255},
+            {"matrix": [2, 5], "x": 52, "y": 32, "flags": 255},
+            {"matrix": [2, 4], "x": 34, "y": 32, "flags": 255},
+            {"matrix": [2, 3], "x": 17, "y": 32, "flags": 255},
+            {"matrix": [2, 2], "x": 0, "y": 32, "flags": 255},
+            {"matrix": [3, 2], "x": 0, "y": 48, "flags": 255},
+            {"matrix": [3, 3], "x": 17, "y": 48, "flags": 255},
+            {"matrix": [3, 4], "x": 34, "y": 48, "flags": 255},
+            {"matrix": [3, 5], "x": 52, "y": 48, "flags": 255},
+            {"matrix": [3, 6], "x": 69, "y": 48, "flags": 255},
+            {"matrix": [3, 7], "x": 86, "y": 48, "flags": 255},
+            {"matrix": [4, 7], "x": 86, "y": 64, "flags": 255},
+            {"matrix": [4, 6], "x": 69, "y": 64, "flags": 255},
+            {"matrix": [4, 5], "x": 52, "y": 64, "flags": 255},
+            {"matrix": [4, 4], "x": 34, "y": 64, "flags": 255},
+            {"matrix": [4, 3], "x": 17, "y": 64, "flags": 255},
+            {"matrix": [4, 2], "x": 0, "y": 64, "flags": 255},
+            {"matrix": [5, 7], "x": 103, "y": 0, "flags": 255},
+            {"matrix": [5, 6], "x": 121, "y": 0, "flags": 255},
+            {"matrix": [5, 5], "x": 138, "y": 0, "flags": 255},
+            {"matrix": [5, 4], "x": 155, "y": 0, "flags": 255},
+            {"matrix": [5, 3], "x": 172, "y": 0, "flags": 255},
+            {"matrix": [5, 2], "x": 190, "y": 0, "flags": 255},
+            {"matrix": [5, 1], "x": 207, "y": 0, "flags": 255},
+            {"matrix": [5, 0], "x": 224, "y": 0, "flags": 255},
+            {"matrix": [6, 0], "x": 224, "y": 16, "flags": 255},
+            {"matrix": [6, 1], "x": 207, "y": 16, "flags": 255},
+            {"matrix": [6, 2], "x": 190, "y": 16, "flags": 255},
+            {"matrix": [6, 3], "x": 172, "y": 16, "flags": 255},
+            {"matrix": [6, 4], "x": 155, "y": 16, "flags": 255},
+            {"matrix": [6, 5], "x": 138, "y": 16, "flags": 255},
+            {"matrix": [6, 6], "x": 121, "y": 16, "flags": 255},
+            {"matrix": [6, 7], "x": 103, "y": 16, "flags": 255},
+            {"matrix": [7, 7], "x": 103, "y": 32, "flags": 255},
+            {"matrix": [7, 6], "x": 121, "y": 32, "flags": 255},
+            {"matrix": [7, 5], "x": 138, "y": 32, "flags": 255},
+            {"matrix": [7, 4], "x": 155, "y": 32, "flags": 255},
+            {"matrix": [7, 3], "x": 172, "y": 32, "flags": 255},
+            {"matrix": [7, 2], "x": 190, "y": 32, "flags": 255},
+            {"matrix": [7, 1], "x": 207, "y": 32, "flags": 255},
+            {"matrix": [7, 0], "x": 224, "y": 32, "flags": 255},
+            {"matrix": [8, 0], "x": 224, "y": 48, "flags": 255},
+            {"matrix": [8, 1], "x": 207, "y": 48, "flags": 255},
+            {"matrix": [8, 2], "x": 190, "y": 48, "flags": 255},
+            {"matrix": [8, 3], "x": 172, "y": 48, "flags": 255},
+            {"matrix": [8, 4], "x": 155, "y": 48, "flags": 255},
+            {"matrix": [8, 5], "x": 138, "y": 48, "flags": 255},
+            {"matrix": [8, 6], "x": 121, "y": 48, "flags": 255},
+            {"matrix": [8, 7], "x": 103, "y": 48, "flags": 255},
+            {"matrix": [9, 7], "x": 103, "y": 64, "flags": 255},
+            {"matrix": [9, 6], "x": 121, "y": 64, "flags": 255},
+            {"matrix": [9, 5], "x": 138, "y": 64, "flags": 255},
+            {"matrix": [9, 4], "x": 155, "y": 64, "flags": 255},
+            {"matrix": [9, 3], "x": 172, "y": 64, "flags": 255},
+            {"matrix": [9, 2], "x": 190, "y": 64, "flags": 255},
+            {"matrix": [9, 1], "x": 207, "y": 64, "flags": 255},
+            {"matrix": [9, 0], "x": 224, "y": 64, "flags": 255}
+        ],
         "split_count": [30, 40]
     },
     "matrix_pins": {

+ 0 - 23
keyboards/owlab/voice65/hotswap/hotswap.c

@@ -86,29 +86,6 @@ const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
     {0, SW5_CS39, SW5_CS38, SW5_CS37}, /* RGB65-dn- */
     {0, SW7_CS39, SW7_CS38, SW7_CS37}, /* RGB66-right- */
 };
-
-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, 40, 41, 42,     NO_LED, 43 },
-    { 44, 45, 46, 47,     48,     49, 50,     51,     52,     53, 54, 55, NO_LED, 56,     57 },
-    { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, NO_LED, 65,     66 }
-}, {
-    { 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 },  { 208, 0 },  { 224, 0 },
-    { 2, 16 }, { 18, 16 }, { 34, 16 }, { 50, 16 }, { 66, 16 }, { 82, 16 }, { 98,  16 }, { 114, 16 }, { 130, 16 }, { 146, 16 }, { 162, 16 }, { 178, 16 }, { 194, 16 }, { 210, 16 }, { 224, 16 },
-    { 4, 32 }, { 20, 32 }, { 36, 32 }, { 52, 32 }, { 68, 32 }, { 84, 32 }, { 100, 32 }, { 116, 32 }, { 132, 32 }, { 148, 32 }, { 164, 32 }, { 180, 32 }, { 196, 32 }, { 224, 32 },
-    { 8, 48 }, { 24, 48 }, { 40, 48 }, { 56, 48 }, { 72, 48 }, { 88, 48 }, { 104, 48 }, { 120, 48 }, { 136, 48 }, { 152, 48 }, { 168, 48 }, { 184, 48 },              { 208, 48 }, { 224, 48 },
-    { 2, 64 }, { 18, 64 }, { 34, 64 },                         { 82, 64 },                                        { 146, 64 }, { 162, 64 }, { 178, 64 },              { 210, 64 }, { 224, 64 }
-}, {
-    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, 4, 1,
-    0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1, 1,
-    1, 1, 1,       1,          1, 1, 1,    1, 1,
-    }
-};
-
-
 #endif
 
 bool rgb_matrix_indicators_kb(void) {

+ 69 - 0
keyboards/owlab/voice65/hotswap/keyboard.json

@@ -63,6 +63,75 @@
             "val": 128
         },
         "driver": "is31fl3741",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"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": 208, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 2, "y": 16, "flags": 1},
+            {"matrix": [1, 1], "x": 18, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 34, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 66, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 82, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 98, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 114, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 130, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 146, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 162, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 178, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 194, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 210, "y": 16, "flags": 4},
+            {"matrix": [1, 14], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 4, "y": 32, "flags": 0},
+            {"matrix": [2, 1], "x": 20, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 36, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 68, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 84, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 100, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 132, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 148, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 164, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 180, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 196, "y": 32, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 8, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 24, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 40, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 56, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 72, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 88, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 104, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 120, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 136, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 152, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 168, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 184, "y": 48, "flags": 1},
+            {"matrix": [3, 13], "x": 208, "y": 48, "flags": 1},
+            {"matrix": [3, 14], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 18, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 34, "y": 64, "flags": 1},
+            {"matrix": [4, 5], "x": 82, "y": 64, "flags": 1},
+            {"matrix": [4, 9], "x": 146, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 162, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 178, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 210, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ],
         "led_flush_limit": 26,
         "led_process_limit": 4,
         "max_brightness": 200,

+ 73 - 0
keyboards/owlab/voice65/soldered/keyboard.json

@@ -63,6 +63,79 @@
             "val": 128
         },
         "driver": "is31fl3741",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 120, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 135, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 150, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 165, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 180, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 195, "y": 0, "flags": 4},
+            {"matrix": [0, 14], "x": 209, "y": 0, "flags": 4},
+            {"matrix": [2, 13], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 2, "y": 16, "flags": 1},
+            {"matrix": [1, 1], "x": 18, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 34, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 66, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 82, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 98, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 114, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 130, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 146, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 162, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 178, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 194, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 208, "y": 16, "flags": 4},
+            {"matrix": [1, 14], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 2, "y": 32, "flags": 0},
+            {"matrix": [2, 1], "x": 20, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 36, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 68, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 84, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 100, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 132, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 148, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 164, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 180, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 202, "y": 32, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 0, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 32, "y": 48, "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": [3, 8], "x": 128, "y": 48, "flags": 4},
+            {"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": 1},
+            {"matrix": [3, 13], "x": 208, "y": 48, "flags": 1},
+            {"matrix": [3, 14], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 20, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 40, "y": 64, "flags": 1},
+            {"matrix": [4, 3], "x": 60, "y": 64, "flags": 1},
+            {"matrix": [4, 4], "x": 95, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 132, "y": 64, "flags": 1},
+            {"matrix": [4, 9], "x": 152, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 172, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 192, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 208, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ],
         "led_flush_limit": 26,
         "led_process_limit": 4,
         "max_brightness": 200,

+ 0 - 23
keyboards/owlab/voice65/soldered/soldered.c

@@ -90,29 +90,6 @@ const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
     {0, SW5_CS39, SW5_CS38, SW5_CS37}, /* RGB69-dn- */
     {0, SW5_CS27, SW5_CS26, SW5_CS25}, /* RGB70-right- */
 };
-
-led_config_t g_led_config = { {
-    {  0,  1,  2,  3,  4,  5,      6,  7,      8,      9,  10, 11, 12, 13,     14 },
-    {  16, 17, 18, 19, 20, 21,     22, 23,     24,     25, 26, 27, 28, 29,     30 },
-    {  31, 32, 33, 34, 35, 36,     37, 38,     39,     40, 41, 42, 43, 15,     44 },
-    {  45, 46, 47, 48, 49, 50,     51, 52,     53,     54, 55, 56, 57, 58,     59 },
-    {  60, 61, 62, 63, 64, NO_LED, 65, NO_LED, NO_LED, 66, 67, 68, 69, NO_LED, 70 }
-}, {
-    { 0, 0 },  { 15, 0 },  { 30, 0 },  { 45, 0 },  { 60, 0  }, { 75,  0 },  { 90,  0 },   { 105, 0 },  { 120, 0 },  { 135, 0 },  { 150, 0 },  { 165, 0},   { 180, 0},   { 195, 0 },  { 209, 0 },  { 224, 0 },
-    { 2, 16 }, { 18, 16 }, { 34, 16 }, { 50, 16 }, { 66, 16 }, { 82,  16 }, { 98,  16 },  { 114, 16 }, { 130, 16 }, { 146, 16 }, { 162, 16 }, { 178, 16 }, { 194, 16 }, { 208, 16 }, { 224, 16 },
-    { 2, 32 }, { 20, 32 }, { 36, 32 }, { 52, 32 }, { 68, 32 }, { 84,  32 }, { 100, 32 },  { 116, 32 }, { 132, 32 }, { 148, 32 }, { 164, 32 }, { 180, 32 }, { 202, 32 }, { 224, 32 },
-    { 0, 48 }, { 16, 48 }, { 32, 48 }, { 48, 48 }, { 64, 48 }, { 80,  48 }, { 96,  48 },  { 112, 48 }, { 128, 48 }, { 144, 48 }, { 160, 48 }, { 176, 48 }, { 192, 48 }, { 208, 48 }, { 224, 48 },
-    { 0, 64 }, { 20, 64 }, { 40, 64 }, { 60, 64 }, { 95, 64 }, { 132, 64 }, { 152, 64 },  { 172, 64 }, { 192, 64 }, { 208, 64 }, { 224, 64 }
-}, {
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    0, 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, 1, 1, 1,
-    1, 1, 1, 1, 1,    1,       1, 1, 1, 1, 1
-    }
-};
-
-
 #endif
 
 bool rgb_matrix_indicators_kb(void) {

+ 0 - 30
keyboards/paprikman/albacore/albacore.c

@@ -1,30 +0,0 @@
-/* Copyright 2021 paprikman
- *
- * 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 = { {
-  { 0, 1, 2, 3 },
-  { 7, 6, 5, 4 }
-}, {
-  { 56, 16 }, { 112, 16 }, { 168, 16 }, { 224, 16 },
-  { 56, 24 }, { 112, 24 }, { 168, 24 }, { 224, 24 }
-}, {
-    1, 1, 1, 1,
-    1, 1, 1, 1
-} };
-#endif

+ 10 - 0
keyboards/paprikman/albacore/keyboard.json

@@ -10,6 +10,16 @@
     },
     "rgb_matrix": {
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 75, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 150, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 3], "x": 0, "y": 64, "flags": 1},
+            {"matrix": [1, 2], "x": 75, "y": 64, "flags": 1},
+            {"matrix": [1, 1], "x": 150, "y": 64, "flags": 1},
+            {"matrix": [1, 0], "x": 224, "y": 64, "flags": 1}
+        ],
         "max_brightness": 220,
         "sleep": true
     },

+ 0 - 119
keyboards/percent/canoe_gen2/canoe_gen2.c

@@ -1,119 +0,0 @@
-/*
-Copyright 2020 Evy Dekkers
-
-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
-    // 15, 44, 46, 48,
-    // 74, 75, 76
-    {  0,  1,  2,  3,      4,      5,      6,  7,      8,      9, 10, 11, 12,     14, 16 },
-    { 17, 18, 19, 20,     21,     22,     23, 24,     25,     26, 27, 28, 29,     13, 31 },
-    { 32, 33, 34, 35,     36,     37,     38, 39,     40,     41, 42, 43, 30,     45, 47 },
-    { 49, 50, 51, 52,     53,     54,     55, 56,     57,     58, 59, 60, 61,     62, 63 },
-    { 64, 65, 66, NO_LED, NO_LED, NO_LED, 67, NO_LED, NO_LED, 69, 70, NO_LED, 71, 72, 73 }
-}, {
-    // LED Index to Physical Position
-    { 7, 8 },    // Esc
-    { 22,  8 },  // 1
-    { 37,  8 },  // 2
-    { 52,  8 },  // 3
-    { 67,  8 },  // 4
-    { 82,  8 },  // 5
-    { 97,  8 },  // 6
-    { 112,  8 }, // 7
-    { 127,  8 }, // 8
-    { 142,  8 }, // 9
-    { 157,  8 }, // 0
-    { 172,  8 }, // -
-    { 187,  8 }, // =
-    { 202,  8 }, // split bs
-    { 209,  8 }, // bs
-    { 217,  8 }, // split bs
-    { 231,  8 }, // ins
-    { 11, 24 },   // tab
-    { 30,  24 },  // q
-    { 45,  24 },  // w
-    { 60,  24 },  // e
-    { 75,  24 },  // r
-    { 90,  24 },  // t
-    { 104,  24 }, // y
-    { 119,  24 }, // u
-    { 134,  24 }, // i
-    { 149,  24 }, // o
-    { 164,  24 }, // p
-    { 179,  24 }, // [
-    { 194,  24 }, // ]
-    { 212,  24 }, // backslash
-    { 231,  24 }, // del
-    { 11, 40 },   // caps
-    { 34,  40 },  // a
-    { 49,  40 },  // s
-    { 64,  40 },  // d
-    { 79,  40 },  // f
-    { 94,  40 },  // g
-    { 108,  40 }, // h
-    { 123,  40 }, // j
-    { 138,  40 }, // k
-    { 153,  40 }, // l
-    { 168,  40 }, // ;
-    { 183,  40 }, // '
-    { 198,  40 }, // iso hash
-    { 200,  40 }, // ansi enter
-    { 215,  32 }, // iso enter
-    { 231,  40 }, // pgup
-    { 9, 56 },    // iso shift
-    { 17,  56 },  // ansi shift
-    { 26,  56 },  // iso nubs
-    { 41,  56 },  // z
-    { 56,  56 },  // x
-    { 71,  56 },  // c
-    { 86,  56 },  // v
-    { 101,  56 }, // b
-    { 116,  56 }, // n
-    { 131,  56 }, // m
-    { 146,  56 }, // ,
-    { 161,  56 }, // .
-    { 175,  56 }, // ?
-    { 196,  56 }, // shift
-    { 217,  56 }, // up
-    { 231,  56 }, // pgdn
-    { 10, 72 },   // ctrl
-    { 29,  72 },  // win
-    { 48,  72 },  // alt
-    { 103,  72 }, // space
-    { 112,  72 }, // space
-    { 161,  72 }, // alt
-    { 176,  72 }, // fn
-    { 202,  72 }, // left
-    { 217,  72 }, // down
-    { 231,  72 }, // right
-    { 7,  40 },   // top 1
-    { 119,  40 }, // top 2
-    { 231,  40 }  // top 3
-}, {
-    // LED Index to Flag
-    1, 4, 4, 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,
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
-    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
-    1, 1, 1, 4, 4, 1, 1, 1, 1, 1,
-    2, 2, 2
-} };
-#endif

+ 79 - 0
keyboards/percent/canoe_gen2/keyboard.json

@@ -61,6 +61,85 @@
             "pixel_fractal": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 16, "flags": 1},
+            {"matrix": [0, 1], "x": 15, "y": 16, "flags": 4},
+            {"matrix": [0, 2], "x": 30, "y": 16, "flags": 4},
+            {"matrix": [0, 3], "x": 45, "y": 16, "flags": 4},
+            {"matrix": [0, 4], "x": 60, "y": 16, "flags": 4},
+            {"matrix": [0, 5], "x": 75, "y": 16, "flags": 4},
+            {"matrix": [0, 6], "x": 90, "y": 16, "flags": 4},
+            {"matrix": [0, 7], "x": 105, "y": 16, "flags": 4},
+            {"matrix": [0, 8], "x": 120, "y": 16, "flags": 4},
+            {"matrix": [0, 9], "x": 135, "y": 16, "flags": 4},
+            {"matrix": [0, 10], "x": 150, "y": 16, "flags": 4},
+            {"matrix": [0, 11], "x": 165, "y": 16, "flags": 4},
+            {"matrix": [0, 12], "x": 180, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 195, "y": 16, "flags": 4},
+            {"matrix": [0, 13], "x": 210, "y": 16, "flags": 1},
+            {"x": 217, "y": 16, "flags": 1},
+            {"matrix": [0, 14], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [1, 0], "x": 4, "y": 28, "flags": 1},
+            {"matrix": [1, 1], "x": 23, "y": 28, "flags": 4},
+            {"matrix": [1, 2], "x": 38, "y": 28, "flags": 4},
+            {"matrix": [1, 3], "x": 53, "y": 28, "flags": 4},
+            {"matrix": [1, 4], "x": 68, "y": 28, "flags": 4},
+            {"matrix": [1, 5], "x": 83, "y": 28, "flags": 4},
+            {"matrix": [1, 6], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [1, 7], "x": 113, "y": 28, "flags": 4},
+            {"matrix": [1, 8], "x": 128, "y": 28, "flags": 4},
+            {"matrix": [1, 9], "x": 143, "y": 28, "flags": 4},
+            {"matrix": [1, 10], "x": 158, "y": 28, "flags": 4},
+            {"matrix": [1, 11], "x": 173, "y": 28, "flags": 4},
+            {"matrix": [1, 12], "x": 188, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 206, "y": 28, "flags": 4},
+            {"matrix": [1, 14], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 40, "flags": 1},
+            {"matrix": [2, 1], "x": 26, "y": 40, "flags": 4},
+            {"matrix": [2, 2], "x": 41, "y": 40, "flags": 4},
+            {"matrix": [2, 3], "x": 56, "y": 40, "flags": 4},
+            {"matrix": [2, 4], "x": 71, "y": 40, "flags": 4},
+            {"matrix": [2, 5], "x": 86, "y": 40, "flags": 4},
+            {"matrix": [2, 6], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [2, 7], "x": 116, "y": 40, "flags": 4},
+            {"matrix": [2, 8], "x": 131, "y": 40, "flags": 4},
+            {"matrix": [2, 9], "x": 146, "y": 40, "flags": 4},
+            {"matrix": [2, 10], "x": 161, "y": 40, "flags": 4},
+            {"matrix": [2, 11], "x": 176, "y": 40, "flags": 4},
+            {"x": 192, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 201, "y": 40, "flags": 1},
+            {"x": 209, "y": 40, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 40, "flags": 1},
+            {"x": 5, "y": 52, "flags": 1},
+            {"matrix": [3, 0], "x": 9, "y": 52, "flags": 1},
+            {"matrix": [3, 1], "x": 15, "y": 52, "flags": 4},
+            {"matrix": [3, 2], "x": 34, "y": 52, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 52, "flags": 4},
+            {"matrix": [3, 4], "x": 64, "y": 52, "flags": 4},
+            {"matrix": [3, 5], "x": 79, "y": 52, "flags": 4},
+            {"matrix": [3, 6], "x": 94, "y": 52, "flags": 4},
+            {"matrix": [3, 7], "x": 109, "y": 52, "flags": 4},
+            {"matrix": [3, 8], "x": 124, "y": 52, "flags": 4},
+            {"matrix": [3, 9], "x": 139, "y": 52, "flags": 4},
+            {"matrix": [3, 10], "x": 154, "y": 52, "flags": 4},
+            {"matrix": [3, 11], "x": 169, "y": 52, "flags": 4},
+            {"matrix": [3, 12], "x": 189, "y": 52, "flags": 1},
+            {"matrix": [3, 13], "x": 210, "y": 52, "flags": 1},
+            {"matrix": [3, 14], "x": 224, "y": 52, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 21, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 39, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4},
+            {"x": 112, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 133, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 152, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 195, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 210, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1},
+            {"x": 220, "y": 0, "flags": 2},
+            {"x": 222, "y": 0, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2}
+        ],
         "max_brightness": 150,
         "sleep": true
     },

+ 93 - 0
keyboards/phage_studio/pila87/keyboard.json

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

+ 0 - 23
keyboards/phage_studio/pila87/pila87.c

@@ -23,29 +23,6 @@
 #include <math.h>
 #include <lib/lib8tion/lib8tion.h>
 
-led_config_t g_led_config = { {
-    { 75, NO_LED,     76,     77,     78,     79,     80,     81,     82,     83,     84,     85,     86,     87,     88,     89,     90 },
-    { 74,     73,     72,     71,     70,     69,     68,     67,     66,     65,     64,     63,     62,     61,     60,     59,     58 },
-    { 41,     42,     43,     44,     45,     46,     47,     48,     49,     50,     51,     52,     53,     54,     55,     56,     57 },
-    { 40,     39,     38,     37,     36,     35,     34,     33,     32,     31,     30,     29, NO_LED,     28, NO_LED, NO_LED, NO_LED },
-    { 15,     16,     17,     18,     19,     20,     21,     22,     23,     24,     25, NO_LED, NO_LED,     26, NO_LED,     27, NO_LED },
-    { 14,     13,     12,     11,     10,      9,      8,      7, NO_LED, NO_LED,      6,      5,      4,      3,      2,      1,      0 }
-}, {
-    {224, 64}, {211, 64}, {198, 64}, {180, 64}, {164, 64}, {148, 64}, {131, 64},                       {110, 61}, {104, 61}, {83 , 64}, {65 , 61}, {58 , 61}, {34 , 64}, {18 , 64}, {2  , 64},
-               {8  , 52},            {29 , 52},                       {42 , 52}, {55 , 52}, {68 , 52}, {81 , 52}, {94 , 52}, {107, 52}, {120, 52}, {133, 52}, {146, 52}, {170, 52}, {211, 52},
-                                     {174, 41},            {153, 41}, {140, 41}, {127, 41}, {114, 41}, {101, 41}, {88 , 41}, {75 , 41}, {62 , 41}, {49 , 41}, {36 , 41}, {23 , 41}, {5  , 41},
-    {3  , 29}, {19 , 29}, {32 , 29}, {45 , 29}, {58 , 29}, {71 , 29}, {84 , 29}, {97 , 29}, {110, 29}, {123, 29}, {136, 29}, {149, 29}, {162, 29}, {179, 29}, {198, 29}, {211, 29}, {224, 29},
-    {224, 17}, {211, 17}, {198, 17}, {175, 17}, {156, 17}, {143, 17}, {130, 17}, {117, 17}, {104, 17}, {91 , 17}, {78 , 17}, {65 , 17}, {52 , 17}, {39 , 17}, {26 , 17}, {13 , 17}, {0  , 17},
-    {0  ,  0}, {26 ,  0}, {39 ,  0}, {52 ,  0}, {65 ,  0}, {84 ,  0}, {97 ,  0}, {110,  0}, {123,  0}, {143,  0}, {156,  0}, {169,  0}, {182,  0}, {198,  0}, {211,  0},            {224,  0},
-}, {
-   4, 4, 4, 1, 1, 1, 1,       4, 4, 4, 4, 4, 1, 1, 1,
-      1,    4,       4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
-            1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8,
-   1, 4, 4, 4, 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, 4, 4,
-   1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8,    4,
-} };
-
 bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
     switch (keycode) {
         case QK_RGB_MATRIX_TOGGLE:

+ 0 - 42
keyboards/phase_studio/titan65/hotswap/hotswap.c

@@ -1,42 +0,0 @@
-/* Copyright 2021 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * 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 = {
-    {
-        {     52,     53, 54,     55,     56,     57, 58,     59,     60,     61, 62, 63,     64,    NO_LED,      65, 66 },
-        {     51, NO_LED, 50,     49,     48,     47, 46,     45,     44,     43, 42, 41,     40,         39,     38, 37 },
-        {     23, NO_LED, 24,     25,     26,     27, 28,     29,     30,     31, 32, 33,     34,         35, NO_LED, 36 },
-        { NO_LED,     22, 21,     20,     19,     18, 17,     16,     15,     14, 13, 12, NO_LED,         11,     10,  9 },
-        {      0,      1, NO_LED, 2, NO_LED, NO_LED,  3, NO_LED, NO_LED, NO_LED,  4,  5, NO_LED,          6,      7,  8 }
-    }, {
-        {   2,  64 }, {  21,  64 }, {  39,  64 },                                           {  96,  64 },                             { 150,  64 }, { 165,  64 },               { 195,  64 }, { 210,  64 }, { 224,  64 },
-        { 224,  48 }, { 210,  48 },  { 189,  48 },  { 154,  48 },   { 139,  48 },  { 124,  48 },  { 109,  48 },   {  94,  48 },  {  79,  48 },  {  64,  48 },   {  49,  48 }, {  34,  48 }, {   22,  48 }, { 5, 48 },
-        {   6,  32 },               {  41,  32 }, {  56,  32 }, {  71,  32 }, {  86,  32 }, { 101,  32 }, { 116,  32 }, { 131,  32 }, { 146,  32 }, { 161,  32 }, { 176,  32 }, { 181, 32 },     { 201,  32 },          { 224,  32 },
-        { 224,  16 }, { 206,  16 },{ 188,  16 },  { 173,  16 }, { 158,  16 },  { 143,  16 },  { 128,  16 },   { 113,  16 }, {  98,  16 },  {  83,  16 }, {  68,  16 }, {  53,  16 },   {  38,  16 }, { 22, 16 },   {   4,  16 },
-        {   0,   0 }, {  15,   0 }, {  30,   0 }, {  45,   0 }, {  60,   0 }, {  75,   0 }, {  90,   0 }, { 105,   0 }, { 120,   0 }, { 135,   0 }, { 150,   0 }, { 165,   0 }, { 180, 0 },                { 203,   0 }, { 224,   0 }
-    }, {
-        1, 1, 1,          4,       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, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,   1, 1
-    }
-};
-
-#endif

+ 69 - 0
keyboards/phase_studio/titan65/hotswap/keyboard.json

@@ -19,6 +19,75 @@
     },
     "rgb_matrix": {
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 21, "y": 64, "flags": 1},
+            {"matrix": [4, 3], "x": 39, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 150, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 165, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 195, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 210, "y": 64, "flags": 1},
+            {"matrix": [4, 15], "x": 224, "y": 64, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [3, 14], "x": 210, "y": 48, "flags": 1},
+            {"matrix": [3, 13], "x": 189, "y": 48, "flags": 1},
+            {"matrix": [3, 11], "x": 154, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 139, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 124, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 109, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 94, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 79, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 64, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 49, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 34, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 22, "y": 48, "flags": 4},
+            {"matrix": [3, 1], "x": 5, "y": 48, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 1},
+            {"matrix": [2, 2], "x": 41, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 56, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 71, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 101, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 131, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 161, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 176, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 181, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 201, "y": 32, "flags": 1},
+            {"matrix": [2, 15], "x": 224, "y": 32, "flags": 1},
+            {"matrix": [1, 15], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [1, 14], "x": 206, "y": 16, "flags": 1},
+            {"matrix": [1, 13], "x": 188, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 173, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 158, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 143, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 128, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 113, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 98, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 83, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 68, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 53, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 38, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 22, "y": 16, "flags": 1},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 120, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 135, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 150, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 165, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 180, "y": 0, "flags": 4},
+            {"matrix": [0, 14], "x": 203, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 224, "y": 0, "flags": 1}
+        ],
         "max_brightness": 150,
         "sleep": true
     },

+ 51 - 0
keyboards/planck/light/keyboard.json

@@ -55,6 +55,57 @@
       "solid_multisplash": true
     },
     "driver": "is31fl3731",
+    "layout": [
+        {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+        {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4},
+        {"matrix": [0, 2], "x": 40, "y": 0, "flags": 4},
+        {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4},
+        {"matrix": [0, 4], "x": 81, "y": 0, "flags": 4},
+        {"matrix": [0, 5], "x": 101, "y": 0, "flags": 4},
+        {"matrix": [0, 6], "x": 122, "y": 0, "flags": 4},
+        {"matrix": [0, 7], "x": 142, "y": 0, "flags": 4},
+        {"matrix": [0, 8], "x": 162, "y": 0, "flags": 4},
+        {"matrix": [0, 9], "x": 183, "y": 0, "flags": 4},
+        {"matrix": [0, 10], "x": 203, "y": 0, "flags": 4},
+        {"matrix": [0, 11], "x": 223, "y": 0, "flags": 1},
+        {"matrix": [1, 0], "x": 0, "y": 21, "flags": 1},
+        {"matrix": [1, 1], "x": 20, "y": 21, "flags": 4},
+        {"matrix": [1, 2], "x": 40, "y": 21, "flags": 4},
+        {"matrix": [1, 3], "x": 61, "y": 21, "flags": 4},
+        {"matrix": [1, 4], "x": 81, "y": 21, "flags": 4},
+        {"matrix": [1, 5], "x": 101, "y": 21, "flags": 4},
+        {"matrix": [1, 6], "x": 122, "y": 21, "flags": 4},
+        {"matrix": [1, 7], "x": 142, "y": 21, "flags": 4},
+        {"matrix": [1, 8], "x": 162, "y": 21, "flags": 4},
+        {"matrix": [1, 9], "x": 183, "y": 21, "flags": 4},
+        {"matrix": [1, 10], "x": 203, "y": 21, "flags": 4},
+        {"matrix": [1, 11], "x": 223, "y": 21, "flags": 1},
+        {"matrix": [2, 0], "x": 0, "y": 42, "flags": 1},
+        {"matrix": [2, 1], "x": 20, "y": 42, "flags": 4},
+        {"matrix": [2, 2], "x": 40, "y": 42, "flags": 4},
+        {"matrix": [2, 3], "x": 61, "y": 42, "flags": 4},
+        {"matrix": [2, 4], "x": 81, "y": 42, "flags": 4},
+        {"matrix": [2, 5], "x": 101, "y": 42, "flags": 4},
+        {"matrix": [2, 6], "x": 122, "y": 42, "flags": 4},
+        {"matrix": [2, 7], "x": 142, "y": 42, "flags": 4},
+        {"matrix": [2, 8], "x": 162, "y": 42, "flags": 4},
+        {"matrix": [2, 9], "x": 183, "y": 42, "flags": 4},
+        {"matrix": [2, 10], "x": 203, "y": 42, "flags": 4},
+        {"matrix": [2, 11], "x": 223, "y": 42, "flags": 1},
+        {"matrix": [3, 0], "x": 0, "y": 63, "flags": 1},
+        {"matrix": [3, 1], "x": 20, "y": 63, "flags": 1},
+        {"matrix": [3, 2], "x": 40, "y": 63, "flags": 1},
+        {"matrix": [3, 3], "x": 61, "y": 63, "flags": 1},
+        {"matrix": [3, 4], "x": 81, "y": 63, "flags": 1},
+        {"matrix": [3, 5], "x": 101, "y": 63, "flags": 4},
+        {"x": 111, "y": 63, "flags": 4},
+        {"matrix": [3, 6], "x": 122, "y": 63, "flags": 4},
+        {"matrix": [3, 7], "x": 142, "y": 63, "flags": 1},
+        {"matrix": [3, 8], "x": 162, "y": 63, "flags": 1},
+        {"matrix": [3, 9], "x": 183, "y": 63, "flags": 1},
+        {"matrix": [3, 10], "x": 203, "y": 63, "flags": 1},
+        {"matrix": [3, 11], "x": 223, "y": 63, "flags": 1}
+    ],
     "sleep": true
   },
   "features": {

+ 0 - 19
keyboards/planck/light/light.c

@@ -77,25 +77,6 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
     {1, C9_14, C8_14, C7_14}
 };
 
-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,  40,  41,  43,  44,  45,  46,  47,  48 }
-}, {
-    {   0,   0 }, {  20,   0 }, {  40,   0 }, {  61,   0 }, {  81,   0 }, { 101,   0 }, { 122,   0 }, { 142,   0 }, { 162,   0 }, { 183,   0 }, { 203,   0 }, { 223,   0 },
-    {   0,  21 }, {  20,  21 }, {  40,  21 }, {  61,  21 }, {  81,  21 }, { 101,  21 }, { 122,  21 }, { 142,  21 }, { 162,  21 }, { 183,  21 }, { 203,  21 }, { 223,  21 },
-    {   0,  42 }, {  20,  42 }, {  40,  42 }, {  61,  42 }, {  81,  42 }, { 101,  42 }, { 122,  42 }, { 142,  42 }, { 162,  42 }, { 183,  42 }, { 203,  42 }, { 223,  42 },
-    {   0,  63 }, {  20,  63 }, {  40,  63 }, {  61,  63 }, {  81,  63 }, { 101,  63 }, { 111,  63 }, { 122,  63 }, { 142,  63 }, { 162,  63 }, { 183,  63 }, { 203,  63 },
-    { 223,  63 }
-}, {
-    1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
-    1, 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, 1, 4, 4, 4, 1, 1, 1, 1,
-    1
-} };
-
 void matrix_init_kb(void) {
 
     // Turn status LED on

+ 11 - 0
keyboards/planck/rev6/keyboard.json

@@ -17,6 +17,17 @@
   },
   "rgb_matrix": {
     "driver": "ws2812",
+    "layout": [
+        {"matrix": [2, 5], "x": 112, "y": 39, "flags": 255},
+        {"matrix": [7, 1], "x": 148, "y": 60, "flags": 255},
+        {"matrix": [3, 4], "x": 206, "y": 53, "flags": 255},
+        {"matrix": [4, 4], "x": 206, "y": 3, "flags": 255},
+        {"matrix": [4, 1], "x": 150, "y": 3, "flags": 255},
+        {"matrix": [0, 4], "x": 74, "y": 3, "flags": 255},
+        {"matrix": [0, 1], "x": 18, "y": 3, "flags": 255},
+        {"matrix": [3, 1], "x": 18, "y": 54, "flags": 255},
+        {"matrix": [7, 4], "x": 77, "y": 60, "flags": 255}
+    ],
     "sleep": true
   },
   "features": {

+ 1 - 28
keyboards/planck/rev6/rev6.c

@@ -15,33 +15,6 @@
  */
 #include "quantum.h"
 
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
-  // Key Matrix to LED Index
-  { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED },
-  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      },
-  { NO_LED, 7,      NO_LED, NO_LED, 2,      NO_LED },
-  { NO_LED, 4,      NO_LED, NO_LED, 3,      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, 1,      NO_LED, NO_LED, 8,      NO_LED },
-}, {
-  // LED Index to Physical Position
-  {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
-}, {
-  // LED Index to Flag
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
-} };
-
-// LED physical location index
-//     6 5 4 3
-//        0
-//     7 8 1 2
-
-#endif
-
 #ifdef SWAP_HANDS_ENABLE
 __attribute__ ((weak))
 const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
@@ -49,7 +22,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
     {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
     {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
     {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
-    
+
     {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
     {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
     {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},

+ 11 - 0
keyboards/planck/rev6_drop/keyboard.json

@@ -29,6 +29,17 @@
   },
   "rgb_matrix": {
     "driver": "ws2812",
+    "layout": [
+        {"matrix": [2, 5], "x": 112, "y": 39, "flags": 255},
+        {"matrix": [7, 1], "x": 148, "y": 60, "flags": 255},
+        {"matrix": [3, 4], "x": 206, "y": 53, "flags": 255},
+        {"matrix": [4, 4], "x": 206, "y": 3, "flags": 255},
+        {"matrix": [4, 1], "x": 150, "y": 3, "flags": 255},
+        {"matrix": [0, 4], "x": 74, "y": 3, "flags": 255},
+        {"matrix": [0, 1], "x": 18, "y": 3, "flags": 255},
+        {"matrix": [3, 1], "x": 18, "y": 54, "flags": 255},
+        {"matrix": [7, 4], "x": 77, "y": 60, "flags": 255}
+    ],
     "sleep": true
   },
   "matrix_pins": {

+ 1 - 29
keyboards/planck/rev6_drop/rev6_drop.c

@@ -15,34 +15,6 @@
  */
 #include "quantum.h"
 
-#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-led_config_t g_led_config = { {
-  // Key Matrix to LED Index
-  { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED },
-  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      },
-  { NO_LED, 7,      NO_LED, NO_LED, 2,      NO_LED },
-  { NO_LED, 4,      NO_LED, NO_LED, 3,      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, 1,      NO_LED, NO_LED, 8,      NO_LED },
-}, {
-  // LED Index to Physical Position
-  {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
-}, {
-  // LED Index to Flag
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
-} };
-
-// LED physical location index
-//     6 5 4 3
-//        0
-//     7 8 1 2
-
-#endif
-
 #ifdef SWAP_HANDS_ENABLE
 __attribute__ ((weak))
 const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
@@ -50,7 +22,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
     {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
     {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
     {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
-    
+
     {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
     {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
     {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},

+ 11 - 0
keyboards/planck/rev7/keyboard.json

@@ -14,6 +14,17 @@
   },
   "rgb_matrix": {
     "driver": "ws2812",
+    "layout": [
+        {"matrix": [2, 5], "x": 112, "y": 39, "flags": 255},
+        {"matrix": [7, 1], "x": 148, "y": 60, "flags": 255},
+        {"matrix": [3, 4], "x": 206, "y": 53, "flags": 255},
+        {"matrix": [4, 4], "x": 206, "y": 3, "flags": 255},
+        {"matrix": [4, 1], "x": 150, "y": 3, "flags": 255},
+        {"matrix": [0, 4], "x": 74, "y": 3, "flags": 255},
+        {"matrix": [0, 1], "x": 18, "y": 3, "flags": 255},
+        {"matrix": [3, 1], "x": 18, "y": 54, "flags": 255},
+        {"matrix": [7, 4], "x": 77, "y": 60, "flags": 255}
+    ],
     "sleep": true
   },
   "matrix_pins": {

+ 1 - 29
keyboards/planck/rev7/rev7.c

@@ -15,34 +15,6 @@
  */
 #include "quantum.h"
 
-#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-led_config_t g_led_config = { {
-  // Key Matrix to LED Index
-  { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED },
-  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      },
-  { NO_LED, 7,      NO_LED, NO_LED, 2,      NO_LED },
-  { NO_LED, 4,      NO_LED, NO_LED, 3,      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, 1,      NO_LED, NO_LED, 8,      NO_LED },
-}, {
-  // LED Index to Physical Position
-  {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
-}, {
-  // LED Index to Flag
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
-} };
-
-// LED physical location index
-//     6 5 4 3
-//        0
-//     7 8 1 2
-
-#endif
-
 #ifdef SWAP_HANDS_ENABLE
 __attribute__ ((weak))
 const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
@@ -50,7 +22,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
     {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
     {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
     {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
-    
+
     {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
     {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
     {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},

+ 12 - 1
keyboards/preonic/rev3/keyboard.json

@@ -26,7 +26,18 @@
         "driver": "pwm"
     },
     "rgb_matrix": {
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"matrix": [2, 5], "x": 112, "y": 39, "flags": 255},
+            {"matrix": [9, 1], "x": 148, "y": 60, "flags": 255},
+            {"matrix": [8, 4], "x": 206, "y": 53, "flags": 255},
+            {"matrix": [4, 4], "x": 206, "y": 3, "flags": 255},
+            {"matrix": [4, 1], "x": 150, "y": 3, "flags": 255},
+            {"matrix": [0, 4], "x": 74, "y": 3, "flags": 255},
+            {"matrix": [0, 1], "x": 18, "y": 3, "flags": 255},
+            {"matrix": [8, 1], "x": 18, "y": 54, "flags": 255},
+            {"matrix": [9, 4], "x": 77, "y": 60, "flags": 255}
+        ]
     },
     "features": {
         "audio": true,

+ 0 - 29
keyboards/preonic/rev3/rev3.c

@@ -15,35 +15,6 @@
  */
 #include "quantum.h"
 
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-    { NO_LED, 4,      NO_LED, NO_LED, 3,      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, 7,      NO_LED, NO_LED, 2,      NO_LED },
-    { NO_LED, 1,      NO_LED, NO_LED, 8,      NO_LED },
-}, {
-    // LED Index to Physical Position
-    {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
-}, {
-    // LED Index to Flag
-    LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-    LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
-} };
-
-// LED physical location index
-//     6 5 4 3
-//        0
-//     7 8 1 2
-#endif
-
-
 #ifdef SWAP_HANDS_ENABLE
 __attribute__ ((weak))
 const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {

+ 12 - 1
keyboards/preonic/rev3_drop/keyboard.json

@@ -44,7 +44,18 @@
         "driver": "pwm"
     },
     "rgb_matrix": {
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"matrix": [2, 5], "x": 112, "y": 39, "flags": 255},
+            {"matrix": [9, 1], "x": 148, "y": 60, "flags": 255},
+            {"matrix": [8, 4], "x": 206, "y": 53, "flags": 255},
+            {"matrix": [4, 4], "x": 206, "y": 3, "flags": 255},
+            {"matrix": [4, 1], "x": 150, "y": 3, "flags": 255},
+            {"matrix": [0, 4], "x": 74, "y": 3, "flags": 255},
+            {"matrix": [0, 1], "x": 18, "y": 3, "flags": 255},
+            {"matrix": [8, 1], "x": 18, "y": 54, "flags": 255},
+            {"matrix": [9, 4], "x": 77, "y": 60, "flags": 255}
+        ]
     },
     "matrix_pins": {
         "cols": ["B11", "B10", "B2", "B1", "A7", "B0"],

+ 0 - 29
keyboards/preonic/rev3_drop/rev3_drop.c

@@ -15,35 +15,6 @@
  */
 #include "quantum.h"
 
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
-    // Key Matrix to LED Index
-    { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-    { NO_LED, 4,      NO_LED, NO_LED, 3,      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, 7,      NO_LED, NO_LED, 2,      NO_LED },
-    { NO_LED, 1,      NO_LED, NO_LED, 8,      NO_LED },
-}, {
-    // LED Index to Physical Position
-    {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
-}, {
-    // LED Index to Flag
-    LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
-    LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
-} };
-
-// LED physical location index
-//     6 5 4 3
-//        0
-//     7 8 1 2
-#endif
-
-
 #ifdef SWAP_HANDS_ENABLE
 __attribute__ ((weak))
 const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {

+ 49 - 0
keyboards/quarkeys/z40/keyboard.json

@@ -29,6 +29,55 @@
             "solid_multisplash": true
         },
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [3, 11], "x": 225, "y": 64, "flags": 1},
+            {"matrix": [3, 10], "x": 200, "y": 64, "flags": 1},
+            {"matrix": [3, 9], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [3, 8], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [3, 7], "x": 140, "y": 64, "flags": 1},
+            {"matrix": [3, 5], "x": 110, "y": 64, "flags": 1},
+            {"matrix": [3, 4], "x": 80, "y": 64, "flags": 1},
+            {"matrix": [3, 3], "x": 60, "y": 64, "flags": 1},
+            {"matrix": [3, 2], "x": 40, "y": 64, "flags": 1},
+            {"matrix": [3, 1], "x": 20, "y": 64, "flags": 1},
+            {"matrix": [3, 0], "x": 0, "y": 64, "flags": 1},
+            {"matrix": [2, 11], "x": 225, "y": 42, "flags": 1},
+            {"matrix": [2, 10], "x": 200, "y": 42, "flags": 2},
+            {"matrix": [2, 9], "x": 180, "y": 42, "flags": 2},
+            {"matrix": [2, 8], "x": 160, "y": 42, "flags": 2},
+            {"matrix": [2, 7], "x": 140, "y": 42, "flags": 2},
+            {"matrix": [2, 6], "x": 120, "y": 42, "flags": 2},
+            {"matrix": [2, 5], "x": 100, "y": 42, "flags": 2},
+            {"matrix": [2, 4], "x": 80, "y": 42, "flags": 2},
+            {"x": 60, "y": 42, "flags": 2},
+            {"matrix": [2, 2], "x": 40, "y": 42, "flags": 2},
+            {"matrix": [2, 1], "x": 20, "y": 42, "flags": 2},
+            {"matrix": [2, 0], "x": 0, "y": 42, "flags": 1},
+            {"matrix": [1, 11], "x": 225, "y": 21, "flags": 1},
+            {"matrix": [1, 10], "x": 200, "y": 21, "flags": 2},
+            {"matrix": [1, 9], "x": 180, "y": 21, "flags": 2},
+            {"matrix": [1, 8], "x": 160, "y": 21, "flags": 2},
+            {"matrix": [1, 7], "x": 140, "y": 21, "flags": 2},
+            {"matrix": [1, 6], "x": 120, "y": 21, "flags": 2},
+            {"matrix": [2, 3], "x": 100, "y": 21, "flags": 2},
+            {"matrix": [1, 4], "x": 80, "y": 21, "flags": 2},
+            {"matrix": [1, 3], "x": 60, "y": 21, "flags": 2},
+            {"matrix": [1, 2], "x": 40, "y": 21, "flags": 2},
+            {"matrix": [1, 1], "x": 20, "y": 21, "flags": 2},
+            {"matrix": [1, 0], "x": 0, "y": 21, "flags": 1},
+            {"matrix": [0, 11], "x": 225, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 200, "y": 0, "flags": 2},
+            {"matrix": [0, 9], "x": 180, "y": 0, "flags": 2},
+            {"matrix": [0, 8], "x": 160, "y": 0, "flags": 2},
+            {"matrix": [0, 7], "x": 140, "y": 0, "flags": 2},
+            {"matrix": [0, 6], "x": 120, "y": 0, "flags": 2},
+            {"matrix": [0, 5], "x": 100, "y": 0, "flags": 2},
+            {"matrix": [0, 4], "x": 80, "y": 0, "flags": 2},
+            {"matrix": [0, 3], "x": 60, "y": 0, "flags": 2},
+            {"matrix": [0, 2], "x": 40, "y": 0, "flags": 2},
+            {"matrix": [0, 1], "x": 20, "y": 0, "flags": 2},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}
+        ],
         "sat_steps": 8,
         "val_steps": 8,
         "speed_steps": 10,

+ 0 - 44
keyboards/quarkeys/z40/z40.c

@@ -1,44 +0,0 @@
-/* 
-/ Copyright 2022 quarkeys
-/ 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
-    /*
-        { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
-        { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
-        { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
-        { k30, k31, k32, k33, k34, k35, XXX, k36, k37, k38, k39, k3A }\
-    */
-        { 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,     29,     18,     17,     16,     15,     14,     13,     12,     11      },
-        { 10,      9,      8,      7,      6,      5, NO_LED,      4,      3,      2,      1,      0      }
-  }, 
-  {  // Index to Physical Position
-      {225, 64}, {200, 64}, {180, 64}, {160, 64}, {140, 64},            {110, 64}, { 80, 64}, { 60, 64}, { 40, 64}, { 20, 64}, {  0, 64},
-      {225, 42}, {200, 42}, {180, 42}, {160, 42}, {140, 42}, {120, 42}, {100, 42}, { 80, 42}, { 60, 42}, { 40, 42}, { 20, 42}, {  0, 42},
-      {225, 21}, {200, 21}, {180, 21}, {160, 21}, {140, 21}, {120, 21}, {100, 21}, { 80, 21}, { 60, 21}, { 40, 21}, { 20, 21}, {  0, 21},
-      {225,  0}, {200,  0}, {180,  0}, {160,  0}, {140,  0}, {120,  0}, {100,  0}, { 80,  0}, { 60,  0}, { 40,  0}, { 20,  0}, {  0,  0}
-  }, 
-  {
-      1, 1, 1, 1, 1,    1, 1, 1, 1, 1, 1,
-      1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-      1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
-      1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-  } 
-};
-#endif

+ 100 - 0
keyboards/rgbkb/mun/rev1/keyboard.json

@@ -88,6 +88,106 @@
         },
         "center_point": [128, 34],
         "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 16, "y": 16, "flags": 1},
+            {"matrix": [0, 1], "x": 34, "y": 16, "flags": 4},
+            {"matrix": [0, 2], "x": 49, "y": 16, "flags": 4},
+            {"matrix": [0, 3], "x": 64, "y": 16, "flags": 4},
+            {"matrix": [0, 4], "x": 79, "y": 16, "flags": 4},
+            {"matrix": [0, 5], "x": 94, "y": 16, "flags": 4},
+            {"matrix": [0, 6], "x": 109, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 109, "y": 31, "flags": 4},
+            {"matrix": [1, 5], "x": 94, "y": 31, "flags": 4},
+            {"matrix": [1, 4], "x": 79, "y": 31, "flags": 4},
+            {"matrix": [1, 3], "x": 64, "y": 31, "flags": 4},
+            {"matrix": [1, 2], "x": 49, "y": 31, "flags": 4},
+            {"matrix": [1, 1], "x": 34, "y": 31, "flags": 4},
+            {"matrix": [1, 0], "x": 16, "y": 31, "flags": 1},
+            {"matrix": [2, 0], "x": 16, "y": 46, "flags": 1},
+            {"matrix": [2, 1], "x": 34, "y": 46, "flags": 4},
+            {"matrix": [2, 2], "x": 49, "y": 46, "flags": 4},
+            {"matrix": [2, 3], "x": 64, "y": 46, "flags": 4},
+            {"matrix": [2, 4], "x": 79, "y": 46, "flags": 4},
+            {"matrix": [2, 5], "x": 94, "y": 46, "flags": 4},
+            {"matrix": [2, 6], "x": 109, "y": 46, "flags": 4},
+            {"matrix": [3, 6], "x": 109, "y": 61, "flags": 4},
+            {"matrix": [3, 5], "x": 94, "y": 61, "flags": 4},
+            {"matrix": [3, 4], "x": 79, "y": 61, "flags": 4},
+            {"matrix": [3, 3], "x": 64, "y": 61, "flags": 4},
+            {"matrix": [3, 2], "x": 49, "y": 61, "flags": 4},
+            {"matrix": [3, 1], "x": 34, "y": 61, "flags": 4},
+            {"matrix": [3, 0], "x": 16, "y": 61, "flags": 1},
+            {"matrix": [4, 0], "x": 16, "y": 76, "flags": 1},
+            {"matrix": [4, 1], "x": 34, "y": 76, "flags": 1},
+            {"matrix": [4, 2], "x": 49, "y": 76, "flags": 1},
+            {"matrix": [4, 3], "x": 64, "y": 76, "flags": 1},
+            {"matrix": [4, 4], "x": 83, "y": 72, "flags": 1},
+            {"matrix": [4, 5], "x": 98, "y": 72, "flags": 1},
+            {"matrix": [4, 6], "x": 113, "y": 72, "flags": 1},
+            {"x": 97, "y": 5, "flags": 2},
+            {"x": 91, "y": 5, "flags": 2},
+            {"x": 86, "y": 5, "flags": 2},
+            {"x": 80, "y": 5, "flags": 2},
+            {"x": 75, "y": 5, "flags": 2},
+            {"x": 69, "y": 5, "flags": 2},
+            {"x": 63, "y": 5, "flags": 2},
+            {"x": 58, "y": 5, "flags": 2},
+            {"x": 52, "y": 5, "flags": 2},
+            {"x": 46, "y": 5, "flags": 2},
+            {"x": 41, "y": 5, "flags": 2},
+            {"x": 35, "y": 5, "flags": 2},
+            {"x": 30, "y": 5, "flags": 2},
+            {"x": 24, "y": 5, "flags": 2},
+            {"matrix": [7, 0], "x": 240, "y": 16, "flags": 1},
+            {"matrix": [7, 1], "x": 222, "y": 16, "flags": 4},
+            {"matrix": [7, 2], "x": 207, "y": 16, "flags": 4},
+            {"matrix": [7, 3], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [7, 4], "x": 177, "y": 16, "flags": 4},
+            {"matrix": [7, 5], "x": 162, "y": 16, "flags": 4},
+            {"matrix": [7, 6], "x": 147, "y": 16, "flags": 4},
+            {"matrix": [8, 6], "x": 147, "y": 31, "flags": 4},
+            {"matrix": [8, 5], "x": 162, "y": 31, "flags": 4},
+            {"matrix": [8, 4], "x": 177, "y": 31, "flags": 4},
+            {"matrix": [8, 3], "x": 192, "y": 31, "flags": 4},
+            {"matrix": [8, 2], "x": 207, "y": 31, "flags": 4},
+            {"matrix": [8, 1], "x": 222, "y": 31, "flags": 4},
+            {"matrix": [8, 0], "x": 240, "y": 31, "flags": 1},
+            {"matrix": [9, 0], "x": 240, "y": 46, "flags": 1},
+            {"matrix": [9, 1], "x": 222, "y": 46, "flags": 4},
+            {"matrix": [9, 2], "x": 207, "y": 46, "flags": 4},
+            {"matrix": [9, 3], "x": 192, "y": 46, "flags": 4},
+            {"matrix": [9, 4], "x": 177, "y": 46, "flags": 4},
+            {"matrix": [9, 5], "x": 162, "y": 46, "flags": 4},
+            {"matrix": [9, 6], "x": 147, "y": 46, "flags": 4},
+            {"matrix": [10, 6], "x": 147, "y": 61, "flags": 4},
+            {"matrix": [10, 5], "x": 162, "y": 61, "flags": 4},
+            {"matrix": [10, 4], "x": 177, "y": 61, "flags": 4},
+            {"matrix": [10, 3], "x": 192, "y": 61, "flags": 4},
+            {"matrix": [10, 2], "x": 207, "y": 61, "flags": 4},
+            {"matrix": [10, 1], "x": 222, "y": 61, "flags": 4},
+            {"matrix": [10, 0], "x": 240, "y": 61, "flags": 1},
+            {"matrix": [11, 0], "x": 240, "y": 76, "flags": 1},
+            {"matrix": [11, 1], "x": 222, "y": 76, "flags": 1},
+            {"matrix": [11, 2], "x": 207, "y": 76, "flags": 1},
+            {"matrix": [11, 3], "x": 192, "y": 76, "flags": 1},
+            {"matrix": [11, 4], "x": 180, "y": 72, "flags": 1},
+            {"matrix": [11, 5], "x": 165, "y": 72, "flags": 1},
+            {"matrix": [11, 6], "x": 150, "y": 72, "flags": 1},
+            {"x": 159, "y": 5, "flags": 2},
+            {"x": 164, "y": 5, "flags": 2},
+            {"x": 170, "y": 5, "flags": 2},
+            {"x": 176, "y": 5, "flags": 2},
+            {"x": 181, "y": 5, "flags": 2},
+            {"x": 187, "y": 5, "flags": 2},
+            {"x": 192, "y": 5, "flags": 2},
+            {"x": 198, "y": 5, "flags": 2},
+            {"x": 204, "y": 5, "flags": 2},
+            {"x": 209, "y": 5, "flags": 2},
+            {"x": 215, "y": 5, "flags": 2},
+            {"x": 221, "y": 5, "flags": 2},
+            {"x": 226, "y": 5, "flags": 2},
+            {"x": 232, "y": 5, "flags": 2}
+        ],
         "led_flush_limit": 33,
         "led_process_limit": 10,
         "sleep": true,

+ 0 - 47
keyboards/rgbkb/mun/rev1/rev1.c

@@ -42,53 +42,6 @@ bool touch_encoder_tapped_kb(uint8_t index, uint8_t section) {
     return false;
 }
 
-#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-led_config_t g_led_config = { {
-    {   0,   1,   2,   3,   4,   5,   6 },
-    {  13,  12,  11,  10,   9,   8,   7 },
-    {  14,  15,  16,  17,  18,  19,  20 },
-    {  27,  26,  25,  24,  23,  22,  21 },
-    {  28,  29,  30,  31,  32,  33,  34 },
-    { 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 },
-    {  49,  50,  51,  52,  53,  54,  55 },
-    {  62,  61,  60,  59,  58,  57,  56 },
-    {  63,  64,  65,  66,  67,  68,  69 },
-    {  76,  75,  74,  73,  72,  71,  70 },
-    {  77,  78,  79,  80,  81,  82,  83 },
-    { 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 }
-}, {
-    {  16,  16},{  34,  16},{  49,  16},{  64,  16},{  79,  16},{  94,  16},{ 109,  16},
-    { 109,  31},{  94,  31},{  79,  31},{  64,  31},{  49,  31},{  34,  31},{  16,  31},
-    {  16,  46},{  34,  46},{  49,  46},{  64,  46},{  79,  46},{  94,  46},{ 109,  46},
-    { 109,  61},{  94,  61},{  79,  61},{  64,  61},{  49,  61},{  34,  61},{  16,  61},
-    {  16,  76},{  34,  76},{  49,  76},{  64,  76},{  83,  72},{  98,  72},{ 113,  72},
-    {  97,   5},{  91,   5},{  86,   5},{  80,   5},{  75,   5},{  69,   5},{  63,   5},{  58,   5},{  52,   5},{  46,   5},{  41,   5},{  35,   5},{  30,   5},{  24,   5},
-    { 240,  16},{ 222,  16},{ 207,  16},{ 192,  16},{ 177,  16},{ 162,  16},{ 147,  16},
-    { 147,  31},{ 162,  31},{ 177,  31},{ 192,  31},{ 207,  31},{ 222,  31},{ 240,  31},
-    { 240,  46},{ 222,  46},{ 207,  46},{ 192,  46},{ 177,  46},{ 162,  46},{ 147,  46},
-    { 147,  61},{ 162,  61},{ 177,  61},{ 192,  61},{ 207,  61},{ 222,  61},{ 240,  61},
-    { 240,  76},{ 222,  76},{ 207,  76},{ 192,  76},{ 180,  72},{ 165,  72},{ 150,  72},
-    { 159,   5},{ 164,   5},{ 170,   5},{ 176,   5},{ 181,   5},{ 187,   5},{ 192,   5},{ 198,   5},{ 204,   5},{ 209,   5},{ 215,   5},{ 221,   5},{ 226,   5},{ 232,   5},
-}, {
-    1, 4, 4, 4, 4, 4, 4,
-    4, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 4,
-    4, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 1, 1, 1, 1,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    1, 4, 4, 4, 4, 4, 4,
-    4, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 4,
-    4, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 1, 1, 1, 1,
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
-} };
-// clang-format on
-#endif
-
 void keyboard_post_init_kb(void) {
     touch_encoder_init();
     transaction_register_rpc(TOUCH_ENCODER_SYNC, touch_encoder_slave_sync);

+ 73 - 1
keyboards/rgbkb/sol/rev1/keyboard.json

@@ -63,7 +63,79 @@
             "solid_multisplash": true
         },
         "center_point": [112, 35],
-        "driver": "ws2812"
+        "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 21, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 38, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 56, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 73, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 91, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 112, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 18, "flags": 1},
+            {"matrix": [1, 1], "x": 21, "y": 18, "flags": 4},
+            {"matrix": [1, 2], "x": 38, "y": 18, "flags": 4},
+            {"matrix": [1, 3], "x": 56, "y": 18, "flags": 4},
+            {"matrix": [1, 4], "x": 73, "y": 18, "flags": 4},
+            {"matrix": [1, 5], "x": 91, "y": 18, "flags": 4},
+            {"matrix": [1, 6], "x": 108, "y": 13, "flags": 1},
+            {"matrix": [2, 0], "x": 0, "y": 35, "flags": 1},
+            {"matrix": [2, 1], "x": 21, "y": 35, "flags": 4},
+            {"matrix": [2, 2], "x": 38, "y": 35, "flags": 4},
+            {"matrix": [2, 3], "x": 56, "y": 35, "flags": 4},
+            {"matrix": [2, 4], "x": 73, "y": 35, "flags": 4},
+            {"matrix": [2, 5], "x": 91, "y": 35, "flags": 4},
+            {"matrix": [2, 6], "x": 108, "y": 31, "flags": 1},
+            {"matrix": [3, 0], "x": 0, "y": 52, "flags": 1},
+            {"matrix": [3, 1], "x": 21, "y": 52, "flags": 4},
+            {"matrix": [3, 2], "x": 38, "y": 52, "flags": 4},
+            {"matrix": [3, 3], "x": 56, "y": 52, "flags": 4},
+            {"matrix": [3, 4], "x": 73, "y": 52, "flags": 4},
+            {"matrix": [3, 5], "x": 91, "y": 52, "flags": 4},
+            {"matrix": [3, 6], "x": 108, "y": 48, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 70, "flags": 1},
+            {"matrix": [4, 1], "x": 21, "y": 70, "flags": 1},
+            {"matrix": [4, 2], "x": 38, "y": 70, "flags": 1},
+            {"matrix": [4, 3], "x": 56, "y": 70, "flags": 1},
+            {"matrix": [4, 4], "x": 73, "y": 70, "flags": 1},
+            {"matrix": [5, 5], "x": 89, "y": 91, "flags": 1},
+            {"matrix": [5, 6], "x": 101, "y": 103, "flags": 1},
+            {"matrix": [6, 0], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [6, 1], "x": 203, "y": 0, "flags": 4},
+            {"matrix": [6, 2], "x": 186, "y": 0, "flags": 4},
+            {"matrix": [6, 3], "x": 168, "y": 0, "flags": 4},
+            {"matrix": [6, 4], "x": 151, "y": 0, "flags": 4},
+            {"matrix": [6, 5], "x": 133, "y": 0, "flags": 4},
+            {"matrix": [6, 6], "x": 112, "y": 0, "flags": 1},
+            {"matrix": [7, 0], "x": 224, "y": 18, "flags": 1},
+            {"matrix": [7, 1], "x": 203, "y": 18, "flags": 4},
+            {"matrix": [7, 2], "x": 186, "y": 18, "flags": 4},
+            {"matrix": [7, 3], "x": 168, "y": 18, "flags": 4},
+            {"matrix": [7, 4], "x": 151, "y": 18, "flags": 4},
+            {"matrix": [7, 5], "x": 133, "y": 18, "flags": 4},
+            {"matrix": [7, 6], "x": 116, "y": 13, "flags": 1},
+            {"matrix": [8, 0], "x": 224, "y": 35, "flags": 1},
+            {"matrix": [8, 1], "x": 203, "y": 35, "flags": 4},
+            {"matrix": [8, 2], "x": 186, "y": 35, "flags": 4},
+            {"matrix": [8, 3], "x": 168, "y": 35, "flags": 4},
+            {"matrix": [8, 4], "x": 151, "y": 35, "flags": 4},
+            {"matrix": [8, 5], "x": 133, "y": 35, "flags": 4},
+            {"matrix": [8, 6], "x": 116, "y": 31, "flags": 1},
+            {"matrix": [9, 0], "x": 224, "y": 52, "flags": 1},
+            {"matrix": [9, 1], "x": 203, "y": 52, "flags": 4},
+            {"matrix": [9, 2], "x": 186, "y": 52, "flags": 4},
+            {"matrix": [9, 3], "x": 168, "y": 52, "flags": 4},
+            {"matrix": [9, 4], "x": 151, "y": 52, "flags": 4},
+            {"matrix": [9, 5], "x": 133, "y": 52, "flags": 4},
+            {"matrix": [9, 6], "x": 116, "y": 48, "flags": 1},
+            {"matrix": [10, 0], "x": 224, "y": 70, "flags": 1},
+            {"matrix": [10, 1], "x": 203, "y": 70, "flags": 1},
+            {"matrix": [10, 2], "x": 186, "y": 70, "flags": 1},
+            {"matrix": [10, 3], "x": 168, "y": 70, "flags": 1},
+            {"matrix": [10, 4], "x": 151, "y": 70, "flags": 1},
+            {"matrix": [11, 6], "x": 135, "y": 91, "flags": 1},
+            {"x": 123, "y": 103, "flags": 1}
+        ]
     },
     "rgblight": {
         "animations": {

+ 0 - 46
keyboards/rgbkb/sol/rev1/rev1.c

@@ -1,46 +0,0 @@
-#include "sol.h"
-
-#ifdef RGB_MATRIX_ENABLE
-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 },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,     33,     34 },
-    {     35,     36,     37,     38,     39,     40,     41 },
-    {     42,     43,     44,     45,     46,     47,     48 },
-    {     49,     50,     51,     52,     53,     54,     55 },
-    {     56,     57,     58,     59,     60,     61,     62 },
-    {     63,     64,     65,     66,     67,     68,     68 },
-    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,     68,     68 }
-}, {
-	// Left Hand Mapped Left to Right
-    {   0,   0 }, {  21,   0 }, {  38,   0 }, {  56,   0 }, {  73,   0 }, {  91,   0 }, { 112,   0 },
-    {   0,  18 }, {  21,  18 }, {  38,  18 }, {  56,  18 }, {  73,  18 }, {  91,  18 }, { 108,  13 },
-    {   0,  35 }, {  21,  35 }, {  38,  35 }, {  56,  35 }, {  73,  35 }, {  91,  35 }, { 108,  31 },
-    {   0,  52 }, {  21,  52 }, {  38,  52 }, {  56,  52 }, {  73,  52 }, {  91,  52 }, { 108,  48 },
-    {   0,  70 }, {  21,  70 }, {  38,  70 }, {  56,  70 }, {  73,  70 }, {  89,  91 }, { 101, 103 },
-	// Left Hand Mapped Right to Left
-    { 224,   0 }, { 203,   0 }, { 186,   0 }, { 168,   0 }, { 151,   0 }, { 133,   0 }, { 112,   0 },
-    { 224,  18 }, { 203,  18 }, { 186,  18 }, { 168,  18 }, { 151,  18 }, { 133,  18 }, { 116,  13 },
-    { 224,  35 }, { 203,  35 }, { 186,  35 }, { 168,  35 }, { 151,  35 }, { 133,  35 }, { 116,  31 },
-    { 224,  52 }, { 203,  52 }, { 186,  52 }, { 168,  52 }, { 151,  52 }, { 133,  52 }, { 116,  48 },
-    { 224,  70 }, { 203,  70 }, { 186,  70 }, { 168,  70 }, { 151,  70 }, { 135,  91 }, { 123, 103 },
-}, {
-	// Left Hand Mapped Left to Right
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 1, 1, 1, 1,
-	// Left Hand Mapped Right to Left
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 1, 1, 1, 1
-} };
-
-#endif
-

+ 158 - 0
keyboards/rgbkb/sol3/rev1/keyboard.json

@@ -96,6 +96,164 @@
         },
         "center_point": [81, 28],
         "driver": "ws2812",
+        "layout": [
+            {"x": 1, "y": 6, "flags": 2},
+            {"x": 1, "y": 13, "flags": 2},
+            {"x": 1, "y": 19, "flags": 2},
+            {"x": 1, "y": 25, "flags": 2},
+            {"x": 1, "y": 31, "flags": 2},
+            {"x": 1, "y": 37, "flags": 2},
+            {"x": 1, "y": 43, "flags": 2},
+            {"x": 1, "y": 49, "flags": 2},
+            {"x": 4, "y": 52, "flags": 2},
+            {"x": 11, "y": 52, "flags": 2},
+            {"x": 17, "y": 52, "flags": 2},
+            {"x": 23, "y": 52, "flags": 2},
+            {"x": 29, "y": 52, "flags": 2},
+            {"x": 35, "y": 52, "flags": 2},
+            {"x": 41, "y": 54, "flags": 2},
+            {"x": 46, "y": 57, "flags": 2},
+            {"x": 52, "y": 60, "flags": 2},
+            {"x": 57, "y": 63, "flags": 2},
+            {"x": 62, "y": 66, "flags": 2},
+            {"x": 68, "y": 69, "flags": 2},
+            {"x": 73, "y": 67, "flags": 2},
+            {"x": 76, "y": 62, "flags": 2},
+            {"x": 79, "y": 57, "flags": 2},
+            {"x": 78, "y": 51, "flags": 2},
+            {"x": 77, "y": 45, "flags": 2},
+            {"x": 76, "y": 39, "flags": 2},
+            {"x": 76, "y": 33, "flags": 2},
+            {"x": 76, "y": 27, "flags": 2},
+            {"x": 76, "y": 21, "flags": 2},
+            {"x": 76, "y": 14, "flags": 2},
+            {"x": 76, "y": 8, "flags": 2},
+            {"x": 72, "y": 3, "flags": 2},
+            {"x": 59, "y": 3, "flags": 2},
+            {"x": 53, "y": 3, "flags": 2},
+            {"x": 46, "y": 3, "flags": 2},
+            {"x": 40, "y": 3, "flags": 2},
+            {"x": 34, "y": 3, "flags": 2},
+            {"x": 28, "y": 3, "flags": 2},
+            {"x": 22, "y": 3, "flags": 2},
+            {"x": 10, "y": 3, "flags": 2},
+            {"x": 3, "y": 3, "flags": 2},
+            {"matrix": [0, 0], "x": 9, "y": 6, "flags": 1},
+            {"matrix": [0, 1], "x": 21, "y": 6, "flags": 4},
+            {"matrix": [0, 2], "x": 30, "y": 6, "flags": 4},
+            {"matrix": [0, 3], "x": 40, "y": 6, "flags": 4},
+            {"matrix": [0, 4], "x": 49, "y": 6, "flags": 4},
+            {"matrix": [0, 5], "x": 59, "y": 6, "flags": 4},
+            {"matrix": [0, 6], "x": 71, "y": 6, "flags": 1},
+            {"matrix": [1, 6], "x": 71, "y": 16, "flags": 1},
+            {"matrix": [1, 5], "x": 59, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 49, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 40, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 30, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 21, "y": 16, "flags": 4},
+            {"matrix": [1, 0], "x": 9, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 9, "y": 25, "flags": 1},
+            {"matrix": [2, 1], "x": 21, "y": 25, "flags": 4},
+            {"matrix": [2, 2], "x": 30, "y": 25, "flags": 4},
+            {"matrix": [2, 3], "x": 40, "y": 25, "flags": 4},
+            {"matrix": [2, 4], "x": 49, "y": 25, "flags": 4},
+            {"matrix": [2, 5], "x": 59, "y": 25, "flags": 4},
+            {"matrix": [2, 6], "x": 71, "y": 25, "flags": 1},
+            {"matrix": [3, 6], "x": 71, "y": 35, "flags": 1},
+            {"matrix": [3, 5], "x": 59, "y": 35, "flags": 4},
+            {"matrix": [3, 4], "x": 49, "y": 35, "flags": 4},
+            {"matrix": [3, 3], "x": 40, "y": 35, "flags": 4},
+            {"matrix": [3, 2], "x": 30, "y": 35, "flags": 4},
+            {"matrix": [3, 1], "x": 21, "y": 35, "flags": 4},
+            {"matrix": [3, 0], "x": 9, "y": 35, "flags": 1},
+            {"matrix": [4, 0], "x": 9, "y": 44, "flags": 1},
+            {"matrix": [4, 1], "x": 21, "y": 44, "flags": 1},
+            {"matrix": [4, 2], "x": 30, "y": 44, "flags": 1},
+            {"matrix": [4, 3], "x": 40, "y": 44, "flags": 1},
+            {"matrix": [4, 4], "x": 49, "y": 44, "flags": 1},
+            {"matrix": [4, 5], "x": 66, "y": 50, "flags": 1},
+            {"matrix": [4, 6], "x": 75, "y": 54, "flags": 1},
+            {"matrix": [4, 7], "x": 70, "y": 62, "flags": 1},
+            {"x": 60, "y": 60, "flags": 1},
+            {"x": 160, "y": 6, "flags": 2},
+            {"x": 160, "y": 13, "flags": 2},
+            {"x": 160, "y": 19, "flags": 2},
+            {"x": 160, "y": 25, "flags": 2},
+            {"x": 160, "y": 31, "flags": 2},
+            {"x": 160, "y": 37, "flags": 2},
+            {"x": 160, "y": 43, "flags": 2},
+            {"x": 160, "y": 49, "flags": 2},
+            {"x": 157, "y": 52, "flags": 2},
+            {"x": 151, "y": 52, "flags": 2},
+            {"x": 145, "y": 52, "flags": 2},
+            {"x": 138, "y": 52, "flags": 2},
+            {"x": 132, "y": 52, "flags": 2},
+            {"x": 126, "y": 52, "flags": 2},
+            {"x": 120, "y": 54, "flags": 2},
+            {"x": 115, "y": 57, "flags": 2},
+            {"x": 110, "y": 60, "flags": 2},
+            {"x": 105, "y": 63, "flags": 2},
+            {"x": 99, "y": 66, "flags": 2},
+            {"x": 94, "y": 69, "flags": 2},
+            {"x": 89, "y": 67, "flags": 2},
+            {"x": 86, "y": 62, "flags": 2},
+            {"x": 83, "y": 57, "flags": 2},
+            {"x": 83, "y": 51, "flags": 2},
+            {"x": 85, "y": 45, "flags": 2},
+            {"x": 86, "y": 39, "flags": 2},
+            {"x": 86, "y": 33, "flags": 2},
+            {"x": 86, "y": 27, "flags": 2},
+            {"x": 86, "y": 21, "flags": 2},
+            {"x": 86, "y": 14, "flags": 2},
+            {"x": 86, "y": 8, "flags": 2},
+            {"x": 90, "y": 3, "flags": 2},
+            {"x": 103, "y": 3, "flags": 2},
+            {"x": 109, "y": 3, "flags": 2},
+            {"x": 115, "y": 3, "flags": 2},
+            {"x": 121, "y": 3, "flags": 2},
+            {"x": 127, "y": 3, "flags": 2},
+            {"x": 133, "y": 3, "flags": 2},
+            {"x": 140, "y": 3, "flags": 2},
+            {"x": 152, "y": 3, "flags": 2},
+            {"x": 158, "y": 3, "flags": 2},
+            {"matrix": [6, 0], "x": 153, "y": 6, "flags": 1},
+            {"matrix": [6, 1], "x": 141, "y": 6, "flags": 4},
+            {"matrix": [6, 2], "x": 131, "y": 6, "flags": 4},
+            {"matrix": [6, 3], "x": 122, "y": 6, "flags": 4},
+            {"matrix": [6, 4], "x": 112, "y": 6, "flags": 4},
+            {"matrix": [6, 5], "x": 103, "y": 6, "flags": 4},
+            {"matrix": [6, 6], "x": 91, "y": 6, "flags": 1},
+            {"matrix": [7, 6], "x": 91, "y": 16, "flags": 1},
+            {"matrix": [7, 5], "x": 103, "y": 16, "flags": 4},
+            {"matrix": [7, 4], "x": 112, "y": 16, "flags": 4},
+            {"matrix": [7, 3], "x": 122, "y": 16, "flags": 4},
+            {"matrix": [7, 2], "x": 131, "y": 16, "flags": 4},
+            {"matrix": [7, 1], "x": 141, "y": 16, "flags": 4},
+            {"matrix": [7, 0], "x": 153, "y": 16, "flags": 1},
+            {"matrix": [8, 0], "x": 153, "y": 25, "flags": 1},
+            {"matrix": [8, 1], "x": 141, "y": 25, "flags": 4},
+            {"matrix": [8, 2], "x": 131, "y": 25, "flags": 4},
+            {"matrix": [8, 3], "x": 122, "y": 25, "flags": 4},
+            {"matrix": [8, 4], "x": 112, "y": 25, "flags": 4},
+            {"matrix": [8, 5], "x": 103, "y": 25, "flags": 4},
+            {"matrix": [8, 6], "x": 91, "y": 25, "flags": 1},
+            {"matrix": [9, 6], "x": 91, "y": 35, "flags": 1},
+            {"matrix": [9, 5], "x": 103, "y": 35, "flags": 4},
+            {"matrix": [9, 4], "x": 112, "y": 35, "flags": 4},
+            {"matrix": [9, 3], "x": 122, "y": 35, "flags": 4},
+            {"matrix": [9, 2], "x": 131, "y": 35, "flags": 4},
+            {"matrix": [9, 1], "x": 141, "y": 35, "flags": 4},
+            {"matrix": [9, 0], "x": 153, "y": 35, "flags": 1},
+            {"matrix": [10, 0], "x": 153, "y": 44, "flags": 1},
+            {"matrix": [10, 1], "x": 141, "y": 44, "flags": 1},
+            {"matrix": [10, 2], "x": 131, "y": 44, "flags": 1},
+            {"matrix": [10, 3], "x": 122, "y": 44, "flags": 1},
+            {"matrix": [10, 4], "x": 112, "y": 44, "flags": 1},
+            {"matrix": [10, 5], "x": 96, "y": 50, "flags": 1},
+            {"matrix": [10, 6], "x": 87, "y": 54, "flags": 1},
+            {"matrix": [10, 7], "x": 92, "y": 62, "flags": 1},
+            {"x": 102, "y": 60, "flags": 1}
+        ],
         "led_flush_limit": 33,
         "led_process_limit": 10,
         "sleep": true,

+ 0 - 57
keyboards/rgbkb/sol3/rev1/rev1.c

@@ -81,63 +81,6 @@ void matrix_slave_scan_kb(void) {
 }
 
 #ifdef RGB_MATRIX_ENABLE
-// clang-format off
-led_config_t g_led_config = { {
-    {  41,  42,  43,  44,  45,  46,  47, NO_LED },
-    {  54,  53,  52,  51,  50,  49,  48, NO_LED },
-    {  55,  56,  57,  58,  59,  60,  61, NO_LED },
-    {  68,  67,  66,  65,  64,  63,  62, NO_LED },
-    {  69,  70,  71,  72,  73,  74,  75,  76 },
-    {  NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
-    { 119, 120, 121, 122, 123, 124, 125, NO_LED  },
-    { 132, 131, 130, 129, 128, 127, 126, NO_LED  },
-    { 133, 134, 135, 136, 137, 138, 139, NO_LED  },
-    { 146, 145, 144, 143, 142, 141, 140, NO_LED  },
-    { 147, 148, 149, 150, 151, 152, 153, 154 },
-    {  NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
-}, { // ALL XY VALUES DIVIDE BY 2, THEN ADD 5
-    {   1,   6 }, {   1,  13 }, {   1,  19 }, {   1,  25 }, {   1,  31 }, {   1,  37 }, {   1,  43 }, {   1,  49 }, {   4,  52 }, {  11,  52 },
-    {  17,  52 }, {  23,  52 }, {  29,  52 }, {  35,  52 }, {  41,  54 }, {  46,  57 }, {  52,  60 }, {  57,  63 }, {  62,  66 }, {  68,  69 },
-    {  73,  67 }, {  76,  62 }, {  79,  57 }, {  78,  51 }, {  77,  45 }, {  76,  39 }, {  76,  33 }, {  76,  27 }, {  76,  21 }, {  76,  14 },
-    {  76,   8 }, {  72,   3 }, {  59,   3 }, {  53,   3 }, {  46,   3 }, {  40,   3 }, {  34,   3 }, {  28,   3 }, {  22,   3 }, {  10,   3 }, {   3,   3 },
-    {   9,   6 }, {  21,   6 }, {  30,   6 }, {  40,   6 }, {  49,   6 }, {  59,   6 }, {  71,   6 },
-    {  71,  16 }, {  59,  16 }, {  49,  16 }, {  40,  16 }, {  30,  16 }, {  21,  16 }, {   9,  16 },
-    {   9,  25 }, {  21,  25 }, {  30,  25 }, {  40,  25 }, {  49,  25 }, {  59,  25 }, {  71,  25 },
-    {  71,  35 }, {  59,  35 }, {  49,  35 }, {  40,  35 }, {  30,  35 }, {  21,  35 }, {   9,  35 },
-    {   9,  44 }, {  21,  44 }, {  30,  44 }, {  40,  44 }, {  49,  44 }, {  66,  50 }, {  75,  54 }, {  70,  62 }, {  60,  60 },
-
-    { 160,   6 }, { 160,  13 }, { 160,  19 }, { 160,  25 }, { 160,  31 }, { 160,  37 }, { 160,  43 }, { 160,  49 }, { 157,  52 }, { 151,  52 },
-    { 145,  52 }, { 138,  52 }, { 132,  52 }, { 126,  52 }, { 120,  54 }, { 115,  57 }, { 110,  60 }, { 105,  63 }, {  99,  66 }, {  94,  69 },
-    {  89,  67 }, {  86,  62 }, {  83,  57 }, {  83,  51 }, {  85,  45 }, {  86,  39 }, {  86,  33 }, {  86,  27 }, {  86,  21 }, {  86,  14 },
-    {  86,   8 }, {  90,   3 }, { 103,   3 }, { 109,   3 }, { 115,   3 }, { 121,   3 }, { 127,   3 }, { 133,   3 }, { 140,   3 }, { 152,   3 }, { 158,   3 },
-    { 153,   6 }, { 141,   6 }, { 131,   6 }, { 122,   6 }, { 112,   6 }, { 103,   6 }, {  91,   6 },
-    {  91,  16 }, { 103,  16 }, { 112,  16 }, { 122,  16 }, { 131,  16 }, { 141,  16 }, { 153,  16 },
-    { 153,  25 }, { 141,  25 }, { 131,  25 }, { 122,  25 }, { 112,  25 }, { 103,  25 }, {  91,  25 },
-    {  91,  35 }, { 103,  35 }, { 112,  35 }, { 122,  35 }, { 131,  35 }, { 141,  35 }, { 153,  35 },
-    { 153,  44 }, { 141,  44 }, { 131,  44 }, { 122,  44 }, { 112,  44 }, {  96,  50 }, {  87,  54 }, {  92,  62 }, { 102,  60 },
-}, {
-    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, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1,
-
-    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, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 4, 4, 4, 4, 4, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1
-} };
-// clang-format on
-
 void rgb_matrix_increase_flags(void)
 {
     switch (rgb_matrix_get_flags()) {