Browse Source

Migrate `g_led_config` to DD (K6) (#25607)

Jack Sangdahl 11 months ago
parent
commit
3a29cdbd7d

+ 0 - 30
keyboards/keychron/v6/ansi/ansi.c

@@ -139,34 +139,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA12,   CB10_CA12,   CB11_CA12},
     {1, CB12_CA9,    CB10_CA9,    CB11_CA9},
 };
-
-#define __ NO_LED
-
-led_config_t g_led_config = {
-    {
-        {  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  12,  __,  13,  14,  15,  39,  40, 16 },
-        { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32,  33,  34,  35,  36,  37,  38, 17 },
-        { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,  53,  54,  55,  56,  57,  58,  59, 18 },
-        { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,  __,  73,  60,  77,  76,  74,  75, 19 },
-        { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,  __,  89,  93,  90, 107,  91,  92, __ },
-        { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
-    },
-    {
-        {0,0},           {21,0},  {31,0},  {42,0},  {52,0},  {68,0},  {78,0},  {89,0},   {99,0},   {115,0},  {125,0},  {136,0},  {146,0},  {159,0},  {169,0},  {180,0},  {193,0},  {203,0},  {214,0},  {224,0},
-        {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15},  {94,15},  {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
-        {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27},  {99,27},  {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
-        {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40},  {102,40}, {112,40}, {123,40},           {139,40},                               {193,40}, {203,40}, {214,40}, {224,34},
-        {7,52},          {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52},  {96,52},  {107,52}, {117,52},           {137,52},           {169,52},           {193,52}, {203,52}, {214,52},
-        {1,64}, {14,64}, {27,64},                            {66,64},                              {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64},           {214,64}, {224,58},
-    },
-    {
-        1,    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
-        8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,          4, 4, 4, 4,
-        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,    4, 4, 4,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1, 1,    4, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 112 - 0
keyboards/keychron/v6/ansi/keyboard.json

@@ -18,6 +18,118 @@
         "rgb_matrix": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 21, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 31, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 52, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 68, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 78, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 89, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 99, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 115, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 125, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 136, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 146, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 159, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 180, "y": 0, "flags": 1},
+            {"matrix": [0, 19], "x": 193, "y": 0, "flags": 1},
+            {"matrix": [1, 19], "x": 203, "y": 0, "flags": 1},
+            {"matrix": [2, 19], "x": 214, "y": 0, "flags": 1},
+            {"matrix": [3, 19], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 21, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 31, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 42, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 63, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 73, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 83, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 94, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 115, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 125, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 141, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 159, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 169, "y": 15, "flags": 1},
+            {"matrix": [1, 16], "x": 180, "y": 15, "flags": 1},
+            {"matrix": [1, 17], "x": 193, "y": 15, "flags": 8},
+            {"matrix": [1, 18], "x": 203, "y": 15, "flags": 4},
+            {"matrix": [0, 17], "x": 214, "y": 15, "flags": 4},
+            {"matrix": [0, 18], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
+            {"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
+            {"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
+            {"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
+            {"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
+            {"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
+            {"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
+            {"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
+            {"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
+            {"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
+            {"matrix": [2, 13], "x": 143, "y": 27, "flags": 4},
+            {"matrix": [2, 14], "x": 159, "y": 27, "flags": 1},
+            {"matrix": [2, 15], "x": 169, "y": 27, "flags": 1},
+            {"matrix": [2, 16], "x": 180, "y": 27, "flags": 1},
+            {"matrix": [2, 17], "x": 193, "y": 27, "flags": 4},
+            {"matrix": [2, 18], "x": 203, "y": 27, "flags": 4},
+            {"matrix": [3, 14], "x": 214, "y": 27, "flags": 4},
+            {"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 139, "y": 40, "flags": 1},
+            {"matrix": [3, 17], "x": 193, "y": 40, "flags": 4},
+            {"matrix": [3, 18], "x": 203, "y": 40, "flags": 4},
+            {"matrix": [3, 16], "x": 214, "y": 40, "flags": 4},
+            {"matrix": [3, 15], "x": 224, "y": 34, "flags": 4},
+            {"matrix": [4, 0], "x": 7, "y": 52, "flags": 1},
+            {"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
+            {"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
+            {"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
+            {"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
+            {"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
+            {"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
+            {"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
+            {"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
+            {"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
+            {"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
+            {"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 169, "y": 52, "flags": 1},
+            {"matrix": [4, 17], "x": 193, "y": 52, "flags": 4},
+            {"matrix": [4, 18], "x": 203, "y": 52, "flags": 4},
+            {"matrix": [4, 14], "x": 214, "y": 52, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 66, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 105, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 118, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 145, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 159, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 169, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 17], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 18], "x": 214, "y": 64, "flags": 4},
+            {"matrix": [4, 16], "x": 224, "y": 58, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_108": {
             "layout": [

+ 0 - 33
keyboards/keychron/v6/ansi_encoder/ansi_encoder.c

@@ -141,37 +141,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA12,   CB10_CA12,   CB11_CA12},
     {1, CB12_CA9,    CB10_CA9,    CB11_CA9},
 };
-
-#define __ NO_LED
-
-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,  39,  40, 16 },
-        { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32,  33,  34,  35,  36,  37,  38, 17 },
-        { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,  53,  54,  55,  56,  57,  58,  59, 18 },
-        { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,  __,  73,  60,  77,  76,  74,  75, 19 },
-        { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,  __,  89,  93,  90, 107,  91,  92, __ },
-        { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {13,0},  {24,0},  {34,0},  {45,0},  {57,0},  {68,0},  {78,0},  {89,0},  {102,0},  {112,0},  {123,0},  {133,0},            {159,0},  {169,0},  {180,0},  {193,0},  {203,0},  {214,0},  {224,0},
-        {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15},  {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
-        {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27},  {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
-        {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40},           {139,40},                               {193,40}, {203,40}, {214,40}, {224,34},
-        {7,52},          {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52},  {107,52}, {117,52},           {137,52},           {169,52},           {193,52}, {203,52}, {214,52},
-        {1,64}, {14,64}, {27,64},                            {66,64},                             {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64},           {214,64}, {224,58},
-    },
-    {
-        // RGB LED Index to Flag
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,    1, 1, 1, 1, 1, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
-        8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,          4, 4, 4, 4,
-        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,    4, 4, 4,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1, 1,    4, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 113 - 3
keyboards/keychron/v6/ansi_encoder/keyboard.json

@@ -8,9 +8,6 @@
         "pid": "0x0361",
         "device_version": "1.0.0"
     },
-    "rgb_matrix": {
-        "driver": "snled27351"
-    },
     "encoder": {
         "rotary": [
             {"pin_a": "C14", "pin_b": "A2"}
@@ -27,6 +24,119 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "driver": "snled27351",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 13, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 24, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 34, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 45, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 57, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 68, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 78, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 89, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 102, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 112, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 123, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 133, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 159, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 180, "y": 0, "flags": 1},
+            {"matrix": [0, 19], "x": 193, "y": 0, "flags": 1},
+            {"matrix": [1, 19], "x": 203, "y": 0, "flags": 1},
+            {"matrix": [2, 19], "x": 214, "y": 0, "flags": 1},
+            {"matrix": [3, 19], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 21, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 31, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 42, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 63, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 73, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 83, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 94, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 115, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 125, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 141, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 159, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 169, "y": 15, "flags": 1},
+            {"matrix": [1, 16], "x": 180, "y": 15, "flags": 1},
+            {"matrix": [1, 17], "x": 193, "y": 15, "flags": 8},
+            {"matrix": [1, 18], "x": 203, "y": 15, "flags": 4},
+            {"matrix": [0, 17], "x": 214, "y": 15, "flags": 4},
+            {"matrix": [0, 18], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
+            {"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
+            {"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
+            {"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
+            {"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
+            {"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
+            {"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
+            {"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
+            {"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
+            {"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
+            {"matrix": [2, 13], "x": 143, "y": 27, "flags": 4},
+            {"matrix": [2, 14], "x": 159, "y": 27, "flags": 1},
+            {"matrix": [2, 15], "x": 169, "y": 27, "flags": 1},
+            {"matrix": [2, 16], "x": 180, "y": 27, "flags": 1},
+            {"matrix": [2, 17], "x": 193, "y": 27, "flags": 4},
+            {"matrix": [2, 18], "x": 203, "y": 27, "flags": 4},
+            {"matrix": [3, 14], "x": 214, "y": 27, "flags": 4},
+            {"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 139, "y": 40, "flags": 1},
+            {"matrix": [3, 17], "x": 193, "y": 40, "flags": 4},
+            {"matrix": [3, 18], "x": 203, "y": 40, "flags": 4},
+            {"matrix": [3, 16], "x": 214, "y": 40, "flags": 4},
+            {"matrix": [3, 15], "x": 224, "y": 34, "flags": 4},
+            {"matrix": [4, 0], "x": 7, "y": 52, "flags": 1},
+            {"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
+            {"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
+            {"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
+            {"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
+            {"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
+            {"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
+            {"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
+            {"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
+            {"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
+            {"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
+            {"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 169, "y": 52, "flags": 1},
+            {"matrix": [4, 17], "x": 193, "y": 52, "flags": 4},
+            {"matrix": [4, 18], "x": 203, "y": 52, "flags": 4},
+            {"matrix": [4, 14], "x": 214, "y": 52, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 66, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 105, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 118, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 145, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 159, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 169, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 17], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 18], "x": 214, "y": 64, "flags": 4},
+            {"matrix": [4, 16], "x": 224, "y": 58, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_109": {
             "layout": [

+ 0 - 33
keyboards/keychron/v6/iso/iso.c

@@ -142,37 +142,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA12,   CB10_CA12,   CB11_CA12},
     {1, CB12_CA9,    CB10_CA9,    CB11_CA9},
 };
-
-#define __ NO_LED
-
-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,  39,  40,  16 },
-        { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32,  33,  34,  35,  36,  37,  38,  17 },
-        { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,  53,  73,  54,  55,  56,  57,  58,  18 },
-        { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,  __,  72,  59,  77,  76,  74,  75,  19 },
-        { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,  __,  90,  94,  91,  108, 92,  93,  __ },
-        { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {21,0},  {31,0},  {42,0},  {52,0},  {68,0},  {78,0},  {89,0},  {99,0},   {115,0},  {125,0},  {136,0},  {146,0},  {159,0},  {169,0},  {180,0},  {193,0},  {203,0},  {214,0},  {224,0},
-        {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15},  {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
-        {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27},  {109,27}, {120,27}, {130,27},           {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
-        {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36},                               {193,40}, {203,40}, {214,40}, {224,34},
-        {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52},  {107,52}, {117,52},           {137,52},           {169,52},           {193,52}, {203,52}, {214,52},
-        {1,64}, {14,64}, {27,64},                            {66,64},                             {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64},           {214,64}, {224,58},
-    },
-    {
-        // RGB LED Index to Flag
-        1,    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1, 1, 4, 4, 4,
-        8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,          4, 4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,    4, 4, 4,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1, 1,    4, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 114 - 3
keyboards/keychron/v6/iso/keyboard.json

@@ -8,9 +8,6 @@
         "pid": "0x0362",
         "device_version": "1.0.0"
     },
-    "rgb_matrix": {
-        "driver": "snled27351"
-    },
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
     "features": {
@@ -21,6 +18,120 @@
         "rgb_matrix": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "driver": "snled27351",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 21, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 31, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 52, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 68, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 78, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 89, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 99, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 115, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 125, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 136, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 146, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 159, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 180, "y": 0, "flags": 1},
+            {"matrix": [0, 19], "x": 193, "y": 0, "flags": 1},
+            {"matrix": [1, 19], "x": 203, "y": 0, "flags": 1},
+            {"matrix": [2, 19], "x": 214, "y": 0, "flags": 1},
+            {"matrix": [3, 19], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 21, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 31, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 42, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 63, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 73, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 83, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 94, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 115, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 125, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 141, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 159, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 169, "y": 15, "flags": 1},
+            {"matrix": [1, 16], "x": 180, "y": 15, "flags": 1},
+            {"matrix": [1, 17], "x": 193, "y": 15, "flags": 8},
+            {"matrix": [1, 18], "x": 203, "y": 15, "flags": 4},
+            {"matrix": [0, 17], "x": 214, "y": 15, "flags": 4},
+            {"matrix": [0, 18], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
+            {"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
+            {"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
+            {"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
+            {"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
+            {"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
+            {"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
+            {"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
+            {"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
+            {"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
+            {"matrix": [2, 14], "x": 159, "y": 27, "flags": 1},
+            {"matrix": [2, 15], "x": 169, "y": 27, "flags": 1},
+            {"matrix": [2, 16], "x": 180, "y": 27, "flags": 1},
+            {"matrix": [2, 17], "x": 193, "y": 27, "flags": 4},
+            {"matrix": [2, 18], "x": 203, "y": 27, "flags": 4},
+            {"matrix": [3, 14], "x": 214, "y": 27, "flags": 4},
+            {"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 133, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 147, "y": 36, "flags": 1},
+            {"matrix": [3, 17], "x": 193, "y": 40, "flags": 4},
+            {"matrix": [3, 18], "x": 203, "y": 40, "flags": 4},
+            {"matrix": [3, 16], "x": 214, "y": 40, "flags": 4},
+            {"matrix": [3, 15], "x": 224, "y": 34, "flags": 4},
+            {"matrix": [4, 0], "x": 1, "y": 52, "flags": 1},
+            {"matrix": [4, 1], "x": 13, "y": 52, "flags": 4},
+            {"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
+            {"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
+            {"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
+            {"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
+            {"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
+            {"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
+            {"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
+            {"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
+            {"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
+            {"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
+            {"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 169, "y": 52, "flags": 1},
+            {"matrix": [4, 17], "x": 193, "y": 52, "flags": 4},
+            {"matrix": [4, 18], "x": 203, "y": 52, "flags": 4},
+            {"matrix": [4, 14], "x": 214, "y": 52, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 66, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 105, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 118, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 145, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 159, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 169, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 17], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 18], "x": 214, "y": 64, "flags": 4},
+            {"matrix": [4, 16], "x": 224, "y": 58, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_109": {
             "layout": [

+ 0 - 33
keyboards/keychron/v6/iso_encoder/iso_encoder.c

@@ -142,37 +142,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA12,   CB10_CA12,   CB11_CA12},
     {1, CB12_CA9,    CB10_CA9,    CB11_CA9},
 };
-
-#define __ NO_LED
-
-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,  39,  40,  16 },
-        { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32,  33,  34,  35,  36,  37,  38,  17 },
-        { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,  53,  73,  54,  55,  56,  57,  58,  18 },
-        { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,  __,  72,  59,  77,  76,  74,  75,  19 },
-        { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,  __,  90,  94,  91,  108, 92,  93,  __ },
-        { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {13,0},  {24,0},  {34,0},  {45,0},  {57,0},  {68,0},  {78,0},  {89,0},  {102,0},  {112,0},  {123,0},  {133,0},            {159,0},  {169,0},  {180,0},  {193,0},  {203,0},  {214,0},  {224,0},
-        {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15},  {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
-        {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27},  {109,27}, {120,27}, {130,27}, {159,27},           {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
-        {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36},                               {193,40}, {203,40}, {214,40}, {224,34},
-        {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52},  {107,52}, {117,52},           {137,52},           {169,52},           {193,52}, {203,52}, {214,52},
-        {1,64}, {14,64}, {27,64},                            {66,64},                             {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64},           {214,64}, {224,58},
-    },
-    {
-        // RGB LED Index to Flag
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,    1, 1, 1, 1, 1, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1, 1, 4, 4, 4,
-        8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,          4, 4, 4, 4,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,    4, 4, 4,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1, 1,    4, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 114 - 3
keyboards/keychron/v6/iso_encoder/keyboard.json

@@ -8,9 +8,6 @@
         "pid": "0x0363",
         "device_version": "1.0.0"
     },
-    "rgb_matrix": {
-        "driver": "snled27351"
-    },
     "encoder": {
         "rotary": [
             {"pin_a": "C14", "pin_b": "A2"}
@@ -27,6 +24,120 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "driver": "snled27351",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 13, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 24, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 34, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 45, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 57, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 68, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 78, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 89, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 102, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 112, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 123, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 133, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 159, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 180, "y": 0, "flags": 1},
+            {"matrix": [0, 19], "x": 193, "y": 0, "flags": 1},
+            {"matrix": [1, 19], "x": 203, "y": 0, "flags": 1},
+            {"matrix": [2, 19], "x": 214, "y": 0, "flags": 1},
+            {"matrix": [3, 19], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 21, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 31, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 42, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 63, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 73, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 83, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 94, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 115, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 125, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 141, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 159, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 169, "y": 15, "flags": 1},
+            {"matrix": [1, 16], "x": 180, "y": 15, "flags": 1},
+            {"matrix": [1, 17], "x": 193, "y": 15, "flags": 8},
+            {"matrix": [1, 18], "x": 203, "y": 15, "flags": 4},
+            {"matrix": [0, 17], "x": 214, "y": 15, "flags": 4},
+            {"matrix": [0, 18], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
+            {"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
+            {"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
+            {"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
+            {"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
+            {"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
+            {"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
+            {"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
+            {"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
+            {"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
+            {"matrix": [2, 14], "x": 159, "y": 27, "flags": 1},
+            {"matrix": [2, 15], "x": 169, "y": 27, "flags": 1},
+            {"matrix": [2, 16], "x": 180, "y": 27, "flags": 1},
+            {"matrix": [2, 17], "x": 193, "y": 27, "flags": 4},
+            {"matrix": [2, 18], "x": 203, "y": 27, "flags": 4},
+            {"matrix": [3, 14], "x": 214, "y": 27, "flags": 4},
+            {"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 133, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 147, "y": 36, "flags": 1},
+            {"matrix": [3, 17], "x": 193, "y": 40, "flags": 4},
+            {"matrix": [3, 18], "x": 203, "y": 40, "flags": 4},
+            {"matrix": [3, 16], "x": 214, "y": 40, "flags": 4},
+            {"matrix": [3, 15], "x": 224, "y": 34, "flags": 4},
+            {"matrix": [4, 0], "x": 1, "y": 52, "flags": 1},
+            {"matrix": [4, 1], "x": 13, "y": 52, "flags": 4},
+            {"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
+            {"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
+            {"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
+            {"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
+            {"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
+            {"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
+            {"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
+            {"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
+            {"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
+            {"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
+            {"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 169, "y": 52, "flags": 1},
+            {"matrix": [4, 17], "x": 193, "y": 52, "flags": 4},
+            {"matrix": [4, 18], "x": 203, "y": 52, "flags": 4},
+            {"matrix": [4, 14], "x": 214, "y": 52, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 66, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 105, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 118, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 145, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 159, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 169, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 17], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 18], "x": 214, "y": 64, "flags": 4},
+            {"matrix": [4, 16], "x": 224, "y": 58, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_110": {
             "layout": [

+ 0 - 30
keyboards/keychron/v7/ansi/ansi.c

@@ -104,34 +104,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA15,   CB4_CA15,   CB5_CA15},
     {1, CB6_CA16,   CB4_CA16,   CB5_CA16},
 };
-
-#define __ NO_LED
-
-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, 52, 53, 54, 55, 56, 57, __, 58, 59, 60 },
-        { 61, 62, 63, __, __, __, 64, __, __, 65, 66, 67, 68, 69, 70, 71 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {14,0},  {28,0},  {42,0},  {56,0},  {70,0},  {84,0},  {98,0},   {112,0},  {126,0},  {140,0},  {154,0},  {168,0},  {189,0},            {210,0},  {224,0},
-        {4,16}, {21,16}, {35,16}, {49,16}, {63,16}, {77,16}, {91,16}, {105,16}, {119,16}, {133,16}, {147,16}, {161,16}, {175,16}, {192,16},           {210,16}, {224,16},
-        {5,32}, {25,32}, {38,32}, {52,32}, {66,32}, {80,32}, {94,32}, {108,32}, {122,32}, {136,32}, {150,32}, {164,32},           {187,32},           {210,32}, {224,32},
-        {9,48},          {32,48}, {45,48}, {59,48}, {73,48}, {87,48}, {101,48}, {115,48}, {129,48}, {143,48}, {157,48},           {184,48},           {210,48}, {224,48},
-        {2,64}, {19,64}, {37,64},                            {89,64},                               {140,64}, {154,64}, {168,64}, {182,64}, {196,64}, {210,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        1, 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,
-        8, 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,    1,    1, 1,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 76 - 0
keyboards/keychron/v7/ansi/keyboard.json

@@ -23,6 +23,82 @@
     "diode_direction": "ROW2COL",
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 28, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 56, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 70, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 84, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 98, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 126, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 140, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 154, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 168, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 189, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 210, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [1, 1], "x": 21, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 35, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 49, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 63, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 77, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 91, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 105, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 119, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 133, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 147, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 161, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 175, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [1, 14], "x": 210, "y": 16, "flags": 1},
+            {"matrix": [1, 15], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 5, "y": 32, "flags": 8},
+            {"matrix": [2, 1], "x": 25, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 38, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 66, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 94, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 108, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 122, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 136, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 150, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 164, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 187, "y": 32, "flags": 1},
+            {"matrix": [2, 14], "x": 210, "y": 32, "flags": 1},
+            {"matrix": [2, 15], "x": 224, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 9, "y": 48, "flags": 1},
+            {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 45, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 59, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 73, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 87, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 115, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 129, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 143, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 157, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 184, "y": 48, "flags": 1},
+            {"matrix": [3, 14], "x": 210, "y": 48, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 19, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 37, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 89, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 140, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 154, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 168, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 182, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 196, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 210, "y": 64, "flags": 1},
+            {"matrix": [4, 15], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_72": {
             "layout": [

+ 0 - 30
keyboards/keychron/v7/iso/iso.c

@@ -105,34 +105,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA15,   CB4_CA15,   CB5_CA15},
     {1, CB6_CA16,   CB4_CA16,   CB5_CA16},
 };
-
-#define __ NO_LED
-
-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, 44, 29, 30 },
-        { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, __, 43, 45, 46 },
-        { 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, __, 59, 60, 61 },
-        { 62, 63, 64, __, __, __, 65, __, __, 66, 67, 68, 69, 70, 71, 72 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {14,0},  {28,0},  {42,0},  {56,0},  {70,0},  {84,0},  {98,0},   {112,0},  {126,0},  {140,0},  {154,0},  {168,0},  {189,0},            {210,0},  {224,0},
-        {4,16}, {21,16}, {35,16}, {49,16}, {63,16}, {77,16}, {91,16}, {105,16}, {119,16}, {133,16}, {147,16}, {161,16}, {175,16},                     {210,16}, {224,16},
-        {5,32}, {25,32}, {38,32}, {52,32}, {66,32}, {80,32}, {94,32}, {108,32}, {122,32}, {136,32}, {150,32}, {164,32}, {178,32}, {197,27},           {210,32}, {224,32},
-        {2,48}, {18,48}, {32,48}, {45,48}, {59,48}, {73,48}, {87,48}, {101,48}, {115,48}, {129,48}, {143,48}, {157,48},           {184,48},           {210,48}, {224,48},
-        {2,64}, {19,64}, {37,64},                            {89,64},                               {140,64}, {154,64}, {168,64}, {182,64}, {196,64}, {210,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        1, 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,       1, 1,
-        8, 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, 1,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 77 - 0
keyboards/keychron/v7/iso/keyboard.json

@@ -23,6 +23,83 @@
     "diode_direction": "ROW2COL",
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 28, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 56, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 70, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 84, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 98, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 126, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 140, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 154, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 168, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 189, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 210, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+            {"matrix": [1, 1], "x": 21, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 35, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 49, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 63, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 77, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 91, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 105, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 119, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 133, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 147, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 161, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 175, "y": 16, "flags": 4},
+            {"matrix": [1, 14], "x": 210, "y": 16, "flags": 1},
+            {"matrix": [1, 15], "x": 224, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 5, "y": 32, "flags": 8},
+            {"matrix": [2, 1], "x": 25, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 38, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 66, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 94, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 108, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 122, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 136, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 150, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 164, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 178, "y": 32, "flags": 4},
+            {"matrix": [1, 13], "x": 197, "y": 27, "flags": 1},
+            {"matrix": [2, 14], "x": 210, "y": 32, "flags": 1},
+            {"matrix": [2, 15], "x": 224, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 2, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 18, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 45, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 59, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 73, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 87, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 115, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 129, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 143, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 157, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 184, "y": 48, "flags": 1},
+            {"matrix": [3, 14], "x": 210, "y": 48, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 48, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 19, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 37, "y": 64, "flags": 1},
+            {"matrix": [4, 6], "x": 89, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 140, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 154, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 168, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 182, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 196, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 210, "y": 64, "flags": 1},
+            {"matrix": [4, 15], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_73": {
             "layout": [

+ 0 - 30
keyboards/keychron/v8/ansi/ansi.c

@@ -102,34 +102,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA2,    CB4_CA2,    CB5_CA2},
     {1, CB6_CA1,    CB4_CA1,    CB5_CA1}
 };
-
-#define __ NO_LED
-
-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, 52, 53, 54, 55, 56, 57 },
-        { 58, 59, 60, 61, __, __, 62, 63, 64, 65, __, __, 66, 67, 68 },
-    },
-    {
-        // LED Index to Physical Position
-        {7,1},  {20,1},  {33,0},  {48,3},  {61,6},  {74,8 }, {87,11},  {106,11}, {119,8},  {132,6},  {145,3},  {160,0},  {173,1},  {193,1},            {220,0},
-        {7,14}, {24,14}, {39,14}, {52,17}, {65,20}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {170,14}, {183,14}, {200,14},           {222,16},
-        {6,27}, {24,27}, {39,28}, {52,30}, {65,33}, {78,36},           {109,37}, {122,34}, {135,32}, {148,29}, {162,27}, {176,27}, {197,27},           {224,29},
-        {7,40},          {28,40}, {43,42}, {56,44}, {69,47}, {82,50},  {102,52}, {115,49}, {128,46}, {141,44}, {154,41}, {169,40}, {187,40}, {209,43},
-        {0,53}, {17,53}, {42,55},          {65,60},          {86,64},  {107,64},           {131,59},           {156,54},           {196,56}, {209,56}, {222,56},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        8, 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,    4,    1,    1, 4,    1,    1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 73 - 0
keyboards/keychron/v8/ansi/keyboard.json

@@ -23,6 +23,79 @@
     "diode_direction": "ROW2COL",
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+            {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+            {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+            {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+            {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+            {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+            {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+            {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+            {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+            {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+            {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+            {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+            {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+            {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+            {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+            {"matrix": [1, 4], "x": 65, "y": 20, "flags": 4},
+            {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+            {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+            {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+            {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+            {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+            {"matrix": [1, 11], "x": 170, "y": 14, "flags": 4},
+            {"matrix": [1, 12], "x": 183, "y": 14, "flags": 4},
+            {"matrix": [1, 13], "x": 200, "y": 14, "flags": 4},
+            {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+            {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 39, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+            {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+            {"matrix": [2, 5], "x": 78, "y": 36, "flags": 4},
+            {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+            {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+            {"matrix": [2, 9], "x": 135, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+            {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+            {"matrix": [2, 13], "x": 197, "y": 27, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+            {"matrix": [3, 0], "x": 7, "y": 40, "flags": 1},
+            {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 43, "y": 42, "flags": 4},
+            {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+            {"matrix": [3, 6], "x": 82, "y": 50, "flags": 4},
+            {"matrix": [3, 7], "x": 102, "y": 52, "flags": 4},
+            {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+            {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+            {"matrix": [3, 10], "x": 141, "y": 44, "flags": 4},
+            {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+            {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+            {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 53, "flags": 1},
+            {"matrix": [4, 1], "x": 17, "y": 53, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 55, "flags": 1},
+            {"matrix": [4, 3], "x": 65, "y": 60, "flags": 4},
+            {"matrix": [4, 6], "x": 86, "y": 64, "flags": 1},
+            {"matrix": [4, 7], "x": 107, "y": 64, "flags": 1},
+            {"matrix": [4, 8], "x": 131, "y": 59, "flags": 4},
+            {"matrix": [4, 9], "x": 156, "y": 54, "flags": 1},
+            {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+            {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+            {"matrix": [4, 14], "x": 222, "y": 56, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_69": {
             "layout": [

+ 0 - 30
keyboards/keychron/v8/ansi_encoder/ansi_encoder.c

@@ -102,34 +102,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA2,    CB4_CA2,    CB5_CA2},
     {1, CB6_CA1,    CB4_CA1,    CB5_CA1}
 };
-
-#define __ NO_LED
-
-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, 52, 53, 54, 55, 56, 57 },
-        { 58, 59, 60, 61, __, __, 62, 63, 64, 65, __, __, 66, 67, 68 },
-    },
-    {
-        // LED Index to Physical Position
-        {7,1},  {20,1},  {33,0},  {48,3},  {61,6},  {74,8 }, {87,11},  {106,11}, {119,8},  {132,6},  {145,3},  {160,0},  {173,1},  {193,1},            {220,0},
-        {7,14}, {24,14}, {39,14}, {52,17}, {65,20}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {170,14}, {183,14}, {200,14},           {222,16},
-        {6,27}, {24,27}, {39,28}, {52,30}, {65,33}, {78,36},           {109,37}, {122,34}, {135,32}, {148,29}, {162,27}, {176,27}, {197,27},           {224,29},
-        {7,40},          {28,40}, {43,42}, {56,44}, {69,47}, {82,50},  {102,52}, {115,49}, {128,46}, {141,44}, {154,41}, {169,40}, {187,40}, {209,43},
-        {0,53}, {17,53}, {42,55},          {65,60},          {86,64},  {107,64},           {131,59},           {156,54},           {196,56}, {209,56}, {222,56},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        8, 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,    4,    1,    1, 4,    1,    1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 73 - 0
keyboards/keychron/v8/ansi_encoder/keyboard.json

@@ -29,6 +29,79 @@
     },
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+            {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+            {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+            {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+            {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+            {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+            {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+            {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+            {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+            {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+            {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+            {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+            {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+            {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+            {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+            {"matrix": [1, 4], "x": 65, "y": 20, "flags": 4},
+            {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+            {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+            {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+            {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+            {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+            {"matrix": [1, 11], "x": 170, "y": 14, "flags": 4},
+            {"matrix": [1, 12], "x": 183, "y": 14, "flags": 4},
+            {"matrix": [1, 13], "x": 200, "y": 14, "flags": 4},
+            {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+            {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 39, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+            {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+            {"matrix": [2, 5], "x": 78, "y": 36, "flags": 4},
+            {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+            {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+            {"matrix": [2, 9], "x": 135, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+            {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+            {"matrix": [2, 13], "x": 197, "y": 27, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+            {"matrix": [3, 0], "x": 7, "y": 40, "flags": 1},
+            {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 43, "y": 42, "flags": 4},
+            {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+            {"matrix": [3, 6], "x": 82, "y": 50, "flags": 4},
+            {"matrix": [3, 7], "x": 102, "y": 52, "flags": 4},
+            {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+            {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+            {"matrix": [3, 10], "x": 141, "y": 44, "flags": 4},
+            {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+            {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+            {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 53, "flags": 1},
+            {"matrix": [4, 1], "x": 17, "y": 53, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 55, "flags": 1},
+            {"matrix": [4, 3], "x": 65, "y": 60, "flags": 4},
+            {"matrix": [4, 6], "x": 86, "y": 64, "flags": 1},
+            {"matrix": [4, 7], "x": 107, "y": 64, "flags": 1},
+            {"matrix": [4, 8], "x": 131, "y": 59, "flags": 4},
+            {"matrix": [4, 9], "x": 156, "y": 54, "flags": 1},
+            {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+            {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+            {"matrix": [4, 14], "x": 222, "y": 56, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_69": {
             "layout": [

+ 0 - 30
keyboards/keychron/v8/iso/iso.c

@@ -102,34 +102,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA2,    CB4_CA2,    CB5_CA2},
     {1, CB6_CA1,    CB4_CA1,    CB5_CA1}
 };
-
-#define __ NO_LED
-
-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, 42, 28 },
-        { 29, 30, 31, 32, 33, 34, __, 35, 36, 37, 38, 39, 40, 41, 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, 69 },
-    },
-    {
-        // LED Index to Physical Position
-        {7,1},  {20,1},  {33,0},  {48,3},  {61,6},  {74,8},  {87,11},  {106,11}, {119,8},  {132,6},  {145,3},  {160,0},  {173,1},  {193,1},            {220,0},
-        {7,14}, {24,14}, {39,14}, {52,17}, {65,19}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {172,14}, {186,14},                     {222,16},
-        {6,27}, {24,27}, {39,27}, {52,30}, {65,33}, {78,35}, {109,37}, {122,34}, {135,31}, {148,29}, {162,27}, {176,27}, {189,27}, {207,22},           {224,29},
-        {0,40}, {15,40}, {28,40}, {43,41}, {56,44}, {69,47}, {82,49},  {102,51}, {115,49}, {128,46}, {141,43}, {154,41}, {169,40}, {187,40}, {209,43},
-        {0,52}, {17,52}, {42,54},          {65,59},          {86,63},  {104,64},           {129,59},           {153,54},           {196,56}, {209,56}, {222,59},
-    },
-    {
-        // RGB LED Index to Flag
-        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,       1,
-        8, 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, 1, 1,
-        1, 1, 1,    1,    1,    1, 1,    1,    1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 74 - 0
keyboards/keychron/v8/iso/keyboard.json

@@ -23,6 +23,80 @@
     "diode_direction": "ROW2COL",
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+            {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+            {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+            {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+            {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+            {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+            {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+            {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+            {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+            {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+            {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+            {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+            {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+            {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+            {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+            {"matrix": [1, 4], "x": 65, "y": 19, "flags": 4},
+            {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+            {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+            {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+            {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+            {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+            {"matrix": [1, 11], "x": 172, "y": 14, "flags": 4},
+            {"matrix": [1, 12], "x": 186, "y": 14, "flags": 4},
+            {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+            {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 39, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+            {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+            {"matrix": [2, 5], "x": 78, "y": 35, "flags": 4},
+            {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+            {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+            {"matrix": [2, 9], "x": 135, "y": 31, "flags": 4},
+            {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+            {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+            {"matrix": [2, 13], "x": 189, "y": 27, "flags": 4},
+            {"matrix": [1, 13], "x": 207, "y": 22, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+            {"matrix": [3, 0], "x": 0, "y": 40, "flags": 1},
+            {"matrix": [3, 1], "x": 15, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 43, "y": 41, "flags": 4},
+            {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+            {"matrix": [3, 6], "x": 82, "y": 49, "flags": 4},
+            {"matrix": [3, 7], "x": 102, "y": 51, "flags": 4},
+            {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+            {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+            {"matrix": [3, 10], "x": 141, "y": 43, "flags": 4},
+            {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+            {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+            {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 52, "flags": 1},
+            {"matrix": [4, 1], "x": 17, "y": 52, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 54, "flags": 1},
+            {"matrix": [4, 3], "x": 65, "y": 59, "flags": 1},
+            {"matrix": [4, 6], "x": 86, "y": 63, "flags": 1},
+            {"matrix": [4, 7], "x": 104, "y": 64, "flags": 1},
+            {"matrix": [4, 8], "x": 129, "y": 59, "flags": 1},
+            {"matrix": [4, 9], "x": 153, "y": 54, "flags": 1},
+            {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+            {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+            {"matrix": [4, 14], "x": 222, "y": 59, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_70": {
             "layout": [

+ 0 - 30
keyboards/keychron/v8/iso_encoder/iso_encoder.c

@@ -102,34 +102,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA2,    CB4_CA2,    CB5_CA2},
     {1, CB6_CA1,    CB4_CA1,    CB5_CA1}
 };
-
-#define __ NO_LED
-
-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, 42, 28 },
-        { 29, 30, 31, 32, 33, 34, __, 35, 36, 37, 38, 39, 40, 41, 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, 69 },
-    },
-    {
-        // LED Index to Physical Position
-        {7,1},  {20,1},  {33,0},  {48,3},  {61,6},  {74,8},  {87,11},  {106,11}, {119,8},  {132,6},  {145,3},  {160,0},  {173,1},  {193,1},            {220,0},
-        {7,14}, {24,14}, {39,14}, {52,17}, {65,19}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {172,14}, {186,14},                     {222,16},
-        {6,27}, {24,27}, {39,27}, {52,30}, {65,33}, {78,35}, {109,37}, {122,34}, {135,31}, {148,29}, {162,27}, {176,27}, {189,27}, {207,22},           {224,29},
-        {0,40}, {15,40}, {28,40}, {43,41}, {56,44}, {69,47}, {82,49},  {102,51}, {115,49}, {128,46}, {141,43}, {154,41}, {169,40}, {187,40}, {209,43},
-        {0,52}, {17,52}, {42,54},          {65,59},          {86,63},  {104,64},           {129,59},           {153,54},           {196,56}, {209,56}, {222,59},
-    },
-    {
-        // RGB LED Index to Flag
-        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,       1,
-        8, 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, 1, 1,
-        1, 1, 1,    1,    1,    1, 1,    1,    1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 74 - 0
keyboards/keychron/v8/iso_encoder/keyboard.json

@@ -29,6 +29,80 @@
     },
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+            {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+            {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+            {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+            {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+            {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+            {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+            {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+            {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+            {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+            {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+            {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+            {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+            {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+            {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+            {"matrix": [1, 4], "x": 65, "y": 19, "flags": 4},
+            {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+            {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+            {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+            {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+            {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+            {"matrix": [1, 11], "x": 172, "y": 14, "flags": 4},
+            {"matrix": [1, 12], "x": 186, "y": 14, "flags": 4},
+            {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+            {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+            {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+            {"matrix": [2, 2], "x": 39, "y": 27, "flags": 4},
+            {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+            {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+            {"matrix": [2, 5], "x": 78, "y": 35, "flags": 4},
+            {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+            {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+            {"matrix": [2, 9], "x": 135, "y": 31, "flags": 4},
+            {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+            {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+            {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+            {"matrix": [2, 13], "x": 189, "y": 27, "flags": 4},
+            {"matrix": [1, 13], "x": 207, "y": 22, "flags": 1},
+            {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+            {"matrix": [3, 0], "x": 0, "y": 40, "flags": 1},
+            {"matrix": [3, 1], "x": 15, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 43, "y": 41, "flags": 4},
+            {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+            {"matrix": [3, 6], "x": 82, "y": 49, "flags": 4},
+            {"matrix": [3, 7], "x": 102, "y": 51, "flags": 4},
+            {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+            {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+            {"matrix": [3, 10], "x": 141, "y": 43, "flags": 4},
+            {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+            {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+            {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+            {"matrix": [4, 0], "x": 0, "y": 52, "flags": 1},
+            {"matrix": [4, 1], "x": 17, "y": 52, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 54, "flags": 1},
+            {"matrix": [4, 3], "x": 65, "y": 59, "flags": 1},
+            {"matrix": [4, 6], "x": 86, "y": 63, "flags": 1},
+            {"matrix": [4, 7], "x": 104, "y": 64, "flags": 1},
+            {"matrix": [4, 8], "x": 129, "y": 59, "flags": 1},
+            {"matrix": [4, 9], "x": 153, "y": 54, "flags": 1},
+            {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+            {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+            {"matrix": [4, 14], "x": 222, "y": 59, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_70": {
             "layout": [