X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-cui.c;h=d091331b9656ce1a5635f08b73d64fd5b0e5fcbc;hp=167c2bb4eee4e13c996fc462ae2b56628ffe64a0;hb=9168031edb7affc437928a9123faf8fcbddf5d2a;hpb=038cb53fa8e19592b9c7021176fda194799f1d51;ds=sidebyside diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 167c2bb..d091331 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -199,6 +199,19 @@ struct nc_scr *cui_set_current(struct cui *cui, struct nc_scr *scr) return old; } +static bool process_global_keys(struct cui *cui, int key) +{ + switch (key) { + case 0xc: + if (cui->current && cui->current->main_ncw) { + redrawwin(cui->current->main_ncw); + wrefresh(cui->current->main_ncw); + } + return true; + } + return false; +} + /** * cui_process_key - Process input on stdin. */ @@ -210,7 +223,17 @@ static int cui_process_key(void *arg) assert(cui->current); ui_timer_disable(&cui->timer); - cui->current->process_key(cui->current); + for (;;) { + int c = getch(); + + if (c == ERR) + break; + + if (process_global_keys(cui, c)) + continue; + + cui->current->process_key(cui->current, c); + } return 0; }