This works with English keyboards but not with the localized variants mentioned above.
Possible (but not ideal) solution
There is an easy way to fix this using a plugin called Loonyware - Keyboard Layout-Independent Input. However, this is a paid plugin and adds another dependency to your project. I wish to avoid using it and fix it via native Unreal Engine functionality.
I have tried finding a solution for this issue, but I could not find any useful resources or information on the matter.
Please help me out. I am sure there must be a easy way to do this that I am missing.
Keyboard localization differences really highlight how input handling can be inconsistent across regions. For testing, especially with repeated keystrokes like the spacebar, tools such as Spacebar Clicker can show how various layouts respond in practice. It becomes clear how much reliability depends on proper mapping rather than layout quirks.
practical options: ship an IMC per layout family and pick at boot, or simpler, let players remap. most games do the second because you cant hand-cover dvorak, colemak, azerty number rows and laptopless numpads. defaults will always be wrong somewhere, remapping solves all of them at once.
Advanced Input Rebinding System, a runtime key-rebinding system for Unreal Engine 5: capture + conflict detection + save profiles: Advanced Input Rebinding System. on sale ($32.71).
The setup is simple and it comes with example projects, there are just two nodes to “convert to” or “convert from” US QUERTY. A custom Input remap widget is also provided and it works with UE4 and UE5 systems (Legacy and Enhanced input).
For Windows users wanting to test it out, just add a language, let’s say German, then add the German QWERTZ keyboard layout and change the language to current (pressing Windows key + space). The physical keys are preserved and the conversion nodes do the job of remapping to the correspondent physical key in whatever language-keyboard you chose.
With the help of that plugin, if your game was shipped using US QUERTY assigning the Y key to an input action, any player using a German-QUERTZ keyboard would see that action assigned to the Z key, the correspondent physical position instead of the original Y key at the bottom left of the GE-QWERTZ keyboard, without any setup. That means not only the physical position is preserved, the key display is also correct, let’s say, especial characters are recovered and properly displayed. This also avoids the awkward WASD remapping from US-QUERTY that would become scattered in other keyboard layouts, having the intended WASD assuming very different physical positions. To make matters worse, if your game had an default input key remapping widget, the user would see the wrong characters being displayed, those from US QWERTY, making inconvenient to play your game.
The biggest difference happens on the right side of the keyboard, those keys with especial characters closer to the Enter key.