Anderes Handling der Tasten bei 5 Tastenversion

Ich habe mal das Handling der Tasten für die 5 Tastenversion verändert.
Die Funktion der Tasten ist jetzt wie folgt.
3 Tasten Version -> unverändert
5 Tastenversion:
Play-Pause -> unverändert
Wenn Wiedergabe läuft:
Vol Tasten -> shortpress - schrittweises Ändern der Lautstärke
Vol Tasten -> longpress - Ansteigendes bzw abfallendes Ändern der Lautstärke
Vor/Zurücktasten -> shortpress 1 Titel vor bzw zurück.
Vor/Zurücktasten ->longtpress mehrere Titel vor bzw zurück, abhängig von Länge des Tastendrucks.
Wenn Wiedergabe nicht läuft, werden die shortcuts wie gewohnt aufgerufen.

Wenn die Tasten über das adminmenü getauscht wurden , werden auch die Tastenfunktionen entsprechend vertauscht.

Hier der code

// *************** Vol + Taste *************************************************

#ifdef LED_SR_Switch
if (upButton.pressedFor(LONG_PRESS) && lsrSwitch == false)
#endif
#ifndef LED_SR_Switch
if (upButton.pressedFor(LONG_PRESS))       // Wenn Taste lange gedrückt
#endif    
{

  if (isPlaying())                          // wenn Wiedergabe läuft
  {
    if (!mySettings.invertVolumeButtons)    // wenn Funktion der Vol-Tasten nicht getauscht
    {
      longPressVol = true;                  // VolÄnderung durch longPress 3 und 5 Tastenmodus
      volumeUpButton();                     // Lauter Taste
    }
    else                                    // wenn Funktion der Vol-Tasten getauscht
    {                                       
       nextButton();                        // weiter Taste longpress im 3 Tastenmodus
    }
  }
  else                                      // wenn keine Wiedergabe läuft
  {
    playShortCut(1);                        // Spiele Shortcut 1
  }

  ignoreUpButton = true;                    // LauterTaste übergehen
//#endif    // DreiTasten
}                                           // Ende longPress

else if (upButton.wasReleased())            // wenn Taste nur kurz gedrückt wurde (shortpress)
{
  if (!ignoreUpButton)                      // Wenn Taste gelesen werden soll
   {
    if (!mySettings.invertVolumeButtons)    // wenn Funktion der Vol Tasten nicht getauscht
    {
 #ifndef FIVEBUTTONS       
     nextButton();                         // weiter Taste im 3 Tastenmodus durch kurzen Tastendruck
 #endif
 #ifdef FIVEBUTTONS       
     volumeUpButton();                     // Lauter Taste
     longPressVol = false;                 // schrittweise VolÄnderung durch kurzen Tastendruck
 #endif       
    }
    else                                   // wenn Funktion der Vol Tasten getauscht
    {
 #ifndef FIVEBUTTONS       
     volumeUpButton();                     // Lauter Taste im 3 Tasenmodus
     longPressVol = false;                 // schrittweise VolÄnderung durch kurzen Tastendruck
  #endif
  #ifdef FIVEBUTTONS       
     nextButton();                         // weiter Taste im 5 Tastenmodus durch kurzen Tastendruck
 #endif
    }
   }
  ignoreUpButton = false;                  // Taste wieder auswerten
}                                          // ende shortpress
// *********** Ende Vol + Taste ********************************************

// *************** Vol - Taste *********************************************
#ifdef LED_SR_Switch
if (downButton.pressedFor(LONG_PRESS) && lsrSwitch == false)
#endif
#ifndef LED_SR_Switch
if (downButton.pressedFor(LONG_PRESS))
#endif    
{

  if (isPlaying())                                  // Bei laufender Wiedergabe
  {
    if (!mySettings.invertVolumeButtons)            // wenn Funktion der Vol-Tasten nicht getauscht
    {
      longPressVol = true;                          // VolÄnderung durch longPress 3 und 5 Tastenmodus
      volumeDownButton();                           // Leisertaste
    }
    else                                            // wenn Funktion der Vol-Tasten getauscht
    {
//#ifndef FIVEBUTTONS       
     previousButton();                              // Taste Track zurück 3 Tastenmodus durch longpress
// #endif
     }
  }
  else                                              // wenn keine Wiedergabe läuft
  {
    playShortCut(2);                                // Shortcut spielen Next-Taste
  }
  ignoreDownButton = true;                          // LeiserTaste übergehen
//#endif    // ende Dreitasten
}                                                   // ende longpress

else if (downButton.wasReleased())                  // Wenn Taste betätigt wurde (shortpress)
{
  if (!ignoreDownButton)                            // Wenn Taste ausgewertet werden soll
  {
    if (!mySettings.invertVolumeButtons)            // Wenn Funktion der Vol Tasten nicht getauscht
    {
  #ifndef FIVEBUTTONS       
      previousButton();                             // Zurück Taste kurzer Tastendruck 3 Tastenmodus
 #endif
 #ifdef FIVEBUTTONS       
     volumeDownButton();                            // Leiser Taste 5 Tastenmodus
     longPressVol = false;                          // schrittweise VolÄnderung durch kurzen Tastendruck
 #endif       
    }
    else                                            // wenn Funktion der Vol Tasten getauscht
    {
#ifndef FIVEBUTTONS
      volumeDownButton();                           // Leiser Taste 3 Tastenmodus
      longPressVol = false;                         // schrittweise VolÄnderung durch kurzen Tastendruck
#endif
#ifdef FIVEBUTTONS
     previousButton();                              // Zurück Taste kurzer Tastendruck 5 Tastenmodus
#endif
    }
  }
  ignoreDownButton = false;                         // Taste wieder auswerten
}                                                   // ende shortpress
// *********** Ende Vol - Taste ********************************************

