From 0c810e2bd5e5755775e05953acb2fd1d205fdac3 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 4 Oct 2014 09:04:59 +0000
Subject: [PATCH] Display a different Ctrl-K output string (menu) when in "get
 string" mode since there are several control keys which have special use in
 this mode, but not in others and Ctrl-Z is in fact different in both modes
 (raw input vs. undo). Updated the default ControlKeyMenu text.dat string
 (e.g. removed Ctrl-S and Ctrl-Q since they actually have no globally defined
 use).

---
 ctrl/text.dat             | 35 +++++++++++++++++++++++------
 src/sbbs3/inkey.cpp       |  9 +++++---
 src/sbbs3/text.h          |  1 +
 src/sbbs3/text_defaults.c | 46 ++++++++++++++++++++++++++++++---------
 4 files changed, 71 insertions(+), 20 deletions(-)

diff --git a/ctrl/text.dat b/ctrl/text.dat
index a1440b64b0..b0dc4e86f9 100644
--- a/ctrl/text.dat
+++ b/ctrl/text.dat
@@ -672,14 +672,13 @@
 "\r\nNow       : %s"                                    553 TiNow
 "\r\nTime on   : %s"                                    554 TiTimeon
 "\r\nTime left : %s\r\n\r\n"                            555 TiTimeLeft
-"\r\n\r\n\1nCtrl-Key Commands (From Anywhere)\r\n"\      556 ControlKeyMenu
-	"\r\nCtrl-S  Pause Current Process"\
-	"\r\nCtrl-Q  Continue Current Process"\
+"\r\n\r\n\1nCtrl-Key Commands (from most anywhere)\r\n"\ 556 ControlKeyMenu
+        "\r\nCtrl-K  This Menu"\
 	"\r\nCtrl-C  Abort Current Process"\
-	"\r\nCtrl-O  Toggle Pause Temporarily"\
-	"\r\nCtrl-Z  Toggle Raw Input Mode"\
+	"\r\nCtrl-O  Toggle Pause Prompt Temporarily"\
+	"\r\nCtrl-Z  Toggle Raw Input Mode (e.g. for ASCII-uploading message text)"\
 	"\r\nCtrl-U  List Users Online"\
-	"\r\nCtrl-P  Send Private Message to Another Node"\
+	"\r\nCtrl-P  Send Private Message To or Chat with Another Node"\
 	"\r\nCtrl-T  Time Information\r\n\r\n"
 "\r\n\1nYou've taken too long to log on.\r\n"            557 TakenTooLongToLogon
 "\r\n\1nYou've been inactive too long.\r\n"              558 CallBackWhenYoureThere
@@ -910,4 +909,26 @@
 "\r\n\1y\1hOperator: \1w"				761 OperatorPrompt
 "Add this sub-board to your new-scan list"         762 AddSubToNewScanQ
 "\1n\1r\1iWARNING: You are reading messages past the last unvalidated message (%u)" 763 UnvalidatedWarning
