diff --git a/src/reactor_sim/dashboard.py b/src/reactor_sim/dashboard.py index 1ee5cdd..c3956d2 100644 --- a/src/reactor_sim/dashboard.py +++ b/src/reactor_sim/dashboard.py @@ -17,17 +17,29 @@ from .state import PlantState LOGGER = logging.getLogger(__name__) -_NUMPAD_ROD_KEYS = { - curses.KEY_C1: 0.1, # numpad 1 - curses.KEY_C2: 0.2, # numpad 2 - curses.KEY_C3: 0.3, # numpad 3 - curses.KEY_B1: 0.4, # numpad 4 - curses.KEY_B2: 0.5, # numpad 5 - curses.KEY_B3: 0.6, # numpad 6 - curses.KEY_A1: 0.7, # numpad 7 - curses.KEY_A2: 0.8, # numpad 8 - curses.KEY_A3: 0.9, # numpad 9 -} + +def _build_numpad_mapping() -> dict[int, float]: + # Use keypad matrix constants when available; skip missing ones to avoid import errors on some terminals. + mapping: dict[int, float] = {} + table = { + "KEY_C1": 0.1, # numpad 1 + "KEY_C2": 0.2, # numpad 2 + "KEY_C3": 0.3, # numpad 3 + "KEY_B1": 0.4, # numpad 4 + "KEY_B2": 0.5, # numpad 5 + "KEY_B3": 0.6, # numpad 6 + "KEY_A1": 0.7, # numpad 7 + "KEY_A2": 0.8, # numpad 8 + "KEY_A3": 0.9, # numpad 9 + } + for name, value in table.items(): + code = getattr(curses, name, None) + if code is not None: + mapping[code] = value + return mapping + + +_NUMPAD_ROD_KEYS = _build_numpad_mapping() @dataclass