diff --git a/src/sbbs3/con_out.cpp b/src/sbbs3/con_out.cpp
index ddcb6fc8a82e3ec717fe66fa320f7042de1e2c88..fe67ac143432eaa3d4b788750afdf830b54e6ba6 100644
--- a/src/sbbs3/con_out.cpp
+++ b/src/sbbs3/con_out.cpp
@@ -519,7 +519,7 @@ long sbbs_t::term_supports(long cmp_flags)
 	long flags = ((sys_status&SS_USERON) && !(useron.misc&AUTOTERM)) ? useron.misc : autoterm;
 
 	if((sys_status&SS_USERON) && (useron.misc&AUTOTERM))
-		flags |= useron.misc & (NO_EXASCII | SWAP_DELETE | COLOR | ICE_COLOR);
+		flags |= useron.misc & (NO_EXASCII | SWAP_DELETE | COLOR | ICE_COLOR | MOUSE);
 
 	return(cmp_flags ? ((flags&cmp_flags)==cmp_flags) : (flags&TERM_FLAGS));
 }
diff --git a/src/sbbs3/inkey.cpp b/src/sbbs3/inkey.cpp
index 2af3a12434af727db04643dc81fd304ca73286b0..96d64604b35c31edfb1f67158399339651a3cc9f 100644
--- a/src/sbbs3/inkey.cpp
+++ b/src/sbbs3/inkey.cpp
@@ -390,7 +390,7 @@ char sbbs_t::handle_ctrlkey(char ch, long mode)
 								return handle_ctrlkey(TERM_KEY_ABORT, mode);
 							return 0;
 						}
-						if(pause_inside)
+						if(pause_inside && y == rows - 1)
 							return '\r';
 					} else if(button == '`' && console&CON_MOUSE_SCROLL) {
 						return TERM_KEY_UP;
@@ -464,7 +464,7 @@ char sbbs_t::handle_ctrlkey(char ch, long mode)
 								return handle_ctrlkey(TERM_KEY_ABORT, mode);
 							return 0;
 						}
