From ef093d0b30f3fe56881898da9dcbb73c3a414f70 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Sat, 24 Sep 2022 10:40:34 +0300 Subject: [PATCH] Fix curses cursor keys My change to allow fuzzer run in curses caused the cursor keys to not work (eg. paging through menus with left and right cursor), so fix that. --- include/wincurs.h | 1 + win/curses/cursdial.c | 2 +- win/curses/cursmisc.c | 17 +++++++++++++---- win/curses/cursmisc.h | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/include/wincurs.h b/include/wincurs.h index 580ad3adf..34a326e37 100644 --- a/include/wincurs.h +++ b/include/wincurs.h @@ -151,6 +151,7 @@ extern boolean curses_map_borders(int *sx, int *sy, int *ex, int *ey, /* cursmisc.c */ +extern int curses_getch(void); extern int curses_read_char(void); extern void curses_toggle_color_attr(WINDOW *win, int color, int attr, int onoff); diff --git a/win/curses/cursdial.c b/win/curses/cursdial.c index 1161f16c8..bc3ef185e 100644 --- a/win/curses/cursdial.c +++ b/win/curses/cursdial.c @@ -1487,7 +1487,7 @@ menu_get_selections(WINDOW *win, nhmenu *menu, int how) menu_display_page(menu, win, curpage, selectors, groupaccels); while (!dismiss) { - curletter = curses_read_char(); + curletter = curses_getch(); if (curletter == ERR) { num_selected = -1; diff --git a/win/curses/cursmisc.c b/win/curses/cursmisc.c index d0b4adde5..1b53fa610 100644 --- a/win/curses/cursmisc.c +++ b/win/curses/cursmisc.c @@ -26,6 +26,18 @@ static int curs_y = -1; static int parse_escape_sequence(void); +int +curses_getch(void) +{ + int ch; + + if (iflags.debug_fuzzer) + ch = randomkey(); + else + ch = getch(); + return ch; +} + /* Read a character of input from the user */ int @@ -39,10 +51,7 @@ curses_read_char(void) /* cancel message suppression; all messages have had a chance to be read */ curses_got_input(); - if (iflags.debug_fuzzer) - ch = randomkey(); - else - ch = getch(); + ch = curses_getch(); #if defined(ALT_0) || defined(ALT_9) || defined(ALT_A) || defined(ALT_Z) tmpch = ch; #endif diff --git a/win/curses/cursmisc.h b/win/curses/cursmisc.h index 6f2c07149..e52d196ad 100644 --- a/win/curses/cursmisc.h +++ b/win/curses/cursmisc.h @@ -8,6 +8,7 @@ /* Global declarations */ +int curses_getch(void); int curses_read_char(void); void curses_toggle_color_attr(WINDOW *win, int color, int attr, int onoff); void curses_menu_color_attr(WINDOW *win, int color, int attr, int onoff);