15

OS X has this really nice feature when you have 3+ keyboard input sources (languages) and press Cmd + Space you switch between only two of them.

If you want to switch to another (third) language you just hold Cmd and press Space to choose from the list of input sources available.

How can I have similar functionality on Windows 10? I have 3 input sources and looping through them to get to the one I need is really annoying.

8
  • 2
    What do you mean by “looping through them”? I’m not familiar with the OS X function, but could you perhaps explain if and why Win+Space isn’t appropriate?
    – Daniel B
    Dec 11, 2015 at 10:16
  • 1
    For example you have EN, FR and DE. You on FR now. To get to EN you need to press Win+Space twice. In OS X you have only 2 active inputs (EN, FR) despite how many inputs you use. To make input active you hold CMD and press SPACE. You get a list of all languages (EN, FR, DE) and selecting it make this language active.
    – Boykodev
    Dec 11, 2015 at 10:27
  • 1
    You must really use it to understand how convenient it is.
    – Boykodev
    Dec 11, 2015 at 10:29
  • 2
    So, perhaps you should further enlighten us about the OS X function, because Cmd + Space is the Spotlight shortcut. Also, what’s the difference between the shortcut in your paragraphs 1 and 2? Sounds like Windows to me.
    – Daniel B
    Dec 11, 2015 at 20:52
  • 1
    1) Yes! Basically you switch around 2 recently-used languages and when needed, you change one of them. 2) I can change language HUNDREDS times a day, so it's definitely not an option.
    – Boykodev
    Feb 12, 2016 at 20:47

10 Answers 10

8
+100

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 :

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
5
  • Yeah, I am aware of this solution. I even tried it for a while. Didn't like it much. Because every time you need to think to what language do you want to switch. Also try pressing 'CTRL + 1'. No so easy for fingers, isn't it? But maybe it's only me ;)
    – Boykodev
    Feb 13, 2016 at 11:35
  • 1
    Using for example AutoHotkey, you can 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).
    – harrymc
    Feb 13, 2016 at 12:31
  • Thank you, @harrymc ! This script is almost as good as OS X solution. I use 'ALT + Shift' to switch between two mostly used languages and 'Win + Space' to switch to the third one.
    – Boykodev
    Feb 15, 2016 at 7:50
  • 1
    Proposed solution does not answer the question. The sweet thing on macOS is two switch between two most recent languages, but solution is about switching between two mostly used languages. This tiny thing makes a huge difference! May 31, 2020 at 18:55
  • 🛑Look for the language ID in regedit. HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
    – weiya ou
    Mar 4, 2022 at 15:50
7

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.

1
  • 1
    Wow! It's exactly what I was looking for! I didn't know about Ctrl+Win+Space
    – dmitry1100
    May 10, 2020 at 8:21
2

How to switch languages in Windows 10 (almost) like in OS X, Android, IPhone

There is (almost perfect) solution for this issue in Windows 7, which is possible to implement in Windows 10 with few additional steps.

Background

The solution is based on the fact that there're two distinct entities in Windows: Input Language and Keyboard Layout.

By default Alt+Shift loops through configured Input Languages and it is Input Language which people usually add when they require additional languages in their systems.

But.

  1. It is possible to alter behavior of Alt+Shift (or Ctrl+Shift if you prefer) to loop through Keyboard Layouts and not to change Input Language.
  2. It is possible to specify different keyboard shortcut for every Input Language (as it is also described in one of other answers to this question)
  3. Most importantly it is possible to add unrelated Keyboard Layout to an Input Language (even layout with different script), for example Hebrew Layout to English Language. This step is a bit tricky in Windows 10, but doable.

Finally you'll end up having several different Input Languages, for each of which you'll have separate keyboard shortcut, but once you choose Input Language you'll be able to use regular Alt+Shift which will loop between defined Keyboard Layouts "inside" of the Input Language.

Configuration in Windows 10

