How to avoid keyboard layout automatically changing on windows

I have two input languages in my language bar (windows xp). The problem is that windows likes changing between them without any intervention. That's really annoying!

I know about the shortcuts and already turned off Word language detection, but the problem is everywhere (specially command prompt).

I use both languages and I want to change between them only manually. How to turn off this automatic change?


By default ALT+LEFT SHIFT is used to switch between languages. Far too easy to press these by mistake, especially if you're like me and prefer the keyboard to the mouse.

To change this, go into Control Panel/Regional Settings/Languages/Details and there is a button that allows you to configure the shortcuts to switch languages - I just disable it altogether.

In Windows 7 this is Control Panel/Region and Language/Keyboards and Languages/Change Keyboards/Advanced Key Settings.

You may also want to disable automatic detection of languages in Word (Tools/Languages). I think this may switch the keyboard layout to match the detected language.


Windows maintains different input language for each thread. When you switch to a window of another thread, your input language may change. Because threads are not visible to the user, it may seem random, and I agree this is annoying like hell.

There is no built-in option to avoid that in Windows, you can either use third-party software or something even better.

The “something even better” is to use Microsoft Keyboard Layout Creator to create a custom layout which uses CapsLock as a language switch, then delete all other layouts (including the default English). I have done this with English+Russian and I can't express how better my life has been from since. Check the pros:

  • The input language becomes system-global and never changes by itself.
  • You can always see what language is current by looking at the LED on the keyboard, even in a full-screen application when the language indicator is not visible.
  • CapsLock is way easier to press than Alt+Shift, Ctrl+Shift, Cmd+Space or whatever else, your little finger is always near it.
  • It's harder to accidentally press CapsLock than Alt+Shift or Ctrl+Shift.
  • You can add additional characters to your layout that are useful to you, which can be entered with AltGr+??, for example: long dash —, english quotes “” ‘’, russian quotes «», arrows ← → ↑↓ , math symbols ≠ ± ≈ (I've entered all of these with RightAlt+Key and no additional software and no character codes)
  • There is no third-party application running, which means no bugs, no tray icons, no popups, no ads, no additional memory use.
  • You can have the same language switching method in all operating systems that you use (e.g. in Mac OS X there is Ukulele keyboard layout creator), instead of using OS-specific shortcuts in each one.

Cons are:

  • It won't work with three or more languages.
  • Microsoft Word and probably some other programs will fail to detect what language you're typing in, and spellcheck may not work properly. For Russian, it is solved by turning Automatic language detection On; it may not work as good for latin-based language pairs though (e.g. English+Italian).

Before I found this solution, I used SwitchIt! program to make input language setting global. It is not developed anymore so I don't know if it still works in XP/Vista/Win7.