From: Jeremy Kerr Date: Fri, 17 May 2013 02:26:05 +0000 (+0800) Subject: ui/ncurses: implement global keys X-Git-Tag: v1.0.0~595 X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=9168031edb7affc437928a9123faf8fcbddf5d2a;ds=sidebyside ui/ncurses: implement global keys Add process_global_keys to handle global key events. Using this, implement ctrl+l to refresh. Signed-off-by: Jeremy Kerr --- diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 3f8995e..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. */ @@ -216,6 +229,9 @@ static int cui_process_key(void *arg) if (c == ERR) break; + if (process_global_keys(cui, c)) + continue; + cui->current->process_key(cui->current, c); }