This commit is contained in:
Justin 2026-01-19 21:55:47 +10:00 committed by GitHub
commit 4014f43d1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 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();
@ -94,6 +98,7 @@ void KeyboardEntryActivity::handleKeyPress() {
if (selectedCol >= SHIFT_COL && selectedCol < SPACE_COL) {
// Shift toggle
shiftActive = !shiftActive;
updateRequired = true;
return;
}
@ -233,7 +238,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;
}
@ -360,3 +370,13 @@ 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;
updateRequired = true;
}
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();
};