Saya menyarankan pendekatan yang mungkin sedikit lebih baik dengan solusi autohotkey yang sama.
Alih-alih beralih ke tata letak sebelumnya (yang mungkin yang ketiga), lebih baik menonaktifkan hotkey bersepeda Alt + Shift asli sekaligus dan menetapkan untuk bahasa yang Anda ingin siklus hotkey seperti Alt + Shift + 0, Alt + Shift + 1, dll.
Dan kemudian gunakan skrip berikut bersama dengan petunjuk @Ewindar:
#SingleInstance force
SendMode Input
; initial language hotkey
Lang := 0
; attempting to get currently selected language
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
InputLocaleID:=DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt") & 0xFFFF
; this attempts to adjust initial hotkey according to currently selected language
; refer to https://docs.microsoft.com/en-us/windows/win32/intl/language-identifiers
; and https://docs.microsoft.com/en-us/windows/win32/intl/language-identifier-constants-and-strings
; for finding out correct values
if (InputLocaleID = 0x0419) {
Lang := 1
}
; alt+shift hotkey
LAlt & LShift::
; switch to next language in [0,1] range.
; To change number of used languages (2) adjust modulo accordingly.
Lang := mod(Lang+1,2)
; send alt+shift+N combination
send !+%Lang%
return
Anda mungkin dapat menghitung semua bahasa yang tersedia menggunakan panggilan winapi dan mempertahankan daftar id yang dikecualikan saja, tetapi itu kemungkinan akan melampaui solusi quick'n'dirty dan membutuhkan setidaknya beberapa jam waktu investasi.