Replies: 1 comment
-
|
For me the current implementation feels most natural because it behaves like most text-inputs. "speeding up" typo recovery would not reflect real world typing. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Current Behavior
When a user makes a typo, the input buffer stores every incorrect character literally. For example, if the target word is hello and the user types he123abc12, the buffer now holds 10 characters. To recover, the user must either:
Press Backspace 5 times to delete each extraneous character one by one, or
Use Ctrl+Backspace multiple times, which stops at each whitespace/segment boundary — still requiring several presses to fully clear the errored sequence.
The Problem / Pain Point
This behavior disproportionately penalizes fast typists. The more aggressive a typo (e.g., accidentally holding a key or a hand misplacement), the more keystrokes are needed to recover — which is precisely when cognitive load is already highest.
The core issue is that Ctrl+Backspace's word-boundary logic treats the error buffer the same way a text editor treats a sentence. But in a typing test context, the meaningful unit is not a "word" in the linguistic sense — it is the target word boundary. Any character typed beyond that boundary is noise, not content.
Recovery cost should be proportional to the original mistake, not to its character count. Right now, a 10-character typo costs 10× more to fix than a 1-character typo. That asymmetry breaks flow state.
Proposed Solution
Introduce a smarter Ctrl+Backspace behavior (optionally gated behind a setting like smartBackspace) that works as follows:
If the current input contains only valid characters (a prefix of the target word): behave exactly as today — delete back to the previous word boundary.
If the current input contains characters past the valid prefix (i.e., the error sequence has diverged from the target): erase the entire erroneous segment in a single keystroke, leaving only the longest valid prefix intact.
Concretely: for target hello, if the buffer is he123abc12, one Ctrl+Backspace press should leave he — the last valid prefix — and discard everything after it.
This could also be exposed as a standalone option, e.g.:
⚙ Setting: Ctrl+Backspace mode → options: word (current default) | smart (new) | full word (clears the entire current word attempt)
The full word variant would be the most aggressive option — clearing everything typed for the current word on a single press — useful for users who prefer to restart a word rather than salvage a partial match.
Happy to open a PR if there's consensus on the desired behavior. Would love to hear from maintainers and the community on which variant feels most natural. Thanks for considering it!
Beta Was this translation helpful? Give feedback.
All reactions