Everything Any Keyboard Layout does, where each switch applies, which keys it affects, its console variables, and the messages you may see.
At a glance#
| Item | Details |
|---|---|
| Plugin type | Runtime. It ships in packaged games, including Shipping builds. |
| Where it corrects input | Windows. On other platforms it loads but changes nothing. |
| Engine versions | UE 5.5–5.8 |
| Input systems | Works with Enhanced Input, legacy action and axis mappings, and widget key handling. Enhanced Input is not required. |
| Dedicated servers | Inactive, because a server has no keyboard. The Blueprint nodes still return fallbacks. |
| Blueprint nodes | Yes. See Blueprint nodes. |
| Settings | Project Settings → Plugins → Any Keyboard Layout, saved in the project's input configuration and shared with your team |
There are no menus, tabs, toolbar buttons, or editor shortcuts. You work with the settings, the console variables, and the Blueprint nodes.
Switches#
| Setting | Default | Console variable | Effect |
|---|---|---|---|
| Digits | On | KeyboardLayout.Digits |
The number row always reads as One to Zero, and typing keys the engine would leave unbindable report the US key at their position. |
| Console Key | On | KeyboardLayout.ConsoleKey |
The key left of 1 reports Tilde, so it opens a console bound to Tilde. Turn it off if your game binds that key. |
| Physical | Off | KeyboardLayout.Physical |
During gameplay, every typing key reports the US-QWERTY key in the same place. |
| Fix Number Row In Editor | On | None | Outside Play In Editor, corrects the number row so editor number shortcuts work. Needs Digits on. |
At startup the three switches take their Project Settings values. A value for the same console variable in an ini file or on the command line wins over the checkbox. Editing a setting in the editor applies at once.
Where each switch applies#
| Where the keyboard focus is | Digits | Console Key | Physical |
|---|---|---|---|
| A standalone or packaged game, or a Play In Editor viewport and its widgets | Yes | Yes | Yes |
| A focused text box, or the open console | Yes, except AltGr combinations | Yes, except AltGr combinations | No |
| The rest of the editor, including Simulate In Editor | Number row only, with Fix Number Row In Editor and Digits on | No | No |
Typed text is never changed. Text-editing shortcuts such as Ctrl+A, Ctrl+V, and Ctrl+Z stay on their labeled keys in text boxes, and an AltGr character typed in chat never triggers a number binding.
Keys it affects#
The plugin works on the typing keys: the 47 keys of the US main block, plus three keys found only on some keyboards.
It never changes Space, Enter, Tab, Backspace, Escape, modifier keys, function keys, arrows and navigation keys, the numpad, gamepads, or keys handled by an input method editor (IME).
A key repeats and releases as the key it was pressed as, even if focus or a switch changes while it is held. Switching layout while holding a corrected key releases it.
Digits#
- Any key with a digit printed on it reports One to Zero, whatever it types. Czech ř reports Five; AZERTY & reports One and à reports Zero.
- A typing key the engine cannot bind reports the US key in its place.
- Keys the engine already names keep their names, such as Czech ů and German ß.
- Letter keys never change.
Console Key#
- Affects only the key left of 1.
- Applies when the project's Console Keys include Tilde and that key does not already open the console. French ² and Swedish § keep their own behavior.
- A digit in that position keeps its digit.
- Works with Digits off.
Physical#
- Gameplay only. Every typing key reports the US key at its position: AZERTY Z, Q, S, D report W, A, S, D; Czech and German Y and Z swap back.
- The key left of 1 always reports Tilde.
- The three extra keys report keys of their own, which you can bind:
| Key picker name (Keyboard category) | Where it is |
|---|---|
| ISO Key (between Left Shift and Z) | Between left Shift and Z on ISO keyboards |
| Ro / ABNT Key (left of Right Shift) | Japanese Ro key, or the Brazilian ABNT key |
| Yen Key (left of Backspace) | Japanese Yen key |
With Physical on and Console Key off, the key left of 1 still opens the console in gameplay, because it is Tilde by position. Inside the open console it types its own character.
Key labels#
Get Key Display Name (Keyboard Layout) returns what is printed on the player's key:
- Digit and letter keys show their digit or Latin letter. Russian A shows "A" even though it types Ф.
- Other keys show what they type, uppercased, such as Czech ů as "Ů".
- Dead keys show their accent, such as "´".
- With Physical on, AZERTY bindings to Q, W, and A show "A", "Z", and "Q".
Engine widgets that print the engine's own key names still show US letters in Physical mode. Replace those labels with the node's result in binding screens and prompts.
Console variables and commands#
| Name | Value | Effect |
|---|---|---|
KeyboardLayout.Digits |
0 or 1 | The Digits switch. |
KeyboardLayout.ConsoleKey |
0 or 1 | The Console Key switch. |
KeyboardLayout.Physical |
0 or 1 | The Physical switch. Changing it changes what saved letter bindings mean. |
KeyboardLayout.Debug |
0 or 1 | Prints a line on screen and in the log for each key press the plugin changes. |
KeyboardLayout.Dump |
None | Logs every typing key of the active layout: the character it types, the key reported with and without the plugin in the game, a text box, and the editor, and its label. |
Values typed at the console last until the process exits, and they take priority over the Blueprint setters and Project Settings edits for that session. Shipping builds have no console by default, and on-screen debug text is unavailable in Test and Shipping builds.
Messages#
| When | Message |
|---|---|
| Startup, in the log | Correcting keys for the layout keyboard layout, followed by the three switch values. |
KeyboardLayout.Debug 1 |
One line per changed key press: the character typed, the key reported, and whether it was the game, a text field, or the editor. |
KeyboardLayout.Dump without a running application |
Any Keyboard Layout is not running (no Slate application). |
KeyboardLayout.Dump when another plugin reads keys first |
The first line notes that something handles keys before Any Keyboard Layout. |
| A setter or settings edit after a console value | The engine's warning that the change was ignored because of a higher-priority value. |
Limits#
- Corrects keyboard input on Windows only.
- Changing Physical changes what saved letter and punctuation bindings mean; digit bindings are unaffected.
- Input generated by code is not corrected: Pixel Streaming, the Web Browser widget, Widget Interaction components, keys generated by CommonUI, and the GameInput keyboard route.
- IME composition is never corrected.
- Editor letter shortcuts never move.