普通に入力関係をラッピングすればいい話じゃ…?
//フィールド
bool isPressed;
bool tmpPressed;

//ループ内
void keyPressed(event e){
isPressed = true;
}
void keyReleased(event e){
isPressed = false;
}
if( !tmpPressed && isPressed ){ //押された1フレーム目だけ
onFirstPressed();
}
tmpPressed = isPressed;

//ループ外
void onFirstPressed(){}

みたいな感じで