【问题标题】:How to trigger an action if there's only one key being pressed?如果只有一个键被按下,如何触发动作?
【发布时间】:2026-02-04 21:25:02
【问题描述】:

这是我当前的脚本:

Shift::Send ^{Space}

它不仅会在单独按 Shift 时触发 ^{Space},还会在 Alt+Shift(只有这两个键)和Ctrl+Shift只有这两个键如果 Shift 是最后一次发布,如果 Shiftonly,有没有办法触发 ^{Space} 按键被按下?

AutoHotkey 版本:1.1.33.09。

【问题讨论】:

    标签: scripting keyboard keyboard-shortcuts autohotkey key-bindings


    【解决方案1】:

    是的,很简单,把“~ Tilda”键放在它旁边。

    ~Shift::
    SendEvent, ^{Space}
    return
    

    【讨论】:

    • 更糟糕的是,现在按下 Shift 会立即触发动作,之前,Shift 只会在释放时触发。
    【解决方案2】:

    我有你的答案,我想我今天才知道。

      ~Shift::return
        #If, A_PriorHotkey = "~Shift"
        Shift Up::
        SendEvent, ^{space}
        #If
        return
    

    为我工作。 '~' 符号仍然可以让你输入大写字母,尽管它仍然会发送 ^{space}。要么删除它(它仍然有效)和/或你必须让这个脚本上下文相关吗?

    附: 我从另一个代码中学到了它,并根据我和您的需要对其进行了调整。我今天需要的东西几乎和你一样:-)

    这是我找到并改编的旧代码

    ^k::return
    
    #If, A_PriorHotkey = "^k"
    ^a::ToolTip, % A_ThisHotkey " pressed with ^k"
    ^b::ToolTip, % A_ThisHotkey " pressed with ^k"
    ^c::ToolTip, % A_ThisHotkey " pressed with ^k"
    ^d::ToolTip, % A_ThisHotkey " pressed with ^k"
    
    ^k up::SendInput, ^k
    #If
    

    【讨论】:

    • 我不想告诉你它对我不起作用,它比你以前的答案更好(这对你有好处),但比当前脚本(Shift::Send ^{Space})更糟糕,因为当前脚本如果按下 Shift+Alt+F 等快捷键,则不会触发操作。
    • 好吧,你让我很困惑。你想让我做什么?在 1s 你说当按下其他你不想要的修饰符时它仍然会触发,然后你说你想要那个?我的脚本完全有效。如果您有您想要的时间,请您更清楚地解释一下吗?我测试了我的脚本 100 次,它的工作原理与我认为你已经解释过的一样
    • “那么你说你确实想要那个” 我从来没有说过我想在按下其他修饰符时触发动作。 “由于当前脚本 (Shift::Send ^{Space}) 在按下 Shift+Alt+F 等快捷键时不会触发操作” 哪一部分让你感到困惑?
    • "如果 Shift 是唯一的键被按下,有没有办法触发^{Space}?" 我想我已经解释得很清楚了在问题描述中。
    • 好的,我的脚本完全按照您的要求进行。你能告诉我我的脚本没有做什么吗?你必须更简洁。那么人们可以帮助你。
    【解决方案3】:

    这对我有用。

    ~Shift::return
    #If, A_PriorHotkey = "~Shift"
    Shift Up::SendEvent, foo
    !*c::SendEvent, foo
    #If
    return
    

    【讨论】:

    • 使用这个脚本,Alt+Shift+C 为我打印“foo”,这是出乎意料的,但感谢您的尝试。
    【解决方案4】:

    试试这个:

    Shift::
    SendEvent, foo
    return
    Ctrl & Shift::return
    Alt & Shift::return
    

    由于某种原因,这不适用于 Numpad 键。同样,这个脚本必须是上下文相关的。

    【讨论】:

    • 对你有好处,但是副作用太多,比如Ctrl+Shift+C(不是Shift+Ctrl+C,这里的顺序很重要)不会触发绑定动作。
    • 我从here 获得了一个工作脚本,您可能会发现它也很有帮助。
    【解决方案5】:

    这是我的工作脚本:

    ~*Alt::
    ~*Ctrl::
    ~*Shift::return
    
    Shift::SendEvent ^{Space}
    

    【讨论】:

      最近更新 更多