Windows says Dvorak is the default keyboard layout, but all new windows use QWERTY

dvorakkeyboard-layoutwindows-server-2008-r2

Thanks to the help I received in this thread, I was able to get Windows to default to the Dvorak keyboard layout for all new documents/windows.

There's just one catch.

I have to re-set it every time I log in.

When I open the Text Services and Input Languages dialog (accessible from the Regional and Languages control panel or by right-clicking on the Language Bar and clicking Settings...), It shows that Dvorak is the default keyboard layout, but all new windows/documents still default to QWERTY.

I can work around this issue by changing the default to QWERTY, clicking Apply, then changing it back to Dvorak and clicking OK. But it's kind of a pain to have to do this every time I log into Windows.

Does anyone know of a workaround or some way to permanently change the default keyboard layout in Windows Server 2008 R2?

Screenshot showing Dvorak selected as the default input language, but the Language Bar is using QWERTY.

Here's what my registry looks like at HKEY_CURRENT_USER\Keyboard Layout:

  • Preload
    • 1: d0010409
    • 2: 00000409
  • Substitutes:
    • d0010409: 00010409
  • Toggle:
    • Hotkey: 3
    • Language Hotkey: 3
    • Layout Hotkey: 3

Note: I've noticed this behavior on a number of virtual instances, but it does not seem to occur on physical (non-virtualized) installations.

Best Answer

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.

Related Question