Hotkey to switch input language in Windows 7
Solution 1:
I think Windows doesn't natively support changing these keys. Anyway, you can write an AutoIt script to listen for custom key bindings and programmatically send one of the predefined keyboard shortcuts to the system to change the keyboard layout.
;^ = Ctrl
;! = Alt
;# = WinKey (Meta)
;+ = Shift
HotKeySet("^{Space}", "change") ;Registers Control + Space
;Main loop
While 1
Sleep(100)
WEnd
;Changes Keyboard Layout
Func change()
Send ("{ALTDOWN}") ;Hold down Alt
Sleep(100) ;Wait 100 milliseconds
Send("{LSHIFT}{ALTUP}") ;Press Left-Shift and release Alt
EndFunc
Just download and install AutoIt (use this link to download and install) and create a file with an .au3
extension. Copy and paste the code above and save it. You can place this file into your Startup folder if you want it to be opened when you login.
Solution 2:
The script above didn't work for me, but I modified it, and now it does.
#Include <Misc.au3>
;~ #RequireAdmin
;^ = Ctrl
;! = Alt
;# = WinKey (Meta)
;+ = Shift
HotKeySet("^{Space}", "change") ;Registers Contorl + Space
$dll = DllOpen("user32.dll")
ToolTip("Try to use ^Space"&@CRLF&"!!!!!!!!!!!!!!!!!!!")
Sleep(3000)
ToolTip('')
;Main loop
While 1
Sleep(100)
WEnd
;Changes Keyboard Layout
Func change()
While _IsPressed("11",$dll)
Sleep(10)
WEnd
Send ("{ALTDOWN}") ;Hold down Alt
Sleep(100) ;Wait 100 milliseconds
Send("{LSHIFT}{ALTUP}") ;Press Left-Shift and release Alt
EndFunc
Solution 3:
In Windows 7, under Control Panel\Region & Language\Keyboards & Language, select 'Change Keyboards'. You will get a little pop-out window; there chose 'Advanced Key Settings', which allows you to set combinations to directly get each target keyboard, as well as the general switching key sequence.