terminal/src/buffer/out
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 Vectorize TextColor::GetColor (#10779) 2021-08-02 19:02:59 +00:00
ut_textbuffer Add an ENUM setting for disabling rendering "intense" text as bold (#10759) 2021-08-16 13:45:56 +00:00
AttrRow.cpp Introduce til::rle - a run length encoded vector (#10099) 2021-05-20 17:27:50 +00:00
AttrRow.hpp Introduce til::rle - a run length encoded vector (#10099) 2021-05-20 17:27:50 +00:00
CharRow.cpp ROW: clean up in preparation to hide CharRow & AttrRow (#8446) 2021-01-20 21:16:56 +00:00
CharRow.hpp ROW: clean up in preparation to hide CharRow & AttrRow (#8446) 2021-01-20 21:16:56 +00:00
CharRowCell.cpp Greatly reduce allocations in the conhost/OpenConsole startup path (#8489) 2020-12-16 10:40:30 -08:00
CharRowCell.hpp Greatly reduce allocations in the conhost/OpenConsole startup path (#8489) 2020-12-16 10:40:30 -08:00
CharRowCellReference.cpp Add GH issue IDs to all the suppress/disables that I left behind as they were a bit too challenging to solve with this giant PR 2019-09-05 11:14:43 -07:00
CharRowCellReference.hpp Greatly reduce allocations in the conhost/OpenConsole startup path (#8489) 2020-12-16 10:40:30 -08:00
cursor.cpp Defer cursor winrt event triggering (#10685) 2021-07-20 14:05:45 +00:00
cursor.h Defer cursor winrt event triggering (#10685) 2021-07-20 14:05:45 +00:00
DbcsAttribute.hpp C26447,C26440 - is noexcept but can throw or doesn't throw but not noexcept 2019-08-29 15:23:07 -07:00
dirs Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
LineRendition.hpp Add support for double-width/double-height lines in conhost (#8664) 2021-02-18 05:44:50 +00:00
OutputCell.cpp Refactor the SGR implementation in AdaptDispatch (#5758) 2020-05-08 16:04:16 -07:00
OutputCell.hpp Refactor the SGR implementation in AdaptDispatch (#5758) 2020-05-08 16:04:16 -07:00
OutputCellIterator.cpp Replace gsl::at with a new til::at(span) for pre-checked bounds (#6925) 2020-07-15 10:29:36 -07:00
OutputCellIterator.hpp Replace basic_string_view<T> with span<const T> (#6921) 2020-07-15 16:40:42 +00:00
OutputCellRect.cpp Replace basic_string_view<T> with span<const T> (#6921) 2020-07-15 16:40:42 +00:00
OutputCellRect.hpp C26455, default constructor may not throw. Mark noexcept. (Trivial cases.) 2019-09-03 14:57:14 -07:00
OutputCellView.cpp Some of the PR feedback. 2019-09-05 17:21:54 -07:00
OutputCellView.hpp Optimize hot path in textBufferCellIterator (#10621) 2021-07-27 15:09:56 +00:00
precomp.cpp Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
precomp.h Exclude more rarely-used stuff from Windows headers (#8513) 2020-12-11 19:35:23 +00:00
Row.cpp Introduce til::rle - a run length encoded vector (#10099) 2021-05-20 17:27:50 +00:00
Row.hpp Introduce til::rle - a run length encoded vector (#10099) 2021-05-20 17:27:50 +00:00
search.cpp Add support for double-width/double-height lines in conhost (#8664) 2021-02-18 05:44:50 +00:00
search.h Cache the size viewport structure inside TextBuffer (#6841) 2020-07-09 11:18:25 +00:00
sources.inc Merged PR 6142815: OS build fixes on top of 94d39b758 2021-06-10 15:52:14 +00:00
TextAttribute.cpp Add an ENUM setting for disabling rendering "intense" text as bold (#10759) 2021-08-16 13:45:56 +00:00
TextAttribute.hpp Add an ENUM setting for disabling rendering "intense" text as bold (#10759) 2021-08-16 13:45:56 +00:00
textBuffer.cpp Implement Keyboard Selection (#10824) 2021-09-23 12:24:32 -07:00
textBuffer.hpp Implement Keyboard Selection (#10824) 2021-09-23 12:24:32 -07:00
textBufferCellIterator.cpp Optimize hot path in textBufferCellIterator (#10621) 2021-07-27 15:09:56 +00:00
textBufferCellIterator.hpp Expose Text Attributes to UI Automation (#10336) 2021-07-09 23:21:35 +00:00
textBufferTextIterator.cpp Some of the PR feedback. 2019-09-05 17:21:54 -07:00
textBufferTextIterator.hpp C26447,C26440 - is noexcept but can throw or doesn't throw but not noexcept 2019-08-29 15:23:07 -07:00
TextColor.cpp Fix SSE2 variant of TextColor::GetColor (#10867) 2021-08-04 15:57:20 +00:00
TextColor.h Vectorize TextColor::GetColor (#10779) 2021-08-02 19:02:59 +00:00
UnicodeStorage.cpp Compensate for VS 16.7, part 2 (#7383) 2020-08-24 21:21:53 +00:00
UnicodeStorage.hpp Compensate for VS 16.7, part 2 (#7383) 2020-08-24 21:21:53 +00:00