_isPressed() verzögerung/umlaut-code

  • howdy ho!

    ich suche eine simple methode um den abstand von _isPressed zu verändern.

    habe es schon mit den optionen sendkeydelay und sendkeydowndelay versucht, aber das schien nicht gewirkt zu haben.

    nebenbei wäre es übrigends toll wenn jemand den _isPressed-code für umlaute, etc kennen würde^^

    mfg
    sgtigram

    2 Mal editiert, zuletzt von SgtIgram (7. Januar 2012 um 01:07)

  • Ich mach es immer so

    [autoit]


    $timer=TimerInit()

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

    While 1
    if _isPressed(42) and TimerDiff($timer)>500 then
    blub()
    $timer=timerinit()
    endif
    wend

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • letsgo:
    danke, sowas in die richtung hatte ich mir bereits gedacht als ich auf "absenden" geklickt habe*g*

    ThPfund:
    grundsätzlich würde es warscheinlich funktionieren, ABER^^ da es ein ziemlich komplexes script ist und nicht extra wegen einem tastendruck ganze ~500ms angehalten werden darf scheidet das aus^^

    nurnoch das problem mit den umlauten ;D

    mfg
    sgtigram

  • Naja, durch Verkleinern des Parameters geht es ja auch mit weniger Millisekunden, z.B. Sleep(1)... ;)

    Aber ich habe noch was zu den Umlauten für Dich:

    Spoiler anzeigen
    [autoit]


    Case _IsPressed(Hex(222))
    MsgBox(0, "Umlaut", "ä")
    Case _IsPressed(Hex(192))
    MsgBox(0, "Umlaut", "ö")
    Case _IsPressed(Hex(186))
    MsgBox(0, "Umlaut", "ü")
    Case _IsPressed(Hex(219))
    MsgBox(0, "Eszett", "ß")

    [/autoit]


    Für die Großbuchstaben sehe ich nur eine Möglichkeit in Zusammenhang mit der Umschalttaste:

    Spoiler anzeigen
    [autoit]


    Case _IsPressed("A0") ; linke Umschalttaste
    Select
    Case _IsPressed(Hex(222))
    MsgBox(0, "Umlaut", "Ä")
    Case _IsPressed(Hex(192))
    MsgBox(0, "Umlaut", "Ö")
    Case _IsPressed(Hex(186))
    MsgBox(0, "Umlaut", "Ü")
    EndSelect
    Case _IsPressed("A1") ; rechte Umschalttaste
    Select
    Case _IsPressed(Hex(222))
    MsgBox(0, "Umlaut", "Ä")
    Case _IsPressed(Hex(192))
    MsgBox(0, "Umlaut", "Ö")
    Case _IsPressed(Hex(186))
    MsgBox(0, "Umlaut", "Ü")
    EndSelect

    [/autoit]


    Achtung, dieser zweite Block muss vor dem ersten stehen, ich wollte nur erst mit dem einfacheren Teil beginnen.
    Hoffe, das hilft Dir weiter. Wenn jemand eine einfachere Möglichkeit weiss, wäre das für mich auch interessant.

    MfG ThPfund

    "Es könnte alles so einfach sein..."

  • Naja, durch Verkleinern des Parameters geht es ja auch mit weniger Millisekunden, z.B. Sleep(1)... ;)

    Falsch denn hier wird automatisch der Mindestwert für sleep = 10 ms genommen und auch das ist zu kurz um einen versehentlichen mehrfachen Tastendruck zu verhindern.

    Zu den Sonderzeichen bin ich der Meinung dass die Werte aus dem Ascii bzw. ANsi-Zeichensatz verwendet werden können. Diese ist im Anhang der AutoIt-Hilfe,

    frohes neues Jahr

    autoBert

  • autoBert: Ich hatte in einem der Vorposts als Beispiel Sleep(500) genannt. Nach dem das für die Anwendung wohl zu lang ist habe ich darauf hingewiesen, dass es durch Veränderung des Parameters auch kürzer geht und das neue Beispiel ohne in der Hilfe nachzuschauen in einem Anflug von Ironie mit (1) extrem gewählt. Auch wenn der Mindestwert 10 beträgt, bin ich zuversichtlich, dass sich zwischen 10 und 500 Millisekunden ein passender Wert finden läßt. Der wäre dann für die Anwendung vom Threadersteller durch ausprobieren zu ermitteln. Ich weiss ja nicht, wie er es genau haben möchte, falls er überhaupt diese Alternative wählt. :D

    MfG ThPfund

    "Es könnte alles so einfach sein..."

    Einmal editiert, zuletzt von ThPfund (6. Januar 2012 um 00:45)

  • Gab es nicht vor einem halben Jahr eine "Key UDF" oder ähnliches, die genau das mit dem Delay konnte. Ich glaube nähmlich zu meinen, dass dies die Lösung deines Problemes wäre.

    Ich würde achgerne selber nach der UDF sehen , aber ich bi grad mit meinem langsamrn Handy online ( 1ghz ist total überbewertet)

  • das mit der "verzögerung" hab ich einigermaßen gelöst, mit der beschränkung das der timer nur berücksichtigt wird wenn es sich um die selbe taste geht um bei schnellschreibern zu verhindern das es stockt^^.

    wegen der großschreibung verwende ich einfach nach der liste der isPressed bedingungen ein stringUpper wenn die großschreibtaste gedrückt wurde. ein kleines zusatzgewurschtel ist es natürlich was zahlen in verbindung mit großschreibung angeht^^

    ThPfund
    mit den umlauten hast mir sehr geholfen ;D

    mfg
    sgtigram