在 AutoHotKey 中,如果 LButton 在热键上下文中使用但在其他地方使用则如何阻止发送 LButton?
In AutoHotKey, how do I block LButton from being sent if it's used in the hotkey context but not if it's used elsewhere?
我有这个脚本:
~LButton & RButton::
Click Middle
Return
据说当我同时按下 LButton
和 RButton
时,它们将作为 MButton
工作。这确实有效,但它也会发送 LButton
。如果我从热键前缀中删除 ~
,LButton
将完全停止工作。
我已经尝试了各种方法来尝试让它发挥作用。
这不有效:
#If GetKeyState("LButton", "P")
RButton::
Click Middle
Return
这也不行:
middleclicktrigger := False
LButton & RButton::
middleclicktrigger := True
Click Middle
middleclicktrigger := False
Return
~LButton::
If (middleclicktrigger) {
BlockInput, Mouse
}
Return
这 应该 有效,但我遇到了一个问题,我 无法 按住并拖动 LButton
以正常使用。它通过简单的左键单击工作正常,但我需要它在热键组合中不与鼠标右键一起使用时作为普通的鼠标左键工作:
middleclicktrigger := False
LButton & RButton::
middleclicktrigger := True
Click Middle
middleclicktrigger := False
Return
LButton::
IF (!middleclicktrigger) {
Click down
}
Return
LButton up::
IF (!middleclicktrigger) {
Click up
}
Return
好吧,我用最复杂的方式解决了它。如果您对此有更清晰的方法,请将其提供给我,因为我对此感到不舒服,但它确实有效。
middleclick := False
leftclick := False
rightclick := False
Loop {
If (GetKeyState("LButton", "P") && GetKeyState("RButton", "P") && !middleclick) {
middleclick := True
BlockInput, Mouse
Click Middle
SetTimer, middleclickfalse, -1000
} Else If (GetKeyState("LButton", "P") && !leftclick && !middleclick) {
leftclick := True
Click down
} Else If (GetKeyState("RButton", "P") && !rightclick && !middleclick) {
rightclick := True
Click down right
}
Sleep, 10
}
middleclickfalse:
middleclick := False
Return
LButton up::
If (!middleclick) {
If (leftclick) {
Click up
leftclick := False
}
}
Return
RButton up::
If (!middleclick) {
If (rightclick) {
Click up right
rightclick := False
}
}
Return
有人绊倒了,请先阅读此内容。
发布此问题的人很接近但是...
简洁的回答
RButton::
if GetKeyState("LButton", "P")
Click Middle
else
Click r
Return
我有这个脚本:
~LButton & RButton::
Click Middle
Return
据说当我同时按下 LButton
和 RButton
时,它们将作为 MButton
工作。这确实有效,但它也会发送 LButton
。如果我从热键前缀中删除 ~
,LButton
将完全停止工作。
我已经尝试了各种方法来尝试让它发挥作用。
这不有效:
#If GetKeyState("LButton", "P")
RButton::
Click Middle
Return
这也不行:
middleclicktrigger := False
LButton & RButton::
middleclicktrigger := True
Click Middle
middleclicktrigger := False
Return
~LButton::
If (middleclicktrigger) {
BlockInput, Mouse
}
Return
这 应该 有效,但我遇到了一个问题,我 无法 按住并拖动 LButton
以正常使用。它通过简单的左键单击工作正常,但我需要它在热键组合中不与鼠标右键一起使用时作为普通的鼠标左键工作:
middleclicktrigger := False
LButton & RButton::
middleclicktrigger := True
Click Middle
middleclicktrigger := False
Return
LButton::
IF (!middleclicktrigger) {
Click down
}
Return
LButton up::
IF (!middleclicktrigger) {
Click up
}
Return
好吧,我用最复杂的方式解决了它。如果您对此有更清晰的方法,请将其提供给我,因为我对此感到不舒服,但它确实有效。
middleclick := False
leftclick := False
rightclick := False
Loop {
If (GetKeyState("LButton", "P") && GetKeyState("RButton", "P") && !middleclick) {
middleclick := True
BlockInput, Mouse
Click Middle
SetTimer, middleclickfalse, -1000
} Else If (GetKeyState("LButton", "P") && !leftclick && !middleclick) {
leftclick := True
Click down
} Else If (GetKeyState("RButton", "P") && !rightclick && !middleclick) {
rightclick := True
Click down right
}
Sleep, 10
}
middleclickfalse:
middleclick := False
Return
LButton up::
If (!middleclick) {
If (leftclick) {
Click up
leftclick := False
}
}
Return
RButton up::
If (!middleclick) {
If (rightclick) {
Click up right
rightclick := False
}
}
Return
有人绊倒了,请先阅读此内容。
发布此问题的人很接近但是...
简洁的回答
RButton::
if GetKeyState("LButton", "P")
Click Middle
else
Click r
Return