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:\"", const char* const KeyboardEntryActivity::keyboardShift[NUM_ROWS] = {"~!@#$%^&*()_+", "QWERTYUIOP{}|", "ASDFGHJKL:\"",
"ZXCVBNM<>?", "SPECIAL ROW"}; "ZXCVBNM<>?", "SPECIAL ROW"};
namespace {
constexpr unsigned long capsMs = 1000;
}
void KeyboardEntryActivity::taskTrampoline(void* param) { void KeyboardEntryActivity::taskTrampoline(void* param) {
auto* self = static_cast<KeyboardEntryActivity*>(param); auto* self = static_cast<KeyboardEntryActivity*>(param);
self->displayTaskLoop(); self->displayTaskLoop();
@ -221,7 +225,12 @@ void KeyboardEntryActivity::loop() {
} }
// Selection // 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(); handleKeyPress();
updateRequired = true; 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); 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; int getRowLength(int row) const;
void render() const; void render() const;
void renderItemWithSelector(int x, int y, const char* item, bool isSelected) const; void renderItemWithSelector(int x, int y, const char* item, bool isSelected) const;
void onCapsHeld();
void waitForCapsRelease();
}; };