43

On my MacPro there is one issue (and guys from Apple think this is feature...) that annoys me very much: there is a time delay between CapsLock switching. I used to do that fast. If I go to preferences and reassign caps lock to any other button and then back it works OK then, so it is not a hardware problem.

Is there any way to fix that ?

kinokijuf
  • 8,255
Max
  • 531
  • 13
    This really is one of the worst "features" ever. – Carl Nov 09 '15 at 07:22
  • 2
    Yeah this exemplifies the phrase "Sometimes a feature is a bug... and vice versa" – Tomachi Sep 23 '18 at 19:00
  • 1
    Wow that is an insanely great feature - and I never even noticed I had it! That explains why I never ever make that "oops - hit cAPS LOCK" mistake when typing quickly! I guess this feeling of enlightenment is the same as what some Mac users feel once they realize that the Force Touch trackpad actually clicks back at you (https://www.youtube.com/watch?v=x3B3bHt8ya8) – conny Sep 26 '18 at 13:24
  • 1
    FYI here's the official support article about this feature: http://web.archive.org/web/20150115033359/http://support.apple.com/en-us/HT201509 – Sam Apr 26 '19 at 07:18
  • 4
    I don't understand people like "conny". I know they must exist as Apple's claimed reason for this "feature" is that it reduced the number of accidentally-activated caps lock. But HOW does someone ACCIDENTALLY hit caps lock? I type literally 145 wpm (tested on typeracer) and have literally never in my life encountered this problem. The A is right under your pinky and isn't a moving target. There should be no way to accidentally hit caps lock. This "feature" is catered towards the bottom end of the population who doesn't know how to type, and alienates those of us who actually CAN type. – pete Oct 01 '19 at 20:21
  • People are just different. Don't try to put them all in a bag. That is why diversity is so important. Personally this is the "best keyboard feature ever". On conventional keyboards I pop out Caps Lock, Insert and Num-Lock. No one ever asked me if I need those useless keys! – user2480144 May 13 '22 at 08:38

11 Answers11

39

I was running the latest firmware on an Apple 2007 Aluminum Wireless Keyboard, and MacBook Pro Keyboard, but the issue still persisted. However, oddly this fixed it:

  1. Open System Preferences
  2. Click Keyboard
  3. Click Modifier Keys...
  4. Select your keyboard from the Select keyboard: list.
  5. Set the Caps Lock Key: to No Action.
  6. Press OK.
  7. Ensure your Caps Lock no longer works on your keyboard.
  8. Click Modifier Keys... again.
  9. Set the Caps Lock Key: to Caps Lock.
  10. Press OK.

Now, the Caps Lock key works instantly for that keyboard. Repeat as-needed for each keyboard you own.

Dave
  • 827
  • Brilliant! This worked for me. I was using Caps Lock as an escape key for Vim. I'd done what you described for my "Internal Keyboard" but I hadn't noticed that I needed to repeat the process for the external keyboard. Once I'd set no action for caps lock also on the external keyboard, my problems disappeared. – Jeromy Anglim Oct 23 '12 at 02:02
  • Excellent! This worked for me :) Stupid mac, I use caps lock instead of shift alll the time... – Benno Nov 03 '12 at 07:02
  • I find that this works for some indeterminate amount of time (perhaps until the next boot?) but then the Caps Lock problem comes back. The fix works again, so not a huge problem, but it would be nice if the fix "stuck" permanently. – Jeff Wofford May 22 '14 at 14:50
  • Wow, just wow. This walks so close to the bug vs feature fighting that I don't even know why Apple make @Dave's solution be the actual solution to the feature/problem. Thanks, friend! No more Capslock hell :) – Matheus Felipe Aug 30 '16 at 17:09
  • 5
    this doesn't work on high sierra 10.13.4. if you disable the caps lock on a usb keyboard and put it back on, it still has the delay. – Denialos May 30 '18 at 05:35
  • 3
    ok, the only solution that for me (using a cheap ISO keyboard): https://github.com/tekezo/Karabiner-Elements/issues/1423

    Install Kabariner Elements 11.6.0 where intially the CapsLock delay is set 0. Works great and there's no more headache about this ridiculous "feature".

    – Denialos May 30 '18 at 07:41
  • 6
    It is not working. I'm using Mojave. – wonsuc Feb 02 '19 at 06:29
  • 2
    Not working for me on macOS 10.14.4 with Logitech K120 USB keyboard. – Sam Apr 26 '19 at 05:10
  • 2
    no longer works – pete Oct 01 '19 at 20:27
15

