diff options
author | Michael Klein <michael.klein@puffin.lb.shuttle.de> | 2016-01-11 22:36:39 +0100 |
---|---|---|
committer | Michael Klein <michael.klein@puffin.lb.shuttle.de> | 2016-01-12 21:15:04 +0100 |
commit | 99b947058ff8455f57c49382f8d1b7353458e08b (patch) | |
tree | 62e757908e319ab910e74d6dffdf363cea0b6bde /ScreenManager.c | |
parent | 466d4da0c6e7255a38b8de3c3b9dc0373805cc41 (diff) |
vi keys: translate ALT-h/j/k/l to arrow keys
Diffstat (limited to 'ScreenManager.c')
-rw-r--r-- | ScreenManager.c | 23 |
1 files changed, 23 insertions, 0 deletions
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); |