AutoHotKey: переназначение Alt+Shift+Tab для (L)Win+Shift+Tab

Я пытаюсь использовать AutoHotKey, чтобы заставить Alt+Tab и Shift+Alt+Tab в Windows иметь такое же поведение, как Cmd+Tab и Shift+Cmd+Tab в macOS.

Примечание: Cmd на клавиатуре Mac отправляет клавишу Win.

То, что я получил на работу:

LWin & Tab:: AltTab

Чего я не смог сделать, так это заставить LWin+Shift+Tab отправить Shift+Alt+Tab. Я пробовал:

  1. #Shift & Tab:: ShiftAltTab (ошибка: в этом случае необходимо указать L или R для #)
  2. LWin & Shift & Tab :: ShiftAltTab (Не могу использовать 3 пользовательских комбинации)
  3. Lwin & Tab::
           if GetKeyState("Shift")
               {
               Send {ShiftAltTab}
               }
           else
               {
               Send {AltTab}
               }
    

Я также пытался с обратной строкой после каждого Send линия. Ничего не происходило при нажатии либо

  • LCmd+Tab (== LWin+Tab) или
  • LCmd+Shift+Tab (== LWin+Shift+Tab).

Есть ли быстрый и простой способ сделать это? Я хочу использовать AHK, поскольку он изменяет комбинации, чтобы имитировать многие другие варианты поведения клавиатуры Mac.

2 ответа

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

Проверено на Windows 10.

Продолжая ответ, данный @user3419297, поскольку он работал только для левых модификаторов:

      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

Это позволяет использовать модификаторы Win и Shift взаимозаменяемо.

Другие вопросы по тегам