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

Dead keys + space bar not working through ssh or in wsl 2 #16642

Closed
Meryl opened this issue Feb 1, 2024 · 2 comments · Fixed by #16645
Closed

Dead keys + space bar not working through ssh or in wsl 2 #16642

Meryl opened this issue Feb 1, 2024 · 2 comments · Fixed by #16645
Labels
In-PR This issue has a related PR Issue-Bug It either shouldn't be doing this or needs an investigation. Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting

Comments

@Meryl
Copy link

Meryl commented Feb 1, 2024

Windows Terminal version

1.20.10303.0

Windows build number

10.0.22631.0

Other Software

Bash, either in WSL 2 or through SSH on debian-based OS's (tested on Debian, Ubuntu and RasberryPi OS Bookworm)

Steps to reproduce

  • Use a keyboard layout that uses dead keys (e.g. US International)
  • Press a "dead key" (e.g. ')
  • Press the space bar

Expected Behavior

The corresponding character to appear (e.g. an apostrophe)

Actual Behavior

Only a space character appears.

@Meryl Meryl added Issue-Bug It either shouldn't be doing this or needs an investigation. Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting labels Feb 1, 2024
@Meryl
Copy link
Author

Meryl commented Feb 1, 2024

I think this may be related to #16641

@j4james
Copy link
Collaborator

j4james commented Feb 1, 2024

@Meryl Yeah, sorry about this. It's the same underlying cause.

@microsoft-github-policy-service microsoft-github-policy-service bot added the In-PR This issue has a related PR label Feb 1, 2024
@DHowett DHowett closed this as completed in ec91be5 Feb 6, 2024
@microsoft microsoft deleted a comment Feb 7, 2024
@microsoft microsoft deleted a comment Feb 7, 2024
DHowett pushed a commit that referenced this issue Feb 21, 2024
This fixes two issues where the `Space` key wasn't being handled
correctly:

* Keyboards with an `AltGr`+`Space` mapping were not generating the
  expected character.
* Pressing a dead key followed by `Space` is supposed to generate the
  accent character associated with that key, but it wasn't doing so.

## References and Relevant Issues

These were both regressions from the keyboard refactor in PR #16511.

## Detailed Description of the Pull Request / Additional comments

The problem was that we were treating `VK_SPACE` as a "functional" key,
which means it gets hardcoded VT mappings which take precedence over
whatever is in the keyboard layout. This was deemed necessary to deal
with the fact that many keyboards incorrectly map `Ctrl`+`Space` as a
`SP` character, when it's expected to be `NUL`.

I've now dropped `VK_SPACE` from the functional mapping table and allow
it be handled by the default mapping algorithm for "graphic" keys.
However, I've also introduced a special case check for `Ctrl`+`Space`
(and other modifier variants), so we can bypass any incorrect keyboard
layouts for those combinations.

## Validation Steps Performed

I couldn't test with a French-BEPO keyboard layout directly, because the
MS Keyboard Layout Creator wouldn't accept a `Space` key mapping that
wasn't whitespace. However, if I remapped the `AltGr`+`Space` combo to
`LF`, I could confirm that we are now generating that correctly.

I've also tested the dead key `Space` combination on various keyboard
layouts and confirmed that that is now working correctly, and checked
that the `Ctrl`+`Space` combinations are still working too.

Closes #16641
Closes #16642

(cherry picked from commit ec91be5)
Service-Card-Id: 91738880
Service-Version: 1.20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
In-PR This issue has a related PR Issue-Bug It either shouldn't be doing this or needs an investigation. Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants