使用自动热键交换 Ctrl 和 Alt 并实现 Ctrl 选项卡



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

LAlt::LCtrl
LCtrl::LAlt

然后我想让"alt tab"功能绑定到那些物理键上,所以我尝试了

LCtrl & Tab::AltTab

除了两个uptop,但它不会起作用。如果我这样说:

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

然后选项卡将工作,但是ctrl-alt交换将被中断。有什么建议吗?

热键文档讨论通配符

通配符:即使按住了额外的修改器,也要启用热键。这通常与重新映射关键点或按钮一起使用。例如:

*#c: :运行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   

我稍微改进了一下,以修复移位选项卡不工作的问题,现在你可以按预期使用shift+选项卡,而以前你做不到(在编码时试图修复缩进(outdent)很令人沮丧)我可能会改进更多,并使1Shift+<kbd>Alt+kbd>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  

我自己也遇到了同样的问题,正在寻找一个更简单的解决方案。如果你使用SharpKeys(或其他注册表重映射工具)交换Alt和Ctrl,这很简单:

RCtrl&选项卡:AltTab

最新更新