如何解决autohotkey:按下LButton后取消RButton用户输入
在fps中,我试图设置一个热键,以便在握住Lbutton(向左鼠标)时先开枪,然后点击RButton,LButton停止,RButton开始。在没有脚本的游戏中,对于其他武器,我会自动获得所需的结果。那就是:我拿着LButton,但是如果我也把RButton放在“ after”之后,那么LButton就会停止,并且RButton的爆裂就可以了。但是,完成上述操作后,将冻结另一种没有脚本的范围化武器。
因此,我希望在按下RButton后立即停止LButton的所有用户输入,直到RButton的热键完成为止。
~RButton
;Blockinput Mouse ;Send/Sendmouse
Send,{Click Left}{Click Right}{Click Left}
;BlockInput off
return
您可以将Rbutton脚本想像为步枪。单击“左”激活范围,单击“右”激活它。当前所需的行为仅在我完全从LButton上移开手然后按RButton时才有效....我也能够使〜LButton和〜RButton ::起作用,但这仅涵盖了当他们都在第一次按下时恰好在同一时间,我想介绍在RButton之前按住LButton的实例。
我已经尝试应用blockinput(如上所示),使用UAC解决方法使其正常工作,阻止某些事情,但是在处理lbutton时似乎没有阻止任何holdkey,除非我遗漏了一些东西。如果“一旦RButton触发,就会冻结LButton的用户输入,直到RButton的脚本完成”,这将解决我认为的问题。我尝试增加睡眠延迟,但它们似乎无济于事。问题似乎在于,当按住LButton时,它会在RButton首次激活时继续触发。
我在按住LButton的同时使用了以下内容,并且确实发出了声音,因此必须可以编写脚本。
*RButton::
Soundbeep
return
编辑:
;这里的代码有效,但只有100次睡眠,我必须在按rbutton的100ms内将手从lbutton上移开。
*RButton::
GetKeyState,state,lbutton,p
if (state = "D")
{
soundbeep
send {Click Left Up}
sleep 100
;i need to actually disable the previous keypresses from it
}
Send,{Click Right}{Click Left}{Click Right}
return
解决方法
根据我对您的问题的了解,如果按住鼠标左键,实际上不需要阻塞用户鼠标输入,而是发送左鼠标Up命令。我在理解您要寻找的最终目标时遇到了困难,但是我根据我的理解写了这篇文章:
#SingleInstance Force
*RButton::
Soundbeep
If (getKeyState( "lbutton","p" )){
Click,Left,Up
Send,{Click Left}{Click Right}{Click Left}
} else {
Send,{Click Left}{Click Right}{Click Left}
}
return
esc::ExitApp
更新:
基于问题注释的澄清,这应该可行。易于理解的功能:如果在按住鼠标左键的同时单击鼠标右键,则释放LMB,但不要禁止输入人民币。
*~RButton::
If (getKeyState( "lbutton","p" ))
Click,Up
return
更新2: 现在在按下人民币之前释放LMB。我有一种感觉,无论您玩什么游戏,都无法检测关键状态之间的零拨动开关,因此我提供了一个睡眠功能,您可以根据需要对其进行微调/删除。
*RButton::
If (getKeyState( "lbutton",Up
Sleep 100
}
Click,Right,Down
KeyWait RButton
Click,Up
return
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。