diff --git a/src/sbbs3/inkey.cpp b/src/sbbs3/inkey.cpp
index 8cbbc78d8fa82b4cc51b25b8db5a68f6b1a6c21f..4a57986f108e0b1ab6fbed15df52ddc841db9018 100644
--- a/src/sbbs3/inkey.cpp
+++ b/src/sbbs3/inkey.cpp
@@ -112,7 +112,23 @@ char sbbs_t::inkey(long mode)
 			if(cfg.hotkey[i]->key==ch)
 				break;
 		if(i<cfg.total_hotkeys) {
+			if(hotkey_inside>1)	/* only allow so much recursion */
+				return(0);
+			if(mode&K_SPIN)
+				bputs("\b ");
+			if(!(sys_status&SS_SPLITP)) {
+				SAVELINE;
+				attr(LIGHTGRAY);
+				CRLF; 
+			}
+			hotkey_inside++;
 			external(cfg.hotkey[i]->cmd,0);
+			hotkey_inside--;
+			if(!(sys_status&SS_SPLITP)) {
+				CRLF;
+				RESTORELINE; 
+			}
+			lncntr=0;
 			return(0);
 		}
 		if(ch==CTRL_O) {	/* Ctrl-O toggles pause temporarily */