diff --git a/keyboards/7c8/framework/config.h b/keyboards/7c8/framework/config.h
deleted file mode 100644
index dce6855f68dc..000000000000
--- a/keyboards/7c8/framework/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 Steven Nguyen
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#define LEADER_TIMEOUT 250
-#define LEADER_PER_KEY_TIMING 150
diff --git a/keyboards/7c8/framework/info.json b/keyboards/7c8/framework/info.json
index 331aa9f7977d..19325af9cbd3 100644
--- a/keyboards/7c8/framework/info.json
+++ b/keyboards/7c8/framework/info.json
@@ -21,6 +21,10 @@
     "qmk": {
         "tap_keycode_delay": 16
     },
+    "leader_key": {
+        "timeout": 250,
+        "timing": true
+    },
     "processor": "atmega328p",
     "bootloader": "usbasploader",
     "layouts": {
diff --git a/keyboards/acheron/athena/alpha/alpha.c b/keyboards/acheron/athena/alpha/alpha.c
index 26c00e41aa0d..5b5c45b7c7a5 100644
--- a/keyboards/acheron/athena/alpha/alpha.c
+++ b/keyboards/acheron/athena/alpha/alpha.c
@@ -26,7 +26,6 @@ void keyboard_post_init_kb(void){
     palSetLineMode(BACKLIGHT_PIN, PAL_MODE_ALTERNATE(BACKLIGHT_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING);
 }
 
-#define LED_PIN_ON_STATE 1
 void led_init_ports(void) {
     palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN | PAL_STM32_PUPDR_FLOATING);
 }
diff --git a/keyboards/acheron/elongate/delta/delta.c b/keyboards/acheron/elongate/delta/delta.c
index e83516b56674..e621b4495b5b 100755
--- a/keyboards/acheron/elongate/delta/delta.c
+++ b/keyboards/acheron/elongate/delta/delta.c
@@ -16,7 +16,6 @@
 
 #include "quantum.h"
 
-#define LED_PIN_ON_STATE 1
 // Inits all indicator LEDs as push-pull outputs
 void led_init_ports(void) {
     palSetLineMode(LED1_PIN, PAL_MODE_OUTPUT_PUSHPULL);
diff --git a/keyboards/alas/config.h b/keyboards/alas/config.h
index a4424815608e..6f81ce367b92 100644
--- a/keyboards/alas/config.h
+++ b/keyboards/alas/config.h
@@ -19,7 +19,3 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* Ensure we jump to bootloader if the RESET keycode was pressed */
 #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-
-/* Indicator LEDs */
-#define LED_CAPS_LOCK_PIN B6
-#define LED_PIN_ON_STATE 0
diff --git a/keyboards/alas/info.json b/keyboards/alas/info.json
index 6c2beff27ebf..5c5e29f5956a 100755
--- a/keyboards/alas/info.json
+++ b/keyboards/alas/info.json
@@ -8,6 +8,10 @@
         "pid": "0x414C",
         "device_version": "0.0.1"
     },
+    "indicators": {
+        "caps_lock": "B6",
+        "on_state": 0
+    },
     "matrix_pins": {
         "cols": ["A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14"],
         "rows": ["A2", "B9", "B8", "B5", "B4"]
diff --git a/keyboards/ash1800/ash1800.c b/keyboards/ash1800/ash1800.c
deleted file mode 100644
index 520b1503aca7..000000000000
--- a/keyboards/ash1800/ash1800.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2019 angelbirth
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include "quantum.h"
-
-bool led_update_kb(led_t led_state) {
-    if (led_update_user(led_state)) {
-        writePin(NUM_LOCK_LED_PIN, !led_state.num_lock);
-        writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock);
-        writePin(SCROLL_LOCK_LED_PIN, !led_state.scroll_lock);
-    }
-    return true;
-}
\ No newline at end of file
diff --git a/keyboards/ash1800/config.h b/keyboards/ash1800/config.h
index 2f259d40f67b..75e72d0e22a5 100644
--- a/keyboards/ash1800/config.h
+++ b/keyboards/ash1800/config.h
@@ -17,10 +17,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-#define NUM_LOCK_LED_PIN E6
-#define CAPS_LOCK_LED_PIN F0
-#define SCROLL_LOCK_LED_PIN F7
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
diff --git a/keyboards/ash1800/info.json b/keyboards/ash1800/info.json
index e028e09135e1..658e76962d8d 100644
--- a/keyboards/ash1800/info.json
+++ b/keyboards/ash1800/info.json
@@ -7,6 +7,12 @@
         "pid": "0x1800",
         "device_version": "0.0.1"
     },
