/ / Autohotkey controlla per Ctrl premuto errore - pressione tasto, autohotkey, blocco

Autohotkey controlla per Ctrl premuto errore - pressione tasto, autohotkey, blocco

Recentemente sono tornato a usare AHK dopo averne preso una pausa per alcuni anni, quindi perdonami se c'è una risposta molto semplice a questo.

Scrivo uno script che tiene traccia dei tasti premutimentre il controllo viene tenuto premuto e quindi consente di utilizzare uno dei 9 tasti di scelta rapida con 2 pressioni dei tasti, in modo che premendo Q due volte si attivi il tasto di scelta rapida 1-1, W allora Q attiva i tasti di scelta rapida 1-2, ecc.

il mio problema è che controllando se Control viene premuto usando un tasto di scelta rapida per LControl blocca l'invio di LControl al sistema, quindi cose come Ctrl + A non funzionano più.

l'unica soluzione che sono stato in grado di pensare sarebbe stata far sì che QW ed E fossero mappati come hotkey solo una volta, con un po 'di logica all'interno di ognuno di essi.

C'è un modo migliore per farlo?

LControl:: Set:=4
LControl Up:: Set:=0

#If (Set=4)
{
q:: Set:=1
w:: Set:=2
e:: Set:=3
}

#If (Set=1)
{
q:: SendEvent Different Words Here
w:: SendEvent Different Words Here
e:: SendEvent Different Words Here
}

#If (Set=2)
{
q:: SendEvent Different Words Here
w:: SendEvent Different Words Here
e:: SendEvent Different Words Here
}

#If (Set=3)
{
q:: SendEvent Different Words Here
w:: SendEvent Different Words Here
e:: SendEvent Different Words Here
}

Fondamentalmente, come posso interrompere LControl :: Blocking l'invio di Ctrl al sistema.

risposte:

0 per risposta № 1

Capito.

LControl:: ;if ctrl is pressed
Set:=4 ;enter first selection group
SendEvent {Ctrl Down} ;don"t interrupt normal hotkeys
Return

LControl Up:: ;if ctrl is released
Set:=0 ;"unbind" q/w/e hotkeys
SendEvent {Ctrl Up} ;and inform the system
Return

#If (Set=4)
{
^q:: Set:=1
^w:: Set:=2
^e:: Set:=3
}