예제 #1
0
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;
	}
}
예제 #2
0
	bool key_event(uint16 keycode)
	{
		return key_down_event(keycode) || key_up_event(keycode);
	}