Removing previously-installed keyboards

I’m not sure if this is strictly Keyman-related, but I imagine I’m not the only one with this problem.

When I go into the Windows language settings, I have a lot of extra keyboards. This is Windows 11 Pro. I go to Language & Region, click the three dots next to Persian (for example), select Language Options, and then when I click Add a keyboard, I see this list:

(I’ve blurred for privacy… you’ll just have to accept that there is a list of keyboards shown with the same name.)

I suspect that this is because, whenever I have a keyboard problem, I try reinstalling the keyboard (either Keyman of from the MS Keyboard Layout Creator, over the years). These extra keyboards apparently just keep getting added.

Is there a way to remove these extra keyboards?

I’m not entirely sure what is causing this – I’ve tried to reproduce this here (on my Win10 computer) but not seeing this pattern on my computer. Is this happening with both Keyman and MSKLC keyboards?

Which version of Keyman are you running?

If it’s related to Keyman, you may try and remove all keyboards from within Keyman Configuration. Just in case, here is instruction to do so: Keyboard Task - Uninstall a Keyboard. To ensure everything is OK, uninstall and reinstall Keyman. For better support and fixes, you may use the latest version of Keyman.

I’ve tested this in Windows 11.

Edition Windows 11 Pro
Version 21H2
Installed on ‎2/‎8/‎2022
OS build 22000.1098
Experience Windows Feature Experience Pack 1000.22000.1098.0

The issue described above seems to be Windows’ related and from what I can tell when you click to Add a keyboard from the Language Options of the language in question under Language & region, you are given a list of keyboards to choose from (see the screenshot). These keyboards are what available for one to add to the language chosen earlier so that it/they can be used Windows-wide.

The keyboard added should be shown in the taskbar (see screenshot below).

If you happen to have a lot of keyboards more than you need for a given language, you may consider removing them manually. You can also remove a language from within Language & region. Restart your machine for the changes to take effect.

Please provide more info if nothing above makes sense.

Thank you for this response. Yes I can remove them once they’re installed, but is there a way to remove them from the list? For instance I have several keyboards with the same name. They’re duplicates at least, and could conceivably be causing problems. Do you know how to remove those? Are they in the registry, or are they DLLs someplace?

I do think this is probably not a Keyman thing; I appreciate being able to draw on the expertise of people who understand how the Windows language thing works!

The keyboards are listed in the registry, but some the data is pretty complex and fragile. There are two potential sources for the extra keyboards: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts, and HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP.

Keyman language profiles are registered under Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7}\LanguageProfile; very old versions of Keyman may have some entries under a different GUID.

Note that making incorrect changes here may leave the per-user language settings in a broken state – worst case, in my experience, it can cause Explorer to crash on start, which can make it difficult to undo the changes!

So: obligatory warning that editing registry may corrupt your system etc etc.

Thanks, that points me in the right direction.

So, looking at the entries under they Keyman entry you indicate (Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7}\LanguageProfile), I see various keys, some of which are language codes and some of which I can’t identify.

  • 0x00000409 (English)
  • 0x00000429 (Farsi)
  • 0x00002000 (not a code I can find)
  • 0x00002400 (not a code I can find)
  • 0x00002800 (not a code I can find)
  • 0x00002c00 (not a code I can find)

Do those all belong there? There are various duplicate looking entries underneath them. That is to say, they have different GUIDs, but they’re keyboards for the same languages. Perhaps those are my duplicate keyboards?

Would it be reasonable to delete those entries? (Not that you could ever recommend editing the registry, etc.! I have a backup.)

These four codes are “transient LCIDs”. Windows uses these to provide support for BCP 47 language tags that are not otherwise mapped to LCIDs.

It’s possible that there are some lingering duplicate keyboard identifiers listed there, but I couldn’t say without seeing the whole picture. If you like, you could send us a diagnostic report and I could give more feedback.

Note: the team will all be on break from tomorrow until early January, so please be patient with us!

Thank you for your help. I was able to remove the keyboards by removing keys that looked relevant in the two locations you suggested: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts, and HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP.

Hopefully that solves the keyboard-switching problem. Thanks again!

1 Like

This conversation has been resolved.