使用自动热键交换Ctrl&Alt并实现Ctrl Tab

who*_*mba 15 autohotkey keyboard-shortcuts

在使用AutoHotKey时,我想设置一个规则来交换左边的alt和左边的ctrl.我可以这样做:

LAlt::LCtrl
LCtrl::LAlt
Run Code Online (Sandbox Code Playgroud)

然后我想保持'alt tab'功能绑定那些物理键,因此我尝试了

LCtrl & Tab::AltTab
Run Code Online (Sandbox Code Playgroud)

除了两个顶部,但它不会工作.如果我这样说:

LCtrl & Tab::AltTab
LAlt::LCtrl
LCtrl::LAlt
Run Code Online (Sandbox Code Playgroud)

然后选项卡将工作,但ctrl alt swap将被破坏.有什么建议?

小智 10

热键文档讨论了通配符

通配符:即使按下额外的修改器,也要触发热键.这通常与重新映射键或按钮结合使用.例如:

*#c ::运行Calc.exe; Win + C,Shift + Win + C,Ctrl + Win + C等都将触发此热键.

*ScrollLock ::运行记事本; 即使modifer键已关闭,按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   
Run Code Online (Sandbox Code Playgroud)


小智 6

我稍微改进了这个以修复 shift tab 不工作,现在你可以像预期的那样使用Shift+tab和以前一样你不能(在编码时试图修复缩进(outdent)很令人沮丧)我可以进一步改进这个并让Shift+ Alt+Tab工作

*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  
Run Code Online (Sandbox Code Playgroud)