If you install Karabiner-Elements, it defaults to zeroing out macOS's obnoxious caps lock delay.

The version you need to install depends on your macOS version.

macOS 10.15.6 and above

Download and install Karabiner-Elements 13.3.0 or higher.

macOS 10.11 through 10.15.5

Download and install Karabiner-Elements 11.6.0.

(Note that Karabiner-Elements 12.0.0 - 13.1.0 re-added the Caps Lock delay, and 13.3.0 isn't available on older OS versions.)


This is the only solution I know of that both works on 10.12 and requires nothing more than installing & running an application without any special steps or reconfigurations.

Sam
  • 1,450
  • 1
    Thank you, worked a charm. I had tried 3 different Dell keyboards, and just thought the caps lock on all Dell keyboards was rubbish, until I noticed them working fine on a Windows PC. This is just the usual presumptuous idealistic crap that Apple does all the time, trying to solve problems that don't exist, and creating problems in the process. – TomWardrop Aug 18 '17 at 03:42
  • 1
    @TomWardrop agreed (& doubly so, as the Karabiner guys had to apparently do something of a rewrite just to get things to happen with newer versions of the OS) – Jan Kyu Peblik Aug 24 '17 at 03:38
  • 1
    @JanKyuPeblik I agree perfectly, that the caps lock delay is a non-feature ("bug") solving a problem that wasn't one. But rewriting a core API is something that should happen from time to time, because no OS should stay 1980 forever, so there is no way around rewriting things from time to time. Albeit of course things should get better with a new API and not worse. – John Smith May 18 '18 at 08:35
  • I'm not sure I agree that things need always to be eventually rewritten, but that's kind of another matter. This, like so many things added to things that already existed, is (theoretically) helpful to the inept and an obnoxious punishment to the adept. – Jan Kyu Peblik May 18 '18 at 20:11
  • Wow, your advice solved the problem. Thank you for this answer, really saved tons of time for me. – Denialos May 30 '18 at 07:29
  • I know how you feel. – Jan Kyu Peblik May 30 '18 at 14:52
  • Tested and working on macOS 10.14.4. Note that this prevents the keyboard's Caps Lock light from working on my Logitech K120 keyboard. – Sam Apr 26 '19 at 05:54
  • Karabiner-Elements 12.3.0 has a script that works around the problem but still leaves a delay. Whereas Karabiner-Elements 11.6.0 fixes the problem but breaks the Caps Lock light. – Sam Apr 26 '19 at 06:19
  • I've always been able to tell when I have caps lock enabled without a light, myself. – Jan Kyu Peblik Apr 27 '19 at 01:26
  • Found another couple of problems with Karabiner 12: it doesn't work on the lock screen (which is bad if you left Caps Lock on when you locked!), and it has a problem with keys getting stuck. I've gone back to 11.6.0 and it doesn't seem to have this problem, so this is looking like our best option so far. – Sam May 02 '19 at 01:04
  • Karabiner-Elements 11.16.0 no longer works for me on macOS Catalina 10.15 – Sam Jun 09 '20 at 21:29
  • Filed issue for Catalina compatibility issues: https://github.com/pqrs-org/Karabiner-Elements/issues/2319 – Sam Jun 09 '20 at 22:52
  • Turns out the Catalina issue was just a permission issue or something. Instructions to fix: https://github.com/pqrs-org/Karabiner-Elements/issues/2319#issuecomment-641626704 – Sam Jun 09 '20 at 23:08
  • 1
    Looks like the problem is fixed perfectly in Karabiner-Elements v13.3.0. I've tested and confirmed that there is no delay, the Caps Lock light still works, and it still works on the lock screen without getting stuck. Can you update your answer for this?

    Thanks to Matias Simone for spotting this.

    – Sam Mar 02 '21 at 03:25
  • 1
    @Sam I don't have an up-to-date macOS handy anymore, so I can't easily try out all the information (including other solutions listed here since) at this time. Please edit this answer as you see fit. – Jan Kyu Peblik Mar 02 '21 at 18:12
14

Just as an FYI, I found an alternative solution in another question:

  1. Go to System Preferences -> Accessibility -> Keyboard
  2. Check Enable Slow Keys
  3. Click Options
  4. Drag the Acceptance Delay slider all the way to the left
  5. Press OK

However, this fix introduces other problems, including:

  • If you hold down a key to repeat it (such as delete), then the repeat delay is extremely slow
  • Some keyboard shortcuts like Crtl+Shift+Tab may no longer work

Tested on macOS 10.14.4 and 10.15.7

Sam
  • 1,450
  • Incredible... this worked even better than the suggestion at the top. (They both improve it for some whacky reason) – Angelo Sep 09 '20 at 00:12
  • I had an issue where this started triggering the accented characters when you hold down a letter key. Fix: Run: defaults write -g ApplePressAndHoldEnabled -bool false – Angelo Sep 09 '20 at 00:16
  • This solves the problem for me but unfortunately also breaks mute and play/pause on the touch bar: https://apple.stackexchange.com/a/316811/366881 – Sam Estep Oct 06 '20 at 18:18
  • What should be the Acceptance Delay? should I choose shortest? – alper Oct 20 '22 at 11:18
6

If you want a simpler solution than Karabiner, I've written a very small, open source tool to fix exactly that.

https://github.com/gkpln3/CapsLockNoDelay

gkpln3
  • 171
  • Thanks so much for building this! I just tried it out, and I'm not sure if it's starting up properly. I followed the steps in your readme file and also got past the Mac trying to stop me from opening it because it couldn't scan it or something. But when I go to Activity Monitor, then I can't see it running when I look for a process starting with "Caps". I'm also still getting the caps lock delay. Is there somewhere I can look at logs for the app? Or I wonder if something on my Mac is blocking it from starting? – Sam Dec 02 '20 at 02:37
  • 1
    After checking my system log, it looks like the process was exiting with code 1. I checked your code and can see it also needs accessibility permission, so I went and manually added it to the Security/Accessibility list and granted access, and now it's working. After doing my test (which is just repeatedly pressing a then Caps Lock and repeating), it looks like it's fairly reliable but occasionally hiccups and doesn't work as expected. I'll keep using it and see how I go! – Sam Dec 02 '20 at 03:11
  • I've noticed that each time I turn Caps Lock on, then the Caps Lock light on my USB keyboard comes on, then turns off for a split second, then comes back on. I wonder if something else on the OS is fighting with your app? Or maybe the app is accidentally toggling it twice? – Sam Dec 02 '20 at 03:21
  • @Sam Yeah apparently the Big Sur introduced some changes which made it glitch sometimes , I'm working on a fix :) – gkpln3 Dec 02 '20 at 09:10
  • @Sam I've just uploaded a new version that fixes this issue, along with adding support for Macs running Big Sur. – gkpln3 Dec 02 '20 at 13:14
  • Can this be applied for the command key as well? – alper Oct 20 '22 at 11:19
  • There is no delay in the command key – gkpln3 Oct 21 '22 at 13:22
  • Do nothing on Monterey (check issues on github) – Pavel Shorokhov Feb 27 '23 at 12:04
1
  1. Download and install the following software
    • Karabiner
    • Hammerspoon
  2. Use Karabiner maps CapsLock key to F19.
  3. Edit init.lua under the path ~/.hammerspoon, paste the code below.
pressedF19 = function()
    hs.hid.capslock.toggle()
end

hs.hotkey.bind({}, 'F19', pressedF19, nil)

Then reload the hammerspoon config for changes to take effect.

See my blog here http://hellohtml5.com/2019/04/25/best-way-to-disable-capslock-delay-on-mac/

wukong
  • 119
  • 1
    Nice work! I tried all the solutions here, and yours is the only one that works without side-effects. – Sam Apr 26 '19 at 07:27
  • I ended up moving hs.hid.capslock.toggle() into pressedF19 since this is more consistent with the default behaviour and is also how it works on Windows. – Sam Apr 26 '19 at 07:54
  • 1
    @Sam I have seen your suggestions on the code. I edited it accordingly. It's very nice. Thank you. – wukong Apr 29 '19 at 08:46
  • Unfortunately, I found a problem with this today. :( If I accidentally leave Caps Lock turned on when I lock my Mac, then I cannot turn it off on the login screen. – Sam May 02 '19 at 00:30
  • Another issue is sometimes Karabiner thinks one of the keys is stuck down after waking up from sleep: https://github.com/tekezo/Karabiner-Elements/issues/1645 – Sam May 02 '19 at 00:53
  • @Sam I'm wondering can we get rid of Karabiner, using Hammerspoon only. I don't have time to dig into Hammerspoon script currently. – wukong May 05 '19 at 07:03
  • 1
    I did a quick test and unfortunately it looks like Hammerspoon can't intercept the Caps Lock key – Sam May 09 '19 at 00:05
  • @Sam quote "Unfortunately, I found a problem with this today. :( If I accidentally leave Caps Lock turned on when I lock my Mac, then I cannot turn it off on the login screen. " There is a way to get around with the problem, switch to another user and then change the capslock status and switch back. – wukong Apr 20 '20 at 09:25
1

If you don't want to install Karabiner just for that, you can use brew install --cask capslocknodelay, it's nice lightweight and open-source tool GitHub.

Do not forget to enable it in the settings:

  1. System Preferences -> General -> Login Items, add CapsLockNoDelay.app to the list.

  2. System Preferences -> Security & Privacy -> Privacy -> Accessability -> Enable CapsLockNoDelay.app

  3. System Preferences -> Security & Privacy -> Input Monitoring -> Enable CapsLockNoDelay.app (if present).

0

I had exactly the same problem, I could solve it by installing Karabiner-Elements and making the following modification :

  • select the Simple Modifications tab
  • add a new modification (Add Item)
  • and put from key caps_lock to key caps_lock

enter image description here

0

Not really sure about this, but google found this. This was one of the suggestions, but it does not seem foolproof (or even close). There are more suggestions on the page.

  1. Go to System Preferences > Keyboard & Mouse > Keyboard. Click on Modifier Keys. In the window that opens, for the Caps Lock key, select "No Action"
  2. Install the "No CapsLock" script. Download at http://home2.btconnect.com/Taniwha/ (look near bottom of page)

In addition, if you hold down the key, even for a fraction of a second, it will go on automatically.

soandos
  • 24,404
  • 28
  • 103
  • 134
  • See revised answer. – soandos Aug 03 '11 at 19:53
  • 1
    this is the only viable solution I've found (through pain and tears): https://github.com/tekezo/Karabiner-Elements/issues/1423 – Denialos May 30 '18 at 07:40
  • 3
    Holding down for a fraction of a second is exactly what people are complaining about. It's really stupid. Imagine you had to hold down the "E" key for a fraction of a second to really indicate you actually wanted to type it. "Oh it's to prevent users from ACCIDENTALLY hitting the key". Bullshit; I type 145 wpm as measured on typeracer and have literally never in my life ACCIDENTALLY hit caps lock. OTOH my time is wasted typing constants and doing a double take thinking it was MY FAULT for missing the caps lock key, when actually it was Apple gaslighting me with their delay "feature". – pete Oct 01 '19 at 20:25
0

On Apple's discussion boards other's report that updating your keyboard's firmware can/will eliminate this delay.

Re: Delay problem with caps-lock

Apr 8, 2008 3:52 PM

It appears that the keyboard firmware update released today fixes this issue.

Get keyboard firmware(s) from Apple.

  • Any solution for Macbook Air keyboards on Windows? – Petrus Theron Feb 21 '13 at 22:00
  • I have this problem with a 2015 MacBook Pro - built in keyboard. There does not seem to be any keyboard firmware updates for it. The first answer - turn off caps lock then turn it on again works though. – Grynn Sep 01 '15 at 11:26
0

Originally the answer by Martin Steven worked for me. This was when I used OSX 10.9.

After upgrading to OSX Yosemite (10.10) it stopped working. I found another, essentially the same, solution documented here

http://sleepycow.org/2014/07/removing-the-caps-lock-delay-on-a-macbook/

It uses updated version of the apps (with different names) that work with 10.10.

As requested - quoting the relevant sections from the link

  1. Install Seil and Karabiner.
  2. Go to System Preferences > Keyboard > Modifier Keys and change “Caps Lock” to “No Action.”
  3. Using Seil, check “Change Caps Lock Key” and change the key code to 110. (Application Key)
  4. Go to Karabiner, and in the search box, enter “application key to capslock.” Under For PC Users > Change PC Application Key, check off “Application Key to CapsLock.”
  • Please quote the essential parts of the answer from the reference link(s), as the answer can become invalid if the linked page(s) change. – DavidPostill Jul 22 '15 at 09:47
  • Unfortunately, this solution isn't working for me in macOS 10.14.4 since I can't get Seil to work. – Sam Apr 26 '19 at 06:55
-1

This happened on my new MacBook Air, I contacted Apple Support and these were the instructions that were given to me and WORKED:

Go to System Preferences > click Accessibility > click Keyboard > then click Hardware > Select Enable Slow Keys > then click Options > Drag the Acceptance Delay slider to set how long you want your Mac to wait before it responds after the key is pressed.

I hope this helps :)

FBegum
  • 1
  • This is exactly the same as the answer by @sam in 2019 : https://superuser.com/a/1429859/269373. Not sure why you were downvoted as there are many other duplicate answers to this question but perhaps it would be better as a comment. – lx07 Sep 09 '21 at 19:38