Skip to content

VT mouse sequences don't work when DECARM is disabled #16510

@j4james

Description

@j4james

Windows Terminal version

1.19.3172.0

Windows build number

10.0.19045.3803

Other Software

Vttest

Steps to reproduce

  1. Open a WSL shell in Windows Terminal.
  2. Run vttest.
  3. Select the Normal Mouse Tracking test (menu 11.8.5.4)
  4. Click somewhere in the terminal window.

Expected Behavior

You should see the mouse escape sequence starting with <27> [ M <32> output near the top of the page, and a 1 output wherever you've clicked.

Actual Behavior

Some of the characters in the mouse sequence are lost, so it starts with <27> <32>, and there is nothing output in the cell where you've clicked.

This is similar to the problem we had with the Device Attribute reports not working in vttest because it disables auto-repeat mode (#14208). But in this case the lost key events are coming from conpty passing the mouse sequences through TerminalInput::HandleKey, so it only affects Windows Terminal.

The fact that the mouse sequences are being treated as keypresses is already questionable, and I think that's likely the cause of #15083, but I also think HandleKey should be capable of accepting a sequence of key events with a 0 virtual key (as a form of input "passthrough"), without DECARM getting in the way.

So my proposed solution is this: before we even check for repeated keys, if we receive a key-down event, and the virtual key code is 0 or VK_PACKET (which serves a similar purpose), then we should immediately return the given UnicodeChar value as the HandleKey output.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area-VTVirtual Terminal sequence supportHelp WantedWe encourage anyone to jump in on these.In-PRThis issue has a related PRIssue-BugIt either shouldn't be doing this or needs an investigation.Needs-Tag-FixDoesn't match tag requirementsProduct-ConhostFor issues in the Console codebase

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions