// inst — это индекс устройства (например, 0).
// DT_INST_CHILD(inst, input_keymap) получает внутренний ID дочернего узла input_keymap.
#define CH455G_KEYMAP_INIT(inst) \
static const uint16_t ch455g_keymap_##inst[] = \
DT_PROP(DT_INST_CHILD(inst, input_keymap), keymap);
DT_INST_FOREACH_STATUS_OKAY(CH455G_KEYMAP_INIT)
#define CH455G_KBD_DEVICE(inst) \
static const struct ch455g_config ch455g_cfg_##inst = { \
.i2c = I2C_DT_SPEC_GET(DT_DRV_INST(inst)), \
.int_gpio = GPIO_DT_SPEC_GET(DT_DRV_INST(inst), int_gpios), \
}; \
static struct ch455g_data ch455g_data_##inst = { \
.keymap = (uint16_t *)ch455g_keymap_##inst, \
.keymap_size = ARRAY_SIZE(ch455g_keymap_##inst), \
}; \
DEVICE_DT_INST_DEFINE(inst, ch455g_kbd_init, NULL, \
&ch455g_data_##inst, &ch455g_cfg_##inst, \
POST_KERNEL, CONFIG_APPLICATION_INIT_PRIORITY, NULL);
DT_INST_FOREACH_STATUS_OKAY(CH455G_KBD_DEVICE)