Improve two-thumb typing settings#6
Merged
Conversation
Group the screen around user-facing behavior, remove unimplemented controls from the visible/searchable settings registry, and rename confusing options with clearer labels. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace low-level two-thumb controls with user-facing spacing and backspace behavior selectors, derive multipart internals from non-normal spacing, and add whole-word backspace handling. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Drop the old tap-during-swipe preference and suppression path now that combining and multi-part word composition cover the useful tap/swipe behavior without the flag. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Color-code raw points by pointer, draw per-finger paths, mark tap-like runs and start/end points, and show synthetic hint points as blue crosses for easier two-thumb diagnosis. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep gesture debug fragments visible during combining mode, add typed tap points to the overlay, and clear the overlay when combining mode ends so fragmented words can be inspected end-to-end. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Persist accumulated debug fragments until the next word starts, darken later fragments progressively, and log fragment/tap/clear events while debug points are enabled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep accumulated gesture debug fragments visible after commit, clear them on the first tap or swipe after a space boundary, and use stronger fragment color cycling with progressive darkening. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When gesture debug points are enabled, log top candidates, merge state, seed state, and final composed text to make bad multi-part recognition reproducible from logcat. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When a second finger lands during an active gesture, keep it pending as a tap fragment unless it moves far enough to become a real gesture; commit pending taps as separate letter fragments so they don't distort the active swipe path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Avoid promoting intended tap fragments into gestures because of small finger jitter; promote only after the pending tap leaves its original key. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR refactors the “Two-thumb typing (experimental)” feature set by consolidating multiple low-level toggles into clearer mode selectors, removing obsolete tap-during-swipe controls, enhancing gesture debug overlay behavior, and adding an opt-in “auto-space only after swipes” option that affects combining-mode auto-commit behavior.
Changes:
- Reworked two-thumb typing settings UI into synthetic “Spacing mode” and “Backspace behavior” selectors, and removed obsolete tap-during-swipe preferences.
- Added
combining_autospace_only_after_gesturesetting and updated combining-mode commit/indicator behavior + unit tests. - Improved gesture debug overlay behavior (fragment preservation across gestures while combining, richer overlay rendering, and more debug logging when enabled).
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/TWO_THUMB_TYPING_INTERNALS.md | Removes tap-during-swipe references and updates internals notes to match current architecture. |
| docs/FEATURES.md | Updates public documentation to reflect removal of tap-during-swipe and clarifies tap/swipe combining wording. |
| dev-log.md | Adds a detailed development log of the settings rework, tap-during-swipe removal, and gesture-gated autospace work. |
| app/src/test/java/helium314/keyboard/settings/SettingsContainerTest.kt | Adds a registration test for the new autospace gating preference key. |
| app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt | Adds tests for gesture-gated autospace behavior and autospace indicator suppression; wires a shared MainKeyboardView mock. |
| app/src/main/res/values/strings.xml | Adds new two-thumb settings strings and removes tap-during-swipe strings; adds strings for the new autospace gating toggle. |
| app/src/main/java/helium314/keyboard/settings/SettingsContainer.kt | Adds synthetic keys (SettingsWithoutKey) for spacing/backspace mode selectors. |
| app/src/main/java/helium314/keyboard/settings/screens/TwoThumbTypingScreen.kt | Implements the new settings grouping and the spacing/backspace mode selector preferences. |
| app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java | Removes tap-during-swipe fields; adds autospace gating field; forces multipart flags on for non-normal two-thumb spacing modes. |
| app/src/main/java/helium314/keyboard/latin/settings/Settings.java | Removes tap-during-swipe pref keys; adds PREF_COMBINING_AUTOSPACE_ONLY_AFTER_GESTURE. |
| app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt | Removes tap-during-swipe defaults; adds autospace gating default; changes default autospace suggestion mode. |
| app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java | Adds gesture-gated autospace behavior, adjusts combining indicator logic, adds debug-overlay clearing behavior, and adds debug logging for gesture candidates/merge. |
| app/src/main/java/helium314/keyboard/keyboard/PointerTracker.java | Removes tap-during-swipe suppression; adds tap-fragment handling during an in-progress gesture; adjusts overlay clearing behavior. |
| app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java | Exposes combining/debug overlay state via new DrawingProxy methods. |
| app/src/main/java/helium314/keyboard/keyboard/internal/GestureDebugPointsDrawingPreview.java | Enhances debug overlay rendering (fragment coloring, markers, synthetic crosses) and changes snapshot storage to accumulate fragments. |
| app/src/main/java/helium314/keyboard/keyboard/internal/DrawingProxy.java | Adds isCombiningModeActiveForDebug() and hasGestureDebugPoints() to support improved overlay behavior. |
| Agents.md | Updates feature list description to remove tap-during-swipe mention. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Tests
Manual testing