mirror of
https://github.com/armel/uv-k1-k5v3-firmware-custom.git
synced 2026-10-02 03:15:37 +00:00
Add F + UP/DOWN shortcuts to jump to first/last RX/TX log entry
This commit is contained in:
1 parent
e908eda1da
commit
3e6e7c87b5
1 file changed
+49
-5
+49
-5
@@ -471,6 +471,18 @@ static void RXTX_LOG_StepViewCacheScan(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
RXTX_LOG_StopViewScan();
|
RXTX_LOG_StopViewScan();
|
||||||
|
|
||||||
|
#ifndef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
||||||
|
// A jump-to-end aims past the last row on purpose: when the whole
|
||||||
|
// scan was spent skipping, the leftover skip locates the actual
|
||||||
|
// last row, so retarget the view there.
|
||||||
|
if (gViewCacheCount == 0 &&
|
||||||
|
gViewScanSkip > 0 &&
|
||||||
|
gViewScanSkip < gViewCacheStart) {
|
||||||
|
RXTX_LOG_StartCursorView((uint16_t)(gViewCacheStart - gViewScanSkip - 1u));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
||||||
@@ -545,6 +557,20 @@ static void RXTX_LOG_RequestWrapToLast(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void RXTX_LOG_GoToLastRow(void)
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
||||||
|
if (gViewTotalKnown && gViewTotalRows > 1u)
|
||||||
|
RXTX_LOG_StartCursorView(gViewTotalRows - 1u);
|
||||||
|
else
|
||||||
|
RXTX_LOG_RequestWrapToLast();
|
||||||
|
#else
|
||||||
|
// Aim past the end; the scan-completion retarget in StepViewCacheScan
|
||||||
|
// snaps the cursor back to the last existing row.
|
||||||
|
RXTX_LOG_StartCursorView(RXTX_LOG_SLOT_COUNT - 1u);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static bool RXTX_LOG_ViewCacheCovers(uint16_t indexFromNewest)
|
static bool RXTX_LOG_ViewCacheCovers(uint16_t indexFromNewest)
|
||||||
{
|
{
|
||||||
return gViewCacheFilter == gLogFilter &&
|
return gViewCacheFilter == gLogFilter &&
|
||||||
@@ -834,21 +860,39 @@ void RXTX_LOG_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
|
case KEY_F:
|
||||||
|
// GENERIC_Key_F only toggles the flag on the MAIN screen, so
|
||||||
|
// handle it here: F arms a go-to-first/last modifier for UP/DOWN.
|
||||||
|
if (bKeyPressed && !bKeyHeld) {
|
||||||
|
gWasFKeyPressed = !gWasFKeyPressed;
|
||||||
|
if (gWasFKeyPressed)
|
||||||
|
gKeyInputCountdown = key_input_timeout_500ms;
|
||||||
|
gUpdateStatus = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case KEY_UP:
|
case KEY_UP:
|
||||||
if (gLogCursor > 0) {
|
if (gWasFKeyPressed) {
|
||||||
|
HideFKeyIcon();
|
||||||
|
RXTX_LOG_StartCursorView(0);
|
||||||
|
} else if (gLogCursor > 0) {
|
||||||
RXTX_LOG_StartCursorView(gLogCursor - 1u);
|
RXTX_LOG_StartCursorView(gLogCursor - 1u);
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
||||||
else if (gViewTotalKnown && gViewTotalRows > 1u) {
|
else {
|
||||||
RXTX_LOG_StartCursorView(gViewTotalRows - 1u);
|
RXTX_LOG_GoToLastRow();
|
||||||
} else {
|
|
||||||
RXTX_LOG_RequestWrapToLast();
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
gUpdateDisplay = true;
|
gUpdateDisplay = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_DOWN:
|
case KEY_DOWN:
|
||||||
|
if (gWasFKeyPressed) {
|
||||||
|
HideFKeyIcon();
|
||||||
|
RXTX_LOG_GoToLastRow();
|
||||||
|
gUpdateDisplay = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
#ifdef ENABLE_FEAT_F4HWN_RXTX_LOG_WRAP
|
||||||
gViewWrapPending = false;
|
gViewWrapPending = false;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in new issue
Block a user