From d98612a2ca43c0892a8785933e0baafd388b04e6 Mon Sep 17 00:00:00 2001 From: HarukiToreda <116696711+HarukiToreda@users.noreply.github.com> Date: Thu, 22 May 2025 01:42:08 -0400 Subject: [PATCH] Added select as the rotary encoder button press --- src/input/InputBroker.h | 2 ++ src/modules/CannedMessageModule.cpp | 24 +++++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/input/InputBroker.h b/src/input/InputBroker.h index db7524bb0..b993d8c1b 100644 --- a/src/input/InputBroker.h +++ b/src/input/InputBroker.h @@ -19,6 +19,8 @@ #define INPUT_BROKER_MSG_FN_SYMBOL_ON 0xf1 #define INPUT_BROKER_MSG_FN_SYMBOL_OFF 0xf2 #define INPUT_BROKER_MSG_BLUETOOTH_TOGGLE 0xAA +#define INPUT_BROKER_MSG_SELECT 0x0D // Enter key / rotary encoder click + typedef struct _InputEvent { const char *source; diff --git a/src/modules/CannedMessageModule.cpp b/src/modules/CannedMessageModule.cpp index dcc825c00..25e9ac3b8 100644 --- a/src/modules/CannedMessageModule.cpp +++ b/src/modules/CannedMessageModule.cpp @@ -251,9 +251,23 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event) return 0; // Ignore input while sending } static int lastDestIndex = -1; // Cache the last index - bool selectionChanged = false; // Track if UI needs redrawing - bool isUp = event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP); - bool isDown = event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN); + bool isUp = false; + bool isDown = false; + bool isSelect = false; + + // Accept both inputEvent and kbchar from rotary encoder or CardKB + if (event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP) || + event->kbchar == INPUT_BROKER_MSG_UP) { + isUp = true; + } + if (event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN) || + event->kbchar == INPUT_BROKER_MSG_DOWN) { + isDown = true; + } + if (event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT) || + event->kbchar == INPUT_BROKER_MSG_SELECT) { + isSelect = true; + } if (this->destSelect == CANNED_MESSAGE_DESTINATION_TYPE_NODE) { if (event->kbchar >= 32 && event->kbchar <= 126) { @@ -327,7 +341,7 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event) screen->forceDisplay(); shouldRedraw = false; } - if (event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT)) { + if (isSelect) { if (this->destIndex < static_cast(this->activeChannelIndices.size())) { this->dest = NODENUM_BROADCAST; this->channel = this->activeChannelIndices[this->destIndex]; @@ -383,7 +397,7 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event) } } } - if (event->inputEvent == static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT)) { + if (isSelect) { if (strcmp(this->messages[this->currentMessageIndex], "[Select Destination]") == 0) { returnToCannedList = true;