Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I work with 2, sometimes 3 different languages on my XP boxes.

Windows XP chooses input language on a per-application basis. That is, when I switch to a different application, Windows sometimes changes the input language because it remembers that I used that language last time I used that app.

I don't like that. I want Windows to maintain one global input language, and change it only when I hit Alt-Shift.

Is it possible to hack Windows to behave like that? Maybe with AutoHotKey?

share|improve this question

The only way I could see this working, is by only having one keyboard layout installed at a time. For example, when you want to only use Romanian, you would delete all other keyboard layouts...

AutoHotKey can be used for creating shortcuts to quickly delete and install keyboard layouts.

Post comments with any additional questions or concerns regarding my answer.

share|improve this answer
I actually happen to have a script that does that. But it's not that fast (around 1-2 secs) nor flexible, cause it pops up the dialog for adding languages and manually navigates it with the keyboard. – Ram Rachum Dec 24 '11 at 12:45
If you know how to make such a script that talks directly with Windows instead of with the dialogs, that might do. – Ram Rachum Dec 24 '11 at 12:45
up vote 0 down vote accepted

Here's the AHK script I've been using for this for maybe a year now:

language := 0

;;; Forced Hebrew: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                                                            ;
    language := 0

    language := 1

#if language=1 and not GetKeyState("Capslock", "T")  
    `:: SendInput {;}
    q:: SendInput /
    w:: SendInput '
    e:: SendInput ק
    r:: SendInput ר
    t:: SendInput א
    y:: SendInput ט
    u:: SendInput ו
    i:: SendInput ן
    o:: SendInput ם
    p:: SendInput פ
    a:: SendInput ש
    s:: SendInput ד
    d:: SendInput ג
    f:: SendInput כ
    g:: SendInput ע
    h:: SendInput י
    j:: SendInput ח
    k:: SendInput ל
    l:: SendInput ך
    `;:: SendInput ף
    ':: SendInput `,
    z:: SendInput ז
    x:: SendInput ס
    c:: SendInput ב
    v:: SendInput ה
    b:: SendInput נ
    n:: SendInput מ
    m:: SendInput צ
    ,:: SendInput ת
    .:: SendInput ץ
    /:: SendInput .

    (:: SendInput )
    ):: SendInput (
    [:: SendInput ]
    ]:: SendInput [
    >:: SendInput <
    <:: SendInput >

;                                                                            ;
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .