Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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 want to remap the keyboard layout/language switching to Win+Space, I tried it with:

LWin & Space::Send, ^+

But it doesn't seem to work, I would want it to send a Ctrl+Shift sequence so that I can switch between keyboard layouts with Win+Space.

How can I make this work?

share|improve this question

Are you sure this is Ctrl+Shift? On my system it is Alt+Shift. anyway, use this command:

LWin & Space::Send, {Alt Down}{Shift}{Alt up}

Replace Alt for Ctrl if your system indeed uses the Ctrl+Shift combination.

share|improve this answer

You can easely (by changing first two lines to:

$~#Space up::LangSwitch(2)

) modify wOxxOm's Keyboard layout switcher for using Win+Space instead of right control. And it will work no matter which hotkeys are set up for switching layout in Windows (default is Alt+Shift, I'm using Ctrl+Shift).

Because of non-ahk-native switching (script uses WinAPI), whole script is rather bulky, so I didn't paste it inline. In case of inaccessibility, here it is:

(again, all credits go to wOxxOm, source script is there:

P.S. That script is quite old, and has hardcoded byte-offsets, so I'm not sure if it will work with 64-bit Autohotkey.exe or in 64-bit Windows. I only have 32-bit at hand.

share|improve this answer

Win+Space switch works fine on my win7-x64:

; This should be replaced by whatever your native language is. See 
; for the language identifiers list.
ru := DllCall("LoadKeyboardLayout", "Str", "00000419", "Int", 1)
en := DllCall("LoadKeyboardLayout", "Str", "00000409", "Int", 1)

w := DllCall("GetForegroundWindow")
pid := DllCall("GetWindowThreadProcessId", "UInt", w, "Ptr", 0)
l := DllCall("GetKeyboardLayout", "UInt", pid)
if (l = en) 
    PostMessage 0x50, 0, %ru%,, A
PostMessage 0x50, 0, %en%,, A

more details:

share|improve this answer

Your script is:

Sleep 500
Send, {CTRL}

then install puntoswitcher and set change language on control press. thats all

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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