feat(ui-new): a cursor mode that keeps the keyboard in view

The cursor marks the character it stands before instead of pushing the
text apart: underlined while typing, an inverted block while moving it.
The grid stays on screen with the special row turned into the key hints;
Up/Down move a word, Hold-Enter deletes before the cursor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-08 23:41:40 +02:00
co-authored by Claude Opus 5.5
parent e09a90b325
commit 9e24abcbeb
3 changed files with 100 additions and 46 deletions
+6 -3
View File
@@ -208,11 +208,14 @@ shows Latin instead (see `KB_ACCENT_VARIANTS` below).
Shift is one-shot by default (capitalises the next letter, including whichever
candidate a T9 multi-tap cycle settles on) or Hold-Enter to toggle caps-lock;
Hold-Clear erases the whole field. **UP from the top letter row** enters
**cursor mode** (LEFT/RIGHT move the insertion point; UP/DOWN jump to
start/end, then — pressed again once already at that boundary — continue on
**cursor mode** (LEFT/RIGHT move the insertion point a codepoint; UP/DOWN a
word back / on, then — pressed again once already at that end — continue on
to the special row / letter grid, the same destinations the plain grid wrap
used to reach directly) so edits/inserts can target any point in the typed
text, not just the end; Enter/Cancel exit immediately from anywhere.
text, not just the end. The grid stays drawn, unselected, with the special
row replaced by the key hints; the cursor is an inverted cell instead of the
typing underline. Hold-Enter deletes before the cursor without leaving;
Enter/Cancel exit immediately from anywhere.
Hold-Enter on a Latin-page letter cell with accented variants instead opens
the **accent popup**: one horizontal row of `KB_ACCENT_VARIANTS[group]`
(a UTF-8 string per base letter, same shape as a T9 group string), LEFT/RIGHT
+22 -1
View File
@@ -73,7 +73,28 @@ history). Pick a quick message or **Custom message** for the keyboard.
### The keyboard
The on-screen keyboard is a letter grid (or a phone-style T9 keypad, Settings ›
Keyboard › Layout). Up from the top row moves the cursor through the text.
Keyboard › Layout).
#### Moving the cursor
While you type, a line under the text marks where the next letter goes. To
fix something earlier in the message, press **Up** from the top row of keys.
The cursor turns into a block on the letter it stands before, the keys stay
on screen without a selection, and the bottom row shows what the arrows do
now (`<> char ^v word`):
| Key | Does |
| --- | ---- |
| **Left / Right** | Moves one letter |
| **Up** | Back to the start of the word (the one before, if already there) |
| **Down** | On to the end of the word (the next one, if already there) |
| **Hold Enter** | Deletes the letter before the cursor |
| **Enter**, **Back** | Back to the keys; typing carries on at the cursor |
Up at the very start of the text goes to the bottom row of keys, and Down at
the very end goes back to the top row. So if you pressed Up by mistake, one
Down returns you where you were. The text never shifts around the cursor:
what you see is what will be sent.
Accented letters don't need a language setting: **hold Enter** on the base
letter and pick from its variants, for example `a` → `á à â ä å ą…`, `z` →