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 № 1Capito.
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
}