From 09920200e85e071bf15817d2581e68770fc75a6e Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Sat, 8 Feb 2020 02:30:32 -0800 Subject: [PATCH] ready for #4 --- ke/main.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ke/main.c b/ke/main.c index b2c52d4..dd33d6a 100644 --- a/ke/main.c +++ b/ke/main.c @@ -27,6 +27,9 @@ enum KeyPress { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, + DEL_KEY, + END_KEY, + HOME_KEY, PG_UP, PG_DN, }; @@ -125,6 +128,8 @@ is_arrow_key(int16_t c) case CTRL_KEY('b'): case PG_UP: case PG_DN: + case HOME_KEY: + case END_KEY: return 1; }; @@ -152,8 +157,13 @@ get_keypress() return c; if (seq[2] == '~') { switch (seq[1]) { + case '1': return HOME_KEY; + case '2': return END_KEY; + case '3': return DEL_KEY; case '5': return PG_UP; case '6': return PG_DN; + case '7': return HOME_KEY; + case '8': return END_KEY; } } } else { @@ -162,11 +172,18 @@ get_keypress() case 'B': return ARROW_DOWN; case 'C': return ARROW_RIGHT; case 'D': return ARROW_LEFT; + case 'F': return END_KEY; + case 'H': return HOME_KEY; default: /* nada */ ; } } + } else if (seq[0] == 'O') { + switch (seq[1]) { + case 'F': return END_KEY; + case 'H': return HOME_KEY; + } } return 0x1b; @@ -239,6 +256,13 @@ move_cursor(int16_t c) move_cursor(c == PG_UP ? ARROW_UP : ARROW_DOWN); } } + + case HOME_KEY: + editor.curx = 0; + break; + case END_KEY: + editor.curx = editor.cols - 1; + break; default: break; }