diff --git a/pc_main/main.cpp b/pc_main/main.cpp index 6727a07..31d77df 100644 --- a/pc_main/main.cpp +++ b/pc_main/main.cpp @@ -52,11 +52,33 @@ int main() return 0; } +extern "C" void launchMenuEntryTask(menuEntry_s* arg); + extern "C" bool menuUpdate(void) { //This is implemented here due to the hid code. menu_s* menu = menuGetCurrent(); - if (menu->nEntries > 0) + static int esc_state = 0; + int new_esc_state = sf::Keyboard::isKeyPressed(sf::Keyboard::Escape); + static int return_state = 0; + int new_return_state = sf::Keyboard::isKeyPressed(sf::Keyboard::Return); + + if (!new_esc_state && esc_state) + { + menuScan(".."); + } + else if (!new_return_state && return_state) + { + if (menu->nEntries > 0) + { + int i; + menuEntry_s* me; + for (i = 0, me = menu->firstEntry; i != menu->curEntry; i ++, me = me->next); + launchMenuEntryTask(me); + //workerSchedule(launchMenuEntryTask, me); + } + } + else if (menu->nEntries > 0) { int move = 0; @@ -78,5 +100,8 @@ extern "C" bool menuUpdate(void) { menu->curEntry = newEntry; } + esc_state = new_esc_state; + return_state = new_return_state; + return 0; }