Makro erstellen

L4R5_W

Cadet 2nd Year
Registriert
Juni 2019
Beiträge
19
Guten Tag!

Ich habe ein kleines Problemchen mit einem Spiel, das gerne mit einem Controller gespielt werden möchte, ich aber keinen Controller habe.
Und zwar müsste ich im Spiel während ich die Taste W gedrückt halte, den Analog-Stick des Controllers ein paar mal im Kreis drehen. Ich habe jetzt die Bewegungen des Analog-Sticks auf die Pfeiltasten gelegt, was auch für den Großteil des Spiels ausreicht. Nur ist das Im-Kreis-Drehen echt schwer anzustellen mit den Pfeiltasten auf der Tastatur. Ich schaffe es zwar, indem ich wild über die Pfeiltasten rubble, aber dann auch nur nach ein paar Anläufen und auf Dauer kann das meiner Laptop-Tastatur nicht gut tun...
Ich habe mich bereits ein wenig im Netz umgeschaut, doch die meisten Lösungen funktionieren nicht (oder ich bin zu blöd :-) ).

Also ich bräuchte quasi sowas:

W drücken und gedrückt halten
Wiederhole ~7 Mal: (
Pfeil hoch drücken
Pfeil rechts drücken
Pfeil runter drücken
Pfeil links drücken
)
W loslassen

Wäre cool, wenn mir da einer helfen könnte. :/

Liebe Grüße
Lars
 
Oder... mit
unnamed.jpg

Joystick Adapter für Pfeiltasten diese Funktionen simulieren...
aktuell dort im Angebot:
https://www.ebay-kleinanzeigen.de/s...tur-game-stick-nostalgie/1799764484-225-19552

oder: Auf der Logitech G13 Zusatztastatur die per USB dazu gesteckt wird gibt es auch mini Joystick der mit den Pfeiltasten belegt werden kann...
logig131.JPG
logig132.JPG

Das kann mit der Logitech Gaming Software programmiert werden...
 
Zuletzt bearbeitet:
PERKELE schrieb:
Wie heisst denn das Spiel?
Weil mein alter GameCube am Ar*** ist, habe ich mir da nen Emulator zugelegt. Handelt sich um Paper Mario 2.

Und ich wollte mir jetzt nicht extra noch ne neue Tastatur zulegen, nur für das Game... Dann lieber den Joystick Adapter :D
 
Da könnte man AutoHotkey oder Autoit probieren. Per AutoIT:
Code:
#include <Misc.au3>

While 1
;1B = Escape-Taste
If _IsPressed ("1B") Then

;W gedrückt halten
Send("{w down}")
sleep(100)

;Cursortasten
Send("{UP}")
sleep(100)
Send("{RIGHT}")
sleep(100)
Send("{DOWN}")
sleep(100)
Send("{LEFT}")
sleep(100)

;W loslassen
Send("{w up}")

EndIf
WEnd

1B ist die Escape-Taste. Sobald ESC gedrückt wird:
W wird gehalten, Cursortasten gedrückt, W wird losgelassen.
Eine Keyliste gibt es hier

Mit 7maliger Wiederholung : einfach entsprechend den Block mit Send UP usw. kopieren.

ODER

Code:
#include <AutoItConstants.au3>
#include <Misc.au3>

While 1
;57 = W-Taste
    If _IsPressed(57) Then
        While _IsPressed(57)
		 ;sobald W gedrückt gehalten wird, werden folgende Tasten gedrückt:
		 sleep(100)
Send("{UP}")
sleep(100)
Send("{RIGHT}")
sleep(100)
Send("{DOWN}")
sleep(100)
Send("{LEFT}")
sleep(100)
		 WEnd
        ;losgelassen
    EndIf
    sleep(10)
WEnd
57 = W Taste.
Solange die W-Taste manuell gehalten wird, werden die Cursortasten gedrückt.
Wird die W-Taste losgelassen, so werden die Curstortasten nicht mehr gedrückt.

Kleine Anmerkung, da ja ein Joystick simuliert werden soll:
es kann sein, daß die Pause sleep(100) zu lange ist.
Dadurch kann es sein, daß die Cursortasten nicht so geschmeidig wie bei einem Joystick gedrückt werden.
Da bitte probieren:
Sleep(100) so belassen.
Sleep(50) probieren.
Sleep(10) probieren.
Sleep(100) weglassen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: alQamar und PERKELE
Boah vielen vielen Dank! Teste morgen mal!
Sieht auf jeden Fall vielversprechend aus!
 
  • Gefällt mir
Reaktionen: PERKELE
Ja, klappt wunderbar. Vielen Dank!
Bzw. ich hab wie angemerkt ein wenig mit dem sleep testen müssen und 60 scheint zu klappen.

Danke auch nochmal von meiner kleinen Tochter, die da jetzt keine Probleme mehr hat :)
 
  • Gefällt mir
Reaktionen: PERKELE
Zurück
Oben