23

Canonical question: One has a Windows 10 installed with display language A, but uses keyboard layout B. What does one need to do, to stop Windows from automatically adding an unwanted keyboard layout from language A to one's system?

My example: I have a Windows 10 in English and I'm using a Slovenian keyboard layout. And this is working just fine, until I run a certain program that Windows ever so intelligently thinks needs an US keyboard layout. Windows adds this unwanted layout automatically, switches to it and doesn't remove it afterwards. The new layout isn't even listed in installed layouts. The only way to remove it after it appears, is to manually add it as a keyboard layout and remove it.

It seems that's a common problem for many people but after many hours of googling, I just couldn't find a good solution for it... It would be perfectly fine with me if I could just completely remove the US keyboard layout from my system, but if I do that, the keyboard stops working in some programs altogether.

Programs that I or other people have this problem with: ICQ, some versions of Microsoft Office (lol), games based on Source engine, some versions of UltraVNC, Adobe CC Suite, and the list goes on.

Unwanted keyboard layout that Windows keeps adding

Brane
  • 609

2 Answers2

6

I'm not sure what you've already tried but here are some possible solution that might help you out.

Override default input method

If you go to: Control Panel > All Control Panel Items > Language > Advanced settings

You will see an option to override default input method. You can set this to your wanted keyboard setting.

If you click on Change language bar hot keys (see image bottom) you can change the ALT+SHIFT or CTRL+SHIFT hotkeys. A button in the Advanced tab will say Change key sequence. You can put them on non assigned.

enter image description here

Set default input method in language options

If you go to: Control Panel > All Control Panel Items > Language

A screen like this will come up

language options

  1. Select your wanted language and move it up to the top.
  2. Then click on Options
  3. A second screen will popup.
  4. Add a different input method in your case English Slovenian keyboard and then delete the other one.

enter image description here

Add a reg key

You can add a DWORD called IgnoreRemoteKeyboardLayout with regedit to the following folder in regedit. Give it a value of 1.

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Keyboard Layout

Or copy and paste this in a text editor and save it as .reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001

Then double click it and it will add the reg key for you.

Remove the keyboard layout also in REG

  1. Go to the Region & Language settings
  2. Click on Options at the only Language that is there
  3. Under Keyboards delete the US layout
  4. Save that setting
  5. Then start regedit and go to HKEY_CURRENT_USER > Keyboard Layout > Preload
  6. Right click on Preload and click Permissions

enter image description here

Deny permission for everyone but make sure 1 account is still able to change it. (just make a new account and give that access). Oterwise you lock youself out of that reg map. Now only the other user can change that reg key.

I'm still looking for more possible solutions but this is what I got for now. Let me know how it worked out for you.

rrobben
  • 979
0

ATTENTION!!! The solution removes the registry keys for US layout!!!

Use only if you know what you are doing!

First backup your registry!

Execute in PowerShell:

Remove-Item -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts\00000409" -ErrorAction SilentlyContinue;
Remove-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout\DosKeybCodes" -Name "00000409" -ErrorAction SilentlyContinue;
Remove-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Keyboard Layout\DosKeybCodes" -Name "00000409" -ErrorAction SilentlyContinue;

After some Windows updates may need to re-execute commands.

It can be considered only a temporary solution until you find a more correct one.

Victor S.
  • 379