- VirtualKeyboard::handleLongPress VK_ESC invoked the onTextEntered
member std::function directly, but that callback path reaches
OnScreenKeyboardModule::stop(), which destroys the keyboard - and
with it the std::function whose invocation is still on the stack.
handlePress and submitText already deliberately copy-and-clear before
invoking for exactly this reason (CannedMessageModule documents the
same hazard); do the same here.
- OnScreenKeyboardModule's keyboard becomes unique_ptr, replacing the
delete-in-destructor / delete-then-new-in-start / delete-in-stop
bookkeeping that runs on every keyboard open/close. The
NotificationRenderer legacy hook receives a non-owning raw pointer,
as before.