Caps Lock doesn't disable when I reassigne it for something else

I would like to use caps lock as cmd+tab to go the previous application. It works when I reassign it to cmd-tab but caps lock function still remains too. So it changes the app and also turns on the caps lock whenever I use it. Is there a way to disable caps lock function and use it only for cmd-tab?

Device information:

Type of Mac: 13" Macbook Pro 2017
macOS version: 11.2.3
BetterTouchTool version: 3.561 (1701)


If I map Caps Lock to ESC in the Mac System Prefs, and then ESC to ctrl-` in BTT, then both Caps and ESC trigger ctrl-tilde.

I would either like to use Caps as ctrl-tilde and ESC as ESC, or Caps as ESC and ESC as ctrl-tilde. It appears that Caps can either mirror ESC completely, or be mapped in BTT but also toggle Caps.

One possible solution to this, I believe, would be to add "turn Caps Lock OFF" next to "toggle Caps Lock ON/OFF" in New Actions / Keyboard Keys.

I found a way to accomplish this. It's a bit convoluted.

First, run the following command from the terminal. This will remap Esc and Caps to "numpad " and "numpad *". These are keys that exist on extended desktop keyboard but not laptops.

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000029,"HIDKeyboardModifierMappingDst":0x700000054},{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000055}]}'

note that to undo this, you can run:

hidutil property --set '{"UserKeyMapping":[]}'

Now that Esc and Caps are mapped to placeholder keys, you can create BTT shortcuts. In my case, I mapped Caps (now *) to ESC, and ESC (now /) to ctrl-~.

No, using the built in System Preferences to map Caps to ESC will not save you a step; that'll synchronize CAPS and ESC to be the same thing regardless of what you map them to.

Imprint | Privacy Policy