I had a problem the other day trying to get a Windows 7 operating system, that is in English to work with a French keyboard. Of course, I hadn't set it up myself, but was asked to change the system after the fact. It initially had an English QWERTY keyboard and then my friend started to use a French AZERTY keyboard.
So first, check the list of values below, and then choose the one you want to change to. The English code which could be for the UK, 00000809 or for the US it would be 00000809, and say would befor example changed to a French standard keyboard, the value of which would be 0000040c as you can see in the list below.
Click in the far bottom left hand corner on the blue 'Start' circle and in the Search for Programs and Files area type "regedit". Regedit is a powerful tool and could severely damage your computer if you mess about with it so make sure you are careful and know what you are doing...
Once regedit is launched you need to click in the left hand column on "HKEY_USERS", then ".DEFAULT" etc. as the path below:
HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
Once you click on "Preload" you will see values appear in the right hand preview pane. Below (Default) you should see an item called "1" when you select and right click on this you should see the option "Modify...".
By clicking on this you can change the value to the one you need. Just to check you should see that the current keyboard value is in the list below and corresponds to the one you want to change from. Then, leaving the "value name" as it is, update the "value data" accordingly with the new value selected from the table below and that fits the type of keyboard you are using.
00000402 Bulgarian
0000041a Croatian
00000405 Czech
00000406 Danish
00000413 Dutch (Standard)
00000813 Dutch (Belgian)
00000409 English (United States)
00000809 English (United Kingdom)
00001009 English (Canadian)
00001409 English (New Zealand)
00000c09 English (Australian)
0000040b Finnish
0000040c French (Standard)
0000080c French (Belgian)
0000100c French (Swiss)
00000c0c French (Canadian)
00000407 German (Standard)
00000807 German (Swiss)
00000c07 German (Austrian)
00000408 Greek
0000040e Hungarian
0000040f Icelandic
00001809 English (Irish)
00000410 Italian (Standard)
00000810 Italian (Swiss)
00000414 Norwegian (Bokmal)
00000814 Norwegian (Nynorsk)
00000415 Polish
00000816 Portuguese (Standard)
00000416 Portuguese (Brazilian)
00000418 Romanian
00000419 Russian
0000041b Slovak
00000424 Slovenian
0000080a Spanish (Mexican)
0000040a Spanish (Traditional Sort)
00000c0a Spanish (Modern Sort)
0000041d Swedish
0000041f Turkish
Please make sure that you know what you are doing before using this method as getting it wrong with regedit could have really bad side effects... There are no value checks that the normal Windows interface uses to check you have entered data that will work.
In order for this to take effect you will need to restart your computer or you can simply log-off and log-on again.
From what I have understood the values in HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes are to provide a user with the ability to switch between 2 languages at login as opposed to a screen that does not display any other options at login. So if you have an external keyboard that is different to say the keyboard on your laptop this would be were you could enter in order of priority the 2 language values. This should then provide you with a option in the top left hand corner of your Windows 7 login screen with the option to switch between langauges/keyboards.