fix(screen): route remote input to MUI directly, not through the InputBroker

MUI builds never construct an InputBroker — Modules.cpp skips it (along
with SystemCommands and buzzer feedback) whenever displaymode is COLOR —
so AdminMessage.send_input_event hit AdminModule's null-broker guard and
died: remote control was silently inert on every MUI device. AdminModule
now offers the event to graphics::muiInjectInputEvent first, which maps it
onto device-ui's virtual LVGL devices and reports whether it consumed it,
falling through to the broker on BaseUI builds.

Verified on a T-Deck with a headless mirror client: injecting USER_PRESS
at (35,105) navigates MUI to Group Channels.
This commit is contained in:
James Rich committed 2026-11-03 07:39:17 -06:00
1 parent b12e933782
commit 7653316083
3 files changed
+64 -58

No files matched your search

+8
View File
@@ -2185,6 +2185,14 @@ void AdminModule::handleSendInputEvent(const meshtastic_AdminMessage_InputEvent
// Wake the device if asleep
powerFSM.trigger(EVENT_INPUT);
#if HAS_SCREEN_MIRROR && defined(MESHTASTIC_MUI_MIRROR)
// MUI builds never construct an InputBroker (Modules.cpp skips it when
// displaymode is COLOR), so remote input reaches the LVGL UI directly.
if (graphics::muiInjectInputEvent(inputEvent.event_code, inputEvent.kb_char, inputEvent.touch_x, inputEvent.touch_y))
return;
#endif
#if !defined(MESHTASTIC_EXCLUDE_INPUTBROKER)
// Inject the event through InputBroker
if (inputBroker) {