Alt + Shift as language switch on OS X

24

5

Is there a way to bind alt shift to switch keyboard layouts on OS X?

Moshe

Posted 2010-01-06T04:08:19.400

Reputation: 5 474

Answers

21

By default in OS X, spinning through keyboard layouts is defined as ctrl+space. This mapping is turned off in favor of the trigger for Spotlight.

To modify this default mapping, you need to go to System Preferences->Hardware->Keyboard & Mouse->Keyboard Shortcuts. There you will find a list item for Input Menu. Select the checkbox and it will become enabled. From there, double click on the predefined shortcut on the right side of the list. Once the existing shortcut is selected and editable, you can type your preferred shortcut sequence.

Unfortunately, alt+shift by themselves are not allowed as a shortcut. You need to have a non-control key in the mix. The closest you can come is to use alt+z (using 'z', which is next to shift on the left side of the keyboard). You also have the option of setting the shortcut for the reverse order of the spin. alt+shift+z is a natural option for this.

akf

Posted 2010-01-06T04:08:19.400

Reputation: 3 781

Note that alt + shift + z is a popular keyboard shortcut in use by many applications for undoing an undo (alt + z). Therefore, it may be a better idea to find another shortcut. How about cmd + e? – Elad Nava – 2016-01-01T14:54:35.947

In the MacOS 10 it is System Preferences->Keyboard->Shortcut->Input Sources – divonas – 2019-01-15T07:41:56.010

I enable it and hit restore default. Mac resolved the conflict. Since I'm new to mac, I probably will not be using trigger for Spotlight. I'm not sure what that means. +1 for an explanation. – Moshe – 2010-01-06T05:09:22.770

2You really should learn what spotlight is and does, and you will want a trigger for it... but you can move that to command-space if you want. – Andrew McGregor – 2010-01-06T07:43:25.127

I understand now. I don't use spotlight much yet, although if I buy a Mac I probably will . I'm on a loaner now. – Moshe – 2010-01-07T08:34:28.117

16

Use Karabiner (originally KeyRemap4MacBook). Search for option shift pc. Ticking the first checkbox should let you remap to the PC behavior.

setting pc style switch language in Karabiner alt+shift

Maxim Yefremov

Posted 2010-01-06T04:08:19.400

Reputation: 1 105

1However, see the note: "Except in ... Emacs, Terminal, ...". – nickie – 2015-02-15T01:14:08.417

Installed Karabiner Element 10.22.0 (via brew cask install karabiner) on my Mac High Sierra 10.13.3 and found it doesn't work. – onelaview – 2018-03-24T09:49:18.377

11

The Karabiner keyboard customizer for OS X can map alt-shift (or ctrl-shift) to switch languages

WayFarer

Posted 2010-01-06T04:08:19.400

Reputation: 246

What System Preferences add-on? System Preferences on my Mac don't accept alt+shift. Is there some additional "add-on" that enables it? – yair – 2014-03-02T13:17:26.237

4

I found that the little utility MLSwitcher[2] will allow you to do exactly that and works great under macOS 10.13 High Sierra. Available for free on the App Store.

More info here: http://bluezbox.com/mlswitcher2.html

Lennart L

Posted 2010-01-06T04:08:19.400

Reputation: 141

I found MLSwitcher to be much simpler than Karabiner, which in recent versions tend to have a non-intuitive, weird interface. – Farshid – 2019-09-12T13:59:26.550

1

The Karabiner mentioned by @wayfarer did the trick for me. Here's the rule to map Ctrl-Shift to Ctrl-Space:

{
    "description": "Swithch input language by ctrl-shift",
    "manipulators": [
        {
            "from": {
                "key_code": "left_shift",
                "modifiers": {
                    "mandatory": [
                        "left_control"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "spacebar",
                    "modifiers": [
                        "left_control"
                    ]
                } 
            ],
            "type": "basic"
        },
       {
            "from": {
                "key_code": "right_shift",
                "modifiers": {
                    "mandatory": [
                        "right_control"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "spacebar",
                    "modifiers": [
                        "left_control"
                    ]
                } 
            ],
            "type": "basic"
        }
    ]
}

rook

Posted 2010-01-06T04:08:19.400

Reputation: 111

We're glad you were able to find a solution to a problem you were facing here. However, this section is reserved for answers to the question that was asked above. Simply using the Upvote button is sufficient thanks here on SuperUser. – music2myear – 2019-01-10T22:01:02.360

rook, thanks for the code! It works perfectly!

Also here is the manual - how to add your own complex rule to Karabiner: https://pqrs.org/osx/karabiner/json.html
Here is short instruction also:
https://github.com/pqrs-org/Karabiner-Elements/issues/1225

– Rib47 – 2019-11-27T12:57:11.223

Just replace "_control" to "_alt" in "from" parts of this script, and you will get Alt+Shift (for Mac its correct name is Option+Shift) hotkey to switch input language. – Rib47 – 2019-11-27T13:22:45.970

1

In some locales command-space and option-command-space change input sources by default. You can enable or change the keyboard shortcuts from System Preferences:

The shortcut recorders don't allow entering shortcuts like option-shift though. If you really want to use option-shift, you can map it to a key combination like option-command-space with KeyRemap4MacBook. This is triggered when you release shift:

<autogen>__KeyOverlaidModifier__ KeyCode::SHIFT_L, ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::NONE, KeyCode::SHIFT_L, ModifierFlag::OPTION_L, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyOverlaidModifier__ KeyCode::SHIFT_R, ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R | ModifierFlag::NONE, KeyCode::SHIFT_R, ModifierFlag::OPTION_R, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

This is triggered when you press shift, but it requires pressing shift before option for shortcuts like option-shift-[:

<autogen>__KeyToKey__ KeyCode::SHIFT_L | ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L | ModifierFlag::NONE, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ KeyCode::SHIFT_R | ModifierFlag::SHIFT_R | ModifierFlag::OPTION_R | ModifierFlag::NONE, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

This requires pressing option and shift simultaneously:

<autogen>__SimultaneousKeyPresses__ KeyCode::OPTION_L, KeyCode::SHIFT_L, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>
<autogen>__SimultaneousKeyPresses__ KeyCode::OPTION_R, KeyCode::SHIFT_R, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

Lri

Posted 2010-01-06T04:08:19.400

Reputation: 34 501

1

Also if you are looking for Cmd+Shift, Punto Switcher (after disabling language autoswitching) can bind language toggle to Cmd+Shift.

Nikolay Shelekhov

Posted 2010-01-06T04:08:19.400

Reputation: 11

1

Please see this link about how to recommend software in an answer: http://meta.superuser.com/questions/5329/how-do-i-recommend-software-in-my-answers. Also, this doesn't answer the question that was asked.

– fixer1234 – 2015-02-25T01:36:58.237

@fixer1234 Punto Switcher does, however, allow switching with Opt+Shift, which is what's been asked. I'm not recommending this software, as I don't like it myself, but with Karabiner not working with Sierra, it's the only alternative. – maksimov – 2017-05-14T16:09:42.640

0

i changed mine to -\ which is almost alt-shift, just shifted one key to the right (works with my macbookpro international keyboard, the us keyboard has longer left shift and the \ key is above the key)

Kurt

Posted 2010-01-06T04:08:19.400

Reputation: 1