X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ui%2Fncurses%2Fnc-cui.c;h=7200a81ae4bc5c5a87c5fe8437303751d5a3a033;hb=adb11b86f216f26c2301270af4f847f8d7429aef;hp=18604c9e04a06a2435f956a6b1b89bc897d05986;hpb=6c7cf0a58b0e4be046b2367c93925e1c4895dd6c;p=petitboot diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 18604c9..7200a81 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -58,6 +58,11 @@ static void cui_start(void) define_key("\x7f", KEY_BACKSPACE); define_key("\x08", KEY_BACKSPACE); + /* we need backtab too, for form navigation. vt220 doesn't include + * this (kcbt), but we don't want to require a full linux/xterm termcap + */ + define_key("\x1b[Z", KEY_BTAB); + while (getch() != ERR) /* flush stdin */ (void)0; } @@ -322,10 +327,6 @@ static int cui_process_key(void *arg) assert(cui->current); - if (!cui->has_input) - discover_client_cancel_default(cui->client); - cui->has_input = true; - for (;;) { int c = getch(); @@ -334,6 +335,13 @@ static int cui_process_key(void *arg) if (c == ERR) break; + if (!cui->has_input) { + pb_log("UI input received (key = %d), aborting " + "default boot\n", c); + discover_client_cancel_default(cui->client); + cui->has_input = true; + } + if (process_global_keys(cui, c)) continue;