Scripting 自动热键:按下按钮后取消按钮用户输入

Scripting 自动热键:按下按钮后取消按钮用户输入,scripting,autohotkey,Scripting,Autohotkey,在fps中,我试图设置一个热键,这样当我按住Lbutton(鼠标左键)时,枪的主火力,然后点击RButton,Lbutton停止,RButton开始。在没有脚本的情况下,对于其他武器,我会自动获得所需的结果。也就是说:我拿着按钮,但如果我在“之后”也拿着按钮,按钮停止,按钮的爆发火就完成了它的任务。然而,当上述操作完成时,没有脚本的不同范围的武器会冻结 所以我希望,只要按下RButton,就停止所有用户对LButton的输入,直到RButton的热键结束 ~RButton ;Blocki

在fps中,我试图设置一个热键,这样当我按住Lbutton(鼠标左键)时,枪的主火力,然后点击RButton,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,除非我遗漏了什么。如果有一个“在RButton运行时立即冻结用户对LButton的输入,直到RButton的脚本完成”,我认为这将解决这个问题。我试着增加睡眠延迟,但似乎没有帮助。问题似乎是,当按下按钮时,当RButton第一次激活时,LButton仍会继续运行

我在按住LButton的同时使用了下面的命令,并且声音不会触发,所以这必须能够编写脚本

*RButton::
Soundbeep
return
编辑:

);这里的代码可以工作,但只适用于100次睡眠,我必须在按下RBUTON的100毫秒内把手从按下LBUTON上移开

*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   

根据我从您的问题中了解到的情况,如果按住鼠标左键,您实际上不需要阻止用户鼠标输入,甚至不需要发送鼠标左键命令。我很难理解你想要的最终目标是什么,但我写这篇文章是基于我能够理解的:

#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, Left, Up
return

更新2: 现在,在人民币受压之前释放LMB。我有一种感觉,无论你在玩什么游戏,都无法检测按键状态之间的零滴答开关,因此我提供了一个睡眠功能,你可以根据需要微调/删除它

*RButton::
If (getKeyState( "lbutton", "p" )){
   Click, Left, Up
    Sleep 100
}
Click, Right, Down
KeyWait RButton
Click, Right, Up
return

这不行。问题是,必须在单击RB按钮后“很快”释放LButton。因此,我上面发布的代码可以工作,但只需要最少100个睡眠延迟,我必须从按下LBUTON键的身体上移开我的手。我需要的是在rbutton的热键运行时禁用我自己的任何物理lbutton单击。如果这没有意义:只需要知道我确实需要一种方法来物理上停止来自lbutton的任何输入,当rbutton的热键运行时,我可能通过物理上单击鼠标来获得这些输入。按住按钮不应影响按钮快捷键您能否透露我如何准确复制您的问题,或者您希望事件发生的具体顺序?目前,我能真正测试我正在编写的任何代码是否有效的唯一方法是将其发送给您,看看它是否符合您的要求。如果你能透露这些信息,我可能会更好地理解和解决这个问题。在游戏中,你按住{点击左键}。然后按住{单击鼠标右键}。{Click Right}没有取消{Click Left},实际上{Click Right}甚至没有注册,只有{Click Left}正在注册。在这种情况下,我需要{单击鼠标右键}成为唯一注册的对象。文本编辑器中的键盘:假设你同时按住q,然后再按住w一秒钟……什么样的情况?QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ。w覆盖来自q的任何输入。我想从鼠标中看到这种行为。按住q和w键的例子确实有助于澄清问题,我更新了@kite的帖子。如果有效,请将其标记为已接受答案。如果没有,请告诉我我可以改进什么。右鼠标瞄准枪,左鼠标发射枪。按住鼠标左键,然后按住鼠标右键,导致第三种行为,即枪停止射击(我们希望枪停止射击并瞄准)。不幸的是,编写的更新脚本没有更改默认行为。