diff options
author | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2016-03-11 23:17:28 -0800 |
---|---|---|
committer | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2016-03-18 21:47:46 +0100 |
commit | c2b50ace1b04c90c27dae8d5999c14f925b93c65 (patch) | |
tree | 91f71f55d7f474e18cac67ce95f4ad58d7caa306 /payloads | |
parent | f3f654ddb90fedfb72eab99db6f9893e898ffbff (diff) | |
download | coreboot-c2b50ace1b04c90c27dae8d5999c14f925b93c65.tar.gz coreboot-c2b50ace1b04c90c27dae8d5999c14f925b93c65.tar.bz2 coreboot-c2b50ace1b04c90c27dae8d5999c14f925b93c65.zip |
coreinfo: Allow numbers in addition to F keys
When using coreinfo on a serial console (at least
with gtkterm, picocom and minicom on Ubuntu 15.10)
you can't send F keys to the payload. Allow 1..9
for F1..F9
Change-Id: Ie3a11fa1de57c7345737a1ccaff177f407cd5e48
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-on: https://review.coreboot.org/14065
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'payloads')
-rw-r--r-- | payloads/coreinfo/coreinfo.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/payloads/coreinfo/coreinfo.c b/payloads/coreinfo/coreinfo.c index 8a6b3f53c3a2..449ac5d5b082 100644 --- a/payloads/coreinfo/coreinfo.c +++ b/payloads/coreinfo/coreinfo.c @@ -247,6 +247,8 @@ static void loop(void) halfdelay(10); while (1) { + int ch = -1; + #if IS_ENABLED(CONFIG_SHOW_DATE_TIME) print_time_and_date(); wrefresh(menuwin); @@ -257,20 +259,21 @@ static void loop(void) if (key == ERR) continue; - if (key >= KEY_F(1) && key <= KEY_F(9)) { - unsigned char ch = key - KEY_F(1); - - if (ch <= ARRAY_SIZE(categories)) { - if (ch == ARRAY_SIZE(categories)) - continue; - if (categories[ch].count == 0) - continue; + if (key >= KEY_F(1) && key <= KEY_F(9)) + ch = key - KEY_F(1); + if (key >= '1' && key <= '9') + ch = key - '1'; - curwin = ch; - print_submenu(&categories[curwin]); - redraw_module(&categories[curwin]); + if (ch >= 0 && ch <= ARRAY_SIZE(categories)) { + if (ch == ARRAY_SIZE(categories)) + continue; + if (categories[ch].count == 0) continue; - } + + curwin = ch; + print_submenu(&categories[curwin]); + redraw_module(&categories[curwin]); + continue; } if (key == KEY_ESC) |