21

I've moved from PC to Mac and I'm used to pressing Shift + Ctrl, while on Mac I have to press Ctrl + Space. This is a bit frustrating (probably because I've only used it for 2 days), so I opened System Preferences > Keyboard > Shortcuts and tried to change the shortcut to Shift + Command and for some reason it refuses to change.

I tried to test some other shortcuts such as Command + Z and it works fine. I'd still like to change it to Shift + Command. Is there a way I can achieve this?

1
  • 1
    I don't think so, these are two modifier keys and are used in other shortcuts. For example cmd + shift + tab. Commented May 10, 2017 at 7:53

10 Answers 10

8

With macOS' system shortcuts you can't set keyboards shortcuts solely using modifier keys.

You need to specify an additional (non-modifier) key for macOS to accept and save your shortcut.

Sierra does have an extra setting (in system prefs/keyboard/input sources) for switching between certain keyboards via Caps Lock alone, but that does not help solve your problem.

2
  • @TomGewecke True. It still does not map the shortcut to Shift + Cmd, as requested by OP, though.
    – oa-
    Commented May 10, 2017 at 13:07
  • you can use CommandShift to switch language with Command + Shift Commented Jan 2, 2022 at 12:49
13

With freshest version (11.4.0 at 13.12.2017) of Karabiner Elements and Cmd + e for previous language source:

enter image description here

You can put this json gist to ~/.config/karabiner/assets/complex_modifications/<filename>.json, add gist rule in Karabiner Elements Preferences -> Complex Modifications -> Rules -> Add rule and Enable Languages -> Command + Shift to Command + e.

enter image description here

This will remap Cmd + Shift to Cmd + e and you can change language source by Cmd + Shift.

2
  • Does not work in Catalina, unfortunately.
    – mikhailian
    Commented Mar 9, 2020 at 18:47
  • 1
    Works on MacOs Mojave But it breaks command+shift+t in Chrome.
    – Mohamed
    Commented Apr 17, 2020 at 11:02
7

Punto Switcher can do it. This utility helps with language auto toggling but you can disable this behaviour and just set desired key binding. I think it doesn't have UI other than Russian, but you will surely be able to configure it intuitively.

0
5

I use CommandShift. It's a free and open-source app which "allows you to change input source using Windows-style shortcut (e.g. Command + Shift, Option + Shift, Control + Shift or Fn + Shift)"

Sounds like what you're looking for =)

2

I also faced with this issue, so created a small tray application that will remap the default shortcut to Ctrl+Shift or Cmd+Shift:

enter image description here

Here is a link to the GitHub.

1
  • It's a really nice idea. Commented Jan 7, 2023 at 0:39
1

On MacOS Sonoma 14.4 I use this Karabiner Elements JSON that works great:

{
    "description": "Command + Shift to control + spacebar",
    "manipulators": [
        {
            "from": {
                "key_code": "left_shift",
                "modifiers": { "mandatory": ["left_command"] }
            },
            "to": [
                {
                    "key_code": "spacebar",
                    "modifiers": ["left_control"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "left_command",
                "modifiers": { "mandatory": ["left_shift"] }
            },
            "to": [
                {
                    "key_code": "spacebar",
                    "modifiers": ["left_control"]
                }
            ],
            "type": "basic"
        }
    ]
}

I took it from here: https://ke-complex-modifications.pqrs.org/?q=lang but added second manipulator (same, but reversed the shift and command so I can first press shift and then command and it still works)

1
  • this is the right answer Moved away from CommandShift to this solution. I do admire the work of the author, but it has a few bugs that make usage a somehow complicated/impractical
    – ZuBB
    Commented Dec 1 at 15:47
0

The best way to change the way to shift between languages from the default is as follows:

Open System Preferences and tap Keyboard: Press Keyboard from System Preferences

Then tap Shortcuts, then from the side list tap "Input Sources", then "Select Next Source": ShortCuts > Input Sources > "select next source"

*Note you will have to choose something like CNTRL-SHIFT-1 or another key combo than shift-space, but you can play around with it and find a combo that works for you.

Edit: If you want to do what you want by only pressing control shift, you might be able to do that by creating an applescript which toggles the languages and using a 3rd party hot key app on the appstore. I don't advise this, but it would be conceivably possible. For the sake of convenience, I have attached such an applescript that you can use for this purpose where if you map say control shift to this applescript, it will execute the CMD space code (or you can change it another code which doesn't conflict with spotlight (my personal recommendation):

tell application id "com.apple.systemevents"
keystroke (key code 49 using command down)
end tell
0
0

You can use karabiner-elements with the following complex modification rule to change the input source with left_control + left_shift. It has been tested on macOS Sonoma 14.3.1.

{
  "from": {
    "key_code": "left_shift",
    "modifiers": {
      "mandatory": [
        "left_control"
      ]
    }
  },
  "to": [
    {
      "key_code": "left_shift",
      "modifiers": [
        "left_control"
      ],
      "lazy": true
    }
  ],
  "to_if_alone": [
    {
      "key_code": "spacebar",
      "modifiers": [
        "left_command"
      ]
    }
  ],
  "type": "basic"
},

With this rule, you can:

  1. Press left control + left shift to change the input source.
  2. Press left control + left shift + any other key to use the other shortcuts. This means that left control + left shift can still be modifier for other shortcuts.
  3. Press left shift multiple times while holding down the left control to change multiple input source, just like pressing space bar multiple times while pressing the command key.

Please note:

  1. You must set the shortcut to change the input source to command + spacebar for this rule to take effect.
  2. Place your target shortcut key combination under the "to_if_alone" event, and create a shortcut key combination exactly like the original key combination under the "to" event so that you can use the original key combination as part of other shortcut keys.
  3. Please set lazy to true under the "to" event to ensure that the "to" event will only be triggered when it is part of other shortcuts.
  4. You can change left_control to control and left_shift to shift so that any combination of control + shift can take effect.

Source: https://github.com/res876ttb/mykarabiner/blob/main/karabiner_caps_lock_modifier.json#L458

0

An improvement for the answer of Raymond Hsu.

It will work only if you push Ctrl first and then Shift but if you push Shift first it will not work.

So I suggest the following config for karabiner-elements:

{
    "description": "Change input source",
    "manipulators": [
        {
            "from": {
                "key_code": "left_shift",
                "modifiers": {
                    "mandatory": [
                        "left_control"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "left_shift",
                    "lazy": true,
                    "modifiers": [
                        "left_control"
                    ]
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "spacebar",
                    "modifiers": [
                        "left_command"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "left_control",
                "modifiers": {
                    "mandatory": [
                        "left_shift"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "left_control",
                    "lazy": true,
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "spacebar",
                    "modifiers": [
                        "left_command"
                    ]
                }
            ],
            "type": "basic"
        }
    ]
}
0

CommandShift — nice app for solving this problem! BUT!

If you intend to use some IDE with code completion by Ctrl+Space – this is NOT the way to go, cause app needs Default shortcuts to be enabled.

1

You must log in to answer this question.

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