Я решил эту проблему с помощью AutoHotKey.
Установите 3 языка, горячую клавишу для переключения между ними и другую горячую клавишу для переключения на язык, который вы хотите пропустить. У меня был английский, русский и японский языки, и я хотел пропустить японский, поэтому я назначил Ctrl+Shift+0, чтобы переключиться на JP.
У меня уже был скрипт AutoHotKey, который позволял мне переключаться между всеми тремя языками, используя Caps. Это выглядело так:
CapsLock::Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
Идея состоит в том, чтобы переключать язык автоматически после переключения на язык, который вы хотите пропустить. Это 0x0411 для японцев. Вставьте свою фразу if в приведенный ниже скрипт, сохраните ее и запустите.
Вот список языковых идентификаторов, найдите свой в первом столбце.
Скрипт работает только для переключения между языками с помощью CapsLock, но вы можете адаптировать его к переключателю Alt+Shift. Возможно, просто заменив "CapsLock" на «{Alt Down} {Shift Down} {Shift Up} {Alt Up}».
CapsLock::
Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
if !LangID := GetKeyboardLanguage(WinActive("A"))
{
MsgBox, % "GetKeyboardLayout function failed " ErrorLevel
return
}
if (LangID = 0x0411)
Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
return
GetKeyboardLanguage(_hWnd=0)
{
if !_hWnd
ThreadId=0
else
if !ThreadId := DllCall("user32.dll\GetWindowThreadProcessId", "Ptr", _hWnd, "UInt", 0, "UInt")
return false
if !KBLayout := DllCall("user32.dll\GetKeyboardLayout", "UInt", ThreadId, "UInt")
return false
return KBLayout & 0xFFFF
}