我对 AutoHotkey 还很陌生,我想知道是否可以将键盘上的按键与鼠标左键一一绑定?比如,如果我按住分配给左键单击的键,它会保持,就像我用鼠标左键按住/拖动它一样?如果我松开它,它也会释放。此外,除了 AutoHotkey 之外还有其他方法可以做到这一点吗?
例子:
c::
MouseClick, Left
但是,如果我单击并按住,C
它会开始快速重复左键单击,而不是只要我按住它就会按住C
。
任何帮助是极大的赞赏。
答案1
按照 @Plox 给出的内容,可以满足该帖子一半的要求,如果我们意识到其c:: MouseClick left,,,,, D
工作原理与以下机制相同,则可以阐明更多内容:
c::
MouseClick left,,,,, D
return
此处的 AHK 引擎触发 MouseDown,退出该线程并再次挂接到用户输入等待另一个操作,也就是说,如果该键仍然被按住,则当 AHK 意识到触发它的热键仍然被按下时,它将无限地进入相同的例程。
可以采用以下两种缓解方法之一:
您选择让 AHK 保持忙碌状态直到发布相同的凯:
c:: MouseClick left,,,,, D Keywait, c, U MouseClick left,,,,, U return
或者您可以选择让 AHK 解释器在同一例程之外保持自由,通过保留一个全局变量
keybound
来禁止在键尚未释放的情况下再次旋转到相同的操作。#HotkeyInterval 0 keybound:=0 c:: if keybound return keybound:=1 MouseClick left,,,,, D return c Up:: MouseClick left,,,,, U keybound:=0 return #HotkeyInterval 2000 ; Reset to default value
HotkeyInterval
是否关闭某些阈值以防止不必要的警告。
答案2
MouseClick 主要用于单击某个位置,并且大多看起来像这样
MouseClick, left, 55, 233
当您使用下面的代码时它仍然有效
c:: MouseClick, Left
当你按下 C 键时,它会点击,但是如果你按住 C 键,它会不断地点击,你可以通过使用单击、向下来解决此问题,如下所示
c:: Click, down
现在,当按下 C 键时,它将单击一次并按住它,同时按下 C 键,就像鼠标按钮一样激活
有关鼠标点击如何与 AHK 配合使用的更多信息这里。
答案3
这是我的脚本,运行良好:
$*space::
; SetKeyDelay -1
click down
; keywait, %A_ThisHotkey%
; keywait, CapsLock
keywait, space
; Send {Blind}{lbutton DownTemp}
return
*$space up::
click up
return