-						if(pause_inside)
+						if(pause_inside && y == rows - 1)
 							return '\r';
 					} else if(button == 0x40 && console&CON_MOUSE_SCROLL) {
 						return TERM_KEY_UP;
@@ -559,7 +559,7 @@ char sbbs_t::handle_ctrlkey(char ch, long mode)
 
 void sbbs_t::set_mouse(long flags)
 {
-	if(term_supports(ANSI)) {
+	if(term_supports(ANSI|MOUSE)) {
 		long mode = mouse_mode & ~flags;
 		if(mode & MOUSE_MODE_X10)	ansi_mouse(ANSI_MOUSE_X10, false);
 		if(mode & MOUSE_MODE_NORM)	ansi_mouse(ANSI_MOUSE_NORM, false);
diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index e99678980384d0130f86f3b092d7d38be7be8531..3284d34dcc18e8c93052e51dc69e080aed0b01a4 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -80,10 +80,12 @@ bool sbbs_t::logon()
 	if(useron.rest&FLAG('G')) {     /* Guest account */
 		useron.misc=(cfg.new_misc&(~ASK_NSCAN));
 		useron.rows=0;
-		useron.misc&=~(ANSI|RIP|NO_EXASCII|COLOR|PETSCII);
+		useron.misc &= ~TERM_FLAGS;
 		useron.misc|=autoterm;
 		if(!(useron.misc&(ANSI|PETSCII)) && text[AnsiTerminalQ][0] && yesno(text[AnsiTerminalQ]))
 			useron.misc|=ANSI;
+		if((useron.misc&ANSI) && text[MouseTerminalQ][0] && yesno(text[MouseTerminalQ]))
+			useron.misc|=MOUSE;
 		if((useron.misc&RIP) || !(cfg.uq&UQ_COLORTERM)
 			|| (useron.misc&(ANSI|PETSCII) && yesno(text[ColorTerminalQ])))
 			useron.misc|=COLOR;
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index 1dd69fe688bc83163ae43d625746e5cc180cd5c2..c57e0fb7583aac0c1da061bc48eb651e71ceb2fc 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -165,6 +165,10 @@ BOOL sbbs_t::newuser()
 				useron.misc|=COLOR; 
 			else
 				useron.misc&=~COLOR;
+			if(text[MouseTerminalQ][0] && yesno(text[MouseTerminalQ]))
+				useron.misc |= MOUSE;
+			else
+				useron.misc &= ~MOUSE;
 		}
 		else
 			useron.rows = TERM_ROWS_DEFAULT;
diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index 5c6c3a65b57cf75af4325e1b651fadc4bd0bbebd..e7d8b4fd356de35a4e0236d48b82391d36f4b103 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -668,8 +668,9 @@ typedef enum {						/* Values for xtrn_t.event				*/
 #define SWAP_DELETE	(1L<<27)		/* Swap Delete and Backspace keys		*/
 #define ICE_COLOR	(1L<<28)		/* Bright background color support		*/
 #define UTF8		(1L<<29)		/* UTF-8 terminal						*/
+#define MOUSE		(1L<<31)		/* Mouse supported terminal				*/
 
-#define TERM_FLAGS		(ANSI|COLOR|NO_EXASCII|RIP|WIP|HTML|PETSCII|SWAP_DELETE|ICE_COLOR|UTF8)
+#define TERM_FLAGS		(ANSI|COLOR|RIP|WIP|HTML|SWAP_DELETE|ICE_COLOR|MOUSE|CHARSET_FLAGS)
 #define CHARSET_FLAGS	(NO_EXASCII|PETSCII|UTF8)
 #define CHARSET_ASCII	NO_EXASCII	// US-ASCII
 #define CHARSET_PETSCII	PETSCII		// CBM-ASCII
diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h
index 6065e3a5b49fa337587dff7cea7cb70e82dc01e4..83d59069c10e71bfdeb436f6ad1ba08357a92e62 100644
--- a/src/sbbs3/text.h
+++ b/src/sbbs3/text.h
@@ -841,6 +841,8 @@ enum {
 	,MsgPostedToYouVia
 	,Unlimited
 	,NodeConnectionRaw
+	,MouseTerminalQ
+	,TerminalMouse
 
 	,TOTAL_TEXT
 };
diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c
index b83d6415b28968a2774c28e493a973f19cd2f697..d4f8d8fcd785d2cc7cfdbecbf4394e0958252897 100644
--- a/src/sbbs3/text_defaults.c
+++ b/src/sbbs3/text_defaults.c
@@ -1351,7 +1351,7 @@ const char * const text_defaults[TOTAL_TEXT]={
 		"\x65\x63\x74\x65\x64\x2e\x0d\x0a" // 815 PetTerminalDetected
 	,"\x41\x72\x65\x20\x79\x6f\x75\x20\x75\x73\x69\x6e\x67\x20\x61\x20\x43\x42\x4d\x2f\x50\x45\x54\x53\x43\x49\x49\x20\x74\x65\x72\x6d"
 		"\x69\x6e\x61\x6c" // 816 PetTerminalQ
-	,"\x41\x75\x74\x6f\x20\x44\x65\x74\x65\x63\x74\x20" // 817 TerminalAutoDetect
+	,"\x41\x75\x74\x6f\x20" // 817 TerminalAutoDetect
 	,"\x63\x6f\x6c\x75\x6d\x6e\x73" // 818 TerminalColumns
 	,"\x72\x6f\x77\x73" // 819 TerminalRows
 	,"\x28\x6d\x6f\x6e\x6f\x29\x20" // 820 TerminalMonochrome
@@ -1372,4 +1372,7 @@ const char * const text_defaults[TOTAL_TEXT]={
 		"\x6e\x20\x01\x68\x25\x73\x20\x01\x6e\x01\x6d\x25\x73\x0d\x0a" // 828 MsgPostedToYouVia
 	,"\x75\x6e\x6c\x69\x6d\x69\x74\x65\x64" // 829 Unlimited
 	,"\x20\x76\x69\x61\x20\x72\x61\x77" // 830 NodeConnectionRaw
+	,"\x44\x6f\x65\x73\x20\x79\x6f\x75\x72\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x6d\x6f\x75\x73\x65"
+		"\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67" // 831 MouseTerminalQ
+	,"\x28\x6d\x6f\x75\x73\x65\x29\x20" // 832 TerminalMouse
 };
diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp
index b72c91bc0dac256215942ec6a3488ce99862c29a..1a48fd2fb0704540b9ee5bd8fa8eedcf8c084ea8 100644
--- a/src/sbbs3/useredit.cpp
+++ b/src/sbbs3/useredit.cpp
@@ -806,11 +806,12 @@ void sbbs_t::maindflts(user_t* user)
 							,user->misc&AUTOTERM ? text[TerminalAutoDetect]:nulstr
 							,cols, text[TerminalColumns]);
 		else
-			safe_snprintf(str,sizeof(str),"%s%s / %s %s%s"
+			safe_snprintf(str,sizeof(str),"%s%s / %s %s%s%s"
 							,user->misc&AUTOTERM ? text[TerminalAutoDetect]:nulstr
 							,term_charset(term)
 							,term_type(term)
 							,term&COLOR ? (term&ICE_COLOR ? text[TerminalIceColor] : text[TerminalColor]) : text[TerminalMonochrome]
+							,term&MOUSE ? text[TerminalMouse] : ""
 							,term&SWAP_DELETE ? "DEL=BS" : nulstr);
 		add_hotspot('T');
 		bprintf(text[UserDefaultsTerminal], truncsp(str));
@@ -950,6 +951,14 @@ void sbbs_t::maindflts(user_t* user)
 					} else
 						user->misc &= ~COLOR;
 				}
+				if(sys_status&SS_ABORT)
+					break;
+				if(term&ANSI) {
+					if(text[MouseTerminalQ][0] && yesno(text[MouseTerminalQ]))
+						user->misc |= MOUSE;
+					else
+						user->misc &= ~MOUSE;
+				}
 				if(sys_status&SS_ABORT)
 					break;
 				if(!(term&PETSCII)) {