Klikanie shiftu w auto hotkey


(607953832) #1

Witam.

Potrzebuję programu/skryptu który będzie mi klikał lewy shift non stop gdy ja go będę trzymał, to będzie mi tak spamował ciągle lewym shiftem.

Próbowałem napisać coś takiego w AutoIt, ale mi nie wychodziło. Potrzebuję, żeby spamowało mi 7 razy ten lewy shift. Chyba pętle trzeba zrobić.

Z góry dziękuje za jakąkolwiek pomoc =P~


(Qoo) #2

http://www.autohotkey.com/board/topic/37065-how-do-i-make-f1-key-press-enter-many-times-in-a/

W drugim poście ostatni skrypt . Tam jest rozwiązanie, które sprawia, że F1 spamuje Enterem ale powinno się dać przerobić.


(607953832) #3

Nie działa link. Czekam dalej.

Może to być program w innym języku niż w auto hotkey’u.


(Qoo) #4

Przecież link działa…


(607953832) #5

Nie jestem w stanie tego napisać :confused:

Pomoże mi ktoś i napisze? Może da się takie coś w AutoIt?


(Qoo) #6

Weź ten kod z postu:

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ć.


(607953832) #7

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.


(Qoo) #8

Dodaj w głównym skrypcie AutoHotkey.ahk:

Home::Send {LShift down}

+End::Send {LShift up}

Czyli Home trzyma shift, a End zwalnia, ale czy te skrypty zadziałają razem? Do potestowania.


(607953832) #9

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.

Bez skryptu normalnie celuje.


(Qoo) #10

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ć.


(607953832) #11

ten Loop to mi nie działa, gdy klikam F to 10 razy pisze na chacie LSHIFT.