Acción pulsando durante 10 segundos

Hola a todos.
Necesito ejecutar una acción (exactamente poner unos valores al estado inicial) mediante la pulsación mantenida durante 10 segundos de un pulsador conectado en la entrada 4.
Como puedo hacerlo??
E intentado leer el tiempo millis() y sumándole los 10 segundos (10000) pero no lo consigo hay algo que se me escapa

 if (estadoActual2==HIGH){
                 Tinicio2=millis();
                 Serial.println("reset"); 
                     if (millis()==Tinicio2+1000){
                         codic1=0;
                         codic2=7;
                         digitalWrite(led1,HIGH);
                         delay(200);
                         digitalWrite(led1,LOW);
                         Serial.print("Valors de Fabrica");
                   }
             }

algo asi?

bool ultimoEstado=false;
...

if (!ultimoEstado && estadoActual2) {Tinicio2 = millis();}
if (!estadoActual2) {Tinicio2 = 0;}
ultimoEstado = estadoActual2;

if (estadoActual2 && Tinicio2 != 0 && millis() >= Tinicio2 + 1000)
{
Tinicio2=0;

codic1=0;
codic2=7;
digitalWrite(led1,HIGH);
delay(200);
digitalWrite(led1,LOW);
Serial.print("Valors de Fabrica");
}

Muchas gracias Marcial.
Lo e solucionado de esta manera después de darle muchas vueltas a ver que te parece??

 Tinput=millis();
 while (digitalRead(bot2)==HIGH){
       if (millis()-Tinput==10000){         
         resetfa();
          }
       }

Buena solución, solo un comentario, mientras el boton esta pulsado (10 seg.) la ejecución del resto del programa queda parada