fix(color): add quick menu key mapping for PA01 and ST16 (#6734)

This commit is contained in:
philmoz
2025-10-29 08:14:11 +10:00
committed by GitHub
parent 230bf579dc
commit 121e80c004
3 changed files with 31 additions and 18 deletions
-1
View File
@@ -45,4 +45,3 @@ const char* keysGetLabel(EnumKeys key)
{
return _key_labels[key];
}
+29 -17
View File
@@ -446,6 +446,33 @@ static void transpose_trims(uint32_t *keys)
}
#endif
// Mapping for:
// - quick menu shortcut key on radios with limited keys
// - radios with single PAGE key
// - radios with a SHIFT key
uint16_t keyMapping(uint16_t event)
{
#if defined(RADIO_PA01)
if (event == EVT_KEY_BREAK(KEY_MODEL)) return EVT_KEY_BREAK(KEY_SYS);
#endif
#if defined(RADIO_ST16)
if (event == EVT_KEY_LONG(KEY_PAGEDN)) return EVT_KEY_BREAK(KEY_SYS);
#endif
#if defined(KEYS_GPIO_REG_PAGEDN) && !defined(KEYS_GPIO_REG_PAGEUP)
// Radio with single PAGEDN key
if (event == EVT_KEY_LONG(KEY_PAGEDN)) {
// Convert long press PAGEDN to short press PAGEUP
killEvents(KEY_PAGEDN);
return EVT_KEY_BREAK(KEY_PAGEUP);
}
#endif
#if defined(KEYS_GPIO_REG_SHIFT)
// SHIFT key should not trigger REPT events
if (event == EVT_KEY_REPT(KEY_SHIFT)) return 0;
#endif
return event;
}
bool keysPollingCycle()
{
uint32_t trims_input;
@@ -466,23 +493,8 @@ bool keysPollingCycle()
for (int i = 0; i < MAX_KEYS; i++) {
event_t evt = keys[i].input(keys_input & (1 << i));
if (evt) {
evt |= i;
#if defined(KEYS_GPIO_REG_PAGEDN) && !defined(KEYS_GPIO_REG_PAGEUP)
// Radio with single PAGEDN key
if (evt == EVT_KEY_LONG(KEY_PAGEDN)) {
// Convert long press PAGEDN to short press PAGEUP
evt = EVT_KEY_BREAK(KEY_PAGEUP);
killEvents(KEY_PAGEDN);
}
#endif
#if defined(KEYS_GPIO_REG_SHIFT)
// SHIFT key should not trigger REPT events
if (evt != EVT_KEY_REPT(KEY_SHIFT)) {
pushEvent(evt);
}
#else
pushEvent(evt);
#endif
evt = keyMapping(evt | i);
if (evt) pushEvent(evt);
}
}
+2
View File
@@ -70,7 +70,9 @@ enum PhysicalKeys
static bool fct_state[4] = {false, false, false, false};
static uint32_t keyState = 0;
#if !defined(BOOT)
static uint32_t nonReadCount = 0;
#endif
static uint32_t _readKeyMatrix()
{