delaybetweenfkeys:=2
fkeydowndelay:=37
LShift::
loop
{
if checkkeyreleased(A_thishotkey) ; a_thishotkey is a built in variable
break ; that stores whatever the last key pressed was
presskey("LShift") ; which of course will be F1
}
return
presskey(key,del1 =999999, del2 =999999) ;you cant set variables as default parameters in functions
{ ; so this is a way around it
global delaybetweenfkeys,fkeydowndelay
del1:=del1=999999 ? fkeydowndelay : del1 ;default value will be value of 'fkeydowndelay'
del2:=del2=999999 ? delaybetweenfkeys : del2 ;default value will be value of 'delaybetweenfkeys'
sendinput {%key% down} ;press the key down
sleep %del1% ;hold for this delay
sendinput {%key% up} ;release key
sleep %del2% ; for this delay
return
}
checkkeyreleased(key,checkdelay =2)
{
Sleep, %checkdelay% ;tiny delay to give computer a chance to see if key is down
GetKeyState, state, %key%, P ;stores the state of the key to variable 'state'
if state = U ; The key has been released, so break out of the loop.
return true
else
return false
}
Nie testowałem tego na tej kombinacji, zapisujesz to jako np. shift.ahk, potem uruchamiasz ten plik i do momentu wyłączenia powinno działać.
No dobrze działa. Tylko jest taka sprawa, to cały czas biega, a jest możliwość zrobienia właczania i wyłączania tego? tzn przyciskiem np. włączam home koncze end.
Wiesz co, mam inny problem. Mianowicie ja tego skryptu uzywam w grze SA:MP do biegania szybszego. Po prostu trzymając lewy shift biegne, a gdy go nawalam, co robi za mnie skrypt - biegam jeszcze szybciej. Wszystko jest ok, skrypt działa, tylko mi się buguje, że gdy wyjmuję taką broń Desert Eagle to nie mogę od razu celować tylko tak się blokuje, że biegnie w stronę którą strzałke trzymam i dopiero po 2-3 s. przybliza sie celownik. Przy innych broniach jest normalnie - działa.
Czyli raczej potrzebujesz takiego dopalacza, który np. walnie sekwencję shift x 10 w ciągu np 2 sekund i potem spokój? Może zamiast mapować to pod shiftem lepiej użyć innego klawisza, żebyś mógł biegać normalnie, a tego używać od czasu do czasu?
Tu masz przykład jak to zmapować pod klawiszem F:
f::
Loop 10
{
Send {LShift}
Sleep 100
}
return
Przetestuj. Jeśli 10 naciśnięć to za mało, to możesz zwiększyć Loop na wyższą wartość, jeśli za wolno to zmniejsz Sleep np. na 50, jeśli za szybko, to zwiększ.
EDIT: Poprawiłem, zapomniałem w nawias to wrzucić.