Yet, I've not found out if it is possible to change the default input language via a shortcut or if it's possible to disable the regular fall back to the default input language when opening a new program, but I've found an alternative!
Googling the problem, I came across the following article written by Androgen Belkin:
http://www.script-coding.info/AutoHotkey/AhkRussianEng.html
He explains that Russians always have a similar problem with their keyboards concerning the Russian and English language. Thus, he created a script that checks and switches on user input, if necessary, the default input language when Windows starts. The script can be found on the above link at the very bottom and has been written for AutoHotKey, a free keyboard macro program. Luckily, I am a devoted AutoHotKey user myself.
Instead of Russian and English, I adapted the script to check for the German and English default input language. It works errorless and is very handy because now I can set my default input language with ease :)
Furthermore, AutoHotKey supports compiling scripts into single executables. I don't want to withhold my script from everybody to whom it is as useful as to me.
Switching default input language [Germany (German) <> English (United States)]:
http://www.megaupload.com/?d=A8HKEV4A
Filename: Switching_default_input_language_DE-EN.zip
Contents: (1) Switching_default_input_language.ahk (AutoHotKey script; for editing or re-compiling the script), (2) Switching_default_input_language.exe (stand-alone executable)
Have fun! :)
The keyboard layout is contained in the registry key HKEY_CURRENT_USER\Keyboard Layout
.
The REG_SZ item "1" contains the first layout, "2" the second, etc.
The article Windows Keyboard Layout lists most keyboards ids.
You would also find your above layout ids defined as sub-keys of the registry key
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\keyboard layouts
.
Analyzing your registry info :
Preload
determines which keyboard layouts are present in the keyboard switch button (on the bottom right of the taskbar), and the number determines the ordering. You have two of them : d0010409=Dvorak English and 00000409=US English.
This list order does not mean much more than that.
Substitutes
maps the value d0010409 to the layout 10409 which is also Dvorak. I assume that the changing of the upper half of the key code isn’t significant and is properly mapped by the substitutions hive.
What is missing is perhaps the substitution that maps 00000409 (US) to 00010409 (Dvorak). This can be done by entering it manually, or by the command :
reg add "HKCU\Keyboard Layout\Substitutes" /v 00000409 /d 00010409
When changing the registry take all due precautions : Create first a system restore point and also export the entire registry key.
Best Answer
Keyboard layout toggle
The information you're looking for is stored in the following registry key:
The key sequence is determined by the
Layout Hotkey
value:When the value is missing, that means the default setting is being used (i.e. Ctrl + Shift).
References