Autohotkey 使用自动热键中的键发送现有修改器?

Autohotkey 使用自动热键中的键发送现有修改器?,autohotkey,Autohotkey,我试图用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命令发送按下的修饰符,唯一的方法是列出所有修饰符:

; (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::发送{CurrentlyPressedModifiers}{Left}

您可以使用发送{Blind}模式执行此操作。例如:

*a::Send, {Blind}{Left}
*
接受a的所有修饰符,{Blind}将修饰符传递给
Send
命令

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

a::Left
在这里,所有修改器都自动传递到
Left
命令

注意:据我在测试后看到的,这两种解决方案都不能使用“您的”组合键,只能使用标准热键。
因此,除非您将组合键更改回标准热键,否则您的初始解决方案可能是唯一的解决方案。

我知道这是一篇旧文章,但我想与大家分享适用于此问题的脚本

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也被重新映射,以便更快地键入

一开始我试过了,我遇到了一个问题,alwaysoff不是alwaysoff,有时CapsLock会在一些程序中触发CapsLock。虽然F13也不是一个银弹,但我有时发现,如果我在一个连词中键入多个F13快捷键,它会键入字母。我希望我能在较低的层次上修改键盘驱动程序,甚至在键盘内部的硬件层次上。