Como anular temporariamente a chave quando outra tecla é pressionada no AutoHotKey?

0

Eu estou jogando um jogo de ritmo onde você pode ligar duas teclas para acertar uma nota (no meu caso LShift e LControl), no entanto, ele só registrará a nota se estiver sendo acertada singularmente. Com isso, quero dizer, se eu tiver pressionado o LShift, ele manterá essa nota, mas se eu pressionar o LControl enquanto o LShift estiver sendo pressionado, ele não registrará uma segunda nota pressionada, em vez disso ele continuará pressionando a primeira nota. O que estou pedindo é um script AutoHotKey que anulará a tecla pressionada quando a outra tecla estiver sendo pressionada, ou seja, se LShift estiver pressionado, pressionar LControl anulará LShift e pressionará LControl.

    
por Bruno B 02.03.2014 / 17:53

1 resposta

0

Tente algo assim:

LShift::
    if(GetKeyState("LControl")) {
        Send, {LControl up}
    }
    Send, {LShift down}
return

LShift up::
    if(GetKeyState("LShift")) {
        Send, {LShift up}
    }
return

LControl::
    if(GetKeyState("LShift")) {
        Send, {LShift up}
    }
    Send, {LControl down}
return

LControl up::
    if(GetKeyState("LControl")) {
        Send, {LControl up}
    }
return

Não sei se você precisa necessariamente das teclas up , mas acho que isso tornará seu script mais consistente. Se você não precisa que as teclas sejam pressionadas, você também pode remapear a respectiva tecla a ser enviada uma vez (resultando em um evento de down / up quase simultâneo).

P.S .:
O comportamento do seu jogo é um bug ou um recurso? Em outras palavras: Será que deliberadamente não aceita novas chaves enquanto o outro está sendo pressionado? Se for esse o caso, você está principalmente tentando enganar;)

    
por 04.03.2014 / 14:44