From 2fbaee5fc5a48bf8e3491a66836a1c66656358ec Mon Sep 17 00:00:00 2001 From: Russell Schmidt Date: Tue, 21 Jan 2025 12:44:41 -0600 Subject: [PATCH 1/3] Fix input of wide characters --- ui/curses_ui.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ui/curses_ui.py b/ui/curses_ui.py index 6cd30d5..53c8f60 100644 --- a/ui/curses_ui.py +++ b/ui/curses_ui.py @@ -300,7 +300,7 @@ def main_ui(stdscr): # Get user input from entry window entry_win.move(1, len(input_text) + 8) - char = entry_win.getch() + char = entry_win.get_wch() # draw_debug(f"Keypress: {char}") @@ -336,17 +336,18 @@ def main_ui(stdscr): draw_node_list() # Check for Esc - elif char == 27: + # elif isinstance(char, str) and ord(char) == 27: + elif char == chr(27): break # Check for Ctrl + t - elif char == 20: + elif char == chr(20): send_traceroute() curses.curs_set(0) # Hide cursor ui.dialog.dialog(stdscr, "Traceroute Sent", "Results will appear in messages window.\nNote: Traceroute is limited to once every 30 seconds.") curses.curs_set(1) # Show cursor again - elif char == curses.KEY_ENTER or char == 10 or char == 13: + elif char in (chr(curses.KEY_ENTER), chr(10), chr(13)): if globals.current_window == 2: node_list = globals.node_list if node_list[globals.selected_node] not in globals.channel_list: @@ -371,7 +372,7 @@ def main_ui(stdscr): entry_win.clear() # entry_win.refresh() - elif char == curses.KEY_BACKSPACE or char == 127: + elif char in (curses.KEY_BACKSPACE, 127): if input_text: input_text = input_text[:-1] y, x = entry_win.getyx() @@ -380,12 +381,12 @@ def main_ui(stdscr): entry_win.move(y, x - 1) entry_win.refresh() - elif char == 96: # ` Launch the settings interface + elif char == "`": # ` Launch the settings interface curses.curs_set(0) settings_menu(stdscr, globals.interface) curses.curs_set(1) - elif char == 47: + elif char == "/": # Display packet log if globals.display_log is False: globals.display_log = True @@ -396,4 +397,7 @@ def main_ui(stdscr): draw_messages_window() else: # Append typed character to input text - input_text += chr(char) + if(isinstance(char, str)): + input_text += char + else: + input_text += chr(char) From 6384777bb6e66948f499ac197a17fec2f8fd1717 Mon Sep 17 00:00:00 2001 From: Russell Schmidt Date: Tue, 21 Jan 2025 14:58:34 -0600 Subject: [PATCH 2/3] Delete leftover comment --- ui/curses_ui.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/curses_ui.py b/ui/curses_ui.py index 53c8f60..a4e4e0c 100644 --- a/ui/curses_ui.py +++ b/ui/curses_ui.py @@ -336,7 +336,6 @@ def main_ui(stdscr): draw_node_list() # Check for Esc - # elif isinstance(char, str) and ord(char) == 27: elif char == chr(27): break From 1c0704b94005b12cbe1fefb04992e8dcd4ba52eb Mon Sep 17 00:00:00 2001 From: Russell Schmidt Date: Tue, 21 Jan 2025 17:13:46 -0600 Subject: [PATCH 3/3] Handle backspace character Co-authored-by: pdxlocations <117498748+pdxlocations@users.noreply.github.com> --- ui/curses_ui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/curses_ui.py b/ui/curses_ui.py index a4e4e0c..8720497 100644 --- a/ui/curses_ui.py +++ b/ui/curses_ui.py @@ -371,7 +371,7 @@ def main_ui(stdscr): entry_win.clear() # entry_win.refresh() - elif char in (curses.KEY_BACKSPACE, 127): + elif char in (curses.KEY_BACKSPACE, chr(127)): if input_text: input_text = input_text[:-1] y, x = entry_win.getyx()