5

I have my caps lock key set to toggle input language between English and Russian.

There's a slight 'lag' — I have to hold it down for slightly longer than a "normal key". If I press it quickly, as I do when press the keys when typing this message for example, it doesn't toggle the input.

This is annoying because I need to constant switch between input methods, and I want it to be instant. I would be happy to disable the traditional function of the caps lock key if it means I can achieve this.

I'm using a MacBook Pro 14,1 on Monterrey.

16
  • You can use Ctrl-Space or option-ctrl-space
    – Ptit Xav
    May 11, 2022 at 11:17
  • @PtitXav, I'd prefer not to, caps lock is a convenient one button shortcut, and it's ingrained into my muscle memory now. Under Input Sources in SysPrefs there's even a dedicated toggle, "Use the 中 / 英 key to switch to and from British" (I bought my MacBook in China, I presume 中 / 英 means caps lock...)
    – Joseph
    May 11, 2022 at 11:49
  • May this help you ? Read full article as it also show how to reprogram caps lock not just disable it.
    – Ptit Xav
    May 11, 2022 at 11:53
  • I think that the time difference is what triggers the system to differentiate between changing caps and changing language. So if you want a faster response for language change choose a different key combo.
    – Solar Mike
    May 11, 2022 at 11:54
  • @PtitXav unfortunately not, that disables the key entirely.
    – Joseph
    May 11, 2022 at 11:59

3 Answers 3

7

Note: the answer below is for MacOS < 14.0 On MacOS 14 "System settings" menu is changed, so if this workaround is still required, then steps also should be updated, but I have not checked.

@Matvey Maximov solution is really helpful. Even more, it can be extended to remove lag for the globe key too:

  1. Go to System "Preferences -> Keyboard -> Input sources" and check the option "Use the Caps Lock key to switch to and from ABC" (as Matvey advised)
  2. Co to "Preferences -> Keyboard -> Keyboard" and press "Modifier keys" button in right bottom corner.
  3. For globe key select "Caps Lock" action
  4. For Caps lock key any action can be selected, if also select "Caps Lock" action, then it also will switch language. (Interesting thing: if choose "Globe" action for Caps lock key, then it works as the globe key before remapping i.e. it shows language change view with delay. And in this case it can be also used as modifier key, for example to show emojis with + 'E')
2
  • This should be updated to reflect the preferences strings on current macOS.
    – Alper
    Oct 12 at 16:59
  • @Alper, I've added note about OS, but I have not checked steps for newer OS. If you have, please add updated steps.
    – Vladimir
    Nov 20 at 11:25
3

I was struggling with same problem and I've finally found the solution! And it's pretty easy:

  • Firstly go to modifier keys settings (you can just search for 'customize modifier keys') and set the Caps Lock key for the Caps Lock function (not the 'Globe' one!)
  • Then enable 'Use Caps Lock to switch input sources' option in keyboard->'input sources' (or search for it)

Doing so should enable instant switching between languages instead of calling the 'globe' button which causes that strange lag.

1
  • It does switch instantly, which is what I need, but it won't allow me to tab through different languages anymore… which I guess is to be expected.
    – Alper
    Oct 12 at 16:58
0

I encountered the same issue, so I created a simple app that switches input sources with just a single click of the Fn button, without any pop-ups or delays. You can find the app on GitHub: https://github.com/Nikeev/LangSwitch.

Previously, I used the Karabiner-Elements app to achieve this goal. I added a custom rule to the Complex Modifications that allowed me to switch between Russian and English input sources (although it could be any input source)

"rules": [
                    {
                        "description": "Fn to russian <-> english",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "input_source_id": "^com\\.apple\\.keylayout\\.ABC$"
                                            }
                                        ],
                                        "type": "input_source_if"
                                    }
                                ],
                                "from": {
                                    "apple_vendor_top_case_key_code": "keyboard_fn",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "select_input_source": {
                                            "input_source_id": "^com\\.apple\\.keylayout\\.Russian$"
                                        }
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "input_source_id": "^com\\.apple\\.keylayout\\.Russian$"
                                            }
                                        ],
                                        "type": "input_source_if"
                                    }
                                ],
                                "from": {
                                    "apple_vendor_top_case_key_code": "keyboard_fn",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "select_input_source": {
                                            "input_source_id": "^com\\.apple\\.keylayout\\.ABC$"
                                        }
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]
            },

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .