From 99b947058ff8455f57c49382f8d1b7353458e08b Mon Sep 17 00:00:00 2001 From: Michael Klein Date: Mon, 11 Jan 2016 22:36:39 +0100 Subject: [PATCH] vi keys: translate ALT-h/j/k/l to arrow keys --- ScreenManager.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ScreenManager.c b/ScreenManager.c index df7431fd..1a9d9f03 100644 --- a/ScreenManager.c +++ b/ScreenManager.c @@ -244,6 +244,29 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { redraw = false; continue; } + else if (ch == 27) { + int ch2 = getch(); + if (ch2 != ERR) { + switch(ch2) + { + case 'h': + ch = KEY_LEFT; + break; + case 'j': + ch = KEY_DOWN; + break; + case 'k': + ch = KEY_UP; + break; + case 'l': + ch = KEY_RIGHT; + break; + default: + ungetch(ch2); + break; + } + } + } redraw = true; if (Panel_eventHandlerFn(panelFocus)) { result = Panel_eventHandler(panelFocus, ch);