这是我当前的脚本:
Shift::Send ^{Space}
它不仅在单独^{Space}按下时触发Shift,还会在按下Alt+ Shift(只需这两个键)和Ctrl+ Shift(只需这两个键)如果Shift是最后发布的,有没有办法^{Space}触发Shift仅有的是否按下了某个键?
AutoHotkey 版本:1.1.33.09。
答案1
对原始帖子添加的澄清很有帮助。
Shift 不像普通的热键,因此按键的顺序很重要。例如,按Ctrl+Shift不一定触发与按Shift+相同的热键Ctrl。
另外仅供参考,热键定义在键盘弹起事件上触发,除非您有单独的“键盘弹起”热键定义(例如,如果Shift Up::
添加到脚本中,则原始Shift::
代码现在会在键盘弹起事件上触发Shift Down
,而以前它会在键盘弹起事件上触发Shift Up
)
无论如何,如果您~
在热键定义前面放置波浪符号 ( ),它将执行您的代码,但不会阻止按键操作,因此对于Shift
您不想触发的任何特殊组合,您可以尝试关闭热键然后再打开。当堆叠多个热键定义时,它会对其中任何一个执行底部的相同代码,直到 Return 语句...
~+LControl::
~+RControl::
~+LAlt::
~+RAlt::
~Shift & Alt::
~Shift & Control::
~^Shift::
~!Shift::
Tooltip % "A_ThisHotkey=" A_ThisHotkey
Hotkey, Shift, Off
KeyWait, Shift
Hotkey, Shift, On
Sleep 100 ; comment this out if not debugging
ToolTip
Return
Shift::MsgBox
我从上面的调试代码开始,但我认为只要为您不想触发的用例定义了热键,它甚至不需要执行任何东西……即,这似乎也能正常工作......
~+LControl::
~+RControl::
~+LAlt::
~+RAlt::
~Shift & Alt::
~Shift & Control::
~^Shift::
~!Shift::
Return
Shift::MsgBox
但是,如果您想查看不同按键顺序之间的行为差异,请忽略前几个热键定义并运行下面的代码,它将向您展示按下Ctrl+Shift与Shift+时产生的差异Ctrl。
如果没有其他热键定义,这表明它允许您区分键顺序,这实际上允许您拥有一个不会在+上触发的Ctrl+热键(即,它是一个“功能”,而不是一个错误)ShiftShiftCtrl
~^Shift::
~!Shift::
Tooltip % "A_ThisHotkey=" A_ThisHotkey
Hotkey, Shift, Off
KeyWait, Shift
Hotkey, Shift, On
Sleep 100 ; comment this out if not debugging
ToolTip
Return
Shift::MsgBox