Przepisanie kodu z AutoHotKey do Pythona i jego przyspieszenie

0

Witam,
Potrzebuję aby ktoś przepisał dla mnie ten skrypt(AutoHotKey) do Pythona ponieważ jest on za wolny. Ja niestety nie znam się za bardzo na Pythonie ;.

F9:: Hotkey, *~$Space, Toggle

End::

*~$Space::
Sleep 2
Loop
{
GetKeyState, SpaceState, Space, P
If SpaceState = U
break
Sleep 1
Send, {Blind}{Space}
}
Return

Chodzi o to aby, po kliknięciu tak jak wyżej F9 skrypt się włączał i kiedy trzymam spację to była by ona klikana bardzo szybko, a po kliknięciu F9 z powrotem można normalnie z niej korzystać. Taki clicker.

0

Każdemu procesowi windows przydziela time slice ok. 20ms i w zależności od obciążenia, ilości procesów, priorytetów itd. sleep 0 może powodować przerwania różnej długości od 0 do ok 20ms, dla sleep 1 będzie to 10 lub 15,6 ms do 20ms.

Jeśli potrzebujesz częściej rozwiązanie znajdziesz tutaj: https://autohotkey.com/boards/viewtopic.php?t=26685

0

Jeśli potrzeba dokładniejszego odmierzania czasu, to pod okienkami pozostaje jedynie skorzystanie z funkcji QueryPerformanceFrequency i QueryPerformanceCounter. Zamiast zliczać milisekundy (czego i tak nie da rady zrobić dokładniej niż w skokach co 10-16ms), należy zliczać cykle CPU. Pierwsza funkcja zwraca liczbę cykli wykonywanych na sekundę, druga zaś bieżący stan licznika.

Aby móc odczekać milisekundę (lub mniej), wystarczy napisać sobie funkcję, wewnątrz której działać będzie pętla w kółko sprawdzająca stan licznika i będzie to robić dotąd, aż odpowiednia liczba cykli zostanie wykonana. To bardzo prosta arytmetyka.

Problem z tym rozwiązaniem jest taki, że taka pętla zżerać będzie całą moc danego jądra CPU, czyli będzie przeciwieństwem funkcji sleep, która tego nie robi. Coś o tym wiem – w końcu mój platformer w ten sposób odczekuje dowolnie małą liczbę milisekund, przez co został zwyzywany od botnetów. ;)

W razie czego mogę zarzucić przykładem takiej funkcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1