Мне подсказали вот такой код для решения моей задачи:
Код:

;~ #RequireAdmin
;~ #NoTrayIcon
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
#include <APISysConstants.au3>
OnAutoItExitRegister("OnAutoItExit")
$hWnd = GUICreate("")
GUIRegisterMsg($WM_HOTKEY, "WM_HOTKEY")
_WinAPI_RegisterHotKey($hWnd, 1, $MOD_SHIFT, 0)
_WinAPI_RegisterHotKey($hWnd, 2, $MOD_CONTROL, 0)
While Sleep(1000)
WEnd
Func WM_HOTKEY($hWnd, $iMsg, $wParam, $lParam)
Switch $wParam
Case 1
_WinAPI_SetKeyboardLayout(WinGetHandle(""), 0x0409)
Case 2
_WinAPI_SetKeyboardLayout(WinGetHandle(""), 0x0419)
EndSwitch
EndFunc
Func OnAutoItExit()
_WinAPI_UnregisterHotKey($hWnd, 1)
_WinAPI_UnregisterHotKey($hWnd, 2)
EndFunc
но в нём есть следующие недостатки:
- переключение языка происходит по левому и правому Ctrl / Shift, а нужно чтоб только по правому;
- я использую типографскую раскладку Бирмана, и как только я выполняю скрипт с вышеуказанным кодом, то в системе появляется две дополнительные раскладки (скриншот).
Ещё мне подсказали, что решить мою задачу можно проще с помощью
AutoHotkey, может кто-то знает как?