feat(osk): modern touch press model + backspace auto-repeat#166
Draft
doodlewind wants to merge 1 commit into
Draft
feat(osk): modern touch press model + backspace auto-repeat#166doodlewind wants to merge 1 commit into
doodlewind wants to merge 1 commit into
Conversation
doodlewind
force-pushed
the
feat/osk-touch-model
branch
2 times, most recently
from
July 23, 2026 12:55
cd3d2ee to
095d242
Compare
The OSK's touch path was a contact-edge tap: a key fired the instant a finger landed, with no visual press state, no way to slide off a fat- fingered key, and no drag retargeting. Replace it with the gesture layer's press model: - down press-highlights the key under the finger (the existing native focus:/active: class variants — zero new class literals), - dragging retargets across keys, sliding off the panel cancels, - the key commits on release-inside (the modern-keyboard contract), - backspace is the exception: fires on the down and auto-repeats while held (0.4 s delay, 0.1 s interval, in virtual frames via simulationHz()) — and the held □ chord repeats the same way, - multi-contact: each finger arms its own key (two-thumb typing). While the panel is up it now pushes a touch block alongside the button block, so app gestures underneath (a list) are cancelled the frame the keyboard opens; the OSK's own recognizer is exempt via allowWhenBlocked. D-pad, chords, and cursor modes are untouched. tests/osk-script.ts grows tap(): touch-taps at key centers computed from the real layout (dock-at-bottom convention). New im-sim Journey E types "hi" by touch through the built bundle and replays hash-identical; Journeys A–D (button-driven) stay green unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
doodlewind
force-pushed
the
feat/osk-touch-model
branch
from
July 23, 2026 13:04
095d242 to
0025104
Compare
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.
Part 5/6 of the touch-input series (stacked on #165; uses the gesture layer from #161 and tape/sim touch from #164).
What
framework/src/osk.tsxtouch input goes from contact-edge tap (key fires the instant a finger lands) to the modern keyboard press model, viacreateGesture:focus:/active:variants — no new class literals)Modality: the panel now pushes
pushTouchBlock()next to the button block — app gestures under the keyboard are cancelled the frame it opens; the OSK's own recognizer isallowWhenBlocked. D-pad spatial nav, PSP chords, and cursor modes byte-untouched.Tests
OskScripter.tap()— touch-taps at key centers computed from the real layout math.tsc --noEmitclean.🤖 Generated with Claude Code