feat: add shift lock to KeyboardEntryActivity (#513)

## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)
Add shift lock to KeyboardEntryActivity


https://github.com/user-attachments/assets/00973866-6b87-4d5b-a3bf-6f4f85a5e0a6

(Apologies for the graininess of the video - I was struggling to get it
below 10mb)

* **What changes are included?**
  * Relax shift disable criteria to include any character
* Add third shift option `LOCK` which is not disabled on character
entry.


## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### AI Usage

While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? _**NO**_
This commit is contained in:
James Whyte
2026-02-05 13:02:43 +00:00
committed by GitHub
parent d35bda8023
commit 20c5d8ccf8
2 changed files with 13 additions and 9 deletions

View File

@@ -70,7 +70,7 @@ class KeyboardEntryActivity : public Activity {
// Keyboard state
int selectedRow = 0;
int selectedCol = 0;
bool shiftActive = false;
int shiftState = 0; // 0 = lower case, 1 = upper case, 2 = shift lock)
// Callbacks
OnCompleteCallback onComplete;
@@ -81,6 +81,7 @@ class KeyboardEntryActivity : public Activity {
static constexpr int KEYS_PER_ROW = 13; // Max keys per row (rows 0 and 1 have 13 keys)
static const char* const keyboard[NUM_ROWS];
static const char* const keyboardShift[NUM_ROWS];
static const char* const shiftString[3];
// Special key positions (bottom row)
static constexpr int SPECIAL_ROW = 4;