如果只有一个键被按下,如何触发动作?

Posted

技术标签:

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

这是我当前的脚本:

Shift::Send ^Space

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

AutoHotkey 版本:1.1.33.09。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如果只有一个键被按下,如何触发动作?的主要内容,如果未能解决你的问题,请参考以下文章

检测功能键被按下的最佳方法是啥?

JavaScript键盘鼠标事件处理

触发事件

signal常用信号

reactjs-回调函数在输入键被按下时仍然没有更新背景颜色

JavaScript - 事件相关