Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter out control characters that don't do anything #15075

Merged
merged 4 commits into from
Apr 5, 2023

Conversation

j4james
Copy link
Collaborator

@j4james j4james commented Mar 30, 2023

On a real VT terminal, most of the control characters that don't do
anything are supposed to be filtered out, and not written to the buffer.
Up to to now, though, we've only been filtering out NUL. This PR
extends our control processing to filter the remaining characters that
aren't supposed to be displayed.

We introduced filtering for the NUL control in PR #3015.

The are two special cases worth mentioning.

  1. The SUB control's main purpose is to the cancel a control sequence
    that is in progress, but it also needs to output an error character (a
    reverse question mark) to the display.

  2. The DEL control is typically filtered out, but when a 96-character
    set is designated, it can sometimes be mapped to a printable glyph that
    needs to be displayed.

Validation Steps Performed

I've manually tested that all the controls that are meant to be filtered
out are no longer being displayed.

I've also extended the existing NUL unit test to cover the full set of
controls characters that are supposed to be filtered.

Closes #10786

@microsoft-github-policy-service microsoft-github-policy-service bot added Issue-Task It's a feature request, but it doesn't really need a major design. Area-VT Virtual Terminal sequence support Priority-2 A description (P2) Product-Conhost For issues in the Console codebase labels Mar 30, 2023
@j4james j4james marked this pull request as ready for review March 30, 2023 22:35
@DHowett
Copy link
Member

DHowett commented Apr 4, 2023

Want to make sure @zadjii-msft signs as well, since VT was once his wheelhouse

@zadjii-msft zadjii-msft merged commit aea0477 into microsoft:main Apr 5, 2023
@j4james j4james deleted the fix-control-chars branch May 30, 2023 01:09
DHowett pushed a commit that referenced this pull request Jan 16, 2024
Up to now we've using `U+2E2E` (reverse question mark) to represent the
`SUB` control glyph. This PR changes the glyph to `U+2426` (substitute
form two), which is also rendered as a reverse question mark, but is
more semantically correct.

The original `SUB` control rendering was implemented in PR #15075.

I've manually confirmed that `printf "\x1A"` is now shown as a reverse
question mark in OpenConsole when using the Cascadia Code font. That
would not previously have worked, because `U+2E2E` is not supported by
Cascadia Code.

Closes #16558
DHowett pushed a commit that referenced this pull request Jan 22, 2024
Up to now we've using `U+2E2E` (reverse question mark) to represent the
`SUB` control glyph. This PR changes the glyph to `U+2426` (substitute
form two), which is also rendered as a reverse question mark, but is
more semantically correct.

The original `SUB` control rendering was implemented in PR #15075.

I've manually confirmed that `printf "\x1A"` is now shown as a reverse
question mark in OpenConsole when using the Cascadia Code font. That
would not previously have worked, because `U+2E2E` is not supported by
Cascadia Code.

Closes #16558

(cherry picked from commit 92f9ff9)
Service-Card-Id: 91559316
Service-Version: 1.19
DHowett pushed a commit that referenced this pull request Jan 23, 2024
Up to now we've using `U+2E2E` (reverse question mark) to represent the
`SUB` control glyph. This PR changes the glyph to `U+2426` (substitute
form two), which is also rendered as a reverse question mark, but is
more semantically correct.

The original `SUB` control rendering was implemented in PR #15075.

I've manually confirmed that `printf "\x1A"` is now shown as a reverse
question mark in OpenConsole when using the Cascadia Code font. That
would not previously have worked, because `U+2E2E` is not supported by
Cascadia Code.

Closes #16558

(cherry picked from commit 92f9ff9)
Service-Card-Id: 91559315
Service-Version: 1.18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-VT Virtual Terminal sequence support Issue-Task It's a feature request, but it doesn't really need a major design. Priority-2 A description (P2) Product-Conhost For issues in the Console codebase
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Terminal shows SOH and STX characters in Ruby's pry for some reason
4 participants