Repository navigation
Add native QWERTY switch-scanning keyboard - #790
Merged
Merged
Conversation
enaboapps
marked this pull request as ready for review
September 18, 2026 14:49
This was referenced Sep 18, 2026
added 8 commits
September 18, 2026 19:33
Measure wrapped key text before drawing and centre it inside scaled horizontal and vertical margins. Keep action-menu and modifier-overlay placement unchanged.
Use weighted editing keys, a dedicated wide Space bar and one copy of each modifier. Add keyboard-specific visual roles, active-state indicators, rounded key artwork and a solid panel. Clarify row return and scan target feedback while preserving input and switch timing.
Render a transparent rounded backdrop with scaled outer padding. Keep the backdrop cached during key scanning and verify transparent corners and inset control bounds.
Avoid passing an empty UTF-16 slice to DrawTextW for the rounded keyboard backdrop. Cover empty labels through the native drawing path and render the full keyboard in the interactive overlay smoke test.
Move Backspace beside QWERTY and retain the removed digits and UK symbols on the Numbers page. Cover character availability and the letters layout in regression tests.
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.
Adds a native UK English QWERTY keyboard controlled by Switchify row/key scanning on Windows and macOS. Type here clicks the selected point once and verifies focus before accepting keys; More → Keyboard preserves current focus. Letters, navigation/function and numeric pages support one-shot/locked modifiers, local Caps, docking and Close.
The keyboard uses a rounded panel with scaled outer padding, rounded keys, weighted editing keys and a dedicated wide Space bar. Letters starts with QWERTY, with Backspace beside the top letter row. The Numbers page retains all digits and UK number-row symbols. Letter-page modifiers are no longer duplicated. Distinct key/control typography, active-state indicators and measured text placement clarify what will happen next. A header names the current page and target; the row-return slot highlights only the return instruction. Close keyboard is the first item in the control row.
Input uses the existing generated-event tagging and cleanup with nonactivating, click-through overlays and foreground/display/session guards. The branch incorporates the Windows capture worker fix from #792. Prediction, context extraction and settings/protocol changes remain outside this PR.
Closes #789
Validation at 02bd8e8:
Opening-crash fix: the new background tile has no label. Calling DrawTextW with the empty Rust slice caused a user32 access violation, reproduced with a minimal native GDI probe in the Windows ARM VM. Empty labels now skip both native measurement and drawing. Added a native empty-label regression and extended the interactive overlay smoke test to cover the entire keyboard. Independent latest-head review passed.