terminal/src
Mike Griese 7b9c8c7055
Fix C-M-z, C-M-x in Conpty (#4940)
## Summary of the Pull Request

This PR ensures that Conpty properly treats `^[^Z` and `^[^X` as
<kbd>Ctrl+Alt+z</kbd> and <kbd>Ctrl+Alt+x</kbd>, instead of <kbd>Ctrl+z</kbd>
and <kbd>Ctrl+x</kbd>.

## References

## PR Checklist
* [x] Closes #4201
* [x] I work here
* [x] Tests added/passed
* [n/a] Requires documentation to be updated

## Detailed Description of the Pull Request / Additional comments

`^Z` and `^X` are special control characters, SUB and CAN. For the output state
machine, these characters are supposed to be executed from _any_ state. However,
we shouldn't do this for the input engine. With the current behavior, these
characters are immediately executed regardless of what state we're in. That
means we end up synthesizing <kbd>Ctrl+z/x</kbd> for these characters. However,
for the InputStateMachine engine, when these characters are preceeded by `^[`
(ESC), we want to treat them as <kbd>Ctrl+Alt+z/x</kbd>.

This just adds a check in `StateMachine` to see if we should immediately execute
these characters from any state, similar to many of the other exceptions we
already perform in the StateMachine for the input engine.

## Validation Steps Performed
* ran tests
* checked `showkey -a` in gnome-terminal
* checked `showkey -a` in conhost
* checked `showkey -a` in vt pipeterm (conhost as a conpty terminal)
* checked `showkey -a` in Windows Terminal
2020-03-16 16:59:48 +00:00
..
buffer Maintain scrollbar position during a resize operation (#4903) 2020-03-16 12:55:25 +00:00
cascadia Implement Hard Reset for Terminal (#4909) 2020-03-16 15:32:01 +00:00
host Maintain scrollbar position during a resize operation (#4903) 2020-03-16 12:55:25 +00:00
inc til::rectangle (#4912) 2020-03-14 17:27:47 +00:00
interactivity Move MouseInput from TermAdapter to TermInput (#4848) 2020-03-12 22:25:43 +00:00
internal Merged PR 4271163: [Git2Git] Remove use of private theme APIs 2020-02-03 23:13:31 +00:00
propsheet Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
propslib Introduce chromium safe math (#4144) 2020-01-16 18:51:06 +00:00
renderer Always use the system's locale to render text (#4934) 2020-03-16 16:19:47 +00:00
server Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
terminal Fix C-M-z, C-M-x in Conpty (#4940) 2020-03-16 16:59:48 +00:00
testlist inbox: Merge accumulated build fixes from RS_ONECORE_DEP_ACIOSS (#1002) 2019-05-24 12:28:30 -07:00
til til::rectangle (#4912) 2020-03-14 17:27:47 +00:00
tools translate German message into English (#4838) 2020-03-08 20:13:22 +00:00
tsf Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
types Invoke-CodeFormat on changes ingested from inbox 2020-03-12 16:37:44 -07:00
winconpty Add support for "reflow"ing the Terminal buffer (#4741) 2020-03-12 17:43:37 -07:00
common.build.post.props Add experimental retro terminal effects (#3468) 2019-12-12 13:44:01 +00:00
common.build.pre.props Introduce chromium safe math (#4144) 2020-01-16 18:51:06 +00:00
common.build.tests.props Update TAEF to 10.51 and remove the private dep on Taef.TestAdapter (#4450) 2020-02-03 22:14:43 +00:00
ConsolePerf.regions.xml Tab to spaces (#578) 2019-05-13 18:06:36 -07:00
ConsolePerf.wprp Fix the WPR profile (#4007) 2019-12-17 17:14:15 -08:00
cppwinrt.build.post.props Unify and clean up the common build properties (#3429) 2019-11-05 14:29:11 -08:00
cppwinrt.build.pre.props Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
dirs Introduce til::some (#4123) 2020-01-09 09:07:52 -08:00
project.inc Sync with latest inbox changes 2019-10-17 15:11:07 -07:00
project.unittest.inc inbox: merge refactoring payload from FI 2019-06-11 17:01:26 -07:00
StaticAnalysis.ruleset Combined changes to make the build work again (see inside) (#2945) 2019-09-30 10:39:55 -07:00
unit.tests.x64.runsettings Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
unit.tests.x86.runsettings Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
wap-common.build.post.props Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
wap-common.build.pre.props Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00