// ********** 5 Tasten-Modus ***********************************************

#ifdef FIVEBUTTONS                              // 5 Tasten-Modus

// ************ Taste 4 **************************************

if (buttonFour.pressedFor(LONG_PRESS))
   
{
  if (isPlaying())                          // wenn Wiedergabe läuft
  {
    if (mySettings.invertVolumeButtons)     // wenn Funktion der Vol-Tasten getauscht
    {
      longPressVol = true;                  // VolÄnderung durch longPress
      volumeUpButton();                     // Lauter Taste
    }
   else                                     // wenn Funktion der Vol-Tasten nicht getauscht
    {                                       
      nextButton();                         // weiter Taste
    }
   
  }
  else                                      // wenn keine Wiedergabe
  {
    playShortCut(1);                        // Spiele Shortcut 1
  }
  ignoreButtonFour = true;                  // LauterTaste übergehen

}                                           // Ende longPress
    
else if (buttonFour.wasReleased())          // wenn Taste  betätigt wurde (shortpress)
{
  if (isPlaying())                          // wenn Wiedergabe läuft
  {
    if (mySettings.invertVolumeButtons)     // wenn Funktion der Vol Tasten  getauscht
    {
      volumeUpButton();                     // Lauter-Taste
      longPressVol = false;                 // schrittweise VolÄnderung durch kurzen Tastendruck
    }
    else                                    // wenn Funktion der Vol Tasten nicht getauscht
    {
      nextButton();                         // Next - Taste
    }
  }
  else                                      // wenn Wiedergabe nicht läuft
  {
    playShortCut(1);                        // shortcut Next-Taste spielen
  }
  ignoreButtonFour = false;                 // Taste wieder auswerten
}                                           // ende shortpress

// ************ Taste 5 ************************************

   if (buttonFive.pressedFor(LONG_PRESS))
   
{
  if (isPlaying())                          // wenn Wiedergabe läuft
  {
    if (mySettings.invertVolumeButtons)     // wenn Funktion der Vol-Tasten getauscht
    {
      longPressVol = true;                  // VolÄnderung durch longPress
      volumeDownButton();                   // Leiser Taste
    }
    else                                    // wenn Funktion der Vol-Tasten nicht getauscht
    {                                       
      previousButton();                     // zurück Taste
    }
  }
  else                                      // wenn keine Wiedergabe
  {
    playShortCut(2);                        // Spiele Shortcut 2
  }
  ignoreButtonFive = true;                  // Leiser Taste übergehen

}                                           // Ende longPress   
else if (buttonFive.wasReleased())          // Taste wurde betätigt (shortpress)
{
  if (isPlaying())                          // wenn Wiedergabe läuft
  {
    if (mySettings.invertVolumeButtons)     // wenn Funktion der Vol Tasten  getauscht
    {
      volumeDownButton();                   // Leiser-Taste
      longPressVol = false;                 // schrittweise VolÄnderung durch kurzen Tastendruck
    }
    else                                    // wenn Funktion der Vol Tasten nicht getauscht
    {
      previousButton();                     // Zurück - Taste
    }
  }
  else                                      // wenn Wiedergabe nicht läuft
  {
    playShortCut(2);                        // shortcut Zurück-Taste spielen
  }
  ignoreButtonFive = false;                 // Taste wieder auswerten   
}                                           // ende shortpress
#endif

  }
  // ****************** Ende der Buttons ***********************************`

Sehr cool, da hatte ich mich schon gewundert, warum das in der 5-Tasten-Version nicht geht, in der 3-Tasten-Version aber schon. Wird heute Abend ausprobiert :+1:

Edit: noch eine dumme Frage: wo füge ich das in der 2.1 DEV am besten ein? Vermutung wäre Zeilen 1012-1092?

Auf jeden fall in der void loop()
wo die Tasten abgefragt vwerden. Du musst den gesamten Part der Tasten ersetzen. Falls Fehler beim Kompilieren auftreten, kann das daran liegen, dass Variablen nicht exakt übereinstimmen (Groß-Kleinschreibung oder ähnliches). dann bitte die Variablendeklarationen für die Buttons vergleichen und ggf korrigieren. Am besten du machst dir in der IDE einmal die unveränderte V.2.1 auf und im neuen Fenster die geänderte. Dann kannst du die Variablen besser vergleichen.

Ich hab das mal verifiziert mit der V1.2 Standartsoftware
Beim Kompilieren wird ein Fehler ausgegeben

bezüglich der Zeilen
longPressVol = false;
oder
longPressVol = true;

Diese Zeilen bitte löschen, da das im Standartscetch eh nicht abgefragt wird.

Wer das in meiner always queue version nutzen wil, darf diese Zeilen nicht entfernen, bekommt aber auch keinen Fehler angezeigt.