In AutoHotKey, how can I block sending LButton if it is used in the context of hot keys, but not if it is used elsewhere?

I have this script:

~LButton & RButton::
    Click Middle
Return

Presumably, when I click LButtonand RButtontogether, they will work like MButton. It works, but it sends LButton. If I remove ~the hotkey from the prefix, it LButtonstops working at all.

I tried various ways to try and make it work.

This does not work :

#If GetKeyState("LButton", "P")
RButton::
    Click Middle
Return

This also does not work:

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
+4
1

, . , , , , .

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
+1

Source: https://habr.com/ru/post/1648033/


All Articles