Minimizing signal delay when debouncing
The best way to handle this is to debounce the signal in software with your microcontroller. This is cheap, simple, and gives you maximum versatility in terms of your debounce algorithm.
Here's an example algorithm (psudocode):
if(input != input_debounced &amp;&amp; debounce_timer == 0){ 
    input_debounced = input;
    debounce_timer = 100; //don't flip signal again for at least 100 cycles
}
if(debounce_timer &gt; 0) debounce_timer--;
delay_ms(1);

Notice how in the idle state the timer will reach zero, so when the switch flips, the debounced value will change imediately. The value will then be locked for 100ms.