Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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?

share|improve this question

migrated from stackoverflow.com Nov 6 '09 at 3:53

This question came from our site for professional and enthusiast programmers.

add comment

12 Answers 12

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.

share|improve this answer
1  
"Windows maintains different input language for each thread." < The thing I don't understand is this: Google Chrome uses multiple threads YET a change in keyboard layout/language applies to the entire browser - not each tab/thread separately. I can't for the life of me understand why Microsoft didn't do the same with Internet Explorer when they went multi-threading in IE. One guy working at MS even justified this odd behavior as "the correct way an application should behave" WTF! (Apologies for the rant.) –  ADTC Mar 28 '12 at 23:46
    
Unfortunately Microsoft Keyboard Layout Creator does not support the option 'ctrl + SGCAP + <Key>'. I work with a Dvorak layout and I couldn't get shortcuts like 'ctrl + S' (save) to work while caps lock is on. –  mathijsuitmegen Apr 20 '12 at 13:02
1  
This drives me nuts. I think it's per process, not per thread. Windows 8 has an option to set it system-wide which is great, though that's not a solution for everyone... –  Tass Mar 5 '13 at 11:23
    
@mathijsuitmegen I've set it up this way, and for me things like Ctrl+C, Ctrl+V work as expected in all the applications that I've tried, whether CapsLock is ON or not. (Unfortunately, though, Inkscape doesn't accept Russian input directly, it might be guessing for us that CapsLock ON is equivalent to Shift down, which it's not, with this setup.) I've checked on Windows7 and Vista. –  Evgeni Sergeev Mar 29 at 7:19
2  
@ADTC - Chrome uses multiple threads & processes, but it keeps all of its windows as belonging to the same thread, then has the other threads send messages to that thread to tell it to update the window whenever they change. You can see this in the Chrome task manager as "Browser". –  Jules Apr 28 at 11:27
show 1 more comment

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...

share|improve this answer
    
Found a solution to my problem which I illustrated here: superuser.com/questions/304488/… –  atraudes Jun 6 '12 at 17:47
add comment

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.

share|improve this answer
add comment

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 language....select 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

share|improve this answer
    
I spent forever trying to figure this out. SO FRUSTRATING. Thanks for posting sense! –  TehShrike Oct 12 '11 at 2:56
add comment

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

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

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.

share|improve this answer
2  
So that's why Visual studio used to keep switching my input method. I press ALT and SHIFT with my left hand and hit F10 with my right hand. –  John Ferguson Oct 2 '08 at 15:05
3  
Thank you so much!! I'm forever having this happen in Visual Studio and it's a real pain! Now switched off. –  Len Holgate Oct 13 '08 at 12:05
1  
Yes, I know that one, but it's not just VS, it's everywhere. Sometimes you open a text documment and windows changes your language. Ahhh! Kill me now. I want a: "never ever change automatically" –  andrecarlucci Jul 16 '09 at 17:24
2  
On Win7 you can disable this by either a) from language bar context menu select "settings", then "advanced key settings" tab, "change key sequence" and disable the shortcuts, or b) from control panel, under "region and language" select "change keyboards or other input methods", then press "change keyboards" and do as in a). –  Ilkka Nov 29 '11 at 15:32
    
This is not a complete answer. Word and others software will keep changing the language automaticaly! Lets thanks that to Microsoft genius programers... Anyway, hamstergene may have posted a possible solution here. But I still don't know how to completely solve this annoying Windows problem. –  Pedro77 Mar 31 '13 at 21:26
show 1 more comment

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

share|improve this answer
add comment

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... :-)

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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!

share|improve this answer
add comment

protected by Jeff Atwood Jan 26 '11 at 11:46

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.