Skip to content

Add support for the DECALN escape sequence #3671

Closed

Description

Description of the new feature/enhancement

The DECALN escape sequence produces a test pattern that was used for adjusting screen alignment on the original VT terminals. I don't think it's of any real use in a modern terminal emulator, but it's needed to pass many of the tests in the Vttest suite.

This is how the control is defined in the VT510 Programmer Information manual:

This control function fills the complete screen area with a test pattern used for adjusting screen alignment ... DECALN sets the margins to the extremes of the page, and moves the cursor to the home position.

The VT100 and VT220 manuals define the fill pattern as an uppercase E, although later manuals are less specific, and the DEC STD 070 manual just says it's "implementation defined".

The DOC STD 070 manual does give a bit more detail about what should be reset though. In addition to clearing the margins, and moving the cursor position to home, it says the origin mode and rendition attributes should also be reset (although the latter was not actually true of the VT100).

As for the color attributes, if we're following the XTerm behaviour, then the colors should not be reset. However, note that the the test pattern should still be rendered with the default foreground and background colors, and not the active colors.

Proposed technical implementation details

This will require a new method to be added to the ITermDispatch interface, which can then be called from OutputStateMachineEngine::ActionEscDispatch when the intermediate char is # and the final char is 8.

The method itself can mostly be implemented with existing ConGetSet and AdaptDispatch calls. The only tricky bit is we'll need the new PrivateFillRegion API proposed in PR #3100 in order to fill the screen with the correct colors.

I've got a PR for this prepared already, but it's dependent on #3100 being approved first, otherwise I'll need to come up with another plan.

Activity

  1. added
    Issue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.
    on Nov 23, 2019
  2. ghost added
    Needs-TriageIt's a new issue that the core contributor team needs to triage at the next triage meeting
    on Nov 23, 2019
  3. ghost added
    Needs-Tag-FixDoesn't match tag requirements
    on Nov 23, 2019
  4. added
    Area-VTVirtual Terminal sequence support
    Issue-TaskIt's a feature request, but it doesn't really need a major design.
    Product-ConhostFor issues in the Console codebase
    and removed
    Issue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.
    on Nov 25, 2019
  5. ghost removed
    Needs-Tag-FixDoesn't match tag requirements
    on Nov 25, 2019
  6. added and removed
    Needs-TriageIt's a new issue that the core contributor team needs to triage at the next triage meeting
    on Nov 25, 2019
  7. ghost added
    In-PRThis issue has a related PR
    on Dec 14, 2019
  8. ghost closed this as completedin #3968on Dec 17, 2019
  9. ghost added a commit that references this issue on Dec 17, 2019
    c0b8b85
  10. ghost removed
    In-PRThis issue has a related PR
    on Dec 17, 2019
  11. ghost added
    Resolution-Fix-CommittedFix is checked in, but it might be 3-4 weeks until a release.
    on Dec 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area-VTVirtual Terminal sequence supportIssue-TaskIt's a feature request, but it doesn't really need a major design.Priority-3A description (P3)Product-ConhostFor issues in the Console codebaseResolution-Fix-CommittedFix is checked in, but it might be 3-4 weeks until a release.

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions