AutoHotKey: Neuzuordnung von Alt+Umschalt+Tab zu (L)Win+Umschalt+Tab

AutoHotKey: Neuzuordnung von Alt+Umschalt+Tab zu (L)Win+Umschalt+Tab

Ich versuche, AutoHotKey zu verwenden, damit Alt+ Tabund Shift+ Alt+ Tabin Windows dasselbe Verhalten aufweisen wie Cmd+ Tabund Shift+ Cmd+ Tabin macOS.

Hinweis: CmdAuf einer Mac-Tastatur wird die WinTaste gesendet.

Ich habe Folgendes zum Laufen gebracht:

LWin & Tab:: AltTab

Was ich nicht geschafft habe, ist, LWin+ Shift+ dazu zu bringen, + + Tabzu senden . Ich habe Folgendes versucht:ShiftAltTab

  1. #Shift & Tab:: ShiftAltTab(Fehler: in diesem Fall muss L oder R für # angegeben werden)
  2. LWin & Shift & Tab :: ShiftAltTab(3 benutzerdefinierte Kombinationen können nicht verwendet werden)
  3.  

    Lwin & Tab::
           if GetKeyState("Shift")
               {
               Send {ShiftAltTab}
               }
           else
               {
               Send {AltTab}
               }
    

Ich habe es auch mit Zeilenumbrüchen nach jeder SendZeile versucht. Nichts passierte, als ich beides drückte.

  • LCmd+ Tab(== LWin+ Tab) oder
  • LCmd+ Shift+ Tab(== LWin+ Shift+ Tab).

Gibt es eine schnelle und einfache Möglichkeit, dies zu tun? Ich möchte AHK verwenden, da es die Kombinationen ändert, um viele andere Verhaltensweisen von Mac-Tastaturen nachzuahmen.

Antwort1

LWin & Tab:: 
    AltTabMenu := true
    If GetKeyState("Shift","P")
        Send {Alt Down}{Shift Down}{Tab}
    else
        Send {Alt Down}{Tab}
return

#If (AltTabMenu)

    ~*LWin Up::
        Send {Shift Up}{Alt Up}
        AltTabMenu := false 
    return

#If

Getestet unter Windows 10.

Antwort2

Gehen wir noch einen Schritt weiter und gehen wir von der Antwort von @user3419297 aus, da sie nur für die linken Modifikatoren funktionierte:

LWin & Tab:: 
RWin & Tab:: 
    AltTabMenu := true
    If GetKeyState("Shift","P")
        Send {Alt Down}{Shift Down}{Tab}
    else
        Send {Alt Down}{Tab}
return

#If (AltTabMenu)
    ~*LWin Up::
    ~*RWin Up::
        Send {Shift Up}{Alt Up}
        AltTabMenu := false 
    return
    RShift::LShift
#If

Dadurch können die Modifikatoren „Win“ und „Shift“ austauschbar verwendet werden.

verwandte Informationen