void keys_handle_pressed(void) { uint16_t keys; uint8_t i; keys = keys_key_pressed(); // Magic Reset Key Combi if ((keys & (1<<KEY_ESC)) && (keys & (1<<KEY_UP)) && (keys & (1<<KEY_DOWN))) canix_reset(); for (i = 0; i < 16; i++) { if (key_counter[i] == 0) { // Wenn Taste bisher nicht gedrueckt war und sie es jetzt ist // dann Zaehler starten und key_down_event() ausloesen if ((key_state[i] == 0) && (keys & (1<<i))) { key_counter[i] = KEY_COUNTER_START; key_state[i] = 1; key_down_event(i); } if ((key_state[i] == 1) && ((keys & (1<<i)) == 0)) { key_counter[i] = KEY_COUNTER_START; key_state[i] = 0; key_up_event(i); } } else key_counter[i] -= 1; } }
bool key_event(uint16 keycode) { return key_down_event(keycode) || key_up_event(keycode); }