Default bound key combinations are not working as expected on international keyboard layouts #10503

Closed
opened 2026-01-31 02:23:22 +00:00 by claunia · 5 comments
Owner

Originally created by @pstaag on GitHub (Sep 5, 2020).

Originally assigned to: @lhecker on GitHub.

Environment

Windows build number: Microsoft Windows [Version 10.0.19041.450]
Windows Terminal version (if applicable): 1.2.2381.0

  • Swedish keyboard layout

Steps to reproduce

invoke the Font Size Increase command ctrl+= on a Swedish keyboard layout.

(hint: that would be ctrl+shift+0)

Expected behaviour

Font size increases one step.

Actual behaviour

Nothing happens.

Reflections

  • The new Command Palette (that I am already a huge fan of, despite it's flaws) insists that Increase Font Size is bound to ctrl+shift+0 (bonus bug?)

  • Referring to the Modifier keys section in http://docs.microsoft.com/en-us/windows/terminal/customize-settings/key-bindings#key-binding-properties it appears that all the characters that are shift:ed on an American keyboard layout are invalid bindings. This theory is also widely supported by the fact that Windows Terminal binds ctrl+shift+numeral to newTab and ctrl+alt+numeral to switchToTab.

  • International keyboards often move the special characters around on the keyboard. (In the case with the Swedish keyboard layout, to fit in the three extra vowels in our 29 letter alphabet.)

  • It appears that the problem is how Terminal deals with characters that are bound to the numeric keys.

Originally created by @pstaag on GitHub (Sep 5, 2020). Originally assigned to: @lhecker on GitHub. <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows build number: Microsoft Windows [Version 10.0.19041.450] Windows Terminal version (if applicable): 1.2.2381.0 ``` + *Swedish* keyboard layout # Steps to reproduce invoke the Font Size Increase command <kbd>ctrl</kbd>+<kbd>=</kbd> on a *Swedish* keyboard layout. (hint: that would be <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>0</kbd>) # Expected behaviour Font size increases one step. # Actual behaviour Nothing happens. # Reflections - The new Command Palette (that I am already a huge fan of, despite it's flaws) insists that Increase Font Size is bound to <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>0</kbd> (bonus bug?) - Referring to the **Modifier keys** section in http://docs.microsoft.com/en-us/windows/terminal/customize-settings/key-bindings#key-binding-properties it appears that all the characters that are <kbd>shift</kbd>:ed on an American keyboard layout are invalid bindings. This theory is also widely supported by the fact that Windows Terminal binds <kbd>ctrl</kbd>+<kbd>shift</kbd>+*numeral* to *newTab* and <kbd>ctrl</kbd>+<kbd>alt</kbd>+*numeral* to *switchToTab*. - International keyboards often move the special characters around on the keyboard. (In the case with the Swedish keyboard layout, to fit in the three extra vowels in our 29 letter alphabet.) - It appears that the problem is how Terminal deals with characters that are bound to the numeric keys.
Author
Owner

@ghost commented on GitHub (Oct 2, 2020):

It appears there are at least two conflicting visions of what MS terminal should be. One camp seems to be about making it something new and fixing historical issues (accepting that all of the world don't use English keyboards for instance). The other is about supporting the historical features of VT100+ that are widely used in the Linux world still. These are unlikely to be reconciled with a single configuration. For instance the VT* keyboard has to have separate key handlings, regardless of the desires consistency or non-English keyboards. So it seems there needs to be a VT100/200/etc mode , Xterm , and maybe a "MSTerm (ugh?)" mode which is targeted for non-terminal emulated applications.

@ghost commented on GitHub (Oct 2, 2020): It appears there are at least two conflicting visions of what MS terminal should be. One camp seems to be about making it something new and fixing historical issues (accepting that all of the world don't use English keyboards for instance). The other is about supporting the historical features of VT100+ that are widely used in the Linux world still. These are unlikely to be reconciled with a single configuration. For instance the VT* keyboard has to have separate key handlings, regardless of the desires consistency or non-English keyboards. So it seems there needs to be a VT100/200/etc mode , Xterm , and maybe a "MSTerm (ugh?)" mode which is targeted for non-terminal emulated applications.
Author
Owner

@DHowett commented on GitHub (Jul 2, 2021):

@lhecker you might be interested in this one.

These are unlikely to be reconciled with a single configuration.

Yeah... you're definitely struck at the heart of the issue.

As an aside: sorry -- this fell out of our triage queue and we just found it again. I apologize!

@DHowett commented on GitHub (Jul 2, 2021): @lhecker you might be interested in this one. > These are unlikely to be reconciled with a single configuration. Yeah... you're definitely struck at the heart of the issue. As an aside: sorry -- this fell out of our triage queue and we just found it again. I apologize!
Author
Owner

@DHowett commented on GitHub (Jul 2, 2021):

@lhecker remove the triage tag if you agree with the characterization and the milestone being set to 2.0, ok?

@DHowett commented on GitHub (Jul 2, 2021): @lhecker remove the triage tag if you agree with the characterization and the milestone being set to 2.0, ok?
Author
Owner

@lhecker commented on GitHub (Jul 2, 2021):

@DHowett I believe setting it as a goal for v2.0 is a good idea and I'll gladly tackle it.
This issue is "basically" a sister-issue of #10203 and both can be solved simultaneously.

We need to introduce sc(N) and vk(N) to our shortcut sequences, which respectively stand for specific scan codes and virtual keys that are to be bound to an action. For instance Win+sc(29) would always bind to the key below the escape key, as virtually every keyboard in the world assigns the scan code 29 to the key below the escape key. 🙂

Now instead of binding zoom in/out to Ctrl+= and Ctrl+-, we need to bind it to Ctrl+vk(187) and Ctrl+vk(189) respectively. This is because for instance = on an US keyboard has the exact same virtual key as + on almost all international keyboards. Of course this doesn't work for all keyboards, but it should work for a significant fraction of them as far as I'm aware.

@lhecker commented on GitHub (Jul 2, 2021): @DHowett I believe setting it as a goal for v2.0 is a good idea and I'll gladly tackle it. This issue is "basically" a sister-issue of #10203 and both can be solved simultaneously. We need to introduce `sc(N)` and `vk(N)` to our shortcut sequences, which respectively stand for specific scan codes and virtual keys that are to be bound to an action. For instance `Win+sc(29)` would _always_ bind to the key below the escape key, as virtually every keyboard in the world assigns the scan code 29 to the key below the escape key. 🙂 Now instead of binding zoom in/out to `Ctrl+=` and `Ctrl+-`, we need to bind it to `Ctrl+vk(187)` and `Ctrl+vk(189)` respectively. This is because for instance `=` on an US keyboard has the exact same virtual key as `+` on almost all international keyboards. Of course this doesn't work for all keyboards, but it should work for a significant fraction of them as far as I'm aware.
Author
Owner

@ghost commented on GitHub (Aug 31, 2021):

:tada:This issue was addressed in #10666, which has now been successfully released as Windows Terminal Preview v1.11.2421.0.🎉

Handy links:

@ghost commented on GitHub (Aug 31, 2021): :tada:This issue was addressed in #10666, which has now been successfully released as `Windows Terminal Preview v1.11.2421.0`.:tada: Handy links: * [Release Notes](https://github.com/microsoft/terminal/releases/tag/v1.11.2421.0) * [Store Download](https://www.microsoft.com/store/apps/9n8g5rfz9xk3?cid=storebadge&ocid=badge)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#10503