For simplicity, let's assume that you want to use 3 languages: English, Russian and Hebrew. Upon completing the steps below you'll have three modes of operation:

  • English mode, used by default, selected with Ctrl+1 and Alt+Shift (or Ctrl+Shift) looping between English and Russian
  • Hebrew mode, selected with Ctrl+2 and with Alt+Shift (or Ctrl+Shift) looping between English and Hebrew
  • Russian mode, selected with Ctrl+3 and with Alt+Shift (or Ctrl+Shift) looping between English and Russian

Steps to configure.

  1. Ctrl-Esc (which opens Start Menu) - or Windows Button in the left bottom corner of the screen
  2. Type Language (which should bring up Language item from Control Panel), press Enter
  3. Depending on your vendor you might have English and your regional language. Assuming you have only English, add Russian and Hebrew with Add a language button
  4. Every language comes with default Input Method, which corresponds to the language. Now we will add "unrelated" Input Method to each Input Language:
    1. Download Microsoft Keyboard Layout Creator
    2. File -> Load Existing Keyboard.
    3. Choose the layout which you want to add (let's start with Russian Layout for English Input Language)
    4. Project -> Properties
    5. Modify Language to match Input Language for which you want this keyboard layout to be available. It would be English (United States) in our case.
    6. Press OK. You might need to modify Description slightly if you get "Keyboard description is identical" error message. Just add some suffix.
    7. Open the Project menu and choose Build DLL and Setup Package. Ignore warning, agree to open directory where Windows Installer package was built.
    8. Run setup.exe, which installs your Keyboard Layout for the chosen Input Language
    9. If you reopen (close and open once again) Language screen (from step 2) and choose Options for English (United States) language, you should see two input methods now: US and Unavailable input method
    10. Repeat steps 4.1-4.9 for all the needed keyboard layouts (for the example that we're discussing, we would need two more repetitions: load English keyboard set Language to Russian in Project -> Properties and build it, load English keyboard again, set Language to Hebrew in Project -> Properties and build it).
  5. Upon successful completion of previous steps you should have Unavailable input method on the Options screen for every language that you used as the target language in step 4.5.
  6. Last step is to configure keyboard shortcuts. Open Language screen (steps 1-2)
    1. Choose Advanced settings (on the left pane of Language screen)
    2. Choose Change language bar hot keys
    3. Choose Between input languages (left mouse click) and press Change Key Sequence button
    4. Choose Not Assigned in the Switch Input Language pane
    5. Choose Left Alt + Shift (or the one you prefer) in Switch Keyboard Layout pane
    6. Confirm (OK).
    7. Choose To English (United States) - US (left mouse click), press Change Key Sequence button, check Enable Key Sequence, choose Ctrl and 1 (or any other preferrable), confirm
    8. Choose To Hebrew (Israel) - Hebrew (Standard) (left mouse click), press Change Key Sequence button, check Enable Key Sequence, choose Ctrl and 2 (or any other preferrable), confirm
    9. Choose To Russian (Russia) - Russian (left mouse click), press Change Key Sequence button, check Enable Key Sequence, choose Ctrl and 3 (or any other preferrable), confirm
  7. Reboot (yes, keyboard shortcuts are quite buggy in Windows, once you change them, you'll need to reboot so that they're registered correctly).

Configuration in Windows 7

Configuring the same use case in Windows 7 is simpler and doesn't require downloading additional tools.

  1. Ctrl-Esc (which opens Start Menu) - or Windows Button in the left bottom corner of the screen
  2. Type Region and Language (which should bring up Language item from Control Panel), press Enter
  3. Keyboards and Languages tab -> Change keyboards
  4. Choose Add button and search for English (United States) section
  5. Click + (plus sign) which open Keybord section
  6. Open it and click Show More... item, which will complement the list with all the different languages, find Russian in this list and check it (make sure you selected Russian inside of Keyboard inside of English (United States) list.
  7. After confirming you should have two Keyboards under EN English (United States): US and Russian.
  8. Click Add, search for Hebrew (Israel) and select Hebrew, Show more..., United States-International (which will be available only after choosing Show more), confirm
  9. Click Add, search for Russian (Russia) and select Russia, Show more..., US (which will be available only after choosing Show more), confirm
  10. Go to Advanced Key Settings tab
  11. Choose Between input languages (left mouse click)
  12. Choose Change Key Sequence button
  13. Set Switch Input Language to None, Switch Keyboard Layout to Left Alt + Shift (or Ctrl + Shift), confirm
  14. To English (United States) - US -> Change Key Sequence -> Enable Key Sequence, set to Ctrl+1, confirm
  15. To Hebrew (Israel) - United States-International -> Change Key Sequence -> Enable Key Sequence, set to Ctrl+2, confirm
  16. To Russian (Russia) - US -> Change Key Sequence -> Enable Key Sequence, set to Ctrl+3, confirm
  17. Confirm (OK).
  18. Reboot.

Notes

There's one peculiarity: in some programs you might get garbled characters, unless you switch to the right Input Language (for example, if you get garbled Russian input, use Ctrl+3 to switch to Russian keyboard layout). But it happens quite rarely and only in some unusual circumstances (for most of Windows users), doesn't really bother me a lot.

0
2
; AutoHotkey Script
#SPACE::
  Send ^#{SPACE}
Return

; ♥
; macOS-like input language change algorithm
; Just use WIN + SPACE as normal
; Hold the WIN then tap SPACE to loop


; Test environment
; OS Version  : Windows 10 1803
; AHK Version : 1.1.30.01


; Title  : default setting should be like this
; Date   : 4/8/2019
; Author : who cares
1
  • Works amazing! Is there any way to do this for Alt + Shift? Mar 26, 2021 at 17:13
1

You can simply use the keyboard shortcut Alt + Shift to iterate throught the defined languages (and it loops ;) ).

1
  • That's exactly how I do it now :(
    – Boykodev
    Dec 11, 2015 at 10:41
0

I caught your meaning.You mean IME (Input Method).you can use Ctrl + Space to set defeat IME,and Ctrl + Shift to move to next IME .

0
0

The direct registry setting to disable the keyboard layout toggle hotkeys is:

reg add "HKCU\Keyboard Layout\Toggle" /v "Layout Hotkey" /d 3

You might also want

reg add "HKCU\Keyboard Layout\Toggle" /v "Language Hotkey" /d 3
reg add "HKCU\Keyboard Layout\Toggle" /v "Hotkey" /d 3

And for new users, try this (in an elevated prompt):

reg load HKEY_USERS\temp "%USERPROFILE%\..\Default\NTUSER.DAT"
reg add "HKEY_USERS\temp\Keyboard Layout\Toggle" /v "Layout Hotkey" /d 3
reg unload HKEY_USERS\temp
1
  • Welcome to Super User! On this Q&A site we try to provide good answers to questions people post. Part of writing a good answer is including explanation of what the listed steps do, this is not present in your answer. Please edit your answer to explain what each of the registry edits does, so people can decide whether or not they want to perform the changes.
    – Cas
    Oct 11, 2016 at 11:19
0

Type in the search bar of the start menu Control Panel -> Click Language -> Click Advanced settings -> Click Change language bar hot keys -> Click Change Key Sequence

0

For anyone like myself who found themselves here by searching for the default key command for toggling keyboards, the default in Windows is Left Alt + Shift.

0

Alt + Shift is useful if you only have two input methods, but if you have more than two you'll need to use the left and right Alt + Shift combo:

  • left Alt + left Shift: switching input methods from the top to the bottom

  • right Alt + right Shift: switching input methods from the bottom to the top

Then if you switch from input method 1 to 2 using left Alt + left Shift, you can go back by using the right Alt + right Shift.

These are default hotkeys in Windows 10 & 11, no other settings are needed.

For nerds: if you use Alt + Shift to switch between the input methods, the actual order of switching depends on the last key you hit.

  • L Alt + R Shift will also do bottom -> top
  • R Alt + L Shift will also do top -> bottom

Samething for L Shift + R Alt and R Shift + L Alt.

0

You must log in to answer this question.

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