diff --git a/loader/fixups.c b/loader/fixups.c index cf5e60cd..41b07adb 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -39,6 +39,28 @@ SYS_INIT(disable_bootloader_mpu, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAU SYS_INIT(disable_mpu_rasr_xn, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #endif +#if defined(CONFIG_INPUT) +#include +#include +#include + +typedef void (*zephyr_input_callback_t)(struct input_event *evt, void *user_data); + +static zephyr_input_callback_t zephyr_input_cb = NULL; + +void zephyr_input_register_callback(zephyr_input_callback_t cb) { + zephyr_input_cb = cb; +} + +static void zephyr_input_callback(struct input_event *evt, void *user_data) { + if (zephyr_input_cb) { + zephyr_input_cb(evt, user_data); + } +} + +INPUT_CALLBACK_DEFINE(NULL, zephyr_input_callback, NULL); +#endif + #if defined(CONFIG_BOARD_ARDUINO_GIGA_R1) && defined(CONFIG_VIDEO) #include #include diff --git a/loader/llext_exports.c b/loader/llext_exports.c index f1370a92..158dfb32 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -134,6 +134,9 @@ FORCE_EXPORT_SYM(video_buffer_alloc); FORCE_EXPORT_SYM(video_buffer_release); FORCE_EXPORT_SYM(video_set_ctrl); #endif +#if defined(CONFIG_INPUT) +FORCE_EXPORT_SYM(zephyr_input_register_callback); +#endif #if defined(CONFIG_SHARED_MULTI_HEAP) FORCE_EXPORT_SYM(shared_multi_heap_aligned_alloc); @@ -239,4 +242,4 @@ FORCE_EXPORT_SYM(__aeabi_dcmpge); #if defined (CONFIG_CPP) FORCE_EXPORT_SYM(__cxa_pure_virtual); -#endif \ No newline at end of file +#endif