got switching with L/R working upon keyup

This commit is contained in:
Narayan
2025-08-22 00:18:13 -07:00
parent 4958c5db3f
commit 8f5a55c27b

View File

@@ -302,6 +302,10 @@ int main(int argc, char **argv)
volatile int error = 0; volatile int error = 0;
struct dirList_t dirList = { 0 }; struct dirList_t dirList = { 0 };
/* ignore key release of L/R if L+R or L+down was pressed */
bool keyLComboPressed = false;
bool keyRComboPressed = false;
gfxInitDefault(); gfxInitDefault();
consoleInit(GFX_TOP, &topScreenLog); consoleInit(GFX_TOP, &topScreenLog);
consoleInit(GFX_TOP, &topScreenInfo); consoleInit(GFX_TOP, &topScreenInfo);
@@ -353,6 +357,7 @@ int main(int argc, char **argv)
{ {
u32 kDown; u32 kDown;
u32 kHeld; u32 kHeld;
u32 kUp;
static u64 mill = 0; static u64 mill = 0;
gfxFlushBuffers(); gfxFlushBuffers();
@@ -362,6 +367,7 @@ int main(int argc, char **argv)
hidScanInput(); hidScanInput();
kDown = hidKeysDown(); kDown = hidKeysDown();
kHeld = hidKeysHeld(); kHeld = hidKeysHeld();
kUp = hidKeysUp();
consoleSelect(&bottomScreen); consoleSelect(&bottomScreen);
@@ -391,6 +397,11 @@ int main(int argc, char **argv)
else else
puts("Playing"); puts("Playing");
keyLComboPressed = true;
// distinguish between L+R and L+Up
if (KEY_R & kDown) {
keyRComboPressed = true;
}
continue; continue;
} }
@@ -399,6 +410,7 @@ int main(int argc, char **argv)
{ {
consoleSelect(&topScreenLog); consoleSelect(&topScreenLog);
showControls(); showControls();
keyLComboPressed = true;
continue; continue;
} }
@@ -544,7 +556,16 @@ int main(int argc, char **argv)
} }
} }
if (kDown & KEY_ZR && fileNum < fileMax) { // ignore R release if key combo with R used
bool keyRActivation = false;
if (kUp & KEY_R) {
if (!keyRComboPressed) {
keyRActivation = true;
}
keyRComboPressed = false;
}
bool goToNextFile = (kDown & KEY_ZR) || keyRActivation;
if (goToNextFile && fileNum < fileMax) {
fileNum += 1; fileNum += 1;
if(fileNum >= MAX_LIST && fileMax - fileNum >= 0 && if(fileNum >= MAX_LIST && fileMax - fileNum >= 0 &&
from < fileMax - MAX_LIST) from < fileMax - MAX_LIST)
@@ -559,9 +580,17 @@ int main(int argc, char **argv)
if(listDir(from, MAX_LIST, fileNum, dirList) < 0) err_print("Unable to list directory."); if(listDir(from, MAX_LIST, fileNum, dirList) < 0) err_print("Unable to list directory.");
continue; continue;
} }
// ignore L release if key combo with L used
bool keyLActivation = false;
if (kUp & KEY_L) {
if (!keyLComboPressed) {
keyLActivation = true;
}
keyLComboPressed = false;
}
bool goToPrevFile = (kDown & KEY_ZR) || keyLActivation;
// don't go to ../ // don't go to ../
if (kDown & KEY_ZL && fileNum > 1) { if (goToPrevFile && fileNum > 1) {
fileNum -= 1; fileNum -= 1;
if(fileMax - fileNum > MAX_LIST-2 && from != 0) if(fileMax - fileNum > MAX_LIST-2 && from != 0)
from--; from--;