On-Screen Keyboard Language Layouts

Important

As of Windows 10 IoT Core, version 1809, this article is no longer applicable. Please see the On-screen keyboard for headed devices page for the current documentation.

The on-screen keyboard (OSK) in Windows 10 IoT Core, versions 1703, 1709, and 1803, supports layouts for the following languages:

Language Tag Description Layout Code
en-US English (United States) 00000409
en-AU English (Australia) 00000C09
en-CA English (Canada) 00001009
en-GB English (Great Britain) 00000809
es-ES Spanish (Spain) 0000040A
es-MX Spanish (Mexico) 0000080A
de-DE German 00000407
fr-CA French (Canada) 00000C0C
fr-FR French (France) 0000040C
it-IT Italian 00000410
pt-BR Portuguese (Brazil) 00000416

By pressing and holding the OSK's "&123" button, the user can select which layout they want to use:

All languages

As an OEM, however, you can limit which layout choices are displayed to the user. To limit which layouts to show the user, first reference the guidance from the Keyboard Layout doucmentation on TechNet.

For a concrete example, if you want to only allow North America language layouts (en-US, en-CA, es-MX, fr-CA), you could add the following to your OEMCustomization.cmd script:

call "%~dp0\setKeyboardLanguages.cmd"

Where setKeyboardLanguages.cmd is a script in the same directory containing this:

@echo off

set getDefaultAccountSID="wmic.exe useraccount where name='DefaultAccount' get sid"

for /F "tokens=2 usebackq delims== " %%s in (`%getDefaultAccountSID%`) do (
    set registryKey="HKEY_USERS\%%~s\Keyboard Layout\Preload"
    goto :setRegistry
  )
)
echo Unable to determine SID for DefaultAccount
goto :eof

:setRegistry
  echo on
  REG ADD %registryKey% /v "1" /d "00000409" /f
  REG ADD %registryKey% /v "2" /d "00001009" /f
  REG ADD %registryKey% /v "3" /d "0000080A" /f
  REG ADD %registryKey% /v "4" /d "00000C0C" /f
  @echo off
goto :eof

The resulting effect of the above command script will be:

North American languages

Some things to note

  • The value names indicate a decimal sequence.
  • The values are string values (REG_SZ).
  • The script text above, of course, could be added directly into the OEMCustomization.cmd script.
  • Do not delete the "Preload" registry key since it has permissions set on it specifically to allow the on-screen keyboard application to read its values.
  • A prerequisite for these instructions to be applicable, is that your image must include the following features*:
    • IOT_SHELL_ONSCREEN_KEYBOARD
    • IOT_SHELL_ONSCREEN_KEYBOARD_FOLLOWFOCUS

For more information about IoT Features, see IoT Core Feature List.