Setze an den Anfang deiner Funktion:
wait(1);
if (key_e) return;
und deine Funktion wird immer genau einmal ausgeführt wenn man die Taste wieder loslässt.
Wenn du willst, dass sie genau einmal ausgeführt wird, sobald man die Taste drückt und nicht erst, wenn man sie wieder loslässt, dann mach folgendes:
void on_e_NULL ();
void deine_function ()
{
on_e_NULL ();
...
}
void on_e_NULL ()
{
on_e = NULL;
while (key_e) wait(1);
on_e = deine_function;
}
