diff --git a/hermes_cli/curses_ui.py b/hermes_cli/curses_ui.py index b05295f1e61d7..ec8e8ed5c357f 100644 --- a/hermes_cli/curses_ui.py +++ b/hermes_cli/curses_ui.py @@ -66,6 +66,7 @@ def curses_checklist( def _draw(stdscr): curses.curs_set(0) + stdscr.keypad(True) if curses.has_colors(): curses.start_color() curses.use_default_colors() @@ -195,6 +196,7 @@ def curses_radiolist( def _draw(stdscr): curses.curs_set(0) + stdscr.keypad(True) if curses.has_colors(): curses.start_color() curses.use_default_colors() @@ -332,6 +334,7 @@ def curses_single_select( def _draw(stdscr): curses.curs_set(0) + stdscr.keypad(True) if curses.has_colors(): curses.start_color() curses.use_default_colors() diff --git a/hermes_cli/main.py b/hermes_cli/main.py index b5b95df893f72..eaff63395af4b 100644 --- a/hermes_cli/main.py +++ b/hermes_cli/main.py @@ -402,6 +402,7 @@ def _match(s, query): def _curses_browse(stdscr): curses.curs_set(0) + stdscr.keypad(True) if curses.has_colors(): curses.start_color() curses.use_default_colors() diff --git a/tests/hermes_cli/test_session_browse.py b/tests/hermes_cli/test_session_browse.py index a9d7153c83ac9..c1ee61d5ca66e 100644 --- a/tests/hermes_cli/test_session_browse.py +++ b/tests/hermes_cli/test_session_browse.py @@ -270,6 +270,26 @@ def run_inner(func): with patch("curses.has_colors", return_value=False): return _session_browse_picker(sessions) + def test_curses_enables_keypad_mode(self): + import curses + sessions = _make_sessions(3) + + mock_stdscr = MagicMock() + mock_stdscr.getmaxyx.return_value = (30, 120) + mock_stdscr.getch.side_effect = [10] + + with patch("curses.wrapper") as mock_wrapper: + def run_inner(func): + func(mock_stdscr) + + mock_wrapper.side_effect = run_inner + with patch("curses.curs_set"): + with patch("curses.has_colors", return_value=False): + result = _session_browse_picker(sessions) + + assert result == sessions[0]["id"] + mock_stdscr.keypad.assert_called_once_with(True) + def test_enter_selects_first_session(self): sessions = _make_sessions(3) result = self._run_with_keys(sessions, [10]) # Enter key