Why are my computer's language settings changing at undesirable times? [duplicate]

Possible Duplicate:
Why does Windows change the input language randomly?

I'm using two, sometimes more input methods in Windows.

language change menu

I typically use Alt + left Shift to switch between languages. Sometimes, every once in a while, another action(s) triggers the language switch.

It happens in the same application context, i.e. the input language can change for a certain app context, without my request.

Edit I realized that some of these actions could be the use of the scroll wheel button. — (Middle-clicks were being caused by a particular esoteric program called "hafuch," so I closed it. The general problem remains.)

It happened in the past on these and more occasions:

  • middle mouse click
  • pressing Windows key
  • pressing Alt + Tab, maybe?
  • (unknown)

Edit - Unidirectional language switching is a big hassle, and I'd rather avoid it.

The Question:

  • How do I disable any language switching except for Alt + Shift?
  • What can cause input language to change sometimes, other than Alt + Shift?

This is probably expected Windows behavior, but there are possible work-arounds.

Explanation: The input language (keyboard layout) is not global; it is set on a per-application basis. When an application loses input focus, Windows stores the current input language. When that application regains input focus, Windows tries to switch back to the input language it previously stored for that application. I am not sure about middle click, but the Windows key and Alt-Tab definitely induce the input focus to be switched to a different application, and thus potentially switch the input language.


Here are possible work-arounds:

If you use only two layouts and one of them includes a key for switching to/from QWERTY (like Korean and Hebrew), uninstall all other layouts. Just use the single layout's ability to switch to/from QWERTY. Note the layout's QWERTY input state is still stored and automatically switched between different applications. I've used this method to switch between QWERTY and Korean input in a sane, predictable way.

3rd party software solution (free):

Portable Keyboard Layout (PKL) is used for supporting alternate input languages on (other) computers without admin access. It maintains the same input language state across all applications. A keyboard shortcut for switching between layouts can be configured. Works from a USB drive. Free and open-source.

Some light setup is required:

  1. Copy desired layouts to layouts sub-folder
  2. Add layouts and keyboard shortcuts to the pkl.ini file. I found the Hebrew layout for you here. (Be sure to remove the Colemak layout if you are not interested in it.)

Here is a good start on how the pkl.ini file should be modified:

; The layout ini file is "layouts/[key value]/layout.ini"
; You can use multiple layouts, if you write:
;   layout = layout1:Displayed name,layout2
layout = hebrew:Hebrew

; With this hotkey you can switch between layouts
changeLayoutHotkey = LAlt & LShift

The above settings add the Hebrew layout and the Alt + Left Shift keyboard short-cut you are used to (I would uninstall all other layouts and keyboard shortcuts on Windows so they don't interfere, or use different keyboard shortcuts)


As a side note, I modified the PKL script to support the odd combination of Korean Hangul input and Colemak layout. With the default PKL install, Korean input is horribly broken because it expects a QWERTY layout...


If you do use Alt+Shift, you may not like the suggestion, but I think that the best thing you can do is simply disable all shortcuts.

enter image description here

If this doesn't stop it, then put it back - and test disabling various applications as it probably means a third party application is interfering with the language settings.


ok, here's my two cents.

Alt + Left arrow = Back in browsing, if you have a 4/5 button mouse or if you have a multimedia keyboard with a back button on it, it's possible your accidentally contact the back button which send the same key code through as pressing Alt & Left Arrow.

Worth checking, if you have such a mouse or keyboard the driver should have the ability to change the key like a macro to something else or even disable the button.