Autohotkey Keywait para qualquer uma das 2 chaves a serem liberadas

0

No Autohotkey, eu sei que você pode usar o "KeyWait" para esperar que uma tecla seja pressionada ou liberada, mas o que eu posso fazer se eu quiser esperar que uma das duas teclas seja liberada?

Encontrei isso na web, mas é quando você quer esperar que uma das duas teclas seja pressionada

LButton & XButton1::
Keywait, r
Keywait, LAlt
SendInput {ShiftDown}
SendInput {v Down}
SendInput {v Up}
SendInput {Shift Up}

Input, UserInput,v,{LButton}{XButton1}
;v is if you want input to be visible
if ErrorLevel=EndKey:LButton
{
    theFunctionIrunAlltheTime()
    Return
}
else if ErrorLevel=EndKey:XButton1
{
    theFunctionIrunAlltheTime()
    Return
}

Não importa qual desses botões é o lançamento, eu quero fazer o mesmo, acho que o exemplo acima funciona apenas com letras, não com botões, mas o importante aqui é que no momento em que o script é executado, LButton n XButton1 já estão pressionados e eu quero no meio da sub-rotina para detectar quando algum deles é liberado, alguma idéia por favor ??? obrigado adavanced.

    
por litu16 10.02.2017 / 21:04

4 respostas

0

Tente também isto:

~LButton & XButton1::
SetTimer detect_key_released, 50
; do sth
return

    detect_key_released:
If !GetKeyState("LButton", "P")
{
    SetTimer detect_key_released, off
    MsgBox LButton released
    return
}
If !GetKeyState("XButton1", "P")
{
    SetTimer detect_key_released, off
    MsgBox XButton1 released
    return
}
return
    
por 12.02.2017 / 09:40
1

Tente adicionar KeyWait ao código acima:

F4::
Input, UserInput,v,{enter}{tab} ;v is if you want input to be visible
if ErrorLevel=EndKey:Tab 
{
    KeyWait, Tab, L
    Msgbox Tab key was pressed
}
else
if ErrorLevel=EndKey:Enter 
 {
    KeyWait, Enter, L
    Msgbox Enter key was pressed
}
; ExitApp
return
    
por 10.02.2017 / 22:47
1
While GetKeyState("LButton") && GetKeyState("XButton1")
    Sleep 10

; msg to user assumes only one or the other was released...
MsgBox % (GetKeyState("LButton") ? "XButton1" : "LButton") " Released"
    
por 11.02.2017 / 07:52
1

Você também pode definir as 2 chaves como teclas de atalho sensíveis ao contexto:

; define a variable in a hotkey:
F4:: key_pressed := true

#If (key_pressed)   ; If the value of the variable "key_pressed" is 1 (true)

    $b up:: 
    key_pressed := false
    Msgbox b key was pressed
    return

    $v up::
    key_pressed := false
    Msgbox v key was pressed
    return

#If

link

    
por 12.02.2017 / 00:10

Tags