Понял, это работает сейчас!
Это было в правильном направлении, но с кодом было несколько проблем. Особенно LShift не проверялся, если он был ложным, поэтому первое утверждение всегда было верным.
Я также добавил поддержку Ctrl+Tab.
*tab::
{
if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) {
Send {LControl up}{LAlt down}{tab}
KeyWait, tab
} else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) {
Send {LControl up}{LShift down}{LAlt down}{tab}
KeyWait, tab
} else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) {
Send {LAlt up}{LCtrl down}{tab}
KeyWait, tab
} else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) {
Send {LAlt up}{LShift down}{LCtrl down}{tab}
KeyWait, tab
} else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P") = false) {
Send {LWin down}{tab}
KeyWait, tab
} else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) {
Send {LShift down}{LWin down}{tab}
KeyWait, tab
} else {
send {tab}
}
return
}
~LAlt Up::
{
send {LAlt up}
return
}
~LCtrl Up::
{
send {LCtrl up}
return
}
LAlt::LCtrl
LCtrl::LAlt