Thinfinity Workspace and Thinfinity Remote Desktop Server deliver Windows desktops and applications through a clientless HTML5 browser. Keystrokes therefore travel across three independent layers before they reach the application: the local OS layout on the user's device, the browser, and the Windows host on the back end. Any divergence between those layers — for example a Brazilian ABNT2 physical keyboard delivering keys to a session that has only English (US) loaded — produces wrong characters, missing accents, broken shortcuts, and failed logons that increment the Account Lockout counter.
This guide describes the recommended keyboard configuration for ABNT2 and multi-layout fleets running on Windows Server (RDS) and VDI hosts. It applies to system engineers, VDI/RDS administrators, and Thinfinity implementation teams. Following these practices ensures that the layout the user sees on the keycaps is the layout Windows actually applies — on every host, in every state (logon screen, lock screen, active session, after reconnect).
Understanding the path is essential for picking the right control point:
keydown / keypress event from the local OS, reporting the physical key (event.code), the produced character (event.key), and the legacy keyCode field.Most remote-display protocols, Thinfinity included, support two ways of representing a key:
| Mode | How it works | When to use it |
|---|---|---|
| Scancode | Sends the physical key position. The Windows host translates it using its own active layout. | Stable production environments where you control the image and load Portuguese (Brazil ABNT2) on every host. |
| Unicode | Sends the character produced by the local OS. The Windows host receives the literal codepoint. | Mixed BYOD fleets, kiosks, or clients on macOS/iPadOS where the server has no matching layout. |
Recommendation: for corporate ABNT2 environments where IT controls the Windows image, standardize on Scancode mode and load ABNT2 on every host. For mixed-device or international fleets where you cannot guarantee server-side layouts, standardize on Unicode mode and let the local OS produce the characters.
Windows keeps keyboard configuration in four distinct scopes. Mixing them up is the single most common cause of "we changed the registry but the logon screen still shows EN-US".
| Scope | Registry / location | When it applies |
|---|---|---|
| Logon / lock screen | HKEY_USERS\.DEFAULT\Keyboard Layout\Preload | Before any user logs on; lock screen between unlocks. |
| New profiles | C:\Users\Default\NTUSER.DAT | Only the very first time a user logs on to that host. |
| Existing profiles | HKEY_CURRENT_USER\Keyboard Layout\Preload | Every interactive session of an existing user (persisted in NTUSER.DAT or in the FSLogix VHDX). |
| Machine override | HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout\IgnoreRemoteKeyboardLayout = 1 | All RDP/ICA sessions on the host once set. |
kbdLayout hint.IgnoreRemoteKeyboardLayout = 1 on HKLM, Windows ignores the client hint and uses the layout loaded for that session context..DEFAULT (logon screen) or HKCU\Keyboard Layout\Preload (existing user)..DEFAULT and HKLM remain per-host and must be set on the gold image.Use the official Microsoft identifiers and never confuse the two Brazilian variants:
| Layout | Hex KLID | Notes |
|---|---|---|
| Portuguese (Brazil ABNT2) | 00010416 | Recommended for new deployments. |
| Portuguese (Brazil ABNT) | 00000416 | Legacy. Avoid mixing in the same fleet. |
| English (US) | 00000409 | Used as fallback by many remote protocols. |
IgnoreRemoteKeyboardLayout = 1 in HKLM, set .DEFAULT\Preload to 00010416, and copy language settings to "Welcome screen and system accounts" via intl.cpl → Administrative → Copy settings.C:\Users\Default\NTUSER.DAT in regedit, set Keyboard Layout\Preload\1 = 00010416, then unload. New users on the host inherit ABNT2.HKCU\Keyboard Layout\Preload through a User GPO Preference so the value is rewritten at every logon..DEFAULT are not — apply them via Computer GPO or the image.Inside the Thinfinity Workspace Access Profile (or the Thinfinity Remote Desktop Server connection settings) check the following:
kbdLayout to 0x00010416 for ABNT2. Leave it blank only when you also set IgnoreRemoteKeyboardLayout = 1 on the host.Ctrl+Alt+letter or AltGr+letter, which produce @, ?, °, and ç on ABNT2.These commands implement the recommended baseline on a single host. Always export the registry keys before applying them.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v IgnoreRemoteKeyboardLayout /t REG_DWORD /d 1 /f
reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00010416 /f
reg delete "HKU\.DEFAULT\Keyboard Layout\Preload" /v 2 /f
reg delete "HKU\.DEFAULT\Keyboard Layout\Preload" /v 3 /f
reg delete "HKU\.DEFAULT\Keyboard Layout\Preload" /v 4 /f
reg delete "HKU\.DEFAULT\Keyboard Layout\Preload" /v 5 /f
:: For the currently logged user
reg add "HKCU\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00010416 /fA reboot is required after touching HKLM and .DEFAULT. A user logoff/logon is enough for HKCU changes.
Hand-rolled scripts are fine for a pilot host. For production, use Group Policy Preferences (GPP) to make the configuration self-healing and auditable.
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout\IgnoreRemoteKeyboardLayout (REG_DWORD = 1).HKU\.DEFAULT\Keyboard Layout\Preload\1 (REG_SZ = 00010416)..DEFAULT.HKCU\Keyboard Layout\Preload\1 (REG_SZ = 00010416).Many "intermittent" keyboard reports are caused by Windows toggling between two preloaded layouts (Win+Space, Alt+Shift). Remove every layout that is not in scope for the user population and disable the language switching hotkeys via User Configuration → Administrative Templates → Windows Components → Text Input.
kbdLayout once in a profile and assign it to AD groups. Avoid drift between users.@ and ? keys of ABNT2.@ ? ç ã and accents, capture the result, fail the build if mismatched.IgnoreRemoteKeyboardLayout = 1 on every session host..DEFAULT\Preload\1 = 00010416 and that values 2…N do not exist.HKCU\Preload\1 = 00010416 for at least three sample users (one with FSLogix container, one without, one new user).@ \ / ? ; : ' ç ã and confirm they match the keycap labels..DEFAULT must also be set..DEFAULT and assuming existing users are fixed — they aren't. HKCU must also be set.Set-WinUserLanguageList on the gold image without disabling language sync, which silently re-adds EN-US after the first logon.IgnoreRemoteKeyboardLayout = 1 — this is the single most effective lever.00000416 vs 00010416) on the same host pool — both "work" but produce different characters on the AltGr layer.Ctrl+W, Ctrl+T, Ctrl+N). Use Thinfinity full-keyboard passthrough or document alternative key combinations for users.