
#define DEBOUNCE_COUNT 10
unsigned get_key(void) {
    static unsigned char old_key = KEY_NONE;
    unsigned char key;
    unsigned char debounce = 0xff;

    while (!timeout) {
        key = kdb_poll();
        if (old_key != key) {
            old_key = key;
            debounce = 0;
        } else if (key != KEY_NONE && key != KEY_INVALID && debounce != 0xff && debounce < DEBOUNCE_COUNT) {
            return key;
        }
    }
    return KEY_NONE;
}
