Custom Keyboard Layouts in Windows 11 No Longer Works

Joppy 5 Reputation points
2025-07-23T19:30:54.4466667+00:00

Plain and simple. I use a custom keyboard layout that I made myself. It has been working for year on windows 7 and windows 10. I update to windows 11. It no longer works. When I use the same install files they install seemingly fine, but then they display as "Unavailable input method".

I will downgrade and refuse to upgrade until you fix this, since the extra functionality it offers its essential to me. Remapping in registry, auto hotkey, custom keyboard etc. are not solution and doesn't work as well as native layouts.

Windows for home | Windows 11 | Input and language
0 comments No comments

6 answers

Sort by: Most helpful
  1. buyi1net 0 Reputation points
    2026-09-03T20:42:27.5133333+00:00

    Root cause analysis + a working workaround (tested on 26200.9168 / 25H2)

    We hit the same "Unavailable input method" wall with custom KLID layouts and ran a full experiment matrix on Windows 11 25H2 (build 26200.9168). Findings:

    Why it shows "Unavailable input method": The Settings page (Language options → Keyboards) resolves keyboard entry display names only from the built-in layout tables (input.dll / NLS). Any custom KLID (the a0000xxx namespace MSKLC generates) is outside those tables, so Settings falls back to "Unavailable input method" — regardless of:

    • Layout Text being set correctly

    Layout Display Name being set (plain string or indirect string)

    The entry being written through the modern API channel (Get-WinUserLanguageList / Set-WinUserLanguageList round-trip — which, notably, does accept and preserve custom KLIDs)

    Meanwhile the tray indicator, the Win+Space input switcher, and actual typing all work correctly with the custom layout. The defect is purely in Settings' name-resolution path.

    Additional data points from our experiments:

    Removing Layout Id from the layout registration does NOT fix the Settings display — it actually breaks layout loading (the layout silently disappears from the switcher). Layout Id is required.

    On 24H2+ the per-language "Add a keyboard" list is curated: for zh-CN it only offers Microsoft Pinyin / Microsoft Wubi. The plain US keyboard is no longer offered, and custom KLID layouts are never enumerated. For users who need a bare US layout under the Chinese language (e.g., gaming: zero key interception, no IME global hotkeys, no candidate popup in fullscreen games), the Settings UI path is fully closed — registry is the only way.

    The legacy d0000804 preload-substitute chain stopped having any effect on the tray indicator since 24H2.

    Workaround that works (functional surfaces): Register a custom KLID (e.g. a0000804: Layout File = KBDUS.DLL, Layout Text = <same as language display name>, Layout Id = 0ae1), then use it as the language's keyboard entry (0804:a0000804 in the user profile). Tray/switcher/typing are all correct. Accept the cosmetic "Unavailable input method" in Settings until this is fixed.

    We'd appreciate the Settings team either resolving custom layout names from Layout Text/Layout Display Name, or restoring custom layouts (and the plain US keyboard for non-Latin languages) to the per-language add list.Root cause analysis + a working workaround (tested on 26200.9168 / 25H2)

    We hit the same "Unavailable input method" wall with custom KLID layouts and ran a full experiment matrix on Windows 11 25H2 (build 26200.9168). Findings:

    Why it shows "Unavailable input method": The Settings page (Language options → Keyboards) resolves keyboard entry display names only from the built-in layout tables (input.dll / NLS). Any custom KLID (the a0000xxx namespace MSKLC generates) is outside those tables, so Settings falls back to "Unavailable input method" — regardless of:

    Layout Text being set correctly

    Layout Display Name being set (plain string or indirect string)

    The entry being written through the modern API channel (Get-WinUserLanguageList / Set-WinUserLanguageList round-trip — which, notably, does accept and preserve custom KLIDs)

    Meanwhile the tray indicator, the Win+Space input switcher, and actual typing all work correctly with the custom layout. The defect is purely in Settings' name-resolution path.

    Additional data points from our experiments:

    Removing Layout Id from the layout registration does NOT fix the Settings display — it actually breaks layout loading (the layout silently disappears from the switcher). Layout Id is required.

    On 24H2+ the per-language "Add a keyboard" list is curated: for zh-CN it only offers Microsoft Pinyin / Microsoft Wubi. The plain US keyboard is no longer offered, and custom KLID layouts are never enumerated. For users who need a bare US layout under the Chinese language (e.g., gaming: zero key interception, no IME global hotkeys, no candidate popup in fullscreen games), the Settings UI path is fully closed — registry is the only way.

    The legacy d0000804 preload-substitute chain stopped having any effect on the tray indicator since 24H2.

    Workaround that works (functional surfaces): Register a custom KLID (e.g. a0000804: Layout File = KBDUS.DLL, Layout Text = <same as language display name>, Layout Id = 0ae1), then use it as the language's keyboard entry (0804:a0000804 in the user profile). Tray/switcher/typing are all correct. Accept the cosmetic "Unavailable input method" in Settings until this is fixed.

    We'd appreciate the Settings team either resolving custom layout names from Layout Text/Layout Display Name, or restoring custom layouts (and the plain US keyboard for non-Latin languages) to the per-language add list.

    Was this answer helpful?

    2 people found this answer helpful.
    0 comments No comments

  2. Jeronimo Fuerte 45,585 Reputation points Independent Advisor
    2025-07-23T20:07:28.47+00:00

    Hi! Sorry to hear that you have troubles with this situation, have you tried this:

    1. Go to Settings > Time & language > Language & region.
    2. Next to the display language (e.g., English), click the tree dots > Language options > Add a keyboard.
    3. Look for your custom layout in the list and add it  .

    This ensures Windows recognizes it as an input option.

    Was this answer helpful?

    2 people found this answer helpful.

  3. Joppy 5 Reputation points
    2025-07-23T19:35:21.35+00:00

    I posted this by mistake (I started this question and then saw a similar question from 2023). I switch back and forth a with another window to check the exact message, and accidentally I finished and post this new question instead of posting on that old one. I just copied over this questions text and didn't modify it a lot, and didn't notice. Why don't you have a delete option so you can self moderate a bit?

    That 2023 question (nor the 2022 one) has had zero help though, and I doubt you check new post there. Please fix.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments

  4. Jeronimo Fuerte 45,585 Reputation points Independent Advisor
    2025-07-24T13:02:27.1066667+00:00

    Glad to know the steps worked for you, with that modification you made to the process, as you mentioned something can be improve on the process, you can share this feedback following this steps so the proper teams get the information:

    https://support.microsoft.com/en-us/windows/send-feedback-to-microsoft-with-the-feedback-hub-app-f59187f8-8739-22d6-ba93-f66612949332

    Was this answer helpful?


  5. Anonymous
    2025-07-24T12:02:04.55+00:00

    Make sure to install and enable the .NET Framework 3.5 in the Windows Features and reboot afterwards. Since your layout was created with an older version of your tool, you might need this to make sure it's being recognized on newer versions as well.

    User's image

    In my case, this solved my issues with custom keyboard layouts.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.