How do I switch between languages on Windows 10 like I do in OS X?

One can assign in Windows 10 a keyboard shortcut to a language :

  1. Go to Control Panel -> Clock, Language, and Region -> Language -> Advanced settings.

  2. Under Switching input methods, click Change language bar hot keys, then click on your language, and finally on Change Key Sequence.

  3. This will display a dialog where you can assign a shortcut key to that language:

image

Since the above shortcut keys are quite limited, it is possible by using for example AutoHotkey to change this to any other keyboard combination. Once you learn AutoHotkey, it will be easy to reproduce the exact behavior of OSX (one can also ask for help on their forum).

Many AutoHotkey scripts can be found on the Internet and one can tailor them to fit any need.

The following example script aims at improving the functioning of Alt+Shift as a toggle between the English and Russian keyboards for the current window :

; This should be replaced by whatever your native language is. See 
; http://msdn.microsoft.com/en-us/library/dd318693%28v=vs.85%29.aspx
; for the language identifiers list.
ru := DllCall("LoadKeyboardLayout", "Str", "00000419", "Int", 1)
en := DllCall("LoadKeyboardLayout", "Str", "00000409", "Int", 1)

!Shift::
w := DllCall("GetForegroundWindow")
pid := DllCall("GetWindowThreadProcessId", "UInt", w, "Ptr", 0)
l := DllCall("GetKeyboardLayout", "UInt", pid)
if (l = en)
{
    PostMessage 0x50, 0, %ru%,, A
}
else
{
    PostMessage 0x50, 0, %en%,, A
}

Here are some threads offering scripts for changing the keyboard layout with various functionality :

  • Keyboard layout switcher
  • Keyboard layout switcher for many layouts
  • Using CapsLock to switch the keyboard language layout

Here are some free products that do that as well :

  • keyla - Can define keyboard shortcuts or use a taskbar icon
  • Recaps - Uses CapsLock to switch the keyboard language

If you want the exact behavior as in macOS, without having to configure, you can use Ctrl+Win+Space to switch between the two recently used languages, like what you get from Cmd+Space.

To switch to other input methods, like when you hit Cmd+Space twice, just use Win+Space.