Run function once for 500ms with single click, 1s with double click, etc

Thank you, it's working even though it's not pretty.

#define triggerPin 7
unsigned long previousMillis = 0;        // will store last time button was pressed
unsigned long currentMillis;
boolean trigger = false;
int interval = 1000;
void loop() {

  currentMillis = millis();
  
  if (trigger){
    triggerBoot(interval);
  }
}
case 1:
      Serial.print("Button ");
      Serial.print(btn);
      switch (event) {
        case 1:
          Serial.println(" single press");
          previousMillis = millis();
          interval = 3000;
          trigger = !trigger;
          break;
        case 2:
          Serial.println(" double press");
          previousMillis = millis();
          interval = 5000;
          trigger = !trigger;
          break;
        case 3:
          Serial.println(" hold press");
          previousMillis = millis();
          interval = 10000;
          trigger = !trigger;
          break;
void triggerBoot (int interval) {
  if (currentMillis - previousMillis >= interval) {
    digitalWrite(triggerPin, LOW);
    previousMillis = 0;
    trigger = false;
  } else {
    digitalWrite(triggerPin, HIGH);
  }
}