4

我正在尝试使用 Send 命令发送按下的修饰符,我想出的唯一方法是将它们全部列出:

; (Note: I've remapped using registry the Capslock as F13)
F13 & h::
    if GetKeyState("Control") && GetKeyState("Shift") {
        Send +^{Left}
        return
    }

    if GetKeyState("Control") {
        Send ^{Left}
        return
    }

    if GetKeyState("Shift") {
        Send +{Left}
        return
    }
    Send {Left}
    return

在 Windows 中,如果您按 ctrl+left,它会向左跳转一个单词,如果我按 ctrl+shift+left,它会向左选择一个单词。同样,我想像上面的例子一样发送现有的修饰符,但是有没有更简单的方法?伪代码:F13 & h::Send {CurrentlyPressedModifiers}{Left}

4

2 回答 2

6

您可以使用发送,{盲}模式来做到这一点。例子:

*a::Send, {Blind}{Left}

*接受所有修饰符,并且 {Blind}将a修饰符传递给Send命令。

或者,您可以避免发送并使用:

a::Left

这里所有的修饰符都会自动传递给Left命令。

注意:据我在测试后看到的,这两种解决方案都不能使用“你的”组合键,只能使用标准热键。

因此,您最初的解决方案可能是唯一的解决方案,除非您将组合键更改回标准热键。

于 2013-03-13T09:16:03.503 回答
0

我知道这是一篇旧帖子,但我想分享我适用于这个问题的脚本。

SetCapsLockState, alwaysoff

CapsLock & i::send {Blind}{Up}
CapsLock & k::send {Blind}{Down}
CapsLock & j::send {Blind}{Left}
CapsLock & l::send {Blind}{Right}

CapsLock & n::send {Blind}{Home}
CapsLock & m::send {Blind}{End}

CapsLock & u::send {Blind}{BS}
CapsLock & o::send {Blind}{Del}

Capslock 被禁用并按住它会将箭头键映射到 i、j、k、l。{Blind} 允许修饰符。

Home、End、Backspace 和 Delete 也被重新映射以更快地输入。

于 2015-03-12T14:34:07.127 回答