Autohotkey + LButton SendInput {Shift Up}

Autohotkey + LButton SendInput {Shift Up}

我尝试在 Autohotkey 中解决这个问题,但没有成功

在一个程序中(从现在起称为 VP0),有一个热键Space Click n Drag to Left/Right可以设置工具的最大尺寸

我希望使用与 VP0 中相同的热键,但Shift使用Space

问题是 VP0 中有第二个原生热键,用于Shift Space Click n Drag to Left/Right设置工具最小尺寸

问题是,如果我想在 AHK 中设置第一个 VP0 热键,我应该设置LShiftSpace(VP0 工具最大尺寸),但是由于VP0 Tool Min Size = Shift Space按下LShift设置时VP0 Tool Max Size它会设置VP0 Tool Min Size,因为 AHK 检测到按下了 Shift 键。

我曾尝试使用...

SendInput {Shift Up}
SendEvent {Shift Up}

但它只会发送 Shift Up 几毫秒,然后 AHK 检测到 Shift 再次被按下,我该如何避免这种情况??我也尝试过下面的方法,但我想避免使用循环,因为它会在 Set Brush Max Size 和 Set Brush Min Size 之间快速切换。

;   Increase/Decrease Tool Size
#If WinActive("ahk_exe Verve_painter.exe") && !GetKeyState("XButton1", "P") && !GetKeyState("Space", "P")

LShift & LButton::    ; INCREASE TOOL MAX SIZE
    Tooltip, AAAAAAAAAAAAAAAAAA Shift LButton
    SendEvent {Shift Up}
    SendInput {Space Down}
    Click Down
    While GetKeyState("LButton","P")
    {
    SendEvent {Shift Up}
    }
    Tooltip, BBBBBBBBBBBBBBBBBBBBBB LButton was realeasedd

    SendInput {Space Up}
    Click Up
    Return


$^+LButton::    ; INCREASE TOOL MIN SIZE
    ;Tooltip, Shiiiit Ctrl Shift LButton
    SendInput {Ctrl Up}
    Sleep 10

    SendInput {Shift Down}
    SendInput {Space Down}
    Click Down
    KeyWait, LButton

    SendInput {Space Up}
    SendInput {Shift Up}
    Click Up
    Tooltip Ctrl SHift LButton was released
    Return

#If

谢谢高级。

答案1

尝试重新映射 Shift 和 Ctrl:

#If WinActive("ahk_exe Verve_painter.exe") && GetKeyState("Shift", "P")

       ; Shift+1
    $1:: 
        KeyWait, Shift
        SendInput, {Shift Up}
        MsgBox, Shift+1
        return

      ; Shift+2
    $2::
        KeyWait, Shift
        SendInput, {Shift Up}
        MsgBox, Shift+2
        return

#If WinActive("ahk_exe Verve_painter.exe") 

       Shift::Space

       Ctrl::Shift

#If

相关内容