微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重新映射循环中的键

如何解决重新映射循环中的键

背景:我正在尝试使用 f-moded-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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。