Do you use several keyboard layouts in Windows XP? Ever been annoyed that the layout at the login screen is locked to the installation default? Here's how to fix it, with a simple registry hack.

Disclaimer: Use at your own risk, yada yada yada...

How to enable multiple keyboard layouts at login:

  1. Back up the registry!
  2. Start the registry editor: Press Windows+R, type regedit, and press Enter.
  3. Click on HKEY_USERS, and locate the key (the things which look like directories) which is your SID - It should be one of the longest. If you have problems finding the SID, you can try MS' own getsid (Update: sorry, the link is dead).
  4. Right-click the sub-key Control Panel\Input Method\Hot Keys and select Export.
  5. Save the file to disk.
  6. Open the file in a text editor.
  7. Leave the first line in the file, but remove all the keys (and their name/value pairs) which don't end in 10X, where X is a number. These are the keyboard shortcuts for switching between the layouts (if you have set any).
  8. Replace the SIDs in the key names with .DEFAULT, so that they will be applied to the default user.
  9. Export the Keyboard Layout\Preload key to a file, and copy the contents (except the first line) into the file you worked with earlier. These are the layout settings.
  10. Now you should have a working registry file. Before proceeding, you should check that it's at least similar to the one I ended up with, below.
  11. Save and double-click on the file to insert the data in the registry.

Now you should be able to change the keyboard layout the same way you do it in Windows when logging in.

Code

Windows Registry Editor Version 5.00
; $Id: dvorak-keyboard-layout-at-login.reg 169 2007-09-25 09:31:02Z vengmark $

; Shortcut keys for layouts 1, 2, and 3
[HKEY_USERS\.DEFAULT\Control Panel\Input Method\Hot Keys0000100]
"Virtual Key"=hex:31,00,00,00
"Key Modifiers"=hex:05,c0,00,00
"Target IME"=hex:09,04,02,f0

[HKEY_USERS\.DEFAULT\Control Panel\Input Method\Hot Keys0000101]
"Virtual Key"=hex:32,00,00,00
"Key Modifiers"=hex:05,c0,00,00
"Target IME"=hex:09,04,09,04

[HKEY_USERS\.DEFAULT\Control Panel\Input Method\Hot Keys0000102]
"Virtual Key"=hex:33,00,00,00
"Key Modifiers"=hex:05,c0,00,00
"Target IME"=hex:14,04,14,04

; Remove old settings
[-HKEY_USERS\.DEFAULT\Keyboard Layout]

; Set layouts
[HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]
; US-Dvorak (default)
"1"="00000409"

; US-English
"2"="d0000409"

; Norwegian
"3"="00000414"

; Fallback layouts
[HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes]
"00000409"="00010409"
"d0000409"="00000409"

; Use Alt-Shift-# (# is 1, 2, or 3) to change between layouts
[HKEY_USERS\.DEFAULT\Keyboard Layout\Toggle]
"Hotkey"="3"
"Language Hotkey"="3"
"Layout Hotkey"="3"