mirror of
https://github.com/jarun/nnn.git
synced 2024-12-01 02:49:44 +00:00
Expose key bindings in the configuration header
This commit is contained in:
parent
ef3bfef454
commit
6b7c2506db
35
config.def.h
35
config.def.h
|
@ -10,3 +10,38 @@ struct assoc assocs[] = {
|
||||||
{ "\\.sh$", "sh" },
|
{ "\\.sh$", "sh" },
|
||||||
{ ".*", "less" },
|
{ ".*", "less" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct key bindings[] = {
|
||||||
|
/* Quit */
|
||||||
|
{ 'q', SEL_QUIT },
|
||||||
|
/* Back */
|
||||||
|
{ KEY_BACKSPACE, SEL_BACK },
|
||||||
|
{ KEY_LEFT, SEL_BACK },
|
||||||
|
{ 'h', SEL_BACK },
|
||||||
|
/* Inside */
|
||||||
|
{ KEY_ENTER, SEL_GOIN },
|
||||||
|
{ '\r', SEL_GOIN },
|
||||||
|
{ KEY_RIGHT, SEL_GOIN },
|
||||||
|
{ 'l', SEL_GOIN },
|
||||||
|
/* Filter */
|
||||||
|
{ '/', SEL_FLTR },
|
||||||
|
{ '&', SEL_FLTR },
|
||||||
|
/* Next */
|
||||||
|
{ 'j', SEL_NEXT },
|
||||||
|
{ KEY_DOWN, SEL_NEXT },
|
||||||
|
{ CONTROL('N'), SEL_NEXT },
|
||||||
|
/* Previous */
|
||||||
|
{ 'k', SEL_PREV },
|
||||||
|
{ KEY_UP, SEL_PREV },
|
||||||
|
{ CONTROL('P'), SEL_PREV },
|
||||||
|
/* Page down */
|
||||||
|
{ KEY_NPAGE, SEL_PGDN },
|
||||||
|
{ CONTROL('D'), SEL_PGDN },
|
||||||
|
/* Page up */
|
||||||
|
{ KEY_PPAGE, SEL_PGUP },
|
||||||
|
{ CONTROL('U'), SEL_PGUP },
|
||||||
|
/* Shell */
|
||||||
|
{ '!', SEL_SH },
|
||||||
|
/* Change dir */
|
||||||
|
{ 'c', SEL_CD },
|
||||||
|
};
|
||||||
|
|
78
noice.c
78
noice.c
|
@ -42,6 +42,25 @@ struct assoc {
|
||||||
char *bin; /* Program */
|
char *bin; /* Program */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Supported actions */
|
||||||
|
enum action {
|
||||||
|
SEL_QUIT = 1,
|
||||||
|
SEL_BACK,
|
||||||
|
SEL_GOIN,
|
||||||
|
SEL_FLTR,
|
||||||
|
SEL_NEXT,
|
||||||
|
SEL_PREV,
|
||||||
|
SEL_PGDN,
|
||||||
|
SEL_PGUP,
|
||||||
|
SEL_SH,
|
||||||
|
SEL_CD,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct key {
|
||||||
|
int sym; /* Key pressed */
|
||||||
|
enum action act; /* Action */
|
||||||
|
};
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
struct entry {
|
struct entry {
|
||||||
|
@ -259,65 +278,16 @@ printprompt(char *str)
|
||||||
* Returns SEL_{QUIT,BACK,GOIN,FLTR,NEXT,PREV,PGDN,PGUP,SH,CD}
|
* Returns SEL_{QUIT,BACK,GOIN,FLTR,NEXT,PREV,PGDN,PGUP,SH,CD}
|
||||||
* Returns 0 otherwise
|
* Returns 0 otherwise
|
||||||
*/
|
*/
|
||||||
enum {
|
|
||||||
SEL_QUIT = 1,
|
|
||||||
SEL_BACK,
|
|
||||||
SEL_GOIN,
|
|
||||||
SEL_FLTR,
|
|
||||||
SEL_NEXT,
|
|
||||||
SEL_PREV,
|
|
||||||
SEL_PGDN,
|
|
||||||
SEL_PGUP,
|
|
||||||
SEL_SH,
|
|
||||||
SEL_CD,
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
int
|
||||||
nextsel(void)
|
nextsel(void)
|
||||||
{
|
{
|
||||||
int c;
|
int c, i;
|
||||||
|
|
||||||
c = getch();
|
c = getch();
|
||||||
switch (c) {
|
|
||||||
case 'q':
|
for (i = 0; i < LEN(bindings); i++) {
|
||||||
return SEL_QUIT;
|
if (c == bindings[i].sym)
|
||||||
/* Back */
|
return bindings[i].act;
|
||||||
case KEY_BACKSPACE:
|
|
||||||
case KEY_LEFT:
|
|
||||||
case 'h':
|
|
||||||
return SEL_BACK;
|
|
||||||
/* Inside */
|
|
||||||
case KEY_ENTER:
|
|
||||||
case '\r':
|
|
||||||
case KEY_RIGHT:
|
|
||||||
case 'l':
|
|
||||||
return SEL_GOIN;
|
|
||||||
/* Filter */
|
|
||||||
case '/':
|
|
||||||
case '&':
|
|
||||||
return SEL_FLTR;
|
|
||||||
/* Next */
|
|
||||||
case 'j':
|
|
||||||
case KEY_DOWN:
|
|
||||||
case CONTROL('N'):
|
|
||||||
return SEL_NEXT;
|
|
||||||
/* Previous */
|
|
||||||
case 'k':
|
|
||||||
case KEY_UP:
|
|
||||||
case CONTROL('P'):
|
|
||||||
return SEL_PREV;
|
|
||||||
/* Page down */
|
|
||||||
case KEY_NPAGE:
|
|
||||||
case CONTROL('D'):
|
|
||||||
return SEL_PGDN;
|
|
||||||
/* Page up */
|
|
||||||
case KEY_PPAGE:
|
|
||||||
case CONTROL('U'):
|
|
||||||
return SEL_PGUP;
|
|
||||||
case '!':
|
|
||||||
return SEL_SH;
|
|
||||||
case 'c':
|
|
||||||
return SEL_CD;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue