diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2016-01-13 14:20:33 -0200 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2016-01-13 14:20:33 -0200 |
commit | 9c39422c716581a9cbdcd15eb9ad616c6bf6e746 (patch) | |
tree | 62e757908e319ab910e74d6dffdf363cea0b6bde | |
parent | 466d4da0c6e7255a38b8de3c3b9dc0373805cc41 (diff) | |
parent | 99b947058ff8455f57c49382f8d1b7353458e08b (diff) |
Merge pull request #346 from mklein-de/vikeys
vi keys: translate ALT-h/j/k/l to arrow keys
-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); |