c070be12d3
Implements the following keyboard selection non-configurable key bindings: - shift+arrow --> move endpoint by character - ctrl+shift+left/right --> move endpoint by word - shift+home/end --> move to beginning/end of line - ctrl+shift+home/end --> move to beginning/end of buffer This was purposefully done in the ControlCore layer to make keyboard selection an innate part of how the terminal functions (aka a shared component across terminal consumers). ## References #715 - Keyboard Selection #2840 - Spec ## Detailed Description of the Pull Request / Additional comment The most relevant section is `TerminalSelection.cpp`, where we define how each movement operates. It's basically a giant embedded switch-case statement. We leverage a lot of the work done in a11y to perform the movements. ## Validation Steps Performed - General cases: - test all of the key bindings added - Corner cases: - `char`: wide glyph support - `word`: move towards, away, and across the selection pivot - automatically scroll viewport - ESC (and other key combos) are still clearing the selection properly |
||
---|---|---|
.. | ||
cascadia | ||
images | ||
reference | ||
specs | ||
user-docs | ||
AddASetting.md | ||
bot.md | ||
building.md | ||
ConsoleCtrlEvent.md | ||
ConsoleHostSettings.md | ||
creating_a_new_project.md | ||
Debugging.md | ||
EXCEPTIONS.md | ||
feature_flags.md | ||
Niksa.md | ||
ORGANIZATION.md | ||
STYLE.md | ||
submitting_code.md | ||
TAEF.md | ||
terminal-v1-roadmap.md | ||
terminal-v2-roadmap.md | ||
UniversalTest.md | ||
virtual-dtors.md | ||
WIL.md | ||
WindowsTestPasses.md |