diff --git a/ScreenManager.c b/ScreenManager.c index df7431fd7e951a21f037fde40ea02b8b848a7d77..1a9d9f03e7f0aed9656bb437fbc3e4876349a010 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);