在使用 AutoHotKey 时,我想设置一个规则来交换左 alt 和左 ctrl。我可以这样做:
LAlt::LCtrl
LCtrl::LAlt
然后我想保持'alt tab'功能绑定这些物理键,因此我尝试了
LCtrl & Tab::AltTab
除了这两个uptop,它还不起作用。如果我这样说:
LCtrl & Tab::AltTab
LAlt::LCtrl
LCtrl::LAlt
然后选项卡将起作用,但是 ctrl alt 交换将被破坏。有什么建议么?
在使用 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 选项卡不起作用,现在您可以按预期使用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
我自己也遇到了同样的问题,正在寻找更直接的解决方案。如果您使用 SharpKeys(或其他注册表重映射工具)从那里交换 Alt 和 Ctrl,这很简单:
RCtrl & Tab::AltTab