La tua spiegazione non fa una grinza. Ma mi dici anche che i caratteri di escape vengono processati dopo la lettera immessa dall'utente, come dimostra il tuo codice Prova. Una volta che 'p' non soddisfa il while interno, passa al while esterno, oppure resta "parcheggiata" e il while confronta gli escape per escluderli dal while esterno?