Make Windows custom keyboard layouts work on Windows ARM

Upload a Windows keyboard-layout source file (.klc, as saved by Microsoft Keyboard Layout Creator) and get back an installer containing your layout ready to use on Windows 11 on ARM (e.g. for laptops with Snapdragon processors).

This project is open source: github.com/Robertof/klc2arm.

Why? The keyboard layout creator tool only outputs DLLs/installers compatible with x86/x86_64 Windows installations. Those do not play nice on Windows ARM, resulting in weird issues (but most likely in the layout working once and never again after it is installed). Ways to make this work are documented but extremely cumbersome, so this tool aims to make it easy for anyone depending on custom layouts to run them on their machine.

After installing: the MSI registers the layout and copies the DLL into System32, which makes the layout selectable — but Windows does not activate it for you. Add it yourself under Settings → Time & language → Language & region → (your language) → Keyboards → Add a keyboard. You may need to reboot for the layout to show up.

Note: The output MSI is unsigned: SmartScreen will likely warn you when executing it. Click "More info" and then "Run anyway" to make it work.

Problems? The layout is stored under C:\Windows\System32\<name>.dll and registered in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\aXXXXXXX. Uninstall via the Control Panel to get rid of both.

Like the tool or having weird problems? Send me an e-mail at roberto [at] frenna [dot] pro!