Skip to content

Instantly share code, notes, and snippets.

@joshschmelzle
Last active April 26, 2024 11:53
Show Gist options
  • Save joshschmelzle/5e88dabc71014d7427ff01bca3fed33d to your computer and use it in GitHub Desktop.
Save joshschmelzle/5e88dabc71014d7427ff01bca3fed33d to your computer and use it in GitHub Desktop.
Remap Caps Lock to Control on Windows 10

Ways to remap caps lock to control on Windows 10

These methods in this gist worked for me on my U.S.-based keyboard layouts. I am unsure about other layouts. If you have problems, revert your changes; delete the registry key you created (and reboot).

Update: you should probably scroll down to approach 4 where I suggest using Microsoft PowerToys Keyboard Manager.

Approach 1. Manually through regedit

Navigate to and create a new binary value in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout named Scancode Map.

You will enter the raw bytes like this (thanks @quapka):

00 00 00 00 00 00 00 00 02 00 00 00 1d 00 3a 00 00 00 00 00

Save. Reboot. Done.

Approach 2. Make your own registry key file.

Thanks @datsuka-qwerty

Create a new .reg file and name it something meaningful like capstoctrl.reg. Edit the file and paste in the following:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Save. Run the file. Reboot. Done.

Approach 3. Through PowerShell (as Administrator)

Open PowerShell as an administrator (Win + X)

$hexified = "00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00".Split(',') | % { "0x$_"};

$kbLayout = 'HKLM:\System\CurrentControlSet\Control\Keyboard Layout';

New-ItemProperty -Path $kbLayout -Name "Scancode Map" -PropertyType Binary -Value ([byte[]]$hexified);

Save. Reboot. Done.

Approach 4. Microsoft PowerToys

Give PowerToys a try for remapping not only capslock, but other keys as well. Microsoft PowerToys: Utilities to customize Windows 10.

Microsoft PowerToys: Keyboard Manager enables you to redefine keys on your keyboard.

@asierrayk
Copy link

How do i map it to the right control, in order to be able to diferenciate keys in games?

@eric-gitta-moore
Copy link

For me, Ctrl2Cap is currently the most reliable solution. The registry key "Scancode Map" does work in Windows 10, but strangely stopped working for the Ctrl-X keystroke in particular. The PowerToys Keyboard Manager works, including Ctrl-X, but doesn't work over remote desktop (and running it on the remote PC as well as the local one doesn't seem to let you remap successfully). Ctrl2Cap is remapping in all applications including remote desktop.

https://superuser.com/a/1389340

@karimb
Copy link

karimb commented Sep 5, 2023

The registry key hack works in Windows 7 too.

@GhasemSoleimani
Copy link

Is it impossible to change it for changing keyboard language? (ALT+SHIFT OR WIN key+Space)

@life-is-dlc
Copy link

life-is-dlc commented Apr 13, 2024

@joshschmelzle
Copy link
Author

@life-is-dlc what are you talking about? PowerToys is an actively maintained tool by Microsoft. If you have a problem with their tool, go complain on their repo, not here.

@life-is-dlc
Copy link

I just can't agree with the term "actively maintained" you're using, since the problem I listed is 3 years ago. Also it is very specific to your solution for switching caps and ctrl. If you're going to use it to switch any keys else, probably fine though I didn't tested.
I'm curious-only in the debug purpose-haven't you run into any problem the issue mentioned? (In case you didn't want to click the link, I edit my post to reveal their titles.)

@life-is-dlc
Copy link

Maybe my wording of "defective" is not accurate. Sorry about that. English is not my first language. I'm still learning it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment