Your Keyboard Layout Is Not the Problem. Game Devs Are.
You install a new game. You launch it. You press W to move forward, and nothing happens where you expect it to.
If you use AZERTY, QWERTZ, Dvorak or any other non-QWERTY layout, you know this feeling. The game expects the letters W, A, S and D, and on your keyboard, those letters are scattered all over the place. The classic movement cluster is gone.
What is going on?
A game can read your keyboard in two ways:
- Virtual keys: "the player pressed the letter W". The key can be anywhere on the keyboard.
- Scancodes: "the player pressed the key at this physical position". On QWERTY that key is W, on AZERTY it is Z, on Dvorak it is a comma. The game does not care. The key is under your left hand, and that is what matters.
For movement, scancodes are the right choice. Movement keys are about position, not letters. Games that read letters instead force everyone to think in QWERTY.
Why it is a real problem
The usual workaround is to install a QWERTY layout and switch to it before playing. That is annoying, and it breaks in practice:
- Some players do not know how to do it, and they will simply give up on your game.
- Some games do not even let you switch layouts while playing. In Ghostwire: Tokyo, WIN+SPACE does not work in-game, and when I changed the key mapping, some characters like
%and#were not recognized at all. - You have to switch back every time you want to chat or use another application.
This is not a niche issue. Many countries do not use QWERTY, and many affected players never say a word.
Why it is embarrassing
Studios with huge budgets ship games with cinematic cutscenes, ray tracing and translations into many languages. Then they forget that a large part of the world does not type on a US keyboard.
Cyberpunk 2077, The Witcher 3, Valorant, Fortnite, Fallout 76 (I tested it with Dvorak, and it still expects QWERTY), Black Myth: Wukong and The Callisto Protocol all made my "layout-dependent" list.
Sea of Thieves shows that the studio knows the problem exists. It ships presets for AZERTY, QWERTY and QWERTZ, and picks one based on your system language. That is a patch, not a solution. It covers three layouts and ignores everyone else.
Same engine family, opposite results
Apex Legends is built on Respawn's own extensively reworked branch of Valve's Source engine. CS:GO ran on Source too. For years, both games were live at the same time.
Apex respects every layout and even prints the real character on each key. CS:GO did not respect layouts, and it would not even let me switch them in-game.
Same engine family, opposite results. So the engine family is not what decides this. The studio is.
It is not complicated
Some games get it right, and I list them on r/UseScancodes:
- Doom Eternal, Indiana Jones and the Great Circle and Deadlock
- Warhammer 40,000: Space Marine 2
- Hytale and Apex Legends, which even show the correct characters on the keys
- Minecraft Java Edition, since the first snapshot of 1.13 (17w43a)
- Kingdom Come: Deliverance
The recipe is short:
- Read scancodes for gameplay keys. Most engines and libraries already expose them.
- Show the right label. Libraries can convert a scancode into the character printed on the player's key. In SDL, for example, it is
SDL_GetKeyName(SDL_GetKeyFromScancode(SDL_SCANCODE_W)). Some games read scancodes correctly but still display QWERTY labels (Monster Hunter Wilds, Elden Ring, Space Marine 2). That is playable, but confusing. - Add a rebinding menu. It helps layouts, but also other keyboards and accessibility needs.
A developer who commented on my post about Ghostwire: Tokyo points out that in Unreal Engine this is much harder, because the engine's input system fights you. So it is not always a one-line change, and the engine matters. But the Source example above shows that games built on the same engine family can go either way.
What you can do
Developers cannot fix a problem they never hear about.
- Report it on the game's forum, bug tracker or Steam page. Say clearly which layout you use and what breaks.
- Ask for three things: scancodes for gameplay keys, correct labels, and a rebinding menu.
- Post screenshots of your layout in-game on r/UseScancodes. Good and bad examples both help.
If you play on a non-QWERTY keyboard, ask. It takes two minutes, and it helps every player after you.