void input_loop(void) { unsigned long keycode; t_environment *env; int should_refresh; env = get_set_environment(NULL); while (keycode = 0, (read(0, &keycode, 6)) != 0) { should_refresh = 1; if (keycode == KEY_BACKSPACE || keycode == KEY_DELETE) remove_selected(env); else if (keycode == KEY_SPACE) select_deselect(env); else if (keycode == KEY_ENTER) return_highlighted_words(env); else if (keycode == KEY_LEFT || keycode == KEY_RIGHT) handle_left_right(env, keycode); else if (keycode == KEY_DOWN || keycode == KEY_UP) handle_up_down(env, keycode); else if (keycode == KEY_ESCAPE || keycode == 'q') abort_exit(0); else should_refresh = 0; if (should_refresh) refresh_screen(0); } }
static void restart(int signum) { t_environment *env; (void)signum; env = get_set_environment(NULL); setup_terminal(env); set_signals(&restart); refresh_screen(0); }
int main(int argc, char **argv) { t_environment *env; if (argc < 2) ft_putendl_fd_exit("Usage: ft_select [parameters]", 2, 1); env = malloc(sizeof(t_environment)); setup_environment(env, argc, argv); get_set_environment(env); set_signals(&restart); refresh_screen(0); input_loop(); return (0); }