Switching keyboard layout in Windows globally

I'm searching for a solution to switch my keyboard layout in Windows globally for all windows quickly.

When I switch the current layout by pressing the magic combination Alt+Shift or when I choose another layout in the language bar, this only changes the layout in the current window.


Solution 1:

Windows 8 supports this out-of-the-box. It seems to have very good built-in keyboard layout switching functionality with the following features:

  • Switches layout globally by default. (This can be changed if necessary.)
  • Has a built in shortcut key to change layouts: Windows+Space. This also triggers a useful notification window. (This is like a keyboard layout version of Alt+Tab.)
  • Shows you the current keyboard layout in the language bar icon.

I put up with the keyboard layout problems with previous versions of Windows for a long time, and I tried all of the programs mentioned in other answers, but I never found one that solved the problem reliably. I can confidently say that Windows 8 solves the problem.

Update

After spending a couple of weeks using Windows 8, I noticed that the keyboard layout seemed to intermittently be changing to a non-default one during normal use. It turned out that the problem was caused by the intrusive legacy Ctrl+Shift and Alt+Shift shortcuts. To fix this, do the following:

  1. Open the Language control panel item.
  2. Go to Advanced Settings on the left side.
  3. Go to Change language bar hot keys.
  4. Go to Change key sequence....
  5. Unassign the shortcuts you don't want.

Solution 2:

I'm a bit late to this, but interested parties may like my (free) kbswitch app. Switch keyboard layouts in Windows globally. I use it all the time, and I think it's awesome. (Some might say I'm biased; I'd argue that I just worked out what would be awesome, and then wrote the program that did that, so it would be odd if I thought otherwise.)

http://www.tomseddon.plus.com/kbswitch/

I use it for switching between Dvorak (when I'm using a split keyboard) and QWERTY (when I'm using an unsplit keyboard). By doing this I keep the muscle memory for both layouts separate. Stops my fingers getting too confused.

POSTSCRIPT: If you're feeling daring, and/or you use Windows 7 x64, you might like to try the experimental kbswitch2 (link is to the README). In addition to broader compatibility, this features command line support, so it can be integrated with AutoHotkey (or similar) for keyboard-controlled layout switching. Due to its experimental nature, it's so far only available via GitHub, so, with apologies for the slightly ropey delivery method: visit the kbswitch project page, use the GitHub Download ZIP button to get a ZIP, and find kbswitch2.exe in the kbswitch-master/kbswitch2/bin/ folder inside the ZIP.

Solution 3:

Use Keyla. It supports global layout and it switches between layouts miles quicker!

I installed it on everyone's computer once I had the chance :)

Solution 4:

Try Switch It!. It is a Russian program with an optional English interface; it works on Vista and Windows 7. Just keep pressing "Next" to install. After installation, in Properties (first item in the menu), check "Use English as a user interface language" and "Set active layout systemwide".


Edit: The above link goes to a Google translation page. This post originally linked to this Russian page.

Solution 5:

I guess remembering layouts per window is a "feature". I have wondered about how to do this myself and it appears that one way to do this is by changing the default input language.

However changing the default input language involves a gazillion steps -

Start -> control panel -> regional and language settions -> second tab -> Details -> change default -> Ok -> Ok -> Close windows

(In windows xp). By no means "quick" :) But the only way I can think of.