You need to:
-- Put your keyboard layout (the .dll) in \windows\system32
Look at the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
If you keyboard layout is a US / english layout look look at this key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000409
You will pick a registry key name XXXX0409 where 'XXXX' is an unused registry key.
I.e, 0001049 is the United States-Dvorak (look at its values), 00020409 is the United States-International,...
I would not use a0000409 because that is what MSKLC typically uses. Perhaps 00060409 would be good.
The last 4 characters of the string must always be the 'locale' (the language):
0409 means US English
0407 means German (Deutsch)
Have you installer make the registry entry.
By the way the Layout Display Name value (Like: @%SystemRoot%\system32\input.dll,-5000) is where the system
is getting some information to display about the keyboard. I am assuming you are doing this in C++ (your keyboard layout).
The default location for standard installed keyboard layouts is in input.dll.
In your .rc for your keyboard layout include something like this:
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
BEGIN
1000 L"US(P)"
1100 L"Custom English (United States)"
1200 L"en-US"
END
The value for your registry keys 'Layout Display Name' value would then be
@%SystemRoot%\system32\YourCustomName.dll,-1100
After you have done this go to Settings->Time & Language->Language.
Click on your language the keyboard is designed for under 'preferred languages'.
Click on 'Options'
Under 'Keyboards' click Add a keyboard.
Find your custom keyboard in the list and add it.
It will now be preloaded.
If interested one can look at the following registry keys:
HKEY_USERS.DEFAULT\Keyboard Layout
This is where keyboard layout that are loaded at boot time are identified.
HKEY_USERS.DEFAULT\Keyboard Layout
This is where keyboard layouts that can be substituted within a language (i.e. 0409))
I do not normally do the Settings-> thing for my keyboard layouts, but rather make the
Preload and Substitute registry settings myself within a C++ installer (One cannot make these
due to the quite complicated dance it requires cannot be performed via standard Installer Database commands).
Hope this helps.
You need to also have your Keyboard layout preloaded if you want it to appear