问题描述
背景:我正在尝试使用 f-mode
和 d-mode
,这意味着如果我按下 f
键并按下另一个键(例如 i
),那么除了一条捷径。假设它会发送 Up
键而不是 f 和 I。
问题:如何将按下的键(在我的示例中为 I)重新映射到快捷方式(以 Up 为例)?
代码:
d::
f::{
;...
loop{
if !GetKeyState("f","p") && !GetKeyState("d","p"){
break
}
if GetKeyState("i","p") {
OutputDebug "i"
send "{up}"
continue
}
; ...
}
}
解决方法
您似乎想进行自定义组合。
来自Docs:
您可以定义两个键的自定义组合(除了操纵杆 按钮)通过在它们之间使用“&”。在下面的例子中,你会 按住 Numpad0 然后按第二个键触发热键:
Numpad0 & Numpad1::MsgBox You pressed Numpad1 while holding down Numpad0.
Numpad0 & Numpad2::Run Notepad
还要注意:
前缀键失去了它的原生功能:在上面的例子中, Numpad0 成为前缀键;但这也会导致 Numpad0 失去其 当它被自己按下时的原始/本机功能。为了避免这种情况, 脚本可以配置 Numpad0 以执行新操作,例如 以下内容:
Numpad0::WinMaximize A ; Maximize the active/foreground window.
Numpad0::Send {Numpad0} ; Make the release of Numpad0 produce a Numpad0 keystroke. See comment below.
这是为了防止在等待按下组合键的第二部分时按住某个键导致输入无效。因此,基本上,当您松开“f”和“d”键时,它们现在将执行其正常功能,而不是最初按下它们。
无论如何,代码会变成:
f & i::
d & i::
Send {Up}
return
f::f
d::d