feat: hold confirm/select for caps

This commit is contained in:
Justin Luque 2026-01-15 19:15:16 -05:00
parent 21277e03eb
commit 3937e949bf
No known key found for this signature in database
GPG Key ID: 5D19058FC4BE922F
2 changed files with 22 additions and 1 deletions

View File

@ -13,6 +13,10 @@ const char* const KeyboardEntryActivity::keyboard[NUM_ROWS] = {
const char* const KeyboardEntryActivity::keyboardShift[NUM_ROWS] = {"~!@#$%^&*()_+", "QWERTYUIOP{}|", "ASDFGHJKL:\"",
"ZXCVBNM<>?", "SPECIAL ROW"};
namespace {
constexpr unsigned long capsMs = 1000;
}
void KeyboardEntryActivity::taskTrampoline(void* param) {
auto* self = static_cast<KeyboardEntryActivity*>(param);
self->displayTaskLoop();
@ -221,7 +225,12 @@ void KeyboardEntryActivity::loop() {
}
// Selection
if (mappedInput.wasPressed(MappedInputManager::Button::Confirm)) {
if (mappedInput.isPressed(MappedInputManager::Button::Confirm) && mappedInput.getHeldTime() >= capsMs) {
onCapsHeld();
return;
}
if (mappedInput.wasPressed(MappedInputManager::Button::Confirm) && mappedInput.getHeldTime() < capsMs) {
handleKeyPress();
updateRequired = true;
}
@ -348,3 +357,12 @@ void KeyboardEntryActivity::renderItemWithSelector(const int x, const int y, con
}
renderer.drawText(UI_10_FONT_ID, x, y, item);
}
void KeyboardEntryActivity::onCapsHeld() {
waitForCapsRelease();
shiftActive = !shiftActive;
}
void KeyboardEntryActivity::waitForCapsRelease() {
while (mappedInput.isPressed(MappedInputManager::Button::Confirm)) delay(50);
}

View File

@ -96,4 +96,7 @@ class KeyboardEntryActivity : public Activity {
int getRowLength(int row) const;
void render() const;
void renderItemWithSelector(int x, int y, const char* item, bool isSelected) const;
void onCapsHeld();
void waitForCapsRelease();
};