16

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

LAlt::LCtrl
LCtrl::LAlt

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

LCtrl & Tab::AltTab

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

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

然后选项卡将起作用,但是 ctrl alt 交换将被破坏。有什么建议么?

4

3 回答 3

14

热键文档讨论通配符

通配符:即使按下了额外的修饰符,也会触发热键。这通常与重新映射键或按钮一起使用。例如:

*#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   
于 2013-09-26T16:13:49.750 回答
6

我稍微改进了这一点以修复 shift 选项卡不起作用,现在您可以按预期使用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  
于 2013-10-31T02:52:24.103 回答
1

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

RCtrl & Tab::AltTab

于 2018-03-10T06:02:21.167 回答