diff --git a/src/sbbs3/ansi_terminal.cpp b/src/sbbs3/ansi_terminal.cpp
index e5849eac8210899bac77a3045135153f32467afd..4e2d4a178ec8a928e87902866262fd42ca16a4ec 100644
--- a/src/sbbs3/ansi_terminal.cpp
+++ b/src/sbbs3/ansi_terminal.cpp
@@ -1196,9 +1196,15 @@ bool ANSI_Terminal::parse_input_sequence(char& ch, int mode) {
 					if (ansi.ansi_sequence[2] == '<') {
 						switch (ansi.ansi_final_byte) {
 							case 'm':
-								return handle_SGR_mouse_sequence(ch, ansi, true);
+								if (handle_SGR_mouse_sequence(ch, ansi, true))
+									return true;
+								ch = 0;
+								return false;
 							case 'M':
-								return handle_SGR_mouse_sequence(ch, ansi, false);
+								if (handle_SGR_mouse_sequence(ch, ansi, false))
+									return true;
+								ch = 0;
+								return false;
 						}
 					}
 				}