-"\1n\1hStarting the new user registration process...\r\n" 764 StartingNewUserRegistration
\ No newline at end of file
+"\1n\1hStarting the new user registration process...\r\n" 764 StartingNewUserRegistration
+"\r\n\r\n\1nCtrl-Key Commands (during text string input)\r\n"\ 765 GetStrMenu
+        "\r\nCtrl-K  This Menu"\
+	"\r\nCtrl-C  Abort Current String Input"\
+        "\r\nCtrl-B  Move to Beginning of String"\
+        "\r\nCtrl-E  Move to End of String"\
+        "\r\nCtrl-F  Move Cursor Forward (to the right)"\
+        "\r\nCtrl-N  Move to Next Word in String"\
+        "\r\nCtrl-\\  Move to Previous Word in String"\
+        "\r\nCtrl-D  Delete Word to the Right"\
+        "\r\nCtrl-W  Delete Word to the Left"\
+        "\r\nCtrl-H  Delete Character to the Left"\
+        "\r\nCtrl-Y  Delete to End of String"\
+        "\r\nCtrl-X  Delete Entire String"\
+        "\r\nCtrl-L  Center String (and complete input)"\
+	"\r\nCtrl-Z  Undo (revert edited string)"\
+        "\r\nCtrl-V  Toggle Insert/Overwrite Mode"\
+        "\r\nCtrl-R  Redraw Line"\
+        "\r\nCtrl-A  Insert Attribute Code (if allowed)"\
+        "\r\nCtrl-G  Insert Beep (if allowed)"\
+	"\r\nCtrl-U  List Users Online"\
+	"\r\nCtrl-P  Send Private Message To or Chat With Another Node"\
+	"\r\nCtrl-T  Time Information\r\n\r\n"
diff --git a/src/sbbs3/inkey.cpp b/src/sbbs3/inkey.cpp
index cf4d511f89..554c894532 100644
--- a/src/sbbs3/inkey.cpp
+++ b/src/sbbs3/inkey.cpp
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2011 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2014 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -246,7 +246,7 @@ char sbbs_t::handle_ctrlkey(char ch, long mode)
 			lncntr=0;
 			hotkey_inside--;
 			return(0); 
-		case CTRL_K:  /*  Ctrl-k Control key menu */
+		case CTRL_K:  /*  Ctrl-K Control key menu */
 			if(sys_status&SS_SPLITP)
 				return(ch);
 			if(!(sys_status&SS_USERON))
@@ -259,7 +259,10 @@ char sbbs_t::handle_ctrlkey(char ch, long mode)
 			SAVELINE;
 			attr(LIGHTGRAY);
 			lncntr=0;
-			bputs(text[ControlKeyMenu]);
+			if(mode&K_GETSTR)
+				bputs(text[GetStrMenu]);
+			else
+				bputs(text[ControlKeyMenu]);
 			ASYNC;
 			RESTORELINE;
 			lncntr=0;
diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h
index ccae7cffde..264211a355 100644
--- a/src/sbbs3/text.h
+++ b/src/sbbs3/text.h
@@ -808,6 +808,7 @@ enum {
 	,AddSubToNewScanQ
 	,UnvalidatedWarning
 	,StartingNewUserRegistration
+	,GetStrMenu
 
 	,TOTAL_TEXT
 };
diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c
index f108ae0cf4..44ea0eaa9b 100644
--- a/src/sbbs3/text_defaults.c
+++ b/src/sbbs3/text_defaults.c
@@ -906,16 +906,17 @@ const char * const text_defaults[TOTAL_TEXT]={
 	,"\x0d\x0a\x4e\x6f\x77\x20\x20\x20\x20\x20\x20\x20\x3a\x20\x25\x73"
 	,"\x0d\x0a\x54\x69\x6d\x65\x20\x6f\x6e\x20\x20\x20\x3a\x20\x25\x73"
 	,"\x0d\x0a\x54\x69\x6d\x65\x20\x6c\x65\x66\x74\x20\x3a\x20\x25\x73\x0d\x0a\x0d\x0a"
-	,"\x0d\x0a\x0d\x0a\x01\x6e\x43\x74\x72\x6c\x2d\x4b\x65\x79\x20\x43\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x28\x46\x72\x6f\x6d\x20\x41\x6e"
-		"\x79\x77\x68\x65\x72\x65\x29\x0d\x0a\x0d\x0a\x43\x74\x72\x6c\x2d\x53\x20\x20\x50\x61\x75\x73\x65\x20\x43\x75\x72\x72\x65\x6e\x74"
-		"\x20\x50\x72\x6f\x63\x65\x73\x73\x0d\x0a\x43\x74\x72\x6c\x2d\x51\x20\x20\x43\x6f\x6e\x74\x69\x6e\x75\x65\x20\x43\x75\x72\x72\x65"
-		"\x6e\x74\x20\x50\x72\x6f\x63\x65\x73\x73\x0d\x0a\x43\x74\x72\x6c\x2d\x43\x20\x20\x41\x62\x6f\x72\x74\x20\x43\x75\x72\x72\x65\x6e"
-		"\x74\x20\x50\x72\x6f\x63\x65\x73\x73\x0d\x0a\x43\x74\x72\x6c\x2d\x4f\x20\x20\x54\x6f\x67\x67\x6c\x65\x20\x50\x61\x75\x73\x65\x20"
-		"\x54\x65\x6d\x70\x6f\x72\x61\x72\x69\x6c\x79\x0d\x0a\x43\x74\x72\x6c\x2d\x5a\x20\x20\x54\x6f\x67\x67\x6c\x65\x20\x52\x61\x77\x20"
-		"\x49\x6e\x70\x75\x74\x20\x4d\x6f\x64\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x55\x20\x20\x4c\x69\x73\x74\x20\x55\x73\x65\x72\x73\x20\x4f"
-		"\x6e\x6c\x69\x6e\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x50\x20\x20\x53\x65\x6e\x64\x20\x50\x72\x69\x76\x61\x74\x65\x20\x4d\x65\x73\x73"
-		"\x61\x67\x65\x20\x74\x6f\x20\x41\x6e\x6f\x74\x68\x65\x72\x20\x4e\x6f\x64\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x54\x20\x20\x54\x69\x6d"
-		"\x65\x20\x49\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0d\x0a\x0d\x0a"
+	,"\x0d\x0a\x0d\x0a\x01\x6e\x43\x74\x72\x6c\x2d\x4b\x65\x79\x20\x43\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x28\x66\x72\x6f\x6d\x20\x6d\x6f"
+		"\x73\x74\x20\x61\x6e\x79\x77\x68\x65\x72\x65\x29\x0d\x0a\x0d\x0a\x43\x74\x72\x6c\x2d\x4b\x20\x20\x54\x68\x69\x73\x20\x4d\x65\x6e"
+		"\x75\x0d\x0a\x43\x74\x72\x6c\x2d\x43\x20\x20\x41\x62\x6f\x72\x74\x20\x43\x75\x72\x72\x65\x6e\x74\x20\x50\x72\x6f\x63\x65\x73\x73"
+		"\x0d\x0a\x43\x74\x72\x6c\x2d\x4f\x20\x20\x54\x6f\x67\x67\x6c\x65\x20\x50\x61\x75\x73\x65\x20\x50\x72\x6f\x6d\x70\x74\x20\x54\x65"
+		"\x6d\x70\x6f\x72\x61\x72\x69\x6c\x79\x0d\x0a\x43\x74\x72\x6c\x2d\x5a\x20\x20\x54\x6f\x67\x67\x6c\x65\x20\x52\x61\x77\x20\x49\x6e"
+		"\x70\x75\x74\x20\x4d\x6f\x64\x65\x20\x28\x65\x2e\x67\x2e\x20\x66\x6f\x72\x20\x41\x53\x43\x49\x49\x2d\x75\x70\x6c\x6f\x61\x64\x69"
+		"\x6e\x67\x20\x6d\x65\x73\x73\x61\x67\x65\x20\x74\x65\x78\x74\x29\x0d\x0a\x43\x74\x72\x6c\x2d\x55\x20\x20\x4c\x69\x73\x74\x20\x55"
+		"\x73\x65\x72\x73\x20\x4f\x6e\x6c\x69\x6e\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x50\x20\x20\x53\x65\x6e\x64\x20\x50\x72\x69\x76\x61\x74"
+		"\x65\x20\x4d\x65\x73\x73\x61\x67\x65\x20\x54\x6f\x20\x6f\x72\x20\x43\x68\x61\x74\x20\x77\x69\x74\x68\x20\x41\x6e\x6f\x74\x68\x65"
+		"\x72\x20\x4e\x6f\x64\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x54\x20\x20\x54\x69\x6d\x65\x20\x49\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e"
+		"\x0d\x0a\x0d\x0a"
 	,"\x0d\x0a\x01\x6e\x59\x6f\x75\x27\x76\x65\x20\x74\x61\x6b\x65\x6e\x20\x74\x6f\x6f\x20\x6c\x6f\x6e\x67\x20\x74\x6f\x20\x6c\x6f\x67"
 		"\x20\x6f\x6e\x2e\x0d\x0a"
 	,"\x0d\x0a\x01\x6e\x59\x6f\x75\x27\x76\x65\x20\x62\x65\x65\x6e\x20\x69\x6e\x61\x63\x74\x69\x76\x65\x20\x74\x6f\x6f\x20\x6c\x6f\x6e"
@@ -1231,4 +1232,29 @@ const char * const text_defaults[TOTAL_TEXT]={
 		"\x64\x20\x6d\x65\x73\x73\x61\x67\x65\x20\x28\x25\x75\x29"
 	,"\x01\x6e\x01\x68\x53\x74\x61\x72\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x6e\x65\x77\x20\x75\x73\x65\x72\x20\x72\x65\x67\x69\x73\x74"
 		"\x72\x61\x74\x69\x6f\x6e\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x2e\x2e\x0d\x0a"
+	,"\x0d\x0a\x0d\x0a\x01\x6e\x43\x74\x72\x6c\x2d\x4b\x65\x79\x20\x43\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x28\x64\x75\x72\x69\x6e\x67\x20"
+		"\x74\x65\x78\x74\x20\x73\x74\x72\x69\x6e\x67\x20\x69\x6e\x70\x75\x74\x29\x0d\x0a\x0d\x0a\x43\x74\x72\x6c\x2d\x4b\x20\x20\x54\x68"
+		"\x69\x73\x20\x4d\x65\x6e\x75\x0d\x0a\x43\x74\x72\x6c\x2d\x43\x20\x20\x41\x62\x6f\x72\x74\x20\x43\x75\x72\x72\x65\x6e\x74\x20\x53"
+		"\x74\x72\x69\x6e\x67\x20\x49\x6e\x70\x75\x74\x0d\x0a\x43\x74\x72\x6c\x2d\x42\x20\x20\x4d\x6f\x76\x65\x20\x74\x6f\x20\x42\x65\x67"
+		"\x69\x6e\x6e\x69\x6e\x67\x20\x6f\x66\x20\x53\x74\x72\x69\x6e\x67\x0d\x0a\x43\x74\x72\x6c\x2d\x45\x20\x20\x4d\x6f\x76\x65\x20\x74"
+		"\x6f\x20\x45\x6e\x64\x20\x6f\x66\x20\x53\x74\x72\x69\x6e\x67\x0d\x0a\x43\x74\x72\x6c\x2d\x46\x20\x20\x4d\x6f\x76\x65\x20\x43\x75"
+		"\x72\x73\x6f\x72\x20\x46\x6f\x72\x77\x61\x72\x64\x20\x28\x74\x6f\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x29\x0d\x0a\x43\x74\x72"
+		"\x6c\x2d\x4e\x20\x20\x4d\x6f\x76\x65\x20\x74\x6f\x20\x4e\x65\x78\x74\x20\x57\x6f\x72\x64\x20\x69\x6e\x20\x53\x74\x72\x69\x6e\x67"
+		"\x0d\x0a\x43\x74\x72\x6c\x2d\x5c\x20\x20\x4d\x6f\x76\x65\x20\x74\x6f\x20\x50\x72\x65\x76\x69\x6f\x75\x73\x20\x57\x6f\x72\x64\x20"
+		"\x69\x6e\x20\x53\x74\x72\x69\x6e\x67\x0d\x0a\x43\x74\x72\x6c\x2d\x44\x20\x20\x44\x65\x6c\x65\x74\x65\x20\x57\x6f\x72\x64\x20\x74"
+		"\x6f\x20\x74\x68\x65\x20\x52\x69\x67\x68\x74\x0d\x0a\x43\x74\x72\x6c\x2d\x57\x20\x20\x44\x65\x6c\x65\x74\x65\x20\x57\x6f\x72\x64"
+		"\x20\x74\x6f\x20\x74\x68\x65\x20\x4c\x65\x66\x74\x0d\x0a\x43\x74\x72\x6c\x2d\x48\x20\x20\x44\x65\x6c\x65\x74\x65\x20\x43\x68\x61"
+		"\x72\x61\x63\x74\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x4c\x65\x66\x74\x0d\x0a\x43\x74\x72\x6c\x2d\x59\x20\x20\x44\x65\x6c\x65"
+		"\x74\x65\x20\x74\x6f\x20\x45\x6e\x64\x20\x6f\x66\x20\x53\x74\x72\x69\x6e\x67\x0d\x0a\x43\x74\x72\x6c\x2d\x58\x20\x20\x44\x65\x6c"
+		"\x65\x74\x65\x20\x45\x6e\x74\x69\x72\x65\x20\x53\x74\x72\x69\x6e\x67\x0d\x0a\x43\x74\x72\x6c\x2d\x4c\x20\x20\x43\x65\x6e\x74\x65"
+		"\x72\x20\x53\x74\x72\x69\x6e\x67\x20\x28\x61\x6e\x64\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x20\x69\x6e\x70\x75\x74\x29\x0d\x0a\x43"
+		"\x74\x72\x6c\x2d\x5a\x20\x20\x55\x6e\x64\x6f\x20\x28\x72\x65\x76\x65\x72\x74\x20\x65\x64\x69\x74\x65\x64\x20\x73\x74\x72\x69\x6e"
+		"\x67\x29\x0d\x0a\x43\x74\x72\x6c\x2d\x56\x20\x20\x54\x6f\x67\x67\x6c\x65\x20\x49\x6e\x73\x65\x72\x74\x2f\x4f\x76\x65\x72\x77\x72"
+		"\x69\x74\x65\x20\x4d\x6f\x64\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x52\x20\x20\x52\x65\x64\x72\x61\x77\x20\x4c\x69\x6e\x65\x0d\x0a\x43"
+		"\x74\x72\x6c\x2d\x41\x20\x20\x49\x6e\x73\x65\x72\x74\x20\x41\x74\x74\x72\x69\x62\x75\x74\x65\x20\x43\x6f\x64\x65\x20\x28\x69\x66"
+		"\x20\x61\x6c\x6c\x6f\x77\x65\x64\x29\x0d\x0a\x43\x74\x72\x6c\x2d\x47\x20\x20\x49\x6e\x73\x65\x72\x74\x20\x42\x65\x65\x70\x20\x28"
+		"\x69\x66\x20\x61\x6c\x6c\x6f\x77\x65\x64\x29\x0d\x0a\x43\x74\x72\x6c\x2d\x55\x20\x20\x4c\x69\x73\x74\x20\x55\x73\x65\x72\x73\x20"
+		"\x4f\x6e\x6c\x69\x6e\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x50\x20\x20\x53\x65\x6e\x64\x20\x50\x72\x69\x76\x61\x74\x65\x20\x4d\x65\x73"
+		"\x73\x61\x67\x65\x20\x54\x6f\x20\x6f\x72\x20\x43\x68\x61\x74\x20\x57\x69\x74\x68\x20\x41\x6e\x6f\x74\x68\x65\x72\x20\x4e\x6f\x64"
+		"\x65\x0d\x0a\x43\x74\x72\x6c\x2d\x54\x20\x20\x54\x69\x6d\x65\x20\x49\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0d\x0a\x0d\x0a"
 };
-- 
GitLab