Soundbar mit Tastenkombinationen steuern

  • Hallo liebes Forum,

    Ich lese jetzt schon seit einiger Zeit eure Posts und muss sagen, dass sie mir immer eine riesen Hilfe waren. Jetzt bin ich aber auf ein Problem gestoßen das ich nicht so einfach lösen kann und hoffe auf eure Hilfe.

    Im Rahmen einer Untersuchung zum Thema Hören möchte ich eine Soundbar Programmieren die über sehr viele Sounds verfügt( ca. 30 Verschiedene) die ich im Rahmen einer Abschlussarbeit erarbeitet habe.

    Soweit ist das ja noch sehr einfach. Allerdings sollen alle 30 Sounddateien mit nur drei Tasten (z.B. Ctrl, s und l) angesteuert werden.
    Mit HotKeySet kann ich ja so schöne sachen wie ^l und l^ machen wodurch ich aber nach einfacher kombinatorik maximal um die 10 Sound ansteuern kann.
    Also bräuchte ich noch eine Möglichkeit wie ich z.B. ^l gleichzeitig und ^ 2sekunden gedrückt und dann l nur noch kurzzeitig angetippt unterscheiden kann.
    Meint ihr es ist realistisch sowas in kurzer Zeit hinzubekommen?

    Ich hoffe ihr versteht meine Beschreibung und ihr könnt mir helfen.

  • Das wirst du mit HotKey's nicht schaffen. Aber möglich ist es natürlich. Es sieht nicht so schön aus, aber die restlichen Kombinationen müsstest du mit _IsPressed machen. Nur so als Ansatz:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    ; 2s lang Ctrl + L und dann S Antippen
    Local $fKeyPressed, $nTimer

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

    While Sleep(10)
    $fKeyPressed = _IsPressed("11") And _IsPressed("L") ; Ctrl + L
    If $fKeyPressed Then
    If TimerDiff($nTimer) > 2000 Then ; 2s Ctrl + L
    If _IsPressed("S") Then ; Dann S drücken
    _MachWas() ; Deinen Sound abspielen
    $nTimer = TimerInit()
    EndIf
    Else
    If _IsPressed("S") Then $nTimer = TimerInit() ; Vor 2s ist nix
    EndIf
    Else
    $nTimer = TimerInit() ; Vor 2s Loslassen ist auch nicht drin
    EndIf
    ; ...
    ; Und da machst du jetzt die anderen Tasten hin
    WEnd

    [/autoit]


    Ich weis es ist aufwändig, aber mir fällt sonst nichts ein.

    Gruss Shaowigor

  • Nimm doch mehrere Control-Tasten, zb Strg+Shift+I. So kannst du jeden Buchstaben vielfach belegen (Strg, Shift, Shift+Strg, Shift+Alt, Alt, Alt+Strg)

    [autoit]

    HotKeySet ("^+i", "Test") ; Strg+Shift+I

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

    While 1
    WEnd

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

    Func Test()
    MsgBox(0,"","Test")
    EndFunc

    [/autoit]
  • Hallo und Danke schonmal für die Antworten.

    Ich habe schon befürchtet das es nicht so ganz unaufwändig wird. Kann man nichts machen, werde ich wohl doch etwas mehr Aufwand reinstecken.

    Zitat

    Nimm doch mehrere Control-Tasten, zb Strg+Shift+I.

    Der Clou an der Sache soll ja grade sein das es immer maximal 2 gleichzeitig gedrückte Tasten gibt und insgesamt maximal 2 Tasten. Das Ganze hat mit einem bestehenden Interface zu tun welches 2 Tasten besitzt.Sonst aber auch ein guter Weg.

    So dann heißt es jetzt ran an die Arbeit.