如果只有一个键被按下,如何触发动作?
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 是最后一次发布,如果 Shift 是 only,有没有办法触发 ^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
【讨论】:
以上是关于如果只有一个键被按下,如何触发动作?的主要内容,如果未能解决你的问题,请参考以下文章