terminal/src/renderer/dx
Carlos Zamora c070be12d3
Implement Keyboard Selection (#10824)
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
2021-09-23 12:24:32 -07:00
..
lib Introduce DxFontInfo (#9201) 2021-06-22 19:31:27 +00:00
ut_dx Change backslashes in include statements to forward slashes (#8205) 2020-11-25 21:02:10 +00:00
BoxDrawingEffect.cpp Scale box drawing glyphs to fit cells for visual bliss (#5743) 2020-05-08 14:09:32 -07:00
BoxDrawingEffect.h Scale box drawing glyphs to fit cells for visual bliss (#5743) 2020-05-08 14:09:32 -07:00
CustomTextLayout.cpp Fix setting wght axis font bugs (#10863) 2021-08-25 01:19:40 +00:00
CustomTextLayout.h Allow users to set font features and font axes (#10525) 2021-07-22 23:15:44 +00:00
CustomTextRenderer.cpp dx: add support for inverting all types of cursor (#9665) 2021-04-02 11:18:06 +00:00
CustomTextRenderer.h Render SGR 1 ("intensity") as bold in the DX engine (#10498) 2021-07-07 21:07:51 +00:00
dirs Import build fix changes from OS for sync to a34a957cf 2020-03-16 18:26:48 +00:00
DxFontInfo.cpp Introduce DxFontInfo (#9201) 2021-06-22 19:31:27 +00:00
DxFontInfo.h Add fast lookup path for DxFontInfo (#10521) 2021-07-09 20:19:20 +00:00
DxFontRenderData.cpp Fix setting wght axis font bugs (#10863) 2021-08-25 01:19:40 +00:00
DxFontRenderData.h Fix setting wght axis font bugs (#10863) 2021-08-25 01:19:40 +00:00
DxRenderer.cpp Implement Keyboard Selection (#10824) 2021-09-23 12:24:32 -07:00
DxRenderer.hpp Add an ENUM setting for disabling rendering "intense" text as bold (#10759) 2021-08-16 13:45:56 +00:00
IBoxDrawingEffect.idl Scale box drawing glyphs to fit cells for visual bliss (#5743) 2020-05-08 14:09:32 -07:00
precomp.cpp Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
precomp.h Add a language switcher using PrimaryLanguageOverride (#10309) 2021-06-10 23:24:21 +00:00
ScreenPixelShader.h Convert four INSIDE_WINDOWS blocks to til features (#10404) 2021-06-10 23:48:54 +00:00
ScreenVertexShader.h Convert four INSIDE_WINDOWS blocks to til features (#10404) 2021-06-10 23:48:54 +00:00
sources.inc Introduce DxFontInfo (#9201) 2021-06-22 19:31:27 +00:00