+    "indicators": {
+        "caps_lock": "F0",
+        "num_lock": "E6",
+        "scroll_lock": "F7",
+        "on_state": 0
+    },
     "matrix_pins": {
         "cols": ["F1", "F4", "F5", "F6", "B0", "B2", "B1", "B3", "B7", "C7"],
         "rows": ["C6", "B6", "B5", "B4", "D7", "D0", "D1", "D2", "D3", "D5", "D4", "D6"]
diff --git a/keyboards/ash_xiix/ash_xiix.c b/keyboards/ash_xiix/ash_xiix.c
deleted file mode 100644
index 64be362f93af..000000000000
--- a/keyboards/ash_xiix/ash_xiix.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2020 sh_xguitar
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include "quantum.h"
-
-bool led_update_kb(led_t led_state) {
-    if (led_update_user(led_state)) {
-        writePin(NUM_LOCK_LED_PIN, led_state.num_lock);
-        writePin(CAPS_LOCK_LED_PIN, led_state.caps_lock);
-        writePin(SCROLL_LOCK_LED_PIN, led_state.scroll_lock);
-    }
-    return true;
-}
diff --git a/keyboards/ash_xiix/config.h b/keyboards/ash_xiix/config.h
index 8f81c450eb55..08dd2458c880 100644
--- a/keyboards/ash_xiix/config.h
+++ b/keyboards/ash_xiix/config.h
@@ -14,10 +14,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-#define NUM_LOCK_LED_PIN E6
-#define CAPS_LOCK_LED_PIN F0
-#define SCROLL_LOCK_LED_PIN F7
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 #define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/ash_xiix/info.json b/keyboards/ash_xiix/info.json
index 69155f55c10d..d9f996403541 100644
--- a/keyboards/ash_xiix/info.json
+++ b/keyboards/ash_xiix/info.json
@@ -8,6 +8,12 @@
         "pid": "0x14BC",
         "device_version": "0.0.1"
     },
+    "indicators": {
+        "caps_lock": "F0",
+        "num_lock": "E6",
+        "scroll_lock": "F7",
+        "on_state": 0
+    },
     "matrix_pins": {
         "cols": ["F1", "F4", "F5", "F6", "B0", "B2", "B1", "B3", "B7", "C7"],
         "rows": ["C6", "B6", "B5", "B4", "D7", "D0", "D1", "D2", "D3", "D5", "D4", "D6"]
diff --git a/keyboards/bpiphany/hid_liber/config.h b/keyboards/bpiphany/hid_liber/config.h
index f567c3e12a1d..2e41e1f7005d 100755
--- a/keyboards/bpiphany/hid_liber/config.h
+++ b/keyboards/bpiphany/hid_liber/config.h
@@ -23,7 +23,6 @@
 #define MATRIX_COLS 8
 
 // HID Liberation Device uses custom matrix code to accomodate a 74HC238 3 to 8 decoder on pins B1, B2 and B3.
-//#define DIODE_DIRECTION
 
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/coban/pad3a/config.h b/keyboards/coban/pad3a/config.h
index 9483086fb488..5299ccb4f1c9 100644
--- a/keyboards/coban/pad3a/config.h
+++ b/keyboards/coban/pad3a/config.h
@@ -16,8 +16,5 @@
 
 #pragma once
 
-#define ENCODERS_PAD_A { GP5 }
-#define ENCODERS_PAD_B { GP4 }
-
 #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
 #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
diff --git a/keyboards/coban/pad3a/info.json b/keyboards/coban/pad3a/info.json
index 3eadcb7f50f0..fc5c8ee71ee6 100644
--- a/keyboards/coban/pad3a/info.json
+++ b/keyboards/coban/pad3a/info.json
@@ -9,6 +9,11 @@
         "vid": "0xCB3A",
         "device_version": "1.1.0"
     },
+    "encoder": {
+        "rotary": [
+            {"pin_a": "GP5", "pin_b": "GP4"}
+        ]
+    },
     "matrix_pins": {
         "direct": [
             ["GP8", "GP7", "GP6"]
diff --git a/keyboards/dumbpad/v3x/config.h b/keyboards/dumbpad/v3x/config.h
index 1944244c3bd3..7667bb39d06a 100644
--- a/keyboards/dumbpad/v3x/config.h
+++ b/keyboards/dumbpad/v3x/config.h
@@ -26,7 +26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // Cleanup RGB
 #ifdef RGB_MATRIX_ENABLE
 
-#define RGB_MATRIX_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms)
 #define RGB_DISABLE_WHEN_USB_SUSPENDED
 
 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
diff --git a/keyboards/dumbpad/v3x/info.json b/keyboards/dumbpad/v3x/info.json
index 5be344c17b02..463fa5ec9c95 100644
--- a/keyboards/dumbpad/v3x/info.json
+++ b/keyboards/dumbpad/v3x/info.json
@@ -6,7 +6,8 @@
         "device_version": "0.1.0"
     },
     "rgb_matrix": {
-        "driver": "WS2812"
+        "driver": "WS2812",
+        "timeout": 300000
     },
     "matrix_pins": {
         "cols": ["C6", "D7", "E6", "B4", "B5"],
diff --git a/keyboards/eason/greatsword80/config.h b/keyboards/eason/greatsword80/config.h
deleted file mode 100644
index 9a0ee7ab72f5..000000000000
--- a/keyboards/eason/greatsword80/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2023 Eason <xiaoxuxk@yeah.net>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#define LED_CAPS_LOCK_PIN  F0
-#define LED_PIN_ON_STATE 0
diff --git a/keyboards/eason/greatsword80/info.json b/keyboards/eason/greatsword80/info.json
index d198d65f2aad..74c469f7ced6 100644
--- a/keyboards/eason/greatsword80/info.json
+++ b/keyboards/eason/greatsword80/info.json
@@ -8,6 +8,10 @@
         "pid": "0x998F",
         "device_version": "0.0.1"
     },
+    "indicators": {
+        "caps_lock": "F0",
+        "on_state": 0
+    },
     "matrix_pins": {
         "cols": ["D6", "D7", "B4", "B5", "B6", "C6", "C7", "E2", "F7", "F6", "F5", "F4", "B0", "B1", "B2", "B3"],
         "rows": ["D0", "D1", "D2", "D3", "D5", "D4"]
diff --git a/keyboards/fancytech/fancyalice66/config.h b/keyboards/fancytech/fancyalice66/config.h
index b6fcea0c6bc3..9f56bd3a203d 100644
--- a/keyboards/fancytech/fancyalice66/config.h
+++ b/keyboards/fancytech/fancyalice66/config.h
@@ -4,8 +4,6 @@
 #pragma once
 
 #ifdef RGB_MATRIX_ENABLE
-#    define WS2812_DI_PIN B0
-#    define RGB_DI_PIN B0
 #    define RGB_MATRIX_LED_COUNT 82
 
     /* RGB Matrix effect */
diff --git a/keyboards/fancytech/fancyalice66/info.json b/keyboards/fancytech/fancyalice66/info.json
index 1be7f3763941..525a19d32ca6 100644
--- a/keyboards/fancytech/fancyalice66/info.json
+++ b/keyboards/fancytech/fancyalice66/info.json
@@ -165,6 +165,9 @@
         "pid": "0x3663",
         "vid": "0xECED"
     },
+    "ws2812": {
+        "pin": "B0"
+    },
     "layouts": {
         "LAYOUT": {
             "layout": [
diff --git a/keyboards/fungo/rev1/config.h b/keyboards/fungo/rev1/config.h
index 349905fa0b08..bebed352e22e 100644
--- a/keyboards/fungo/rev1/config.h
+++ b/keyboards/fungo/rev1/config.h
@@ -23,8 +23,6 @@
 /**       public parameter       **/
 /*************************************/
 
-#define MATRIX_IO_DELAY 15  // default  30
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 
diff --git a/keyboards/fungo/rev1/info.json b/keyboards/fungo/rev1/info.json
index 6451d88bee86..d153f9f834a8 100644
--- a/keyboards/fungo/rev1/info.json
+++ b/keyboards/fungo/rev1/info.json
@@ -10,7 +10,8 @@
   },
   "matrix_pins": {
     "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
-    "rows": ["D4", "C6", "D7", "E6", "B4", "B5"]
+    "rows": ["D4", "C6", "D7", "E6", "B4", "B5"],
+    "io_delay": 15
   },
   "diode_direction": "COL2ROW",
   "split": {
diff --git a/keyboards/handwired/datahand/config.h b/keyboards/handwired/datahand/config.h
index 0b2de61490a0..b1d8cc9c773a 100644
--- a/keyboards/handwired/datahand/config.h
+++ b/keyboards/handwired/datahand/config.h
@@ -20,8 +20,6 @@
 #define MATRIX_ROWS 13
 #define MATRIX_COLS 4
 
-//#define DIODE_DIRECTION
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
diff --git a/keyboards/handwired/split65/promicro/config.h b/keyboards/handwired/split65/promicro/config.h
index b92456da9811..f5c5ee3be295 100644
--- a/keyboards/handwired/split65/promicro/config.h
+++ b/keyboards/handwired/split65/promicro/config.h
@@ -15,8 +15,6 @@
  */
 #pragma once
 
-#define MATRIX_IO_DELAY 5
-
 #define SELECT_SOFT_SERIAL_SPEED 1
 
 // Feature diable options
diff --git a/keyboards/handwired/split65/promicro/info.json b/keyboards/handwired/split65/promicro/info.json
index e1540d99a2c9..ea41cb3ac177 100644
--- a/keyboards/handwired/split65/promicro/info.json
+++ b/keyboards/handwired/split65/promicro/info.json
@@ -1,7 +1,8 @@
 {
     "matrix_pins": {
         "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"],
-        "rows": ["D4", "C6", "D7", "E6", "B4"]
+        "rows": ["D4", "C6", "D7", "E6", "B4"],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "split": {
diff --git a/keyboards/handwired/split65/stm32/config.h b/keyboards/handwired/split65/stm32/config.h
index 020e44f02edb..3d48891e7e74 100644
--- a/keyboards/handwired/split65/stm32/config.h
+++ b/keyboards/handwired/split65/stm32/config.h
@@ -21,8 +21,6 @@
 #define AUDIO_PIN_ALT A4
 #define AUDIO_PIN_ALT_AS_NEGATIVE
 
-#define MATRIX_IO_DELAY 5
-
 #define SELECT_SOFT_SERIAL_SPEED 1
 #define SERIAL_USART_DRIVER SD1
 #define SERIAL_USART_TX_PAL_MODE 7
diff --git a/keyboards/handwired/split65/stm32/info.json b/keyboards/handwired/split65/stm32/info.json
index b9956ed7abcb..61aff0e7eab4 100644
--- a/keyboards/handwired/split65/stm32/info.json
+++ b/keyboards/handwired/split65/stm32/info.json
@@ -1,7 +1,8 @@
 {
     "matrix_pins": {
         "cols": ["A2", "A1", "A0", "B8", "B13", "B14", "B15", "B9"],
-        "rows": ["B5", "B4", "B3", "B2", "B1"]
+        "rows": ["B5", "B4", "B3", "B2", "B1"],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "split": {
diff --git a/keyboards/hineybush/hbcp/config.h b/keyboards/hineybush/hbcp/config.h
index 6425e97149c5..c17a8fd6ef4c 100644
--- a/keyboards/hineybush/hbcp/config.h
+++ b/keyboards/hineybush/hbcp/config.h
@@ -35,9 +35,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { B1, B6, D0, C7, C6, C5 }
 #define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, B5, B4, B3, B2 }
 
-//EITHERWAY is supported through a custom matrix
-//#define DIODE_DIRECTION EITHERWAY
-
 #define RGBLIGHT_EFFECT_BREATHING
 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/idobao/id42/config.h b/keyboards/idobao/id42/config.h
index d9a0133faabf..bac9dbf1bd6f 100755
--- a/keyboards/idobao/id42/config.h
+++ b/keyboards/idobao/id42/config.h
@@ -3,10 +3,6 @@
 
 #pragma once
 
-/* Change the USB polling rate [default = 1000Hz (1ms)] and
- * use larger value of keys per scan for elite games */
-#define USB_POLLING_INTERVAL_MS  2  // 500Hz
-
 /* LED Matrix & Animations */
 #ifdef RGB_MATRIX_ENABLE
 
diff --git a/keyboards/idobao/id42/info.json b/keyboards/idobao/id42/info.json
index cc896ff236c9..03a6f1724be0 100644
--- a/keyboards/idobao/id42/info.json
+++ b/keyboards/idobao/id42/info.json
@@ -30,7 +30,8 @@
         "vid": "0x6964",
         "pid": "0x0042",
         "device_version": "1.0.0",
-        "force_nkro": true
+        "force_nkro": true,
+        "polling_interval": 2
       },
     "layouts": {
         "LAYOUT": {
diff --git a/keyboards/jadookb/jkb65/config.h b/keyboards/jadookb/jkb65/config.h
index a54e1e1fd3c4..8e0534fa2cb3 100644
--- a/keyboards/jadookb/jkb65/config.h
+++ b/keyboards/jadookb/jkb65/config.h
@@ -21,7 +21,6 @@
 #define RGB_DISABLE_WHEN_USB_SUSPENDED
 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
 #define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_TIMEOUT 90000
 #define RGB_MATRIX_LED_PROCESS_LIMIT 4
 #define RGB_MATRIX_LED_FLUSH_LIMIT 26
 #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
diff --git a/keyboards/jadookb/jkb65/info.json b/keyboards/jadookb/jkb65/info.json
index e235e7bc4163..46e499237af6 100644
--- a/keyboards/jadookb/jkb65/info.json
+++ b/keyboards/jadookb/jkb65/info.json
@@ -10,7 +10,8 @@
         "pin": "F0"
     },
     "rgb_matrix": {
-        "driver": "WS2812"
+        "driver": "WS2812",
+        "timeout": 90000
     },
     "processor": "atmega32u4",
     "bootloader": "atmel-dfu",
diff --git a/keyboards/jones/v03/config.h b/keyboards/jones/v03/config.h
index 2599c6e2971d..212bad3b77cd 100644
--- a/keyboards/jones/v03/config.h
+++ b/keyboards/jones/v03/config.h
@@ -37,10 +37,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
 #define MATRIX_COL_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
 
-/* COL2ROW, ROW2COL*/
-// No need to define DIODE_DIRECTION for Jones' custom Round-Robin matrix.
-//#define DIODE_DIRECTION COL2ROW
-
 /* Audio */
 #ifdef AUDIO_ENABLE
   #define AUDIO_PIN C6
diff --git a/keyboards/jones/v03_1/config.h b/keyboards/jones/v03_1/config.h
index 55b5661b34c9..eae7755da60a 100644
--- a/keyboards/jones/v03_1/config.h
+++ b/keyboards/jones/v03_1/config.h
@@ -37,10 +37,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
 #define MATRIX_COL_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
 
-/* COL2ROW, ROW2COL*/
-// No need to define DIODE_DIRECTION for Jones' custom Round-Robin matrix.
-//#define DIODE_DIRECTION COL2ROW
-
 /* Audio */
 #ifdef AUDIO_ENABLE
   #define AUDIO_PIN C6
diff --git a/keyboards/junco/info.json b/keyboards/junco/info.json
index 9fd699ca4903..3762433765fb 100644
--- a/keyboards/junco/info.json
+++ b/keyboards/junco/info.json
@@ -8,6 +8,11 @@
         "pid": "0x4A13",
         "device_version": "1.0.0"
     },
+    "matrix_pins": {
+        "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"],
+        "rows": ["GP8", "GP9", "GP10", "GP11", "GP12"]
+    },
+    "diode_direction": "COL2ROW",
     "ws2812": {
         "pin": "GP15",
         "driver": "vendor"
@@ -15,6 +20,22 @@
     "rgb_matrix": {
         "driver": "WS2812"
     },
+    "encoder": {
+        "rotary": [
+            {"pin_a": "GP16", "pin_b": "GP17"},
+            {"pin_a": "GP14", "pin_b": "GP13"}
+        ]
+    },
+    "split": {
+        "encoder": {
+            "right": {
+                "rotary": [
+                    {"pin_a": "GP14", "pin_b": "GP13"},
+                    {"pin_a": "GP16", "pin_b": "GP17"}
+                ]
+            }
+        }
+    },
     "processor": "RP2040",
     "bootloader": "rp2040",
     "layouts": {
diff --git a/keyboards/junco/rev1/config.h b/keyboards/junco/rev1/config.h
index 95731fde01a0..713d651d4783 100644
--- a/keyboards/junco/rev1/config.h
+++ b/keyboards/junco/rev1/config.h
@@ -3,13 +3,6 @@
 
 #pragma once
 
-// Electrical Wiring Stuff
-#define MATRIX_ROW_PINS \
-    { GP8, GP9, GP10, GP11, GP12 }
-#define MATRIX_COL_PINS \
-    { GP2, GP3, GP4, GP5, GP6, GP7 }
-#define DIODE_DIRECTION COL2ROW
-
 // Split Keyboard Stuff
 #define EE_HANDS                 // Sets the keyboard’s handedness using EEPROM
 #define SERIAL_USART_FULL_DUPLEX // Use full duplex communication (TRRS)
@@ -24,19 +17,3 @@
         { 37, 37 } // 37 LEDs on each side
 
 #endif
-
-/* Rotary Encoders Definition */
-// Indexing goes from physical leftmost to rightmost
-// 0: left-half left | 1: left-half right | 2: right-half left | 3: right-half right
-#ifdef ENCODER_ENABLE
-
-#    define ENCODERS_PAD_A \
-        { GP16, GP14 }
-#    define ENCODERS_PAD_B \
-        { GP17, GP13 }
-#    define ENCODERS_PAD_A_RIGHT \
-        { GP14, GP16 }
-#    define ENCODERS_PAD_B_RIGHT \
-        { GP13, GP17 }
-
-#endif
diff --git a/keyboards/keebio/cepstrum/rev1/config.h b/keyboards/keebio/cepstrum/rev1/config.h
index 91e31d2caa8e..3ca3bef3444b 100644
--- a/keyboards/keebio/cepstrum/rev1/config.h
+++ b/keyboards/keebio/cepstrum/rev1/config.h
@@ -56,7 +56,6 @@
 
 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
 #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
-#define WS2812_DI_PIN GP18
 #define RGB_MATRIX_LED_COUNT 96
 #define RGB_DISABLE_WHEN_USB_SUSPENDED
 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keebio/cepstrum/rev1/info.json b/keyboards/keebio/cepstrum/rev1/info.json
index 75cbd41bd3e6..df98f9f12e8c 100644
--- a/keyboards/keebio/cepstrum/rev1/info.json
+++ b/keyboards/keebio/cepstrum/rev1/info.json
@@ -120,6 +120,9 @@
             ]
         }
     },
+    "ws2812": {
+        "pin": "GP18"
+    },
     "rgb_matrix": {
         "driver": "WS2812",
         "split_count": [48, 48],
diff --git a/keyboards/kmac/config.h b/keyboards/kmac/config.h
index bc647193cad4..dd12560fb6cc 100644
--- a/keyboards/kmac/config.h
+++ b/keyboards/kmac/config.h
@@ -32,9 +32,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_COL_PINS \
     { B6, C6, C7, F1, F0, B5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
 
-/* COL2ROW, ROW2COL*/
-//#define DIODE_DIRECTION
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
diff --git a/keyboards/kmac_pad/config.h b/keyboards/kmac_pad/config.h
index aaffc6c987f6..ee27565dcef6 100644
--- a/keyboards/kmac_pad/config.h
+++ b/keyboards/kmac_pad/config.h
@@ -30,9 +30,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { E2, D0, D1, D2, D3, D5 }
 #define MATRIX_COL_PINS { C7, C6, B6, B5 }
 
-/* COL2ROW, ROW2COL*/
-// #define DIODE_DIRECTION COL2ROW
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
diff --git a/keyboards/kmini/config.h b/keyboards/kmini/config.h
index 3c92c89423e0..c06925781f60 100755
--- a/keyboards/kmini/config.h
+++ b/keyboards/kmini/config.h
@@ -28,6 +28,3 @@
 */
 #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
 #define MATRIX_COL_PINS { }
-
-/* COL2ROW, ROW2COL*/
-//#define DIODE_DIRECTION
diff --git a/keyboards/kprepublic/bm80hsrgb/config.h b/keyboards/kprepublic/bm80hsrgb/config.h
index fdd928e6fe7b..c55999846e20 100644
--- a/keyboards/kprepublic/bm80hsrgb/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/config.h
@@ -23,7 +23,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
 //#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off
 //#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
 #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
 // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
diff --git a/keyboards/mmkzoo65/config.h b/keyboards/mmkzoo65/config.h
deleted file mode 100644
index 99f9e80b3ede..000000000000
--- a/keyboards/mmkzoo65/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-/* 将USB 轮询速率更改为 1000hz 并为精英游戏每次扫描使用更大的密钥*/
-#define USB_POLLING_INTERVAL_MS  2
diff --git a/keyboards/mmkzoo65/info.json b/keyboards/mmkzoo65/info.json
index 558d1fa0dc74..504e7b106129 100644
--- a/keyboards/mmkzoo65/info.json
+++ b/keyboards/mmkzoo65/info.json
@@ -7,7 +7,8 @@
         "vid": "0x7BA1",
         "pid": "0x6505",
         "device_version": "0.0.1",
-        "force_nkro": true
+        "force_nkro": true,
+        "polling_interval": 2
     },
     "matrix_pins": {
         "cols": ["B1", "F0", "F1", "F4", "F5", "F6", "F7", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7"],
diff --git a/keyboards/mode/m65ha_alpha/m65ha_alpha.c b/keyboards/mode/m65ha_alpha/m65ha_alpha.c
index 60a9a89927e4..afb093058f73 100644
--- a/keyboards/mode/m65ha_alpha/m65ha_alpha.c
+++ b/keyboards/mode/m65ha_alpha/m65ha_alpha.c
@@ -21,7 +21,6 @@ void board_init(void) {
     setPinInput(B10);
 }
 
-#define LED_PIN_ON_STATE 1
 void led_init_ports(void) {
 
 /** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator
diff --git a/keyboards/mode/m65hi_alpha/m65hi_alpha.c b/keyboards/mode/m65hi_alpha/m65hi_alpha.c
index 60a9a89927e4..afb093058f73 100644
--- a/keyboards/mode/m65hi_alpha/m65hi_alpha.c
+++ b/keyboards/mode/m65hi_alpha/m65hi_alpha.c
@@ -21,7 +21,6 @@ void board_init(void) {
     setPinInput(B10);
 }
 
-#define LED_PIN_ON_STATE 1
 void led_init_ports(void) {
 
 /** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator
diff --git a/keyboards/mode/m65s/m65s.c b/keyboards/mode/m65s/m65s.c
index 70aa52c46141..954644310bee 100644
--- a/keyboards/mode/m65s/m65s.c
+++ b/keyboards/mode/m65s/m65s.c
@@ -21,7 +21,6 @@ void board_init(void) {
     setPinInput(B10);
 }
 
-#define LED_PIN_ON_STATE 1
 void led_init_ports(void) {
 
 /** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator
diff --git a/keyboards/nullbitsco/snap/config.h b/keyboards/nullbitsco/snap/config.h
index b3b3bf57b2e2..e859b5b47d59 100644
--- a/keyboards/nullbitsco/snap/config.h
+++ b/keyboards/nullbitsco/snap/config.h
@@ -69,12 +69,6 @@
 #define RGBLIGHT_EFFECT_ALTERNATING
 #define RGBLIGHT_EFFECT_TWINKLE
 
-/* Optional encoder pins */
-#define ENCODERS_PAD_A { B3 }
-#define ENCODERS_PAD_B { B1 }
-#define ENCODERS_PAD_A_RIGHT { B4 }
-#define ENCODERS_PAD_B_RIGHT { B5 }
-
 /* Optional speaker pin */
 #define AUDIO_PIN B6
 
diff --git a/keyboards/nullbitsco/snap/info.json b/keyboards/nullbitsco/snap/info.json
index b16015c123ef..97b06b5b34fc 100644
--- a/keyboards/nullbitsco/snap/info.json
+++ b/keyboards/nullbitsco/snap/info.json
@@ -7,12 +7,26 @@
         "pid": "0x6063",
         "device_version": "0.0.1"
     },
+    "encoder": {
+        "rotary": [
+            {"pin_a": "B3", "pin_b": "B1"}
+        ]
+    },
     "rgblight": {
         "led_count": 10,
         "sleep": true,
         "led_map": [8, 9, 0, 1, 2, 6, 7, 3, 4, 5],
         "split_count": [5, 5]
     },
+    "split": {
+        "encoder": {
+            "right": {
+                "rotary": [
+                    {"pin_a": "B4", "pin_b": "B5"}
+                ]
+            }
+        }
+    },
     "ws2812": {
         "pin": "B2"
     },
diff --git a/keyboards/rgbkb/mun/config.h b/keyboards/rgbkb/mun/config.h
index 882f1ffda8e1..55a1c7367cff 100644
--- a/keyboards/rgbkb/mun/config.h
+++ b/keyboards/rgbkb/mun/config.h
@@ -9,8 +9,6 @@
 
 #pragma once
 
-#define MATRIX_IO_DELAY 5
-
 #define BUSY_WAIT
 #define BUSY_WAIT_INSTRUCTIONS 35 // Increase if two rows are pressed at the same time.
 #define GPIO_INPUT_PIN_DELAY 10
diff --git a/keyboards/rgbkb/mun/rev1/info.json b/keyboards/rgbkb/mun/rev1/info.json
index 93077a16adbb..e948f27a59e0 100644
--- a/keyboards/rgbkb/mun/rev1/info.json
+++ b/keyboards/rgbkb/mun/rev1/info.json
@@ -21,7 +21,8 @@
     },
     "matrix_pins": {
         "cols": ["A0", "B11", "B0", "B10", "B12", "B2", "A8"],
-        "rows": ["A1", "A3", "B3", "A13", "B15", null, null]
+        "rows": ["A1", "A3", "B3", "A13", "B15", null, null],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "encoder": {
diff --git a/keyboards/rgbkb/sol3/config.h b/keyboards/rgbkb/sol3/config.h
index d1b8b763fe66..9cc01fbf97ec 100644
--- a/keyboards/rgbkb/sol3/config.h
+++ b/keyboards/rgbkb/sol3/config.h
@@ -9,8 +9,6 @@
 
 #pragma once
 
-#define MATRIX_IO_DELAY 5
-
 #define BUSY_WAIT
 #define BUSY_WAIT_INSTRUCTIONS 35 // Increase if two rows are pressed at the same time.
 #define GPIO_INPUT_PIN_DELAY 10
diff --git a/keyboards/rgbkb/sol3/rev1/info.json b/keyboards/rgbkb/sol3/rev1/info.json
index 0b6d65d9727c..619acd45882a 100644
--- a/keyboards/rgbkb/sol3/rev1/info.json
+++ b/keyboards/rgbkb/sol3/rev1/info.json
@@ -21,7 +21,8 @@
     },
     "matrix_pins": {
         "cols": ["A6", "A7", "B0", "B2", "B1", "B9", "B3", "B4"],
-        "rows": ["B15", "A8", "A15", "B12", "A3", null]
+        "rows": ["B15", "A8", "A15", "B12", "A3", null],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "encoder": {
diff --git a/keyboards/sentraq/s60_x/default/config.h b/keyboards/sentraq/s60_x/default/config.h
index 1fa22a6e9db1..c265dc1ef128 100644
--- a/keyboards/sentraq/s60_x/default/config.h
+++ b/keyboards/sentraq/s60_x/default/config.h
@@ -6,7 +6,4 @@
 /* Locking resynchronize hack */
 #define LOCKING_RESYNC_ENABLE
 
-#define LOCKING_SUPPORT_ENABLE
-#define LOCKING_RESYNC_ENABLE
-
 #define NO_ACTION_ONESHOT
diff --git a/keyboards/smithrune/iron165r2/iron165r2.c b/keyboards/smithrune/iron165r2/iron165r2.c
index 7406c0029cf0..6f1606f89d3e 100644
--- a/keyboards/smithrune/iron165r2/iron165r2.c
+++ b/keyboards/smithrune/iron165r2/iron165r2.c
@@ -28,8 +28,6 @@ void board_init(void) {
 #endif
 }
 
-#define LED_PIN_ON_STATE 1
-
 bool led_update_kb(led_t led_state) {
     bool res = led_update_user(led_state);
     if(res) writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
diff --git a/keyboards/soda/pocket/config.h b/keyboards/soda/pocket/config.h
index 2387f9a000cc..ce02ad5d68dc 100644
--- a/keyboards/soda/pocket/config.h
+++ b/keyboards/soda/pocket/config.h
@@ -15,8 +15,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-#define LED_NUM_LOCK_PIN B15
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
diff --git a/keyboards/soda/pocket/info.json b/keyboards/soda/pocket/info.json
index c1396ab3a194..b15447c75e7b 100644
--- a/keyboards/soda/pocket/info.json
+++ b/keyboards/soda/pocket/info.json
@@ -9,6 +9,9 @@
         "device_version": "1.0.2",
         "force_nkro": true
     },
+    "indicators": {
+        "num_lock": "B15"
+    },
     "ws2812": {
         "pin": "C15"
     },
diff --git a/keyboards/tkw/grandiceps/config.h b/keyboards/tkw/grandiceps/config.h
index 05b2be5c574a..0e72e43a5757 100644
--- a/keyboards/tkw/grandiceps/config.h
+++ b/keyboards/tkw/grandiceps/config.h
@@ -17,8 +17,6 @@
 
 #define SELECT_SOFT_SERIAL_SPEED 1
 
-#define MATRIX_IO_DELAY 5
-
 #define RGBLIGHT_EFFECT_BREATHING
 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/tkw/grandiceps/info.json b/keyboards/tkw/grandiceps/info.json
index 787284ec0f27..c6f72f7823e1 100644
--- a/keyboards/tkw/grandiceps/info.json
+++ b/keyboards/tkw/grandiceps/info.json
@@ -17,7 +17,8 @@
     },
     "matrix_pins": {
         "cols": ["B0", "A7", "A3", "A5", "A4", "A2"],
-        "rows": ["B12", "A6", "B13", "B9", "B8"]
+        "rows": ["B12", "A6", "B13", "B9", "B8"],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "encoder": {
diff --git a/keyboards/tkw/stoutgat/v2/config.h b/keyboards/tkw/stoutgat/v2/config.h
index c9230daf5751..5327f1644b63 100644
--- a/keyboards/tkw/stoutgat/v2/config.h
+++ b/keyboards/tkw/stoutgat/v2/config.h
@@ -15,8 +15,6 @@
  */
 #pragma once
 
-#define MATRIX_IO_DELAY 5
-
 #define RGBLIGHT_EFFECT_BREATHING
 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/tkw/stoutgat/v2/info.json b/keyboards/tkw/stoutgat/v2/info.json
index d48e2b5381fc..659d125d862b 100644
--- a/keyboards/tkw/stoutgat/v2/info.json
+++ b/keyboards/tkw/stoutgat/v2/info.json
@@ -18,7 +18,8 @@
     },
     "matrix_pins": {
         "cols": ["B0", "A7", "A6", "A5", "A4", "A3", "A1", "A0", "C15", "C14", "C13", "A15", "B3", "B4", "B5"],
-        "rows": ["B6", "A2", "B7", "B9", "B8"]
+        "rows": ["B6", "A2", "B7", "B9", "B8"],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "encoder": {
diff --git a/keyboards/vertex/arc60h/config.h b/keyboards/vertex/arc60h/config.h
index 81b5383ef344..3cd8a8c93809 100644
--- a/keyboards/vertex/arc60h/config.h
+++ b/keyboards/vertex/arc60h/config.h
@@ -16,9 +16,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-#define LED_CAPS_LOCK_PIN C13
-#define LED_PIN_ON_STATE 0
-
 #define RGBLIGHT_EFFECT_BREATHING
 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/vertex/arc60h/info.json b/keyboards/vertex/arc60h/info.json
index baf91b0c61c8..3c6efb75ece0 100644
--- a/keyboards/vertex/arc60h/info.json
+++ b/keyboards/vertex/arc60h/info.json
@@ -9,6 +9,10 @@
         "device_version": "0.0.1",
         "force_nkro": true
     },
+    "indicators": {
+        "caps_lock": "C13",
+        "on_state": 0
+    },
     "rgblight": {
         "led_count": 9
     },
diff --git a/keyboards/woodkeys/meira/config.h b/keyboards/woodkeys/meira/config.h
index 3d10842a94d8..4b3491cfa138 100644
--- a/keyboards/woodkeys/meira/config.h
+++ b/keyboards/woodkeys/meira/config.h
@@ -22,7 +22,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROWS 4
 #define MATRIX_COLS 12
 
-/* COL2ROW, ROW2COL*/
-//#define DIODE_DIRECTION
-
 #define BACKLIGHT_PWM_MAP {2, 4, 8, 16, 40, 55, 70, 128, 200, 255}
diff --git a/keyboards/zvecr/split_blackpill/config.h b/keyboards/zvecr/split_blackpill/config.h
index 2b4df5819732..51a63c2c3810 100644
--- a/keyboards/zvecr/split_blackpill/config.h
+++ b/keyboards/zvecr/split_blackpill/config.h
@@ -15,8 +15,6 @@
  */
 #pragma once
 
-#define MATRIX_IO_DELAY 5
-
 #define SPLIT_HAND_PIN B3
 #define SELECT_SOFT_SERIAL_SPEED 0
 
diff --git a/keyboards/zvecr/split_blackpill/info.json b/keyboards/zvecr/split_blackpill/info.json
index 880a12bf4ac3..f845be58fffa 100644
--- a/keyboards/zvecr/split_blackpill/info.json
+++ b/keyboards/zvecr/split_blackpill/info.json
@@ -10,7 +10,8 @@
     },
     "matrix_pins": {
         "cols": ["B11", "B10", "B1", "B0", "A7", "A6"],
-        "rows": ["B15", "B14", "B13", "B12"]
+        "rows": ["B15", "B14", "B13", "B12"],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "split": {
diff --git a/keyboards/zvecr/zv48/config.h b/keyboards/zvecr/zv48/config.h
index 9a46bbcc8ef4..b3239beff32a 100644
--- a/keyboards/zvecr/zv48/config.h
+++ b/keyboards/zvecr/zv48/config.h
@@ -15,8 +15,6 @@
  */
 #pragma once
 
-#define MATRIX_IO_DELAY 5
-
 #define SPLIT_HAND_PIN B9
 //#define SELECT_SOFT_SERIAL_SPEED 0
 #define SERIAL_USART_SPEED 921600
diff --git a/keyboards/zvecr/zv48/info.json b/keyboards/zvecr/zv48/info.json
index d804d9ff445c..10e2bf0c3cb8 100644
--- a/keyboards/zvecr/zv48/info.json
+++ b/keyboards/zvecr/zv48/info.json
@@ -10,7 +10,8 @@
     },
     "matrix_pins": {
         "cols": ["B15", "B10", "B0", "A5", "A4", "A3"],
-        "rows": ["A10", "A15", "B3", "B4"]
+        "rows": ["A10", "A15", "B3", "B4"],
+        "io_delay": 5
     },
     "diode_direction": "COL2ROW",
     "encoder": {