#include "keys.h" #include #include #include #include #include "display.h" #include "err.h" #include "fm.h" #include "log.h" #include "mem.h" #include "wm.h" void handling_keys(int ch, fm_info *i) { switch (ch) { #ifdef KEY_RESIZE case KEY_RESIZE: handle_resize(); /* TODO: redraw ui */ break; #endif /* Quit */ case 'q': endwin(); exit(0); /* Down */ case 'j': fm_entries_scroll(i, 1); break; case 'k': fm_entries_scroll(i, -1); break; case 'h': fm_cd_up(i); break; case 'l': fm_cd_down(i); break; case 'o': case '\n': case '\r': case KEY_ENTER: log_write(LOG_INFO, "Open file"); if (!(i->cur->items[i->cursor].is_dir)) { char filepath[PATH_MAX]; size_t len = snprintf(filepath, PATH_MAX, "%s/%s", i->cwd, i->cur->items[i->cursor].name); if (len >= PATH_MAX) { die("snprintf failed"); } char *argv[] = {enveditor, filepath, NULL}; open_with_editor(argv); break; } else { return; } break; case '+': new_dir(i); break; default: return; } need_redraw = true; }