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.

I hope this is the solution you've been looking for. I just now had the same problem when I was trying to play around with different languages as I will need them in the near future. I noticed that every time I clicked on the "sound icon" at the bottom right (I use vista) it will change to Korean input, or maybe if I open Mozilla Firefox, the input will automatically change to Korean (whereas I've been using English the whole time). In short, depending on what program I open up or click on the input language changes....annoying right? Here is what you want to do if you want the default to be set system-wide *regardless of what program you open up*:

right click on the language bar, and then settings on the drop down menu, default input what you want.

D'oh! took me 3 hours to figure out...this should have come to me straight away as I was pretty much born with a computer, by now this should be sort of common sense for me? hehe

That is a good question, I have the same problem but do need both languages, so deinstallation is not an option.

I realized that the language switches when you switch to certain applications which are registered in the other language. Have not found a solution yet.

Tip: You can (manually) switch though the languages by pressing alt-shiftleft. That, at least, helps a little bit.

If you don't use both input languages just deinstall the other one.

Georgi's answer is almost definitely why the OP perceives this to be 'automatically', especially being a developer and using all sorts of ctrl-shift, alt-shift combinations.

If you go to Control Panel->Regional and Language Options->Change Keyboards and then modify the Key sequence for the option to switch between input languages

I found the simple solution or the real problem for me. I'm using WinXP and installed Urdu keyboard along with English. I had this setup before but never had problem until now. After some frustration and looking around I found the problem. XP was installed using English language. The "Default input Language" (through Regional and Language Options, Language Tab, Details Button, Settings Tab) was accidently set to Urdu. When I changed it back to English - US, the problem is fixed.

I agree with Gido. On many different machines I've experienced Windows switching my keyboard layouts randomly.

unexist's advice might be helpful for some:

If you don't use both input languages just deinstall the other one.

But I personally use many different keyboard layouts during my daily routine, and don't appreciate them being switched around on me all the time. In English I type in Dvorak. I was forced to install the UK standard QWERTY keyboard by an (otherwise excellent) application I have for learning the Cyrillic keyboard layout (Keyboard Tsar). Even before this, however, I remember my keyboard layout being randomly switched to QWERTY without any intervention on my part. So, for example in a web browser, if I've typed something into a text field and attempt to copy it using CTRL+C, it would send CTRL+R and refresh the page, probably causing me to lose what I had typed! You can imagine how frustrating this might be, especially for a predominantly keyboard-oriented user like myself who multitasks viciously.

I do agree that the default shortcut for switching input languages -- ALT+L-SHIFT could be responsible in some cases -- especially since I sometimes use ALT+SHIFT+TAB to toggle backwards through applications. However, for me, disabling this shortcut has only seemed to work temporarily. Invariably, after disabling it, I will check on the setting a day or two later and find it enabled again! Anyway I've experienced problems with randomly-changing keyboard layouts in Windows XP for such a long time, and I feel sure that much of the time it couldn't possibly be due to my accidentally hitting this shortcut.

I think that a third-party application for better controlling keyboard layouts would be extremely useful. It could have the features to set the keyboard layout system-wide, or to set permanent, automatic keyboard layouts associated with different applications. For example, when I open my Spanish-English dictionary program, it could automatically switch the layout for that application to Spanish international. And it could prevent Windows from capriciously switching layouts, as it seems so fond of doing.

PS, @Adam: Windows manages keyboard layouts per-application. As I touched on in the previous paragraph I'm not always fond of this either, as sometimes I wish to work in a particular language system-wide, and have to change each individual application to that language's layout individually. However, a possible workaround for you -- if you want each application to open with the Korean layout -- is to set the Korean layout as your default input layout. Of course I can understand that this might not be the ideal solution for you, as you may also use English heavily at other times and just end up with the opposite problem if you switched the default to Korean. But I thought I'd just enlighten you about the logic of Windows with regard to this 'feature': in theory, each running application should launch with the system default layout, then remember whichever layout you switch to until it is closed.

I had the same problem on Windows 7. Every minute or two, it would silently change from dvorak to qwerty; an extremely unnerving behavior when I'm trying to remember the password to a Linux system.

The solution was to set the default input language to dvorak in the drop down menu in the Text Services and Input Languages window.

A handy "feature", I'm sure...

I do think Windows switches randomly. On my computer it switched in different applications for no reason... or at least none that I could think of. I did not use alt-shift-left at all.

For instance in Internet Explorer 7, it used one keyboard setting for form fields and another for the addressbar, which I accessed through alt-d. Just a few moments later, the settings had changed, but I didn't do a thing...

Also other applications have the same problem, especially characters like - / _ * [ and ] will move around because of sudden keyboard layout changes. I already know where they are in the other layout, but it is truly annoying...

I recently got this problem when I updated Internet Explorer from version 6 to 7 (a bit late, I know). I now disabled the keyboard shortcuts for changing layouts, hope that works... :-)

In the great majority of cases, it is sufficient to delete the keyboard layout that doesn't match your actual real keyboard. Many default Windows installations come with (for example) a US keyboard layout as well as a UK keyboard. The US keyboard serves no useful purpose (in this example case, as you can attach US English as a language which uses the UK layout).

For multiple Western European languages on a single keyboard, you can use the US-International keyboard layout (best if you have a physical US keyboard), or use the MS Keyboard Layout Generator to build a similar multilingual layout derived from a specific national keyboard.

I've been getting this problem too as my macbook has it's own non-standard keyboard settings. Windows works by opening any new window in the DEFAULT language. I have found a workaround for this though.

When I plug in my USB keyboard (which requires different language settings) I:

  • right click in the language bar and click 'Settings...'
  • In the 'Default language input' change it to the one I want to use now.

Any windows opened after this point will use the default language setting.

However, any window which was opened before the default language change will still be in the previous language setting so windows will change languages if you switch to it (so you'll need to switch those ones manually).

I hope that helps!

Category: windows Time: 2008-10-02 Views: 5

Related post

iOS development

Android development

Python development

JAVA development

Development language

PHP development

Ruby development


Front-end development


development tools

Open Platform

Javascript development

.NET development

cloud computing


Copyright (C), All Rights Reserved.

processed in 0.214 (s). 12 q(s)