feat(flterm): normalize layout-aware keyboard input - #104
Open
adonm wants to merge 1 commit into
Open
Conversation
Port the layout-aware keyboard metadata companions onto the controller/ view input pipeline. - normalize physical key, action, text, consumed modifiers, lock/side state, composition state, and active-layout unshifted codepoint before terminal encoding - add Linux, macOS, and Windows native metadata companions with a documented Flutter fallback for mobile/web - keep dead keys and IME preedit on the text-input path and suppress paired release leakage - add side-aware macOS TerminalConfig.optionAsAlt - keep the existing virtual-modifier exclusion and consumed-ctrl strip when terminal mods are assembled The previous implementation was carried downstream in the Zuko remote-shell client; this rework targets the refactored input pipeline.
adonm
force-pushed
the
upstream/70-layout-keyboard
branch
from
August 26, 2026 07:42
4b7f138 to
ff72254
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.
Summary
TerminalConfig.optionAsAltWhy
Flutter's public
KeyEventdoes not expose consumed modifiers or the active layout's unmodified translation. Capturing platform metadata before framework normalization keeps platform translation separate from terminal protocol encoding and covers non-US layouts, AltGr/Option, dead keys, lock state, repeats, and releases.July 2026 update: reworked onto current
mainRebased after #143/#144 and reworked for the controller/view input pipeline:
KeyboardInputAdapternow normalizes throughKeyboardEventNormalizer; the previous controller-internal encoder path is gone.TerminalConfig.optionAsAltuses the libghosttyOptionAsAltconfig enum;TerminalControlleraccepts an optionalkeyEventNormalizer.Verification
dart formatanddart analyzeclean (only 2 pre-existing info lints undertool/benchmarks).Closes #70.