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

How to trigger an action if there's only one key being pressed?

这是我当前的脚本:

Shift::Send ^{Space}

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

AutoHotkey 版本:1.1.33.09.

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

~Shift::
SendEvent, ^{Space}
return

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

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

对我有用。 ' ~ ' 符号将允许您仍然键入大写字母,尽管它仍然会发送 ^{space}。要么删除它(它仍然有效)and/or 你必须让这个脚本上下文敏感对吗?

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

这是我发现并改编的旧代码

^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::return
#If, A_PriorHotkey = "~Shift"
Shift Up::SendEvent, foo
!*c::SendEvent, foo
#If
return

试试这个:

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

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

这是我的工作脚本:

~*Alt::
~*Ctrl::
~*Shift::return

Shift::SendEvent ^{Space}