Использование автоматической горячей клавиши для замены Ctrl & Alt и применения Ctrl Tab

При использовании AutoHotKey я хотел настроить правило для замены левой и левой клавиш. Я могу сделать это, выполнив:

LAlt::LCtrl
LCtrl::LAlt

Затем я хотел, чтобы функциональность "alt tab" привязывалась к этим физическим клавишам, поэтому я попробовал

LCtrl & Tab::AltTab

В дополнение к двум uptop, но это не сработает. Если я так выразился:

LCtrl & Tab::AltTab
LAlt::LCtrl
LCtrl::LAlt

Затем вкладка будет работать, однако ctrl alt swap будет сломан. Любые предложения?

Ответ 1

Документация по горячим клавишам рассказывает о подстановочных знаках

Подстановочный знак: загорайте горячую клавишу, даже если удерживаются дополнительные модификаторы. Это часто используется в сочетании с переназначением клавиш или кнопок. Например:

* # c:: Run Calc.exe; Win + C, Shift + Win + C, Ctrl + Win + C и т.д. Все вызовут эту горячую клавишу.

* ScrollLock:: Запустить блокнот; Нажатие кнопки Scrolllock вызывает эту горячую клавишу, даже если клавиши (и) модема опущены.

Итак, попробуйте это

*tab::
{   if(GetKeyState("LAlt", "P"))  
{   Send {LControl up}{Alt down}{tab}
    KeyWait, tab  
}else   
{   send {tab}
}      
return
}          
~LAlt Up::
{   send {lalt up}
return
}
LAlt::LCtrl 
LCtrl::LAlt   

Ответ 2

Я немного улучшил эту настройку, чтобы не сдвинуть вкладку shift, теперь вы можете использовать Shift + tab, как и ожидалось, где, как и раньше, вы не могли (затруднялось пытаться исправить отступы (outdent) при кодировании). Я могу улучшить это больше и получите Shift + Alt + tab working

*tab::
{   

if(GetKeyState("LAlt", "P")){   
    Send {LControl up}{Alt down}{tab}
    KeyWait, tab  
} else if(GetKeyState("LShift", "P")){
    Send {LShift down}{tab}
    KeyWait, tab 
}else   
{   send {tab}
}      
return
}          
~LAlt Up::
{   send {lalt up}
return
}
LAlt::LCtrl 
LCtrl::LAlt