Ещё один способ, на этот раз учитываются используемые в системе раскладки клавиатуры, т.е не нужно теперь указывать языки вручную:
Код:

#include <Misc.au3>
Global $hUser32_Dll = DllOpen("User32.dll")
Global $nKey = "A1"
;Получаем список используемых в системе раскладок клавиатуры (для циклического переключения)
Global $aLayouts_List = _WinAPI_GetKeyboardLayoutList()
;"Ctrl + Shift + E" для выхода из скрипта
HotKeySet("^+e", "_Exit_Proc")
While 1
Sleep(10)
If _IsPressed($nKey, $hUser32_Dll) Then
While _IsPressed($nKey, $hUser32_Dll)
Sleep(1)
WEnd
_SwitchIt_Proc()
EndIf
WEnd
Func _SwitchIt_Proc()
Local $hWnd = WinGetHandle("[ACTIVE]")
Local $nOld_Layout = _WinAPI_GetKeyboardLayout($hWnd)
For $i = 1 To $aLayouts_List[0]
If $aLayouts_List[$i] = $nOld_Layout Then
$i += 1
If $i > $aLayouts_List[0] Then $i = 1
_WinAPI_LoadKeyboardLayout($aLayouts_List[$i], $hWnd)
ExitLoop
EndIf
Next
EndFunc
Func _Exit_Proc()
Exit
EndFunc
Func _WinAPI_LoadKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
If StringLen($sLayoutID) <= 3 Then $sLayoutID = "00000" & $sLayoutID
Local $aRet = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $aRet[0])
EndFunc
Func _WinAPI_GetKeyboardLayout($hWnd)
Local $aRet = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
$aRet = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $aRet[0])
Return "0000" & Hex($aRet[0], 4)
EndFunc
Func _WinAPI_GetKeyboardLayoutList()
Local $Ret
$Ret = DllCall('user32.dll', 'int', 'GetKeyboardLayoutList', 'int', 0, 'ptr', 0)
If (@error) Or ($Ret[0] = 0) Then
Return SetError(1, 0, 0)
EndIf
Local $tData = DllStructCreate('ptr[' & $Ret[0] & ']')
$Ret = DllCall('user32.dll', 'int', 'GetKeyboardLayoutList', 'int', $Ret[0], 'ptr', DllStructGetPtr($tData))
If (@error) Or ($Ret[0] = 0) Then
Return SetError(1, 0, 0)
EndIf
Local $List[$Ret[0] + 1] = [$Ret[0]]
For $i = 1 To $List[0]
$List[$i] = Hex(BitAND(DllStructGetData($tData, 1, $i), 0xFFFF))
Next
Return $List
EndFunc