When in the key binds page one tries to map a non-English letter to a key with a shift-modified alternative graph (some examples from the Italian layout: [à], [è], [ò], [ù]), those display their uppercase shift-modified version ([°], [É], [Ç], [§] which doesn’t show up obviously).
Weirdly enough, this doesn’t happen with [ì], which appears as [Ì] even though the shift form of this key is [^] and you cannot type [Ì] in the Italian layout. Attached screenshot shows the five grave vowel keys in alphabetical order.
This doesn’t affect Spanish, since the Spanish layout has no shift-modified version of [Ñ] and [Ç]. This doesn’t even affect French, but I don't know why.
German [ß] key renders as [SS], while this is a dated but correct capitalization (“ẞ” is preferred) one would expect it to be [ß], to keep consistency with the key.
Context
The first issue described occurs on likely any platform (tested on macOS, Windows) using the standard Italian keyboard layout. Note that this layout infamously doesn’t let you write uppercase À, È, É, Ì, Ò, Ù, even though those are letters that you really need in common uppercase words: “CITTÀ”, “CAFFÈ”, “PERCHÉ”, “COSÌ”, “PERÒ”, “PIÙ” to name a few, which leads to many people writing, incorrectly, CITTA' or CITTà for CITTÀ (“city”). The bug should occur be the same with [ù] on French AZERTY which, at least key-wise, is similar to Italian, but it stays [ù] just fine.
References
Standard Italian keyboard layout: https://it.wikipedia.org/wiki/File:Italian_Keyboard_layout.svg
Standard French keyboard layout: https://commons.wikimedia.org/wiki/File:KB_France.svg
Standard German keyboard layout: https://commons.wikimedia.org/wiki/File:Deutsche_Tastaturbelegung_E1_nach_DIN_2137-01--2023-08_(neue_Zeichen_blau).png
Output from Key Codes for macOS using the Italian layout:
Key Down
Characters: à
Unicode: 224 / 0xe0
Keys: à
Key Code: 39 / 0x27
Modifiers: 256 / 0x100
Key Down
Characters: è
Unicode: 232 / 0xe8
Keys: è
Key Code: 33 / 0x21
Modifiers: 256 / 0x100
Key Down
Characters: ì
Unicode: 236 / 0xec
Keys: ì
Key Code: 24 / 0x18
Modifiers: 256 / 0x100
Key Down
Characters: ò
Unicode: 242 / 0xf2
Keys: ò
Key Code: 41 / 0x29
Modifiers: 256 / 0x100
Key Down
Characters: ù
Unicode: 249 / 0xf9
Keys: ù
Key Code: 42 / 0x2a
Modifiers: 256 / 0x100Expected behaviour
When binding an action to [è], [ò], [à], [ù], those should read [è], [ò], [ù], [à] if the game wants to stay faithful to the layout. Same for [ß] which should read lowercase [ß], according to the layout.
What I believe is happening is that the game is both shifting and uppercasing, in an attempt not to leave the button lowercase, which anyway isn’t how most layouts are.
Potential fix
Take all of this with a grain of salt, but if uppercase is required, I would expect it to: uppercase, check if the character changes, if unchanged shift, check if the character changes.
If the first check returns false, one could assume that no uppercase version is known; if the other check returns true, then a new character has been found, this character could be the correct one but would also be ignored, defaulting to the unmodified character, if it’s not the same letter (if it is not in the same Unicode block, if the code points are more than some amount apart… I’m not sure what the correct approach would be).
The first part could be skipped if lowercase is required, as for accented letters in Italian or the German [ß] key.
Steps to reproduce
Take as many European keyboards as you have (which have at least one specific key with a shift variant), plug them in (and make sure to load the desired layout) and try binding any layout-specific key to any action in the game.
Notes
Doesn’t affect Spanish, French. Shouldn’t affect Brazilian Portuguese, Polish, Swedish, Icelandic, Danish, Norwegian. Does affect Italian and German.
I suspect that European Portuguese [º] may show [ª] but I couldn’t find someone to test it, I also supposed French [ù] to show [%], but after testing that isn’t the case.
Thank you for helping us improve Minecraft! We saved your files: