Installed multiple unwanted keyboards - Fixed!

Don’t know if this the usual kind of post, but I found a problem and also a solution. From the configuration menu of Keyman, I searched for and installed the Bulgarian (Phonetic) Basic keyboard. When I tried to use it, some of the automatic switching (for example, in Word) was getting messed up because it kept switching to the wrong Bulgarian keyboard.

I looked, and in addition to Bulgarian (Phonetic) Basic, the Bulgarian (Phonetic Traditional) and Bulgarian keyboards had also been installed without my permission or knowledge. I tried to turn them off in the windows settings Time & language > Language & region > Options page, but only the Bulgarian (Phonetic) Basic keyboard was there, not the other two.

After a little googling, I found a fix. Add those two unwanted keyboards, then delete them again. Now only 1 Bulgarian keyboard appears instead of three.

Thank you @Christopher_Fiorello for reporting the issues and providing the workaround.

Has other keyboards you tried downloading suddenly appeared as well, or only for the Bulgarian keyboards?

I was unable to get the Bulgarian (Phonetic Traditional) and other Bulgarian keyboards after installing or typing with the Bulgarian (Phonetic) Basic. Would it still happen if you downloaded the keyboard again?

Could you provide the information of your OS and Keyman version?

I’m on Windows 11 Pro 23H2, and I’m running Keyman 17.0.330. This hasn’t happened before where it’s added more languages, but there may perhaps be a different related problem: I downloaded the Pashto (Afghanistan) Basic keyboard (through that same method, using the link in the “Download Keyboard” button at the bottom of the Keyman Configuration window) and it came in as a keyboard under “English” language instead of Pashto language. I just checked the windows settings and it indeed shows “Pashto (Afghanistan) Basic” as a keyboard in the English Language area. There is also a Pashto language area in windows settings (I suppose it got added when the keyboard got installed?) but no keyboard is selected there.

I never bothered to change it because the keyboard still worked and wasn’t causing me any problems, but I will change it now that I’ve looked.

So there’s a further wrinkle. I’ve tried to add the Pashto (Basic) Afghanistan keyboard to Pashto language in windows settings, but it does not come up on the list. In Keyman configuration settings for Pashto it lists the language as English. When I try to use the “Add a Language” feature from the Keyman configuration window, I used the Add a Language to Keyboard dialog box and selected Pashto Afghanistan.

After trying to install, however, I got this error message: “Unable to install keyboard language; Windows has a limit of 4 custom ‘transient’ languages, and you may have reached this limit.” Any ideas for how to get the Pashto (Afghanistan) Basic keyboard associated with Pashto language in Windows?

Hello @Christopher_Fiorello,

Yes, that is the correct way to associate the keyboard to the correct language.
The ‘Pushto’ is recognized as one of custom transient languages (read more), but it is the language tag. Could you show the languages that come with the keyboard? Try removing the existing languages and adding the correct one.

I will report this issue on our GitHub. Please provide us the diagnostic report, once the information is filled, the report will be sent to us on the community site.

I have sent the diagnostic report. I’m not sure what you mean by “languages that come with the keyboard”. I removed English, and now no languages are listed.


We have received the report, @Christopher_Fiorello.

What were the list of languages after downloading the keyboard?

Please re-add the Pushto language to re-trigger language association for the keyboard.

Thank you!

The issue related to Pashto (Afghanistan) Basic keyboard is on our repo and for Bulgarian (Phonetic) Basic keyboard is here. Feel free to add any missing details.
.

Sorry to say this again, but re-adding the Pushto language is what causes the error in the screenshot below.
image

Hi @Christopher_Fiorello,

Would it be possible to send us the language information in your system by using this command reg query "HKCU\Control Panel\International\User Profile" /s in the Command Prompt? This way it would help us to find the underlying issue.

Thank you!

Hello @ross,

I would like to invite you to stay in loop of this conversation.

Thank you!

C:\Users\User>reg query "HKCU\Control Panel\International\User Profile" /s

HKEY_CURRENT_USER\Control Panel\International\User Profile
    Languages    REG_MULTI_SZ    en-US\0prs-Arab\0und-Latn\0tk-Arab-AF\0ar-EG\0wbl-Arab-AF\0da\0grc-Grek-GR\0fa-AF\0el\0ps\0bg
    ShowAutoCorrection    REG_DWORD    0x1
    ShowTextPrediction    REG_DWORD    0x1
    ShowCasing    REG_DWORD    0x1
    ShowShiftLock    REG_DWORD    0x1
    UserLocaleFromLanguageProfileOptOut    REG_DWORD    0x1

HKEY_CURRENT_USER\Control Panel\International\User Profile\ar-EG
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1012

HKEY_CURRENT_USER\Control Panel\International\User Profile\bg
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1044
    0402:{FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7}{9B6ECAE7-966F-4DFC-8D45-C50EA542D349}    REG_DWORD    0x1

HKEY_CURRENT_USER\Control Panel\International\User Profile\da
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1088

HKEY_CURRENT_USER\Control Panel\International\User Profile\el
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1103

HKEY_CURRENT_USER\Control Panel\International\User Profile\en-US
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1121
    0409:00000409    REG_DWORD    0x1
    0409:{FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7}{8419265D-691B-4D99-A686-A2BFD6151008}    REG_DWORD    0x2

HKEY_CURRENT_USER\Control Panel\International\User Profile\fa-AF
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1765

HKEY_CURRENT_USER\Control Panel\International\User Profile\grc-Grek-GR
    CachedLanguageName    REG_SZ    Ancient Greek (to 1453) (grc-Grek-GR)
    TransientLangId    REG_DWORD    0x2c00

HKEY_CURRENT_USER\Control Panel\International\User Profile\prs-Arab
    CachedLanguageName    REG_SZ    Dari (prs-Arab)
    048C:00050429    REG_DWORD    0x1

HKEY_CURRENT_USER\Control Panel\International\User Profile\ps
    CachedLanguageName    REG_SZ    @Winlangdb.dll,-1370

HKEY_CURRENT_USER\Control Panel\International\User Profile\tk-Arab-AF
    CachedLanguageName    REG_SZ    Turkmen (tk-Arab-AF)
    TransientLangId    REG_DWORD    0x2400

HKEY_CURRENT_USER\Control Panel\International\User Profile\und-Latn
    CachedLanguageName    REG_SZ    Undetermined (und-Latn)
    TransientLangId    REG_DWORD    0x2000
    2000:{FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7}{B7781350-2915-4D6F-BE76-B82B25BA4520}    REG_DWORD    0x1

HKEY_CURRENT_USER\Control Panel\International\User Profile\wbl-Arab-AF
    CachedLanguageName    REG_SZ    Wakhi (wbl-Arab-AF)
    TransientLangId    REG_DWORD    0x2800

Windows has a set of ‘supported’ languages which each have their own integer identifier, but that covers only a tiny fraction of the languages listed in the BCP47 standard. For all the remaining languages, Windows has allocated 4 “transient” integer identifiers (0x2000, 0x2400, 0x2800, 0x2C00).

From your report, I can see 4 transient languages installed:

  • 0x2000: und-Latn (Undetermined, Latin script) – often used for IPA
  • 0x2400: tk-Arab-AF (Turkmen, Arabic script, Afghanistan) – Turkmen in Latin script is available as a non-transient language, but not Arabic script
  • 0x2800: wbl-Arab-Af (Wakhi, Arabic script, Afghanistan)
  • 0x2C00: grc-Grek-GR (Ancient Greek, Greek script, Greece)

Unfortunately, Windows only supports 4 “transient” languages. This is a limitation that we hope will be resolved in Windows in a future version. I have discussed this limitation further, and some workarounds, in this post: Transient languages - #4 by Marc

1 Like