Browse Source

Migrate `g_led_config` to DD (K5) (#25606)

Jack Sangdahl 11 months ago
parent
commit
ceefde5ec8

+ 0 - 33
keyboards/keychron/v3/ansi/ansi.c

@@ -118,37 +118,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA16,   CB4_CA16,   CB5_CA16},
     {1, CB3_CA15,   CB1_CA15,   CB2_CA15},
 };
-
-#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 },
-        { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
-        { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
-        { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 32 },
-        { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 86, 75 },
-        { 76, 77, 78, __, __, __, 79, __, __, __, 80, 81, 82, 83, 84, 85 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {26,0},  {39,0},  {52,0},  {65,0},  {85,0},  {98,0},   {111,0},  {124,0},  {143,0},  {156,0},  {169,0},  {182,0},  {198,0},  {211,0},  {224,0},
-        {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15},  {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
-        {3,28}, {20,28}, {33,28}, {46,28}, {59,28}, {72,28}, {85,28}, {98,28},  {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {179,28}, {198,28}, {211,28}, {224,28},
-        {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40},           {174,40},
-        {8,52},          {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52},  {107,52}, {120,52}, {133,52}, {146,52},           {171,52},           {211,52},
-        {2,64}, {18,64}, {34,64},                            {83,64},                               {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
-        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,    1,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 91 - 0
keyboards/keychron/v3/ansi/keyboard.json

@@ -18,6 +18,97 @@
     },
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 26, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 39, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 52, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 65, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 85, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 98, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 111, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 124, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 143, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 156, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "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": [3, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 176, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
+            {"matrix": [2, 1], "x": 20, "y": 28, "flags": 4},
+            {"matrix": [2, 2], "x": 33, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 46, "y": 28, "flags": 4},
+            {"matrix": [2, 4], "x": 59, "y": 28, "flags": 4},
+            {"matrix": [2, 5], "x": 72, "y": 28, "flags": 4},
+            {"matrix": [2, 6], "x": 85, "y": 28, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [2, 8], "x": 111, "y": 28, "flags": 4},
+            {"matrix": [2, 9], "x": 124, "y": 28, "flags": 4},
+            {"matrix": [2, 10], "x": 137, "y": 28, "flags": 4},
+            {"matrix": [2, 11], "x": 150, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 163, "y": 28, "flags": 4},
+            {"matrix": [2, 13], "x": 179, "y": 28, "flags": 4},
+            {"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
+            {"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 174, "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, 13], "x": 171, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_tkl_ansi": {
             "layout": [

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

@@ -119,37 +119,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA16,   CB4_CA16,   CB5_CA16},
     {1, CB3_CA15,   CB1_CA15,   CB2_CA15},
 };
-
-#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 },
-        { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
-        { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
-        { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 32 },
-        { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 86, 75 },
-        { 76, 77, 78, __, __, __, 79, __, __, __, 80, 81, 82, 83, 84, 85 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {16,0},  {29,0},  {42,0},  {55,0},  {71,0},  {84,0},  {97,0},   {110,0},  {126,0},  {139,0},  {152,0},  {165,0},            {198,0},  {211,0},  {224,0},
-        {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15},  {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
-        {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28},  {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {179,28}, {198,28}, {211,28}, {224,28},
-        {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40},           {174,40},
-        {8,52},          {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52},  {107,52}, {120,52}, {133,52}, {146,52},           {171,52},           {211,52},
-        {2,64}, {18,64}, {34,64},                            {83,64},                               {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
-        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,    1,
-        1, 1, 1,          4,          1, 1, 1, 1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 91 - 0
keyboards/keychron/v3/ansi_encoder/keyboard.json

@@ -24,6 +24,97 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 29, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 55, "y": 0, "flags": 1},
+            {"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": 126, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 139, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 152, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 165, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 198, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 211, "y": 0, "flags": 1},
+            {"matrix": [3, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 176, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
+            {"matrix": [2, 1], "x": 19, "y": 28, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 45, "y": 28, "flags": 4},
+            {"matrix": [2, 4], "x": 59, "y": 28, "flags": 4},
+            {"matrix": [2, 5], "x": 72, "y": 28, "flags": 4},
+            {"matrix": [2, 6], "x": 85, "y": 28, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [2, 8], "x": 111, "y": 28, "flags": 4},
+            {"matrix": [2, 9], "x": 124, "y": 28, "flags": 4},
+            {"matrix": [2, 10], "x": 137, "y": 28, "flags": 4},
+            {"matrix": [2, 11], "x": 150, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 163, "y": 28, "flags": 4},
+            {"matrix": [2, 13], "x": 179, "y": 28, "flags": 4},
+            {"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
+            {"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 174, "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, 13], "x": 171, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_tkl_f13_ansi": {
             "layout": [

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

@@ -119,37 +119,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA16,   CB4_CA16,   CB5_CA16},
     {1, CB3_CA15,   CB1_CA15,   CB2_CA15},
 };
-
-#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 },
-        { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
-        { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 62, 46, 47 },
-        { 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 48, 61, 15, 32 },
-        { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, __, 75, 87, 76 },
-        { 77, 78, 79, __, __, __, 80, __, __, __, 81, 82, 83, 84, 85, 86 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {26,0},  {39,0},  {52,0},  {65,0},  {84,0},  {97,0},   {111,0},  {124,0},  {143,0},  {156,0},  {169,0},  {182,0},  {198,0},  {211,0},  {224,0},
-        {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15},  {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
-        {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28},  {111,28}, {124,28}, {137,28}, {150,28}, {163,28},           {198,28}, {211,28}, {224,28},
-        {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
-        {2,52}, {16,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52},  {107,52}, {120,52}, {133,52}, {146,52},           {171,52},           {211,52},
-        {2,64}, {18,64}, {34,64},                            {83,64},                               {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1, 1,
-        8, 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,          1, 1, 1, 1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 92 - 0
keyboards/keychron/v3/iso/keyboard.json

@@ -19,6 +19,98 @@
     },
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 26, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 39, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 52, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 65, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 84, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 97, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 111, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 124, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 143, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 156, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "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": [3, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 176, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
+            {"matrix": [2, 1], "x": 19, "y": 28, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 45, "y": 28, "flags": 4},
+            {"matrix": [2, 4], "x": 59, "y": 28, "flags": 4},
+            {"matrix": [2, 5], "x": 72, "y": 28, "flags": 4},
+            {"matrix": [2, 6], "x": 85, "y": 28, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [2, 8], "x": 111, "y": 28, "flags": 4},
+            {"matrix": [2, 9], "x": 124, "y": 28, "flags": 4},
+            {"matrix": [2, 10], "x": 137, "y": 28, "flags": 4},
+            {"matrix": [2, 11], "x": 150, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 163, "y": 28, "flags": 4},
+            {"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
+            {"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 166, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 183, "y": 36, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 52, "flags": 1},
+            {"matrix": [4, 1], "x": 16, "y": 52, "flags": 4},
+            {"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, 13], "x": 171, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_tkl_iso": {
             "layout": [

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

@@ -119,37 +119,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA16,   CB4_CA16,   CB5_CA16},
     {1, CB3_CA15,   CB1_CA15,   CB2_CA15},
 };
-
-#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 },
-        { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
-        { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 62, 46, 47 },
-        { 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 48, 61, 15, 32 },
-        { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, __, 75, 87, 76 },
-        { 77, 78, 79, __, __, __, 80, __, __, __, 81, 82, 83, 84, 85, 86 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {16,0},  {29,0},  {42,0},  {55,0},  {71,0},  {84,0},  {97,0},   {110,0},  {126,0},  {139,0},  {152,0},  {165,0},            {198,0},  {211,0},  {224,0},
-        {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15},  {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
-        {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28},  {111,28}, {124,28}, {137,28}, {150,28}, {163,28},           {198,28}, {211,28}, {224,28},
-        {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
-        {2,52}, {16,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52},  {107,52}, {120,52}, {133,52}, {146,52},           {171,52},           {211,52},
-        {2,64}, {18,64}, {34,64},                            {83,64},                               {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1, 1,
-        8, 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,          1, 1, 1, 1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 92 - 0
keyboards/keychron/v3/iso_encoder/keyboard.json

@@ -24,6 +24,98 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 29, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 55, "y": 0, "flags": 1},
+            {"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": 126, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 139, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 152, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 165, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 198, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 211, "y": 0, "flags": 1},
+            {"matrix": [3, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 176, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
+            {"matrix": [2, 1], "x": 19, "y": 28, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 45, "y": 28, "flags": 4},
+            {"matrix": [2, 4], "x": 59, "y": 28, "flags": 4},
+            {"matrix": [2, 5], "x": 72, "y": 28, "flags": 4},
+            {"matrix": [2, 6], "x": 85, "y": 28, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [2, 8], "x": 111, "y": 28, "flags": 4},
+            {"matrix": [2, 9], "x": 124, "y": 28, "flags": 4},
+            {"matrix": [2, 10], "x": 137, "y": 28, "flags": 4},
+            {"matrix": [2, 11], "x": 150, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 163, "y": 28, "flags": 4},
+            {"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
+            {"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 166, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 183, "y": 36, "flags": 1},
+            {"matrix": [4, 0], "x": 2, "y": 52, "flags": 1},
+            {"matrix": [4, 1], "x": 16, "y": 52, "flags": 4},
+            {"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, 13], "x": 171, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 131, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_tkl_f13_iso": {
             "layout": [

+ 0 - 33
keyboards/keychron/v3/jis/jis.c

@@ -122,37 +122,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA16, CB4_CA16, CB5_CA16}, // Down
     {1, CB3_CA15, CB1_CA15, CB2_CA15}, // Right
 };
-
-#    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, 30, 13, 14 },
-        { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32 },
-        { 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 63, 47, 48 },
-        { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 33 },
-        { 64, __, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 90, 77 },
-        { 78, 79, 80, 81, __, __, 82, __, __, 83, 84, 85, 86, 87, 88, 89 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {26,0},  {39,0},  {52,0},  {65,0},  {84,0},  {97,0},   {111,0},  {124,0},  {143,0},  {156,0},  {169,0},  {182,0},            {198,0},  {211,0},  {224,0},
-        {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15},  {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {182,15}, {169,15}, {198,15}, {211,15}, {224,15},
-        {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28},  {111,28}, {124,28}, {137,28}, {150,28}, {163,28},                     {198,28}, {211,28}, {224,28},
-        {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
-        {8,52},          {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52},  {107,52}, {120,52}, {133,52}, {146,52}, {159,52}, {177,52},                     {211,52},
-        {2,64}, {16,64}, {31,64}, {45,64},                   {81,64},                     {119,64}, {135,64}, {151,64}, {166,64}, {180,64},           {198,64}, {211,64}, {224,64}
-    },
-    {
-        // RGB LED Index to Flag
-        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, 4, 1, 1, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,       1, 1, 1,
-        8, 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, 1,       4,       1, 1, 1, 1, 1,    1, 1, 1,
-    }
-};
-
 #endif // GB_MATRIX_ENABLE

+ 95 - 0
keyboards/keychron/v3/jis/keyboard.json

@@ -18,6 +18,101 @@
     },
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 26, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 39, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 52, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 65, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 84, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 97, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 111, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 124, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 143, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 156, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "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": [3, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 182, "y": 15, "flags": 4},
+            {"matrix": [0, 13], "x": 169, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
+            {"matrix": [2, 1], "x": 19, "y": 28, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 45, "y": 28, "flags": 4},
+            {"matrix": [2, 4], "x": 59, "y": 28, "flags": 4},
+            {"matrix": [2, 5], "x": 72, "y": 28, "flags": 4},
+            {"matrix": [2, 6], "x": 85, "y": 28, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [2, 8], "x": 111, "y": 28, "flags": 4},
+            {"matrix": [2, 9], "x": 124, "y": 28, "flags": 4},
+            {"matrix": [2, 10], "x": 137, "y": 28, "flags": 4},
+            {"matrix": [2, 11], "x": 150, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 163, "y": 28, "flags": 4},
+            {"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
+            {"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 166, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 183, "y": 36, "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": 159, "y": 52, "flags": 4},
+            {"matrix": [4, 13], "x": 177, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 16, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 31, "y": 64, "flags": 1},
+            {"matrix": [5, 3], "x": 45, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 81, "y": 64, "flags": 4},
+            {"matrix": [5, 9], "x": 119, "y": 64, "flags": 1},
+            {"matrix": [5, 10], "x": 135, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 151, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 166, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_jis_91": {
             "layout": [

+ 0 - 33
keyboards/keychron/v3/jis_encoder/jis_encoder.c

@@ -123,37 +123,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB6_CA16, CB4_CA16, CB5_CA16}, // Down
     {1, CB3_CA15, CB1_CA15, CB2_CA15}, // Right
 };
-
-#    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 },
-        { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33 },
-        { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 64, 48, 49 },
-        { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 50, 63, 16, 34 },
-        { 65, __, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 91, 78 },
-        { 79, 80, 81, 82, __, 31, 83, __, __, 84, 85, 86, 87, 88, 89, 90 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {16,0},  {29,0},  {42,0},  {55,0},  {71,0},  {84,0},   {97,0},   {110,0},  {126,0},  {139,0},  {152,0},  {165,0},  {182,0},  {198,0},  {211,0},  {224,0},
-        {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15},  {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {169,15}, {182,15}, {198,15}, {211,15}, {224,15},
-        {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28},  {111,28}, {124,28}, {137,28}, {150,28}, {163,28},                     {198,28}, {211,28}, {224,28},
-        {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
-        {8,52},          {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52},  {107,52}, {120,52}, {133,52}, {146,52}, {159,52}, {177,52},                     {211,52},
-        {2,64}, {16,64}, {31,64}, {45,64},                   {81,64},                     {119,64}, {135,64}, {151,64}, {166,64}, {180,64},           {198,64}, {211,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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, 4, 1, 1, 1, 1,
-        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,       1, 1, 1,
-        8, 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, 1,       4,       1, 1, 1, 1, 1,    1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 96 - 0
keyboards/keychron/v3/jis_encoder/keyboard.json

@@ -24,6 +24,102 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 29, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 55, "y": 0, "flags": 1},
+            {"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": 126, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 139, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 152, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 165, "y": 0, "flags": 1},
+            {"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": [3, 14], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 169, "y": 15, "flags": 4},
+            {"matrix": [5, 5], "x": 182, "y": 15, "flags": 1},
+            {"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
+            {"matrix": [3, 15], "x": 224, "y": 15, "flags": 1},
+            {"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
+            {"matrix": [2, 1], "x": 19, "y": 28, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 28, "flags": 4},
+            {"matrix": [2, 3], "x": 45, "y": 28, "flags": 4},
+            {"matrix": [2, 4], "x": 59, "y": 28, "flags": 4},
+            {"matrix": [2, 5], "x": 72, "y": 28, "flags": 4},
+            {"matrix": [2, 6], "x": 85, "y": 28, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 28, "flags": 4},
+            {"matrix": [2, 8], "x": 111, "y": 28, "flags": 4},
+            {"matrix": [2, 9], "x": 124, "y": 28, "flags": 4},
+            {"matrix": [2, 10], "x": 137, "y": 28, "flags": 4},
+            {"matrix": [2, 11], "x": 150, "y": 28, "flags": 4},
+            {"matrix": [2, 12], "x": 163, "y": 28, "flags": 4},
+            {"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
+            {"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 28, "flags": 1},
+            {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+            {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
+            {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
+            {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
+            {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
+            {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
+            {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
+            {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
+            {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4},
+            {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4},
+            {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4},
+            {"matrix": [3, 13], "x": 166, "y": 40, "flags": 4},
+            {"matrix": [2, 13], "x": 183, "y": 36, "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": 159, "y": 52, "flags": 4},
+            {"matrix": [4, 13], "x": 177, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
+            {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [5, 1], "x": 16, "y": 64, "flags": 1},
+            {"matrix": [5, 2], "x": 31, "y": 64, "flags": 1},
+            {"matrix": [5, 3], "x": 45, "y": 64, "flags": 1},
+            {"matrix": [5, 6], "x": 81, "y": 64, "flags": 4},
+            {"matrix": [5, 9], "x": 119, "y": 64, "flags": 1},
+            {"matrix": [5, 10], "x": 135, "y": 64, "flags": 1},
+            {"matrix": [5, 11], "x": 151, "y": 64, "flags": 1},
+            {"matrix": [5, 12], "x": 166, "y": 64, "flags": 1},
+            {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
+            {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_jis_92": {
             "layout": [

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

@@ -93,34 +93,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {0, CB3_CA15,   CB1_CA15,   CB2_CA15},
     {0, CB3_CA16,   CB1_CA16,   CB2_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 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},   {16,0},  {32,0},  {48,0},  {64,0},  {81,0},  {97,0},   {113,0},  {129,0},  {145,0},  {161,0},  {177,0},  {193,0},  {218,0},
-        {4,16},  {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16}, {222,16},
-        {6,32},  {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32},           {216,32},
-        {10,48},          {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48},           {212,48},
-        {2,64},  {22,64}, {42,64},                            {103,64},                               {164,64}, {184,64}, {204,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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,
-        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,
-        1, 1, 1,          4,          1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 65 - 0
keyboards/keychron/v4/ansi/keyboard.json

@@ -23,6 +23,71 @@
     "diode_direction": "ROW2COL",
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "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": 81, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 113, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 129, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 145, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 161, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 177, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 193, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 218, "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": 73, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 89, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 105, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 121, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 137, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 153, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 169, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 185, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 202, "y": 16, "flags": 4},
+            {"matrix": [1, 13], "x": 222, "y": 16, "flags": 1},
+            {"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": 77, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 109, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 125, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 141, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 157, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 173, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 189, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 216, "y": 32, "flags": 1},
+            {"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
+            {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 85, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 101, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 117, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 133, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 149, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 165, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 181, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 212, "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, 6], "x": 103, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 184, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 204, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layout_aliases": {
         "LAYOUT_ansi_61": "LAYOUT_60_ansi"
     },

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

@@ -94,34 +94,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {0, CB3_CA15,   CB1_CA15,   CB2_CA15},
     {0, CB3_CA16,   CB1_CA16,   CB2_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, 40 },
-        { 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, __, 39 },
-        { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, __, 53 },
-        { 54, 55, 56, __, __, __, 57, __, __, __, 58, 59, 60, 61 },
-    },
-    {
-        // LED Index to Physical Position
-        {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {81, 0}, { 97, 0}, {113, 0}, {129, 0}, {145, 0}, {161, 0}, {177, 0}, {193, 0}, {218, 0},
-        {4,16}, {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16},
-        {6,32}, {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32}, {206,32}, {224,24},
-        {2,48}, {20,48}, {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48},           {212,48},
-        {2,64}, {22,64}, {42,64},                            {103,64},                               {164,64}, {184,64}, {204,64}, {224,64},
-    },
-    {
-        // RGB LED Index to Flag
-        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, 1,
-        8, 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,          4,          1, 1, 1, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 66 - 0
keyboards/keychron/v4/iso/keyboard.json

@@ -23,6 +23,72 @@
     "diode_direction": "ROW2COL",
     "processor": "STM32L432",
     "bootloader": "stm32-dfu",
+    "rgb_matrix": {
+        "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": 81, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 113, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 129, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 145, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 161, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 177, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 193, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 218, "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": 73, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 89, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 105, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 121, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 137, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 153, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 169, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 185, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 202, "y": 16, "flags": 1},
+            {"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": 77, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 109, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 125, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 141, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 157, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 173, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 189, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 206, "y": 32, "flags": 4},
+            {"matrix": [1, 13], "x": 224, "y": 24, "flags": 1},
+            {"matrix": [3, 0], "x": 2, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 20, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 85, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 101, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 117, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 133, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 149, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 165, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 181, "y": 48, "flags": 4},
+            {"matrix": [3, 13], "x": 212, "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, 6], "x": 103, "y": 64, "flags": 4},
+            {"matrix": [4, 10], "x": 164, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 184, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 204, "y": 64, "flags": 1},
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}
+        ]
+    },
     "layout_aliases": {
         "LAYOUT_iso_62": "LAYOUT_60_iso"
     },

+ 0 - 33
keyboards/keychron/v5/ansi/ansi.c

@@ -133,37 +133,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA2,    CB10_CA2,    CB11_CA2},
     {1, CB12_CA7,    CB10_CA7,    CB11_CA7}
 };
-
-#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 },
-        { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
-        { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 70, 51, 52, 53 },
-        { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 67, 68, 69 },
-        { 71, __, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, __, 82, 83, 84, 85, 86 },
-        { 87, 88, 89, __, __, 99, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 }
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {12,0},  {24,0},  {36,0},  {48,0},  {60,0},  {72,0},  {84,0},  {97,0},   {109,0},  {121,0},  {133,0},  {145,0},  {157,0},  {169,0},  {188,0},  {200,0},  {212,0},  {224,0},
-        {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {84,15}, {97,15},  {109,15}, {121,15}, {133,15}, {145,15}, {163,15},           {188,15}, {200,15}, {212,15}, {224,15},
-        {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26},           {188,26}, {200,26}, {212,26},
-        {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38},           {161,38},           {188,38}, {200,38}, {212,38}, {224,32},
-        {8,49},          {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49},           {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
-        {1,61}, {17,61}, {32,61},                            {77,61},                              {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
-    },
-    {
-        // 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    8, 4, 4, 4,
-        1, 4, 4, 4, 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,    4, 4, 4, 4,
-        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1, 4, 4, 4,
-        1, 1, 1,          1,          1, 1, 1, 1, 1, 1, 1, 1, 1
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 104 - 0
keyboards/keychron/v5/ansi/keyboard.json

@@ -18,6 +18,110 @@
         "rgb_matrix": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 12, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 24, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 36, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 48, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 60, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 72, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 84, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 97, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 109, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 121, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 133, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 145, "y": 0, "flags": 1},
+            {"matrix": [0, 13], "x": 157, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 188, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 200, "y": 0, "flags": 1},
+            {"matrix": [0, 17], "x": 212, "y": 0, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 12, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 24, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 36, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 48, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 60, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 72, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 84, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 97, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 109, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 121, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 133, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 145, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 163, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 188, "y": 15, "flags": 8},
+            {"matrix": [1, 16], "x": 200, "y": 15, "flags": 4},
+            {"matrix": [1, 17], "x": 212, "y": 15, "flags": 4},
+            {"matrix": [3, 14], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 26, "flags": 1},
+            {"matrix": [2, 1], "x": 18, "y": 26, "flags": 4},
+            {"matrix": [2, 2], "x": 30, "y": 26, "flags": 4},
+            {"matrix": [2, 3], "x": 42, "y": 26, "flags": 4},
+            {"matrix": [2, 4], "x": 54, "y": 26, "flags": 4},
+            {"matrix": [2, 5], "x": 66, "y": 26, "flags": 4},
+            {"matrix": [2, 6], "x": 78, "y": 26, "flags": 4},
+            {"matrix": [2, 7], "x": 91, "y": 26, "flags": 4},
+            {"matrix": [2, 8], "x": 103, "y": 26, "flags": 4},
+            {"matrix": [2, 9], "x": 115, "y": 26, "flags": 4},
+            {"matrix": [2, 10], "x": 127, "y": 26, "flags": 4},
+            {"matrix": [2, 11], "x": 139, "y": 26, "flags": 4},
+            {"matrix": [2, 12], "x": 151, "y": 26, "flags": 4},
+            {"matrix": [2, 13], "x": 166, "y": 26, "flags": 4},
+            {"matrix": [2, 15], "x": 188, "y": 26, "flags": 4},
+            {"matrix": [2, 16], "x": 200, "y": 26, "flags": 4},
+            {"matrix": [2, 17], "x": 212, "y": 26, "flags": 4},
+            {"matrix": [3, 0], "x": 5, "y": 38, "flags": 8},
+            {"matrix": [3, 1], "x": 21, "y": 38, "flags": 4},
+            {"matrix": [3, 2], "x": 33, "y": 38, "flags": 4},
+            {"matrix": [3, 3], "x": 45, "y": 38, "flags": 4},
+            {"matrix": [3, 4], "x": 57, "y": 38, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 38, "flags": 4},
+            {"matrix": [3, 6], "x": 81, "y": 38, "flags": 4},
+            {"matrix": [3, 7], "x": 94, "y": 38, "flags": 4},
+            {"matrix": [3, 8], "x": 106, "y": 38, "flags": 4},
+            {"matrix": [3, 9], "x": 118, "y": 38, "flags": 4},
+            {"matrix": [3, 10], "x": 130, "y": 38, "flags": 4},
+            {"matrix": [3, 11], "x": 142, "y": 38, "flags": 4},
+            {"matrix": [3, 13], "x": 161, "y": 38, "flags": 1},
+            {"matrix": [3, 15], "x": 188, "y": 38, "flags": 4},
+            {"matrix": [3, 16], "x": 200, "y": 38, "flags": 4},
+            {"matrix": [3, 17], "x": 212, "y": 38, "flags": 4},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [4, 0], "x": 8, "y": 49, "flags": 1},
+            {"matrix": [4, 2], "x": 27, "y": 49, "flags": 4},
+            {"matrix": [4, 3], "x": 39, "y": 49, "flags": 4},
+            {"matrix": [4, 4], "x": 51, "y": 49, "flags": 4},
+            {"matrix": [4, 5], "x": 63, "y": 49, "flags": 4},
+            {"matrix": [4, 6], "x": 75, "y": 49, "flags": 4},
+            {"matrix": [4, 7], "x": 88, "y": 49, "flags": 4},
+            {"matrix": [4, 8], "x": 100, "y": 49, "flags": 4},
+            {"matrix": [4, 9], "x": 112, "y": 49, "flags": 4},
+            {"matrix": [4, 10], "x": 124, "y": 49, "flags": 4},
+            {"matrix": [4, 11], "x": 136, "y": 49, "flags": 4},
+            {"matrix": [4, 13], "x": 152, "y": 49, "flags": 1},
+            {"matrix": [4, 14], "x": 172, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 188, "y": 49, "flags": 4},
+            {"matrix": [4, 16], "x": 200, "y": 49, "flags": 4},
+            {"matrix": [4, 17], "x": 212, "y": 49, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 61, "flags": 1},
+            {"matrix": [5, 1], "x": 17, "y": 61, "flags": 1},
+            {"matrix": [5, 2], "x": 32, "y": 61, "flags": 1},
+            {"matrix": [5, 6], "x": 77, "y": 61, "flags": 1},
+            {"matrix": [5, 10], "x": 121, "y": 61, "flags": 1},
+            {"matrix": [5, 11], "x": 133, "y": 61, "flags": 1},
+            {"matrix": [5, 12], "x": 145, "y": 61, "flags": 1},
+            {"matrix": [5, 13], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 172, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 184, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 200, "y": 61, "flags": 1},
+            {"matrix": [5, 17], "x": 212, "y": 61, "flags": 1},
+            {"matrix": [5, 5], "x": 224, "y": 55, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_100": {
             "layout": [

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

@@ -133,37 +133,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA2,    CB10_CA2,    CB11_CA2},
     {1, CB12_CA7,    CB10_CA7,    CB11_CA7}
 };
-
-#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 },
-        { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
-        { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 68, 49, 50, 51 },
-        { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 65, 66, 67 },
-        { 69, __, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, __, 80, 81, 82, 83, 84 },
-        { 85, 86, 87, __, __, 97, 88, __, __, __, 89, 90, 91, 92, 93, 94, 95, 96 }
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {24,0},  {36,0},  {48,0},  {60,0},  {78,0},  {90,0},  {103,0},  {115,0},  {133,0},  {145,0},  {157,0},  {169,0},            {184,0},  {196,0},  {208,0},  {224,0},
-        {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15},  {109,15}, {121,15}, {133,15}, {145,15}, {163,15},           {188,15}, {200,15}, {212,15}, {224,15},
-        {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26},           {188,26}, {200,26}, {212,26},
-        {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38},           {161,38},           {188,38}, {200,38}, {212,38}, {224,32},
-        {8,49},          {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49},           {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
-        {1,61}, {17,61}, {32,61},                            {77,61},                              {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
-    },
-    {
-        // RGB LED Index to Flag
-        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,    8, 4, 4, 4,
-        1, 4, 4, 4, 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,    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, 4, 4, 4, 1
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 102 - 0
keyboards/keychron/v5/ansi_encoder/keyboard.json

@@ -24,6 +24,108 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 24, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 36, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 48, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 60, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 78, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 90, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 103, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 115, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 133, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 145, "y": 0, "flags": 1},
+            {"matrix": [0, 13], "x": 157, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 184, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 196, "y": 0, "flags": 1},
+            {"matrix": [0, 17], "x": 208, "y": 0, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 12, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 24, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 36, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 48, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 60, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 72, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 85, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 97, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 109, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 121, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 133, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 145, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 163, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 188, "y": 15, "flags": 8},
+            {"matrix": [1, 16], "x": 200, "y": 15, "flags": 4},
+            {"matrix": [1, 17], "x": 212, "y": 15, "flags": 4},
+            {"matrix": [3, 14], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 26, "flags": 1},
+            {"matrix": [2, 1], "x": 18, "y": 26, "flags": 4},
+            {"matrix": [2, 2], "x": 30, "y": 26, "flags": 4},
+            {"matrix": [2, 3], "x": 42, "y": 26, "flags": 4},
+            {"matrix": [2, 4], "x": 54, "y": 26, "flags": 4},
+            {"matrix": [2, 5], "x": 66, "y": 26, "flags": 4},
+            {"matrix": [2, 6], "x": 78, "y": 26, "flags": 4},
+            {"matrix": [2, 7], "x": 91, "y": 26, "flags": 4},
+            {"matrix": [2, 8], "x": 103, "y": 26, "flags": 4},
+            {"matrix": [2, 9], "x": 115, "y": 26, "flags": 4},
+            {"matrix": [2, 10], "x": 127, "y": 26, "flags": 4},
+            {"matrix": [2, 11], "x": 139, "y": 26, "flags": 4},
+            {"matrix": [2, 12], "x": 151, "y": 26, "flags": 4},
+            {"matrix": [2, 13], "x": 166, "y": 26, "flags": 4},
+            {"matrix": [2, 15], "x": 188, "y": 26, "flags": 4},
+            {"matrix": [2, 16], "x": 200, "y": 26, "flags": 4},
+            {"matrix": [2, 17], "x": 212, "y": 26, "flags": 4},
+            {"matrix": [3, 0], "x": 5, "y": 38, "flags": 8},
+            {"matrix": [3, 1], "x": 21, "y": 38, "flags": 4},
+            {"matrix": [3, 2], "x": 33, "y": 38, "flags": 4},
+            {"matrix": [3, 3], "x": 45, "y": 38, "flags": 4},
+            {"matrix": [3, 4], "x": 57, "y": 38, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 38, "flags": 4},
+            {"matrix": [3, 6], "x": 81, "y": 38, "flags": 4},
+            {"matrix": [3, 7], "x": 94, "y": 38, "flags": 4},
+            {"matrix": [3, 8], "x": 106, "y": 38, "flags": 4},
+            {"matrix": [3, 9], "x": 118, "y": 38, "flags": 4},
+            {"matrix": [3, 10], "x": 130, "y": 38, "flags": 4},
+            {"matrix": [3, 11], "x": 142, "y": 38, "flags": 4},
+            {"matrix": [3, 13], "x": 161, "y": 38, "flags": 1},
+            {"matrix": [3, 15], "x": 188, "y": 38, "flags": 4},
+            {"matrix": [3, 16], "x": 200, "y": 38, "flags": 4},
+            {"matrix": [3, 17], "x": 212, "y": 38, "flags": 4},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [4, 0], "x": 8, "y": 49, "flags": 1},
+            {"matrix": [4, 2], "x": 27, "y": 49, "flags": 4},
+            {"matrix": [4, 3], "x": 39, "y": 49, "flags": 4},
+            {"matrix": [4, 4], "x": 51, "y": 49, "flags": 4},
+            {"matrix": [4, 5], "x": 63, "y": 49, "flags": 4},
+            {"matrix": [4, 6], "x": 75, "y": 49, "flags": 4},
+            {"matrix": [4, 7], "x": 88, "y": 49, "flags": 4},
+            {"matrix": [4, 8], "x": 100, "y": 49, "flags": 4},
+            {"matrix": [4, 9], "x": 112, "y": 49, "flags": 4},
+            {"matrix": [4, 10], "x": 124, "y": 49, "flags": 4},
+            {"matrix": [4, 11], "x": 136, "y": 49, "flags": 4},
+            {"matrix": [4, 13], "x": 152, "y": 49, "flags": 1},
+            {"matrix": [4, 14], "x": 172, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 188, "y": 49, "flags": 4},
+            {"matrix": [4, 16], "x": 200, "y": 49, "flags": 4},
+            {"matrix": [4, 17], "x": 212, "y": 49, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 61, "flags": 1},
+            {"matrix": [5, 1], "x": 17, "y": 61, "flags": 1},
+            {"matrix": [5, 2], "x": 32, "y": 61, "flags": 1},
+            {"matrix": [5, 6], "x": 77, "y": 61, "flags": 4},
+            {"matrix": [5, 10], "x": 121, "y": 61, "flags": 1},
+            {"matrix": [5, 11], "x": 133, "y": 61, "flags": 1},
+            {"matrix": [5, 12], "x": 145, "y": 61, "flags": 1},
+            {"matrix": [5, 13], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 172, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 184, "y": 64, "flags": 4},
+            {"matrix": [5, 16], "x": 200, "y": 61, "flags": 4},
+            {"matrix": [5, 17], "x": 212, "y": 61, "flags": 4},
+            {"matrix": [5, 5], "x": 224, "y": 55, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_ansi_98": {
             "layout": [

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

@@ -134,37 +134,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA2,    CB10_CA2,    CB11_CA2},
     {1, CB12_CA7,    CB10_CA7,    CB11_CA7}
 };
-
-#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 },
-        { 19, 20, 21, 22, 23, 24,  25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
-        { 37, 38, 39, 40, 41, 42,  43, 44, 45, 46, 47, 48, 49, 66, 70, 50, 51, 52 },
-        { 53, 54, 55, 56, 57, 58,  59, 60, 61, 62, 63, 64, 18, 65, 36, 67, 68, 69 },
-        { 71, 72, 73, 74, 75, 76,  77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
-        { 88, 89, 90, __, __, 100, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},  {12,0},  {24,0},  {36,0},  {48,0},  {60,0},  {72,0},  {85,0},  {97,0},   {109,0},  {121,0},  {133,0},  {145,0},  {157,0},  {169,0},  {188,0},  {200,0},  {212,0},  {224,0},
-        {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15},  {109,15}, {121,15}, {133,15}, {145,15}, {163,15},           {188,15}, {200,15}, {212,15}, {224,15},
-        {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26},                     {188,26}, {200,26}, {212,26},
-        {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34},           {188,38}, {200,38}, {212,38}, {224,32},
-        {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49},           {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
-        {1,61}, {17,61}, {32,61},                            {77,61},                              {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
-    },
-    {
-        // 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    8, 4, 4, 4,
-        1, 4, 4, 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, 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, 4, 4, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 105 - 0
keyboards/keychron/v5/iso/keyboard.json

@@ -18,6 +18,111 @@
         "rgb_matrix": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 12, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 24, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 36, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 48, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 60, "y": 0, "flags": 1},
+            {"matrix": [0, 6], "x": 72, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 85, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 97, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 109, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 121, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 133, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 145, "y": 0, "flags": 1},
+            {"matrix": [0, 13], "x": 157, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 188, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 200, "y": 0, "flags": 1},
+            {"matrix": [0, 17], "x": 212, "y": 0, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 12, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 24, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 36, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 48, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 60, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 72, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 85, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 97, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 109, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 121, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 133, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 145, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 163, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 188, "y": 15, "flags": 8},
+            {"matrix": [1, 16], "x": 200, "y": 15, "flags": 4},
+            {"matrix": [1, 17], "x": 212, "y": 15, "flags": 4},
+            {"matrix": [3, 14], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 26, "flags": 1},
+            {"matrix": [2, 1], "x": 18, "y": 26, "flags": 4},
+            {"matrix": [2, 2], "x": 30, "y": 26, "flags": 4},
+            {"matrix": [2, 3], "x": 42, "y": 26, "flags": 4},
+            {"matrix": [2, 4], "x": 54, "y": 26, "flags": 4},
+            {"matrix": [2, 5], "x": 66, "y": 26, "flags": 4},
+            {"matrix": [2, 6], "x": 78, "y": 26, "flags": 4},
+            {"matrix": [2, 7], "x": 91, "y": 26, "flags": 4},
+            {"matrix": [2, 8], "x": 103, "y": 26, "flags": 4},
+            {"matrix": [2, 9], "x": 115, "y": 26, "flags": 4},
+            {"matrix": [2, 10], "x": 127, "y": 26, "flags": 4},
+            {"matrix": [2, 11], "x": 139, "y": 26, "flags": 4},
+            {"matrix": [2, 12], "x": 151, "y": 26, "flags": 4},
+            {"matrix": [2, 15], "x": 188, "y": 26, "flags": 4},
+            {"matrix": [2, 16], "x": 200, "y": 26, "flags": 4},
+            {"matrix": [2, 17], "x": 212, "y": 26, "flags": 4},
+            {"matrix": [3, 0], "x": 5, "y": 38, "flags": 8},
+            {"matrix": [3, 1], "x": 21, "y": 38, "flags": 4},
+            {"matrix": [3, 2], "x": 33, "y": 38, "flags": 4},
+            {"matrix": [3, 3], "x": 45, "y": 38, "flags": 4},
+            {"matrix": [3, 4], "x": 57, "y": 38, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 38, "flags": 4},
+            {"matrix": [3, 6], "x": 81, "y": 38, "flags": 4},
+            {"matrix": [3, 7], "x": 94, "y": 38, "flags": 4},
+            {"matrix": [3, 8], "x": 106, "y": 38, "flags": 4},
+            {"matrix": [3, 9], "x": 118, "y": 38, "flags": 4},
+            {"matrix": [3, 10], "x": 130, "y": 38, "flags": 4},
+            {"matrix": [3, 11], "x": 142, "y": 38, "flags": 4},
+            {"matrix": [3, 13], "x": 154, "y": 38, "flags": 4},
+            {"matrix": [2, 13], "x": 170, "y": 34, "flags": 1},
+            {"matrix": [3, 15], "x": 188, "y": 38, "flags": 4},
+            {"matrix": [3, 16], "x": 200, "y": 38, "flags": 4},
+            {"matrix": [3, 17], "x": 212, "y": 38, "flags": 4},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [4, 0], "x": 3, "y": 49, "flags": 1},
+            {"matrix": [4, 1], "x": 15, "y": 49, "flags": 4},
+            {"matrix": [4, 2], "x": 27, "y": 49, "flags": 4},
+            {"matrix": [4, 3], "x": 39, "y": 49, "flags": 4},
+            {"matrix": [4, 4], "x": 51, "y": 49, "flags": 4},
+            {"matrix": [4, 5], "x": 63, "y": 49, "flags": 4},
+            {"matrix": [4, 6], "x": 75, "y": 49, "flags": 4},
+            {"matrix": [4, 7], "x": 88, "y": 49, "flags": 4},
+            {"matrix": [4, 8], "x": 100, "y": 49, "flags": 4},
+            {"matrix": [4, 9], "x": 112, "y": 49, "flags": 4},
+            {"matrix": [4, 10], "x": 124, "y": 49, "flags": 4},
+            {"matrix": [4, 11], "x": 136, "y": 49, "flags": 4},
+            {"matrix": [4, 13], "x": 152, "y": 49, "flags": 1},
+            {"matrix": [4, 14], "x": 172, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 188, "y": 49, "flags": 4},
+            {"matrix": [4, 16], "x": 200, "y": 49, "flags": 4},
+            {"matrix": [4, 17], "x": 212, "y": 49, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 61, "flags": 1},
+            {"matrix": [5, 1], "x": 17, "y": 61, "flags": 1},
+            {"matrix": [5, 2], "x": 32, "y": 61, "flags": 1},
+            {"matrix": [5, 6], "x": 77, "y": 61, "flags": 4},
+            {"matrix": [5, 10], "x": 121, "y": 61, "flags": 1},
+            {"matrix": [5, 11], "x": 133, "y": 61, "flags": 1},
+            {"matrix": [5, 12], "x": 145, "y": 61, "flags": 1},
+            {"matrix": [5, 13], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 172, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 184, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 200, "y": 61, "flags": 4},
+            {"matrix": [5, 17], "x": 212, "y": 61, "flags": 4},
+            {"matrix": [5, 5], "x": 224, "y": 55, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_101": {
             "layout": [

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

@@ -132,37 +132,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB12_CA2,    CB10_CA2,    CB11_CA2},
     {1, CB12_CA7,    CB10_CA7,    CB11_CA7}
 };
-
-#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 },
-        { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
-        { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 64, 68, 48, 49, 50 },
-        { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 16, 63, 34, 65, 66, 67 },
-        { 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, __, 81, 82, 83, 84, 85 },
-        { 86, 87, 88, __, __, 98, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 },
-    },
-    {
-        // LED Index to Physical Position
-        {0,0},           {24,0},  {36,0},  {48,0},  {60,0},  {78,0},  {90,0},  {103,0},  {115,0},  {133,0},  {145,0},  {157,0},  {169,0},            {184,0},  {196,0},  {208,0},  {224,0},
-        {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15},  {109,15}, {121,15}, {133,15}, {145,15}, {163,15},           {188,15}, {200,15}, {212,15}, {224,15},
-        {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26},                     {188,26}, {200,26}, {212,26},
-        {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34},           {188,38}, {200,38}, {212,38}, {224,32},
-        {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49},           {172,52}, {188,49}, {200,49}, {212,49},
-        {1,61}, {17,61}, {32,61},                            {77,61},                              {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
-    },
-    {
-        // RGB LED Index to Flag
-        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,    8, 4, 4, 4,
-        1, 4, 4, 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, 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, 4, 4, 1,
-    }
-};
-
 #endif // RGB_MATRIX_ENABLE

+ 103 - 0
keyboards/keychron/v5/iso_encoder/keyboard.json

@@ -24,6 +24,109 @@
         "encoder": true,
         "dip_switch": true
     },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 2], "x": 24, "y": 0, "flags": 1},
+            {"matrix": [0, 3], "x": 36, "y": 0, "flags": 1},
+            {"matrix": [0, 4], "x": 48, "y": 0, "flags": 1},
+            {"matrix": [0, 5], "x": 60, "y": 0, "flags": 1},
+            {"matrix": [0, 7], "x": 78, "y": 0, "flags": 1},
+            {"matrix": [0, 8], "x": 90, "y": 0, "flags": 1},
+            {"matrix": [0, 9], "x": 103, "y": 0, "flags": 1},
+            {"matrix": [0, 10], "x": 115, "y": 0, "flags": 1},
+            {"matrix": [0, 11], "x": 133, "y": 0, "flags": 1},
+            {"matrix": [0, 12], "x": 145, "y": 0, "flags": 1},
+            {"matrix": [0, 13], "x": 157, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 169, "y": 0, "flags": 1},
+            {"matrix": [0, 15], "x": 184, "y": 0, "flags": 1},
+            {"matrix": [0, 16], "x": 196, "y": 0, "flags": 1},
+            {"matrix": [0, 17], "x": 208, "y": 0, "flags": 1},
+            {"matrix": [3, 12], "x": 224, "y": 0, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 12, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 24, "y": 15, "flags": 4},
+            {"matrix": [1, 3], "x": 36, "y": 15, "flags": 4},
+            {"matrix": [1, 4], "x": 48, "y": 15, "flags": 4},
+            {"matrix": [1, 5], "x": 60, "y": 15, "flags": 4},
+            {"matrix": [1, 6], "x": 72, "y": 15, "flags": 4},
+            {"matrix": [1, 7], "x": 85, "y": 15, "flags": 4},
+            {"matrix": [1, 8], "x": 97, "y": 15, "flags": 4},
+            {"matrix": [1, 9], "x": 109, "y": 15, "flags": 4},
+            {"matrix": [1, 10], "x": 121, "y": 15, "flags": 4},
+            {"matrix": [1, 11], "x": 133, "y": 15, "flags": 4},
+            {"matrix": [1, 12], "x": 145, "y": 15, "flags": 4},
+            {"matrix": [1, 13], "x": 163, "y": 15, "flags": 1},
+            {"matrix": [1, 15], "x": 188, "y": 15, "flags": 8},
+            {"matrix": [1, 16], "x": 200, "y": 15, "flags": 4},
+            {"matrix": [1, 17], "x": 212, "y": 15, "flags": 4},
+            {"matrix": [3, 14], "x": 224, "y": 15, "flags": 4},
+            {"matrix": [2, 0], "x": 3, "y": 26, "flags": 1},
+            {"matrix": [2, 1], "x": 18, "y": 26, "flags": 4},
+            {"matrix": [2, 2], "x": 30, "y": 26, "flags": 4},
+            {"matrix": [2, 3], "x": 42, "y": 26, "flags": 4},
+            {"matrix": [2, 4], "x": 54, "y": 26, "flags": 4},
+            {"matrix": [2, 5], "x": 66, "y": 26, "flags": 4},
+            {"matrix": [2, 6], "x": 78, "y": 26, "flags": 4},
+            {"matrix": [2, 7], "x": 91, "y": 26, "flags": 4},
+            {"matrix": [2, 8], "x": 103, "y": 26, "flags": 4},
+            {"matrix": [2, 9], "x": 115, "y": 26, "flags": 4},
+            {"matrix": [2, 10], "x": 127, "y": 26, "flags": 4},
+            {"matrix": [2, 11], "x": 139, "y": 26, "flags": 4},
+            {"matrix": [2, 12], "x": 151, "y": 26, "flags": 4},
+            {"matrix": [2, 15], "x": 188, "y": 26, "flags": 4},
+            {"matrix": [2, 16], "x": 200, "y": 26, "flags": 4},
+            {"matrix": [2, 17], "x": 212, "y": 26, "flags": 4},
+            {"matrix": [3, 0], "x": 5, "y": 38, "flags": 8},
+            {"matrix": [3, 1], "x": 21, "y": 38, "flags": 4},
+            {"matrix": [3, 2], "x": 33, "y": 38, "flags": 4},
+            {"matrix": [3, 3], "x": 45, "y": 38, "flags": 4},
+            {"matrix": [3, 4], "x": 57, "y": 38, "flags": 4},
+            {"matrix": [3, 5], "x": 69, "y": 38, "flags": 4},
+            {"matrix": [3, 6], "x": 81, "y": 38, "flags": 4},
+            {"matrix": [3, 7], "x": 94, "y": 38, "flags": 4},
+            {"matrix": [3, 8], "x": 106, "y": 38, "flags": 4},
+            {"matrix": [3, 9], "x": 118, "y": 38, "flags": 4},
+            {"matrix": [3, 10], "x": 130, "y": 38, "flags": 4},
+            {"matrix": [3, 11], "x": 142, "y": 38, "flags": 4},
+            {"matrix": [3, 13], "x": 154, "y": 38, "flags": 4},
+            {"matrix": [2, 13], "x": 170, "y": 34, "flags": 1},
+            {"matrix": [3, 15], "x": 188, "y": 38, "flags": 4},
+            {"matrix": [3, 16], "x": 200, "y": 38, "flags": 4},
+            {"matrix": [3, 17], "x": 212, "y": 38, "flags": 4},
+            {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [4, 0], "x": 3, "y": 49, "flags": 1},
+            {"matrix": [4, 1], "x": 15, "y": 49, "flags": 4},
+            {"matrix": [4, 2], "x": 27, "y": 49, "flags": 4},
+            {"matrix": [4, 3], "x": 39, "y": 49, "flags": 4},
+            {"matrix": [4, 4], "x": 51, "y": 49, "flags": 4},
+            {"matrix": [4, 5], "x": 63, "y": 49, "flags": 4},
+            {"matrix": [4, 6], "x": 75, "y": 49, "flags": 4},
+            {"matrix": [4, 7], "x": 88, "y": 49, "flags": 4},
+            {"matrix": [4, 8], "x": 100, "y": 49, "flags": 4},
+            {"matrix": [4, 9], "x": 112, "y": 49, "flags": 4},
+            {"matrix": [4, 10], "x": 124, "y": 49, "flags": 4},
+            {"matrix": [4, 11], "x": 136, "y": 49, "flags": 4},
+            {"matrix": [4, 13], "x": 152, "y": 49, "flags": 1},
+            {"matrix": [4, 14], "x": 172, "y": 52, "flags": 1},
+            {"matrix": [4, 15], "x": 188, "y": 49, "flags": 4},
+            {"matrix": [4, 16], "x": 200, "y": 49, "flags": 4},
+            {"matrix": [4, 17], "x": 212, "y": 49, "flags": 4},
+            {"matrix": [5, 0], "x": 1, "y": 61, "flags": 1},
+            {"matrix": [5, 1], "x": 17, "y": 61, "flags": 1},
+            {"matrix": [5, 2], "x": 32, "y": 61, "flags": 1},
+            {"matrix": [5, 6], "x": 77, "y": 61, "flags": 4},
+            {"matrix": [5, 10], "x": 121, "y": 61, "flags": 1},
+            {"matrix": [5, 11], "x": 133, "y": 61, "flags": 1},
+            {"matrix": [5, 12], "x": 145, "y": 61, "flags": 1},
+            {"matrix": [5, 13], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [5, 14], "x": 172, "y": 64, "flags": 1},
+            {"matrix": [5, 15], "x": 184, "y": 64, "flags": 1},
+            {"matrix": [5, 16], "x": 200, "y": 61, "flags": 4},
+            {"matrix": [5, 17], "x": 212, "y": 61, "flags": 4},
+            {"matrix": [5, 5], "x": 224, "y": 55, "flags": 1}
+        ]
+    },
     "layouts": {
         "LAYOUT_iso_99": {
             "layout": [