Turbo taste

  • Hallo allerseits :)

    ich bin seit einiger zeit auf der suche nach einer möglichkeit, mehrere tastendrücke in kurzer zeit schnell zu simulieren. nun habe autoIt entdeckt und will evtl anfangen, mich ausführlich damit zu befassen.

    was mir vorschwebt ist ein kleines progrämmchen, welches im hintergrund läuft und alle meine tastatureingaben abfängt. dann wird jede eingabe in mehrere schnell hintereinander erfolgende eingaben umgewandelt. zum beispiel soll, solange ich im text-editor die leertaste gedrückt halte, der inhalt des editors mit whitespaces zugespammt werden.

    kann mir jemand der anwesenden fachleute zusichern, dass dieses mit autoIt möglich ist?


    P.S.: es geht darum, in einem alten amiga-spiel zu schummeln ;)

  • ich habe neulich versucht, so etwas hinzubauen, mit mäßigem erfolg.

    HotKeySet("{F1}", "test")
    func test();
    ;HotKeySet("{F1}")
    Send("{E DOWN}")
    Send("{E UP}")
    Sleep(10)
    ;HotKeySet("{F1}", "test")
    EndFunc

    diese funktion geht mit einer taste, sogar ziemlich gut. aber wenn ich zeitgleich eine andere taste drücke, bricht sie ab. kann man das irgendwie umgehen?

  • Vllt so was:

    [autoit]

    HotKeySet("e","_sendE")
    Global $EDown = False
    Func _sendE()
    If $EDown Then
    $EDown = False
    Else
    $EDown = True
    While $EDown
    HotKeySet("e")
    Send("e")
    HotKeySet("e","_sendE")
    Sleep(10)
    WEnd
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit]
  • öhm... nö, das geht nicht. wenn ich das script verwende, brauche ich die taste nur kurz zu drücken, damit in den nächsten 10 sekunden oder so permanent e gespammt wird. das is zwar auch lustig, aber nich das was ich brauche ;)

    ich habe jetzt folgendes laufen:

    Code
    #Include <Misc.au3>
    $dll = DllOpen("user32.dll")
    	While 1
    		If _IsPressed("31", $dll) Then
    			ControlSend("SNES9x", "", "", "{1}")
    			;Sleep(10)
    			;ControlSend("SNES9x", "", "", "{LSHIFT}")
        	EndIf
    	WEnd
     DllClose($dll)

    das funktioniert einigermaßen. das eine große problem bei der lösung ist, dass manchmal (ich habe noch nicht rausgefunden, unter welchen umständen genau) meine shift-taste plötzlich "feststeckt", also alle befehle, die an die anwendung gesendet werden aus irgend einem grund als shift+*taste* ankommen. das ganze so lange, bis ich wieder manuell die shift-taste drücke und wieder loslasse.
    der auskommentierte code sollte das problem lösen, hat aber nicht geholfen :(
    hatte schon mal jemand das gleiche problem oder kennt die ursache?