uint8_t bootmgr_handle_key(int key) { if(sleep_mode) { bootmgr_do_sleep(0); return 0; } switch(bootmgr_phase) { case BOOTMGR_MAIN: { switch(key) { case KEY_VOLUMEDOWN: { if(++bootmgr_selected == 4) bootmgr_selected = 0; break; } case KEY_VOLUMEUP: { if(--bootmgr_selected == -1) bootmgr_selected = 3; break; } case KEY_BACK: bootmgr_printf(-1, 25, WHITE, "Rebooting..."); bootmgr_draw(); __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, "recovery"); return 1; case KEY_END: { bootmgr_do_sleep(!sleep_mode); break; } case KEY_POWER: { reboot(RB_POWER_OFF); return 1; } case KEY_MENU: { switch(bootmgr_selected) { case 0: bootmgr_boot_internal(); return 1; case 1: if(bootmgr_show_rom_list()) return 1; break; case 2: bootmgr_touch_ums(); break; case 3: bootmgr_touch_misc(); break; } break; } case KEY_SEARCH: { bootmgr_charger_init(); break; } default: break; } break; } case BOOTMGR_SD_SEL: { switch(key) { case KEY_VOLUMEDOWN: bootmgr_touch_sd_down(); break; case KEY_VOLUMEUP: bootmgr_touch_sd_up(); break; case KEY_MENU: return bootmgr_boot_sd(); case KEY_BACK: bootmgr_touch_sd_exit(); break; default:break; } break; } case BOOTMGR_TETRIS: { tetris_key(key); break; } case BOOTMGR_UMS: { if(key != KEY_SEARCH) break; bootmgr_touch_exit_ums(); break; } case BOOTMGR_CHARGER: return bootmgr_charger_key(key); case BOOTMGR_MISC: return bootmgr_misc_key(key); } return 0; }
uint8_t bootmgr_handle_key(int key) { switch(bootmgr_phase) { case BOOTMGR_MAIN: { switch(key) { case KEY_VOLUMEDOWN: { if(++bootmgr_selected == 4) bootmgr_selected = 0; break; } case KEY_VOLUMEUP: { if(--bootmgr_selected == -1) bootmgr_selected = 3; break; } case KEY_BACK: bootmgr_printf(-1, 25, WHITE, "Rebooting..."); bootmgr_draw(); case KEY_POWER: bootmgr_close_framebuffer(); bootmgr_input_run = 0; reboot(key == KEY_POWER ? RB_POWER_OFF : RB_AUTOBOOT); return 1; case KEY_MENU: { switch(bootmgr_selected) { case 0: bootmgr_boot_internal(); return 1; case 1: if(bootmgr_show_rom_list()) return 1; break; case 2: bootmgr_touch_ums(); break; case 3: bootmgr_touch_tetris(); break; } break; } default:break; } break; } case BOOTMGR_SD_SEL: { switch(key) { case KEY_VOLUMEDOWN: bootmgr_touch_sd_down(); break; case KEY_VOLUMEUP: bootmgr_touch_sd_up(); break; case KEY_MENU: return bootmgr_boot_sd(); case KEY_BACK: bootmgr_touch_sd_exit(); break; default:break; } break; } case BOOTMGR_TETRIS: { tetris_key(key); break; } case BOOTMGR_UMS: { if(key != KEY_SEARCH) break; bootmgr_touch_exit_ums(); break; } } return 0; }