commit - 71ee162773e8955eb4d4ece8959a8fb005bba95d
commit + 0b30116779ab06d7a35f312fb298ec377e3b3fa9
blob - 2b49ec11645715470257939247bc337bd3b44606
blob + 0a821b67164058ebc026634145d821819e2ad746
--- config.h
+++ config.h
-#define RVK_QUIT 'q'
-#define RVK_DOWN 'j'
-#define RVK_UP 'k'
-#define RVK_JUMP_DOWN 'J'
-#define RVK_JUMP_UP 'K'
-#define RVK_CD_DOWN 'l'
-#define RVK_CD_UP 'h'
-#define RVK_HOME 'H'
-#define RVK_SHELL '\r'
-#define RVK_EDIT ' '
+/* CTRL+X: "^X"
+ * ALT+X: "M-X"
+ */
+#define RVK_QUIT "q"
+#define RVK_DOWN "j"
+#define RVK_UP "k"
+#define RVK_JUMP_DOWN "J"
+#define RVK_JUMP_UP "K"
+#define RVK_CD_DOWN "l"
+#define RVK_CD_UP "h"
+#define RVK_HOME "H"
+#define RVK_SHELL "^M"
+#define RVK_EDIT " "
#define RV_JUMP 10
blob - 9fde40875ba652b6f1a539db580e56a856eb91e2
blob + a8110e1551fb9d4345639c874a5c100b9b85cfc6
--- rover.c
+++ rover.c
int
main()
{
- int ch;
char *program;
+ char *key;
sk_init();
/* Avoid invalid free() calls in cd() by zeroing the tally. */
strcat(skit.cwd, "/");
skit.window = subwin(stdscr, LINES - 2, COLS, 1, 0);
cd();
- while ((ch = getch()) != RVK_QUIT) switch (ch) {
- case RVK_DOWN:
+ while (1) {
+ key = keyname(getch());
+ if (!strcmp(key, RVK_QUIT))
+ break;
+ else if (!strcmp(key, RVK_DOWN)) {
if (skit.fsel == skit.nfiles - 1)
skit.scroll = skit.fsel = 0;
else {
skit.scroll++;
}
update_browser();
- break;
- case RVK_UP:
+ }
+ else if (!strcmp(key, RVK_UP)) {
if (skit.fsel == 0) {
skit.fsel = skit.nfiles - 1;
skit.scroll = skit.nfiles - LINES + 4;
skit.scroll--;
}
update_browser();
- break;
- case RVK_JUMP_DOWN:
+ }
+ else if (!strcmp(key, RVK_JUMP_DOWN)) {
skit.fsel += RV_JUMP;
if (skit.fsel >= skit.nfiles)
skit.fsel = skit.nfiles - 1;
skit.scroll = skit.nfiles - LINES + 4;
}
update_browser();
- break;
- case RVK_JUMP_UP:
+ }
+ else if (!strcmp(key, RVK_JUMP_UP)) {
skit.fsel -= RV_JUMP;
if (skit.fsel < 0)
skit.fsel = 0;
if (skit.scroll < 0)
skit.scroll = 0;
update_browser();
- break;
- case RVK_CD_DOWN:
+ }
+ else if (!strcmp(key, RVK_CD_DOWN)) {
if (strchr(skit.fnames[skit.fsel], '/') == NULL)
continue;
strcat(skit.cwd, skit.fnames[skit.fsel]);
cd();
- break;
- case RVK_CD_UP:
+ }
+ else if (!strcmp(key, RVK_CD_UP)) {
if (strlen(skit.cwd) == 1)
continue;
skit.cwd[strlen(skit.cwd) - 1] = '\0';
*(strrchr(skit.cwd, '/') + 1) = '\0';
cd();
- break;
- case RVK_HOME:
+ }
+ else if (!strcmp(key, RVK_HOME)) {
strcpy(skit.cwd, getenv("HOME"));
if (skit.cwd[strlen(skit.cwd) - 1] != '/')
strcat(skit.cwd, "/");
cd();
- break;
- case RVK_SHELL:
+ }
+ else if (!strcmp(key, RVK_SHELL)) {
program = getenv("SHELL");
if (program) {
args[0] = program;
args[1] = NULL;
spawn();
}
- break;
- case RVK_EDIT:
+ }
+ else if (!strcmp(key, RVK_EDIT)) {
if (strchr(skit.fnames[skit.fsel], '/') != NULL)
continue;
program = getenv("EDITOR");
args[2] = NULL;
spawn();
}
- break;
- default:
- continue;
+ }
}
while (skit.nfiles--) free(skit.fnames[skit.nfiles]);
free(skit.fnames);