28

Does anyone know the API call I can use to change the keyboard layout on a windows machine to Dvorak? Doing it through the UI is easy but I'd like to have a script that I can run on new VM's to automate the process.

Cœur
  • 37,241
  • 25
  • 195
  • 267
JaredPar
  • 733,204
  • 149
  • 1,241
  • 1,454

2 Answers2

11

I may be four years late to the party, but did you ever find this:

Intlcfg Command-Line Options

I don't have Windows Vista (very bad habit, Windows), but looking at this page and also at Available Language Packs and Default Input Locales I reckon the command you want might well be:

intlcfg.exe -inputlocale:0409:00010409

for English (United States) language with United States Dvorak input locale.

Bobulous
  • 12,967
  • 4
  • 37
  • 68
8

You can do this via the registry. Just save it as a .reg file, and open it on the new VM. I believe this should do it for remapping to Dvorak:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"ScanCode Map"=hex:00,00,00,00,00,00,00,00,22,00,00,00,2d,00,30,00,24,00,2e,00,\
11,00,33,00,33,00,11,00,12,00,20,00,34,00,12,00,1b,00,0d,00,0d,00,1b,00,16,\
00,21,00,17,00,22,00,20,00,23,00,1a,00,0c,00,2e,00,17,00,23,00,24,00,14,00,\
25,00,31,00,26,00,35,00,1a,00,30,00,31,00,13,00,18,00,26,00,19,00,2f,00,34,\
00,28,00,10,00,0c,00,28,00,19,00,13,00,18,00,1f,00,1f,00,27,00,2c,00,35,00,\
15,00,14,00,22,00,16,00,25,00,2f,00,10,00,2d,00,21,00,15,00,27,00,2c,00,00,\
00,00,00

And if you want to go back:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"ScanCode Map"=hex:00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00
pkaeding
  • 36,513
  • 30
  • 103
  • 141
  • I looked at the registry on my machine (Vista) where I have Dvorak setup and I didn't see any of these entries. – JaredPar Oct 03 '08 at 14:58
  • 1
    Yes, probably selecting the layout in the UI sets some other flag. This method will remap the keyboard, without changing the layout. Its a strange distinction, but I think it explains the difference. – pkaeding Oct 03 '08 at 15:19
  • On XP: "Cannot import dvorak.reg: Not all data was successfully written to the registry. Some keys are open by the system or other processes." I'm a university student so it would be nice if I could find a reliable way of quickly switching any PC I log in to to Dvorak, possibly by running a script in my user directory. – gary Aug 26 '11 at 23:07