about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2013-10-12 00:24:53 -0400
committerThomas E. Dickey <dickey@invisible-island.net>2013-10-12 00:24:53 -0400
commitf1977d62c94d74a72d1c7a4abbbecdec21e3980e (patch)
treeecb76b7a0c4542b1a71eb73bd0eb78c128d51f8f
parent6c554d1e336d6263a0e1436690451566ce256abc (diff)
downloadlynx-snapshots-f1977d62c94d74a72d1c7a4abbbecdec21e3980e.tar.gz
snapshot of project "lynx", label v2-8-8dev_16p
-rw-r--r--CHANGES9
-rw-r--r--PACKAGE/lynx.nsi40
-rw-r--r--WWW/Library/Implementation/HTFTP.c33
-rw-r--r--samples/lynx.bat17
-rw-r--r--samples/oldlynx.bat22
-rw-r--r--src/LYClean.c73
-rw-r--r--src/LYClean.h1
-rw-r--r--src/LYCurses.h4
-rw-r--r--src/LYEditmap.c2168
-rw-r--r--src/LYForms.c4
-rw-r--r--src/LYKeymap.c8
-rw-r--r--src/LYKeymap.h8
-rw-r--r--src/LYMain.c3
-rw-r--r--src/LYMainLoop.c14
-rw-r--r--src/LYOptions.c5
-rw-r--r--src/LYStrings.h23
-rw-r--r--src/LYUtils.c5
17 files changed, 1421 insertions, 1016 deletions
diff --git a/CHANGES b/CHANGES
index 26f25970..ce0ecf82 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,9 +1,14 @@
--- $LynxId: CHANGES,v 1.677 2013/10/09 19:20:47 tom Exp $
+-- $LynxId: CHANGES,v 1.678 2013/10/11 09:47:44 tom Exp $
 ===============================================================================
 Changes since Lynx 2.8 release
 ===============================================================================
 
-2013-10-09 (2.8.8dev.17)
+2013-10-11 (2.8.8dev.17)
+* modify tables for edit-bindings to allow them to be reloaded to their initial
+  values -TD
+* add check in get_connection() for ftp-connections to ensure that a password
+  from a URL is non-empty -TD
+* add samples/oldlynx.bat to demonstrate how to use non-color-style -TD
 * add NSIS script, to allow building Windows installer via cross-compiling -TD
 * fixes to configure script and makefiles to work with empty $prefix, e.g.,
   as used in MSYS -TD
diff --git a/PACKAGE/lynx.nsi b/PACKAGE/lynx.nsi
index 25bbec1b..c7c0e51b 100644
--- a/PACKAGE/lynx.nsi
+++ b/PACKAGE/lynx.nsi
@@ -1,4 +1,4 @@
-; $LynxId: lynx.nsi,v 1.3 2013/10/09 19:06:24 tom Exp $

+; $LynxId: lynx.nsi,v 1.5 2013/10/10 09:34:22 tom Exp $

 ; Script originally generated with the Venis Install Wizard, but customized.

 ; The Inno Setup script is preferred; but this can be built via cross-compiling.

 

@@ -83,38 +83,31 @@ Section "${APPNAME}" Section1
 	CreateShortCut "$SENDTO\${APPNAME}.lnk" "$INSTDIR\${EXENAME}"

 	CreateDirectory "$SMPROGRAMS\${INSTALL}"

 	CreateShortCut "$SMPROGRAMS\${INSTALL}\${INSTALL}.lnk" "$INSTDIR\${EXENAME}"

+	CreateShortCut "$SMPROGRAMS\${INSTALL}\${APPNAME} - Help.lnk" "$INSTDIR\help\lynx_help_main.html"

 	CreateShortCut "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" "$INSTDIR\uninstall.exe"

 

 	File ".\share\lynx_doc\samples\*.lss"

 

 	; preinstall lynx.cfg as a temporary file

-	File /oname=config.tmp ".\etc\${LYNX_CFG}"

+	File /oname=${LYNX_CFG} ".\etc\${LYNX_CFG}"

 

 	; at install-time, append our customization

-	FileOpen $0 "config.tmp" r

-	FileOpen $1 ".\${LYNX_CFG}" w

-	loop:

-		FileRead $0 $2

-		IfErrors done

-		FileWrite $1 "$2"

-		goto loop

-	done:

-		FileWrite $1 "HELPFILE:$INSTDIR\help\Lynx_help_main.html.gz$\n"

-		FileWrite $1 "COLOR_STYLE:$INSTDIR\opaque.lss$\n"

-		FileWrite $1 "CHMOD_PATH:$\n"

-		FileWrite $1 "COPY_PATH:$\n"

-		FileWrite $1 "MKDIR_PATH:$\n"

-		FileWrite $1 "MV_PATH:$\n"

-		FileWrite $1 "RMDIR_PATH:$\n"

-		FileWrite $1 "RM_PATH:$\n"

-		FileWrite $1 "TOUCH_PATH:$\n"

+	FileOpen $0 "${LYNX_CFG}" a

+	FileSeek $0 0 END

+	FileWrite $0 "HELPFILE:$INSTDIR\help\Lynx_help_main.html.gz$\n"

+	FileWrite $0 "COLOR_STYLE:$INSTDIR\opaque.lss$\n"

+	FileWrite $0 "CHMOD_PATH:$\n"

+	FileWrite $0 "COPY_PATH:$\n"

+	FileWrite $0 "MKDIR_PATH:$\n"

+	FileWrite $0 "MV_PATH:$\n"

+	FileWrite $0 "RMDIR_PATH:$\n"

+	FileWrite $0 "RM_PATH:$\n"

+	FileWrite $0 "TOUCH_PATH:$\n"

 	FileClose $0

-	FileClose $1

-

-	Delete "config.tmp"

 

 	File "..\samples\lynx.bat"

 	File "..\samples\lynx-demo.cfg"

+	File "..\samples\oldlynx.bat"

 

 	File "..\samples\jumps.htm"

 	File "..\samples\home.htm"

@@ -199,7 +192,8 @@ Section Uninstall
 	; Delete Shortcuts

 	Delete "$DESKTOP\${APPNAME}.lnk"

 	Delete "$SENDTO\${APPNAME}.lnk"

-	Delete "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk"

+	Delete "$SMPROGRAMS\${INSTALL}\${INSTALL}.lnk"

+	Delete "$SMPROGRAMS\${INSTALL}\${APPNAME} - Help.lnk"

 	Delete "$SMPROGRAMS\${INSTALL}\Uninstall.lnk"

 

 	; Clean up application

diff --git a/WWW/Library/Implementation/HTFTP.c b/WWW/Library/Implementation/HTFTP.c
index 904ed845..5653cd69 100644
--- a/WWW/Library/Implementation/HTFTP.c
+++ b/WWW/Library/Implementation/HTFTP.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTFTP.c,v 1.121 2013/05/06 00:09:50 tom Exp $
+ * $LynxId: HTFTP.c,v 1.124 2013/10/11 09:21:37 tom Exp $
  *
  *			File Transfer Protocol (FTP) Client
  *			for a WorldWideWeb browser
@@ -96,9 +96,8 @@
 
 typedef struct _connection {
     struct _connection *next;	/* Link on list         */
-    unsigned long addr;		/* IP address           */
     int socket;			/* Socket number for communication */
-    BOOL binary;		/* Binary mode? */
+    BOOL is_binary;		/* Binary mode? */
 } connection;
 
 /*		Hypertext object building machinery
@@ -812,20 +811,15 @@ static int get_connection(const char *arg,
 	firstuse = FALSE;
     }
 
-    if (control) {
-	/*
-	 * Reuse this object - KW, DW & FM
-	 */
+    if (control != 0) {
+	connection *next = control->next;
+
 	if (control->socket != -1) {
 	    NETCLOSE(control->socket);
 	}
-	con = control;
-	con->addr = 0;
-	con->binary = FALSE;
+	memset(con = control, 0, sizeof(*con));
+	con->next = next;
     } else {
-	/*
-	 * Allocate and init control struct.
-	 */
 	con = typecalloc(connection);
 	if (con == NULL)
 	    outofmem(__FILE__, "get_connection");
@@ -957,14 +951,11 @@ static int get_connection(const char *arg,
 	CheckForInterrupt("while sending username");
     }
     if (status == 3) {		/* Send password */
-	if (password) {
-	    /*
-	     * We have non-zero length password, so send it. - FM
-	     */
+	if (non_empty(password)) {
 	    HTSprintf0(&command, "PASS %s%c%c", password, CR, LF);
 	} else {
 	    /*
-	     * Create and send a mail address as the password. - FM
+	     * No password was given; use mail-address.
 	     */
 	    const char *the_address;
 	    char *user = NULL;
@@ -3650,7 +3641,7 @@ int HTFTPLoad(const char *name,
 	     */
 	    binary = FALSE;
 	}
-	if (binary != control->binary) {
+	if (binary != control->is_binary) {
 	    /*
 	     * Act on our setting if not already set.  - FM
 	     */
@@ -3661,7 +3652,7 @@ int HTFTPLoad(const char *name,
 		init_help_message_cache();	/* to free memory */
 		return ((status < 0) ? status : -status);
 	    }
-	    control->binary = binary;
+	    control->is_binary = binary;
 	}
 	switch (server_type) {
 	    /*
@@ -3965,7 +3956,7 @@ int HTFTPLoad(const char *name,
 	     * ftp servers which implement RFC 3659.  Knowing the size lets
 	     * us in turn display ETA in the progress message -TD
 	     */
-	    if (control->binary) {
+	    if (control->is_binary) {
 		int code;
 		off_t size;
 
diff --git a/samples/lynx.bat b/samples/lynx.bat
index a017cdfc..368145e5 100644
--- a/samples/lynx.bat
+++ b/samples/lynx.bat
@@ -1,10 +1,11 @@
-@rem $LynxId: lynx.bat,v 1.1 2007/08/01 23:54:17 tom Exp $

+@echo off

+@rem $LynxId: lynx.bat,v 1.2 2013/10/10 09:25:44 tom Exp $

 @rem Claudio Santambrogio

-@ECHO OFF

-command /C

-set term=vt100

-set home=%CD%

-set temp=%HOME%\tmp

-set lynx_cfg=%HOME%\lynx-demo.cfg

-set lynx_lss=%HOME%\opaque.lss

+setlocal

+set TERM=vt100

+set HOME=%CD%

+set TEMP=%HOME%\tmp

+set LYNX_CFG=%HOME%\lynx-demo.cfg

+set LYNX_LSS=%HOME%\opaque.lss

 %HOME%\lynx.exe %1 %2 %3 %4 %5

+endlocal

diff --git a/samples/oldlynx.bat b/samples/oldlynx.bat
new file mode 100644
index 00000000..115c1eb2
--- /dev/null
+++ b/samples/oldlynx.bat
@@ -0,0 +1,22 @@
+@ECHO OFF

+@rem $LynxId: oldlynx.bat,v 1.1 2013/10/10 09:09:58 tom Exp $

+@rem demonstrate lynx without color-style -TD

+setlocal

+

+set TERM=vt100

+set HOME=%CD%

+set TEMP=%HOME%\tmp

+

+set LYNX_CFG=%HOME%\oldlynx.cfg

+set LYNX_LSS=

+

+if exist %LYNX_CFG% goto done

+

+echo "DEFAULT_COLORS:off"    >>%LYNX_CFG%

+echo "include:lynx-demo.cfg" >>%LYNX_CFG%

+echo "COLOR_STYLE:"          >>%LYNX_CFG%

+echo "NESTED_TABLES:off"     >>%LYNX_CFG%

+

+:done

+%HOME%\lynx.exe -lss="" %1 %2 %3 %4 %5 %6 %7 %8 %9

+endlocal

diff --git a/src/LYClean.c b/src/LYClean.c
index efeb3841..3679d876 100644
--- a/src/LYClean.c
+++ b/src/LYClean.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYClean.c,v 1.38 2008/02/11 00:50:19 Paul.B.Mahol Exp $ */
+/* $LynxId: LYClean.c,v 1.40 2013/10/10 23:47:25 tom Exp $ */
 #include <HTUtils.h>
 #include <LYCurses.h>
 #include <LYUtils.h>
@@ -51,42 +51,35 @@ void cleanup_sig(int sig)
 
 #ifdef VMS
     if (!dump_output_immediately) {
-	int c;
 
 	/*
 	 * Reassert the AST.
 	 */
 	(void) signal(SIGINT, cleanup_sig);
-	if (!LYCursesON)
-	    return;
+	if (LYCursesON) {
+	    lynx_force_repaint();	/* wipe away the "cancel" message */
+	    LYrefresh();
 
-	/*
-	 * Refresh screen to get rid of "cancel" message, then query.
-	 */
-	lynx_force_repaint();
-	LYrefresh();
-
-	/*
-	 * Ask if exit is intended.
-	 */
-	if (LYQuitDefaultYes == TRUE) {
-	    c = HTConfirmDefault(REALLY_EXIT, YES);
-	} else {
-	    c = HTConfirmDefault(REALLY_EXIT, NO);
-	}
-	HadVMSInterrupt = TRUE;
-	if (LYQuitDefaultYes == TRUE) {
-	    if (c == NO) {
-		return;
+	    /*
+	     * Ask if exit is intended.
+	     */
+	    if (LYQuitDefaultYes == TRUE) {
+		int Dft = ((LYQuitDefaultYes == TRUE) ? YES : NO);
+		int c = HTConfirmDefault(REALLY_EXIT, Dft);
+
+		HadVMSInterrupt = TRUE;
+		if (c != Dft) {
+		    return;
+		}
 	    }
-	} else if (c != YES) {
+	} else {
 	    return;
 	}
     }
 #endif /* VMS */
 
     /*
-     * Ignore further interrupts.  - mhc:  11/2/91
+     * Ignore signals from terminal.
      */
 #ifndef NOSIGHUP
     (void) signal(SIGHUP, SIG_IGN);
@@ -97,11 +90,11 @@ void cleanup_sig(int sig)
      * Use ttclose() from cleanup() for VMS if not dumping.
      */
     if (dump_output_immediately)
+	(void) signal(SIGTERM, SIG_IGN);
 #else /* Unix: */
     (void) signal(SIGINT, SIG_IGN);
-#endif /* VMS */
-
     (void) signal(SIGTERM, SIG_IGN);
+#endif /* VMS */
 
     if (traversal)
 	dump_traversal_history();
@@ -127,10 +120,8 @@ void cleanup_sig(int sig)
     } else {
 #ifdef USE_SESSIONS
 	/*
-	 * Wondering is this right place and time to do it.
-	 * We need this, for example it is usefull to save session
-	 * if user closed lynx in non standard way, like closing
-	 * xterm window or in worst one like crash.
+	 * It is useful to save the session if a user closed lynx in a
+	 * nonstandard way, such as closing xterm window or in even a crash.
 	 */
 	SaveSession();
 #endif /* USE_SESSIONS */
@@ -145,7 +136,7 @@ void cleanup_sig(int sig)
 }
 
 /*
- * Called by Interrupt handler or at quit time.  Erases the temporary files
+ * Called by interrupt handler or at quit-time, this erases the temporary files
  * that lynx created.
  */
 void cleanup_files(void)
@@ -156,27 +147,19 @@ void cleanup_files(void)
 
 void cleanup(void)
 {
-#ifdef VMS
-    extern BOOLEAN DidCleanup;
-#endif /* VMS */
-
     /*
-     * Cleanup signals - just in case.  Ignore further interrupts.  - mhc: 
-     * 11/2/91
+     * Ignore signals from terminal.
      */
 #ifndef NOSIGHUP
     (void) signal(SIGHUP, SIG_IGN);
 #endif /* NOSIGHUP */
-    (void) signal(SIGTERM, SIG_IGN);
-
 #ifndef VMS			/* use ttclose() from cleanup() for VMS */
     (void) signal(SIGINT, SIG_IGN);
 #endif /* !VMS */
+    (void) signal(SIGTERM, SIG_IGN);
 
     if (LYCursesON) {
-	LYmove(LYlines - 1, 0);
-	LYclrtoeol();
-
+	LYParkCursor();
 	lynx_stop_all_colors();
 	LYrefresh();
 
@@ -185,8 +168,7 @@ void cleanup(void)
 #ifdef EXP_CHARTRANS_AUTOSWITCH
     /*
      * Currently implemented only for LINUX:  Restore original font.
-     */
-    UCChangeTerminalCodepage(-1, (LYUCcharset *) 0);
+     */ UCChangeTerminalCodepage(-1, (LYUCcharset *) 0);
 #endif /* EXP_CHARTRANS_AUTOSWITCH */
 
 #ifdef USE_PERSISTENT_COOKIES
@@ -201,9 +183,6 @@ void cleanup(void)
 	LYStoreCookies(LYCookieSaveFile);
 #endif
 #ifdef USE_SESSIONS
-    /*
-     * Wondering is this right place and time to do it.
-     */
     SaveSession();
 #endif /* USE_SESSIONS */
 
diff --git a/src/LYClean.h b/src/LYClean.h
index 6126c2c6..d7f54beb 100644
--- a/src/LYClean.h
+++ b/src/LYClean.h
@@ -9,6 +9,7 @@
 extern "C" {
 #endif
 #ifdef VMS
+    extern BOOLEAN DidCleanup;
     extern BOOLEAN HadVMSInterrupt;
 #endif
 
diff --git a/src/LYCurses.h b/src/LYCurses.h
index 0a9c0ebe..f9858eeb 100644
--- a/src/LYCurses.h
+++ b/src/LYCurses.h
@@ -1,4 +1,4 @@
-/* $LynxId: LYCurses.h,v 1.90 2013/05/31 00:23:39 tom Exp $ */
+/* $LynxId: LYCurses.h,v 1.91 2013/10/10 23:28:33 tom Exp $ */
 #ifndef LYCURSES_H
 #define LYCURSES_H
 
@@ -839,6 +839,8 @@ FANCY_CURSES.  Check your config.log to see why the FANCY_CURSES test failed.
 #define LYHideCursor() LYmove((LYlines - 1), (LYcolLimit - 2))
 #endif
 
+#define LYParkCursor() LYmove((LYlines - 1), 0); LYclrtoeol()
+
     extern void LYstowCursor(WINDOW * win, int row, int col);
     extern void LYSetDisplayLines(void);
 
diff --git a/src/LYEditmap.c b/src/LYEditmap.c
index 669c2a38..eadc6aca 100644
--- a/src/LYEditmap.c
+++ b/src/LYEditmap.c
@@ -1,8 +1,8 @@
 /*
- * $LynxId: LYEditmap.c,v 1.29 2013/01/04 00:03:24 tom Exp $
+ * $LynxId: LYEditmap.c,v 1.42 2013/10/12 00:16:50 tom Exp $
  *
  * LYEditMap.c
- * Keybindings for line and form editting.
+ * Keybindings for line and form editing.
  */
 
 #include <HTUtils.h>
@@ -35,737 +35,11 @@ int escape_bound = 0;		/* User wanted Escape to perform actions?  */
 /*
  * See LYStrings.h for the LYE definitions.
  */
-/* *INDENT-OFF* */
-static LYEditCode DefaultEditBinding[KEYMAP_SIZE - 1] = {
-
-LYE_NOP,        LYE_BOL,        LYE_DELPW,      LYE_ABORT,
-/* nul          ^A              ^B              ^C      */
-
-LYE_DELN,       LYE_EOL,        LYE_DELNW,      LYE_ABORT,
-/* ^D           ^E              ^F              ^G      */
-
-LYE_DELP,       LYE_TAB,      LYE_ENTER,      LYE_LOWER,
-/* bs           tab             nl              ^K      */
-
-LYE_NOP,        LYE_ENTER,      LYE_FORWW,      LYE_ABORT,
-/* ^L           cr              ^N              ^O      */
-
-LYE_BACKW,      LYE_NOP,        LYE_DELN,       LYE_NOP,
-/* ^P           XON             ^R              XOFF    */
-
-#ifdef CAN_CUT_AND_PASTE
-LYE_UPPER,      LYE_ERASE,      LYE_LKCMD,      LYE_PASTE,
-#else
-LYE_UPPER,      LYE_ERASE,      LYE_LKCMD,      LYE_NOP,
-#endif
-/* ^T           ^U              ^V              ^W      */
-
-LYE_SETM1,      LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* ^X           ^Y              ^Z              ESC     */
-
-LYE_NOP,        LYE_NOP,        LYE_SWMAP,      LYE_DELEL,
-/* ^\           ^]              ^^              ^_      */
-
-/* sp .. RUBOUT                                         */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_DELP,
-
-/* 80..9F ISO-8859-1 8-bit escape characters. */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-#ifdef CJK_EX	/* 1997/11/03 (Mon) 20:30:54 */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-#else
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_AIX,
-/*                                               97 AIX    */
-#endif
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-
-/* A0..FF (permissible ISO-8859-1) 8-bit characters. */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-
-/* 100..10F function key definitions in LYStrings.h */
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_FORW,       LYE_BACK,
-/* UPARROW      DNARROW         RTARROW         LTARROW     */
-
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_BOL,        LYE_EOL,
-/* PGDOWN       PGUP            HOME            END         */
-
-#if (defined(_WINDOWS) || defined(__DJGPP__))
-
-LYE_FORM_PASS,  LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* F1 */
-
-#else
-
-LYE_FORM_PASS,  LYE_TAB,        LYE_BOL,        LYE_EOL,
-/* F1           Do key          Find key        Select key  */
-
-#endif /* _WINDOWS || __DJGPP__ */
-
-LYE_NOP,        LYE_DELP,       LYE_NOP,        LYE_FORM_PASS,
-/* Insert key   Remove key      DO_NOTHING      Back tab */
-
-/* 110..18F */
-#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
-
-LYE_DELP,       LYE_ENTER,      LYE_NOP,        LYE_NOP,
-/* Backspace    Enter */
-
-#else
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-
-#endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/*             MOUSE_KEY  */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 190..20F */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 210..28F */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 290..293 */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-};
-
-/*
- * Add your favorite key bindings HERE
- */
-
-/* KED-01 */ /* Default except: ^B=cursor-backward,  ^F=cursor-forward,   */
-             /*                 ^K=delete-to-EOL,    ^X=delete-to-BOL,    */
-             /*                 ^R=delete-prev-word, ^T=delete-next-word, */
-             /*                 ^^=upper-case-line,  ^_=lower-case-line   */
-/* Why the difference for tab? - kw */
+static LYEditCode DefaultEditBinding[KEYMAP_SIZE - 1];
 
 #ifdef USE_ALT_BINDINGS
-static LYEditCode BetterEditBinding[KEYMAP_SIZE - 1]={
-
-LYE_NOP,        LYE_BOL,        LYE_BACK,       LYE_ABORT,
-/* nul          ^A              ^B              ^C      */
-
-LYE_DELN,       LYE_EOL,        LYE_FORW,       LYE_ABORT,
-/* ^D           ^E              ^F              ^G      */
-
-LYE_DELP,       LYE_ENTER,      LYE_ENTER,      LYE_DELEL,
-/* bs           tab             nl              ^K      */
-
-LYE_NOP,        LYE_ENTER,      LYE_FORWW,      LYE_ABORT,
-/* ^L           cr              ^N              ^O      */
-
-LYE_BACKW,      LYE_NOP,        LYE_DELPW,      LYE_NOP,
-/* ^P           XON             ^R              XOFF    */
-
-#ifdef CAN_CUT_AND_PASTE
-LYE_DELNW,      LYE_ERASE,      LYE_LKCMD,      LYE_PASTE,
-#else
-LYE_DELNW,      LYE_ERASE,      LYE_LKCMD,      LYE_NOP,
-#endif
-/* ^T           ^U              ^V              ^W      */
-
-LYE_SETM1,      LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* ^X           ^Y              ^Z              ESC     */
-
-LYE_NOP,        LYE_NOP,        LYE_UPPER,      LYE_LOWER,
-/* ^\           ^]              ^^              ^_      */
-
-/* sp .. RUBOUT                                         */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_DELP,
-
-/* 80..9F ISO-8859-1 8-bit escape characters. */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-#ifdef CJK_EX	/* 1997/11/03 (Mon) 20:30:54 */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-#else
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_AIX,
-/*                                               97 AIX    */
-#endif
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-
-/* A0..FF (permissible ISO-8859-1) 8-bit characters. */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-
-/* 100..10F function key definitions in LYStrings.h */
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_FORW,       LYE_BACK,
-/* UPARROW      DNARROW         RTARROW         LTARROW     */
-
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_BOL,        LYE_EOL,
-/* PGDOWN       PGUP            HOME            END         */
-
-#if (defined(_WINDOWS) || defined(__DJGPP__))
-
-LYE_FORM_PASS,  LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* F1 */
-
-#else
-
-LYE_FORM_PASS,  LYE_TAB,        LYE_BOL,        LYE_EOL,
-/* F1           Do key          Find key        Select key  */
-
-#endif /* _WINDOWS || __DJGPP__ */
-
-LYE_NOP,        LYE_DELP,       LYE_NOP,        LYE_FORM_PASS,
-/* Insert key   Remove key      DO_NOTHING      Back tab */
-
-/* 110..18F */
-#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
-
-LYE_DELP,       LYE_ENTER,      LYE_NOP,        LYE_NOP,
-/* Backspace    Enter */
-
-#else
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-
-#endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/*             MOUSE_KEY  */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 190..20F */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 210..28F */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 290..293 */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-};
-
-/* kw     */ /* Default except: ^B=cursor-backward[+],^F=cursor-forward[+], */
-             /*                 ^K=delete-to-EOL[+][++],^X=Modifier Prefix, */
-             /*                 ^[ (ESC)=Modifier Prefix,                   */
-             /*                 ^R=BACKW,             ^S=FORWW,             */
-             /*                 ^T=transpose-chars,                         */
-             /*                 ^U=delete-to-BOL,     ^W=delete-prev-word,  */
-             /*                 ^@ (NUL)=SETMARK,     ^Y=YANK,              */
-             /*                 ^_=ABORT (undo),                            */
-             /*                 ^P=FORM_PASS,         ^N=FORM_PASS,         */
-             /*                 ^O=FORM_PASS,         ^L=FORM_PASS,         */
-             /*                 ^\=FORM_PASS,         ^]=FORM_PASS,         */
-             /*                 ^Z=FORM_PASS,         F1=FORM_PASS,         */
-             /*                 ^E=EOL[++],           Remove=DELN           */
-             /* [+]: same as BetterEditBinding                              */
-             /* [++]: additionally set double-key modifier                  */
-
-/* Default where BetterEditBinding deviates:          ^^=SWMAP,            */
-             /*                tab=LYE_TAB                                 */
-
-/* Some functions for which the modifier binding is preferred:             */
-             /*         M-bs,M-del=delete-prev-word, M-d=delete-next-word, */
-             /*                M-b=BACKW,            M-f=FORWW,            */
-
-static LYEditCode BashlikeEditBinding[KEYMAP_SIZE - 1] = {
-
-LYE_SETMARK,    LYE_BOL,        LYE_BACK,       LYE_ABORT,
-/* nul          ^A              ^B              ^C      */
-
-LYE_DELN,       LYE_EOL|LYE_DF, LYE_FORW,       LYE_ABORT,
-/* ^D           ^E              ^F              ^G      */
-
-LYE_DELP,       LYE_TAB,        LYE_ENTER,      LYE_DELEL|LYE_DF,
-/* bs           tab             nl              ^K      */
-
-LYE_FORM_PASS,  LYE_ENTER,      LYE_FORM_PASS,  LYE_FORM_PASS,
-/* ^L           cr              ^N              ^O      */
-
-LYE_FORM_PASS,  LYE_NOP,        LYE_BACKW,      LYE_FORWW,
-/* ^P           XON             ^R              ^S/XOFF */
-
-LYE_TPOS,       LYE_DELBL,      LYE_LKCMD,      LYE_DELPW,
-/* ^T           ^U              ^V              ^W      */
-
-LYE_SETM1,      LYE_YANK,       LYE_FORM_PASS,  LYE_SETM2,
-/* ^X           ^Y              ^Z              ESC     */
-
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_SWMAP,      LYE_ABORT,
-/* ^\           ^]              ^^              ^_      */
-
-/* sp .. RUBOUT                                         */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_DELP,
-
-/* 80..9F ISO-8859-1 8-bit escape characters. */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_AIX,
-/*                                               97 AIX    */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-
-/* A0..FF (permissible ISO-8859-1) 8-bit characters. */
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-LYE_CHAR,       LYE_CHAR,       LYE_CHAR,       LYE_CHAR,
-
-/* 100..10F function key definitions in LYStrings.h */
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_FORW,       LYE_BACK,
-/* UPARROW      DNARROW         RTARROW         LTARROW     */
-
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_BOL,        LYE_EOL,
-/* PGDOWN       PGUP            HOME            END         */
-
-#if (defined(_WINDOWS) || defined(__DJGPP__))
-
-LYE_FORM_PASS,  LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* F1 */
-
-#else
-
-LYE_FORM_PASS,  LYE_TAB,        LYE_BOL,        LYE_EOL,
-/* F1           Do key          Find key        Select key  */
-
-#endif /* _WINDOWS || __DJGPP__ */
-
-LYE_NOP,        LYE_DELN,       LYE_NOP,        LYE_FORM_PASS,
-/* Insert key   Remove key      DO_NOTHING      Back tab */
-
-/* 110..18F */
-#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
-
-LYE_DELP,       LYE_ENTER,      LYE_NOP,        LYE_NOP,
-/* Backspace    Enter */
-
-#else
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-
-#endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/*             MOUSE_KEY  */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 190..20F */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 210..28F */
-
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-/* 290..293 */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-};
+static LYEditCode BetterEditBinding[KEYMAP_SIZE - 1];
+static LYEditCode BashlikeEditBinding[KEYMAP_SIZE - 1];
 
 /* Oh no, not another one of those tables...
  *
@@ -781,178 +55,1110 @@ LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
  * effect only for those Bindings that map a lynxkeycode to LYE_SETMn.  ( This
  * doesn't apply if the modifier is already being set in LYgetch().  ) - kw
  */
-static short Mod1Binding[LAST_MOD1_LKC+1]={
-
-LYE_NOP,        LYE_BOL,        LYE_BACKW,      LYE_UNMOD,
-/* nul          ^A              ^B              ^C      */
-
-LYE_FORM_LAC|LYK_NEXT_LINK,
-                LYE_FORM_LAC|LYK_EDIT_TEXTAREA,
-                                LYE_FORWW,      LYE_ABORT,
-/* ^D           ^E              ^F              ^G      */
-
-LYE_DELPW,      LYE_UNMOD,      LYE_ENTER,     LYE_FORM_LAC|LYK_LPOS_NEXT_LINK,
-/* bs           tab             nl              ^K      */
-
-LYE_FORM_PASS,  LYE_ENTER,      LYE_FORWW,      LYE_UNMOD,
-/* ^L           cr              ^N              ^O      */
-
-LYE_BACKW,      LYE_NOP,        LYE_BACKW,      LYE_NOP,
-/* ^P           XON             ^R              ^S/XOFF */
+static LYEditCode Mod1Binding[KEYMAP_SIZE - 1];
 
-LYE_NOP,        LYE_FORM_PASS,  LYE_NOP,        LYE_KILLREG,
-/* ^T           ^U              ^V              ^W      */
-
-LYE_XPMARK,     LYE_UNMOD,      LYE_FORM_PASS,  LYE_NOP,
-/* ^X           ^Y              ^Z              ESC     */
-
-LYE_FORM_PASS,  LYE_FORM_PASS,  LYE_UNMOD,      LYE_NOP,
-/* ^\           ^]              ^^              ^_      */
-
-/* sp .. ?                                              */
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_FORM_PASS,
-
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_FORM_LAC|LYK_HOME,
-                LYE_UNMOD,      LYE_FORM_LAC|LYK_END,
-                                                LYE_UNMOD,
-
-/* @, A .. Z, [, \, ], ^, _                             */
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,     LYE_C1CHAR,
-
-/* `, a .. z, {, |, }, ~, RUBOUT                        */
-LYE_UNMOD,      LYE_BOL,        LYE_BACKW,      LYE_UNMOD,
-LYE_DELNW,      LYE_FORM_LAC|LYK_EDIT_TEXTAREA,
-                                LYE_FORWW,      LYE_FORM_LAC|LYK_GROW_TEXTAREA,
-LYE_CHAR,       LYE_FORM_LAC|LYK_INSERT_FILE,
-                                LYE_CHAR,       LYE_ERASE,
-LYE_LOWER,      LYE_CHAR,       LYE_FORM_PASS,  LYE_UNMOD,
-LYE_CHAR,       LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_UPPER,      LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_DELPW,
-
-/* 80..9F ISO-8859-1 8-bit escape characters. */
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-LYE_NOP,        LYE_NOP,        LYE_NOP,        LYE_NOP,
-
-/* A0..FF (permissible ISO-8859-1) 8-bit characters. */
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-
-/* 100..10F function key definitions in LYStrings.h */
-LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-/* UPARROW      DNARROW         RTARROW         LTARROW     */
-
-LYE_UNMOD,      LYE_UNMOD,      LYE_FORM_PASS,  LYE_FORM_PASS,
-/* PGDOWN       PGUP            HOME            END         */
+/*  Two more tables here, but currently they are all the same.
+    In other words, we are cheating to save space, until there
+    is a need for different tables. - kw */
+static LYEditCode *Mod2Binding = Mod1Binding;
+static LYEditCode *Mod3Binding = Mod1Binding;
 
+static const LYEditInit initMod1Binding[] =
+{
+    {1, LYE_BOL},		/* ^B */
+    {2, LYE_BACKW},		/* ^C */
+    {3, LYE_UNMOD},		/* ^D */
+    {4, LYK_NEXT_LINK | LYE_FORM_LAC},	/* ^E */
+    {5, LYK_EDITTEXTAREA | LYE_FORM_LAC},	/* ^F */
+    {6, LYE_FORWW},		/* ^G */
+    {7, LYE_ABORT},		/* ^H */
+    {8, LYE_DELPW},		/* ^I */
+    {9, LYE_UNMOD},		/* ^J */
+    {10, LYE_ENTER},		/* ^K */
+    {11, LYK_LPOS_NEXT_LINK | LYE_FORM_LAC},	/* ^L */
+    {12, LYE_FORM_PASS},	/* ^M */
+    {13, LYE_ENTER},		/* ^N */
+    {14, LYE_FORWW},		/* ^O */
+    {15, LYE_UNMOD},		/* ^P */
+    {16, LYE_BACKW},		/* ^Q */
+    {18, LYE_BACKW},		/* ^S */
+    {21, LYE_FORM_PASS},	/* ^V */
+    {23, LYE_KILLREG},		/* ^X */
+    {24, LYE_XPMARK},		/* ^Y */
+    {25, LYE_UNMOD},		/* ^Z */
+    {26, LYE_FORM_PASS},	/* ^[ */
+    {28, LYE_FORM_PASS},	/* ^] */
+    {29, LYE_FORM_PASS},	/* ^^ */
+    {30, LYE_UNMOD},		/* ^_ */
+    {32, LYE_UNMOD},		/*   */
+    {33, LYE_UNMOD},		/* ! */
+    {34, LYE_UNMOD},		/* " */
+    {35, LYE_UNMOD},		/* # */
+    {36, LYE_UNMOD},		/* $ */
+    {37, LYE_UNMOD},		/* % */
+    {38, LYE_UNMOD},		/* & */
+    {39, LYE_UNMOD},		/* ' */
+    {40, LYE_UNMOD},		/* ( */
+    {41, LYE_UNMOD},		/* ) */
+    {42, LYE_UNMOD},		/* * */
+    {43, LYE_UNMOD},		/* + */
+    {44, LYE_UNMOD},		/* , */
+    {45, LYE_UNMOD},		/* - */
+    {46, LYE_UNMOD},		/* . */
+    {47, LYE_FORM_PASS},	/* / */
+    {48, LYE_UNMOD},		/* 0 */
+    {49, LYE_UNMOD},		/* 1 */
+    {50, LYE_UNMOD},		/* 2 */
+    {51, LYE_UNMOD},		/* 3 */
+    {52, LYE_UNMOD},		/* 4 */
+    {53, LYE_UNMOD},		/* 5 */
+    {54, LYE_UNMOD},		/* 6 */
+    {55, LYE_UNMOD},		/* 7 */
+    {56, LYE_UNMOD},		/* 8 */
+    {57, LYE_UNMOD},		/* 9 */
+    {58, LYE_UNMOD},		/* : */
+    {59, LYE_UNMOD},		/* ; */
+    {60, LYK_HOME | LYE_FORM_LAC},	/* < */
+    {61, LYE_UNMOD},		/* = */
+    {62, LYK_END | LYE_FORM_LAC},	/* > */
+    {63, LYE_UNMOD},		/* ? */
+    {64, LYE_C1CHAR},		/* @ */
+    {65, LYE_C1CHAR},		/* A */
+    {66, LYE_C1CHAR},		/* B */
+    {67, LYE_C1CHAR},		/* C */
+    {68, LYE_C1CHAR},		/* D */
+    {69, LYE_C1CHAR},		/* E */
+    {70, LYE_C1CHAR},		/* F */
+    {71, LYE_C1CHAR},		/* G */
+    {72, LYE_C1CHAR},		/* H */
+    {73, LYE_C1CHAR},		/* I */
+    {74, LYE_C1CHAR},		/* J */
+    {75, LYE_C1CHAR},		/* K */
+    {76, LYE_C1CHAR},		/* L */
+    {77, LYE_C1CHAR},		/* M */
+    {78, LYE_C1CHAR},		/* N */
+    {79, LYE_C1CHAR},		/* O */
+    {80, LYE_C1CHAR},		/* P */
+    {81, LYE_C1CHAR},		/* Q */
+    {82, LYE_C1CHAR},		/* R */
+    {83, LYE_C1CHAR},		/* S */
+    {84, LYE_C1CHAR},		/* T */
+    {85, LYE_C1CHAR},		/* U */
+    {86, LYE_C1CHAR},		/* V */
+    {87, LYE_C1CHAR},		/* W */
+    {88, LYE_C1CHAR},		/* X */
+    {89, LYE_C1CHAR},		/* Y */
+    {90, LYE_C1CHAR},		/* Z */
+    {91, LYE_C1CHAR},		/* [ */
+    {92, LYE_C1CHAR},		/* \ */
+    {93, LYE_C1CHAR},		/* ] */
+    {94, LYE_C1CHAR},		/* ^ */
+    {95, LYE_C1CHAR},		/* _ */
+    {96, LYE_UNMOD},		/* ` */
+    {97, LYE_BOL},		/* a */
+    {98, LYE_BACKW},		/* b */
+    {99, LYE_UNMOD},		/* c */
+    {100, LYE_DELNW},		/* d */
+    {101, LYK_EDITTEXTAREA | LYE_FORM_LAC},	/* e */
+    {102, LYE_FORWW},		/* f */
+    {103, LYK_GROWTEXTAREA | LYE_FORM_LAC},	/* g */
+    {104, LYE_CHAR},		/* h */
+    {105, LYK_INSERTFILE | LYE_FORM_LAC},	/* i */
+    {106, LYE_CHAR},		/* j */
+    {107, LYE_ERASE},		/* k */
+    {108, LYE_LOWER},		/* l */
+    {109, LYE_CHAR},		/* m */
+    {110, LYE_FORM_PASS},	/* n */
+    {111, LYE_UNMOD},		/* o */
+    {112, LYE_CHAR},		/* p */
+    {117, LYE_UPPER},		/* u */
+    {122, LYE_UNMOD},		/* z */
+    {123, LYE_UNMOD},		/* { */
+    {124, LYE_UNMOD},		/* | */
+    {125, LYE_UNMOD},		/* } */
+    {126, LYE_UNMOD},		/* ~ */
+    {127, LYE_DELPW},
+    {160, LYE_UNMOD},
+    {161, LYE_UNMOD},
+    {162, LYE_UNMOD},
+    {163, LYE_UNMOD},
+    {164, LYE_UNMOD},
+    {165, LYE_UNMOD},
+    {166, LYE_UNMOD},
+    {167, LYE_UNMOD},
+    {168, LYE_UNMOD},
+    {169, LYE_UNMOD},
+    {170, LYE_UNMOD},
+    {171, LYE_UNMOD},
+    {172, LYE_UNMOD},
+    {173, LYE_UNMOD},
+    {174, LYE_UNMOD},
+    {175, LYE_UNMOD},
+    {176, LYE_UNMOD},
+    {177, LYE_UNMOD},
+    {178, LYE_UNMOD},
+    {179, LYE_UNMOD},
+    {180, LYE_UNMOD},
+    {181, LYE_UNMOD},
+    {182, LYE_UNMOD},
+    {183, LYE_UNMOD},
+    {184, LYE_UNMOD},
+    {185, LYE_UNMOD},
+    {186, LYE_UNMOD},
+    {187, LYE_UNMOD},
+    {188, LYE_UNMOD},
+    {189, LYE_UNMOD},
+    {190, LYE_UNMOD},
+    {191, LYE_UNMOD},
+    {192, LYE_UNMOD},
+    {193, LYE_UNMOD},
+    {194, LYE_UNMOD},
+    {195, LYE_UNMOD},
+    {196, LYE_UNMOD},
+    {197, LYE_UNMOD},
+    {198, LYE_UNMOD},
+    {199, LYE_UNMOD},
+    {200, LYE_UNMOD},
+    {201, LYE_UNMOD},
+    {202, LYE_UNMOD},
+    {203, LYE_UNMOD},
+    {204, LYE_UNMOD},
+    {205, LYE_UNMOD},
+    {206, LYE_UNMOD},
+    {207, LYE_UNMOD},
+    {208, LYE_UNMOD},
+    {209, LYE_UNMOD},
+    {210, LYE_UNMOD},
+    {211, LYE_UNMOD},
+    {212, LYE_UNMOD},
+    {213, LYE_UNMOD},
+    {214, LYE_UNMOD},
+    {215, LYE_UNMOD},
+    {216, LYE_UNMOD},
+    {217, LYE_UNMOD},
+    {218, LYE_UNMOD},
+    {219, LYE_UNMOD},
+    {220, LYE_UNMOD},
+    {221, LYE_UNMOD},
+    {222, LYE_UNMOD},
+    {223, LYE_UNMOD},
+    {224, LYE_UNMOD},
+    {225, LYE_UNMOD},
+    {226, LYE_UNMOD},
+    {227, LYE_UNMOD},
+    {228, LYE_UNMOD},
+    {229, LYE_UNMOD},
+    {230, LYE_UNMOD},
+    {231, LYE_UNMOD},
+    {232, LYE_UNMOD},
+    {233, LYE_UNMOD},
+    {234, LYE_UNMOD},
+    {235, LYE_UNMOD},
+    {236, LYE_UNMOD},
+    {237, LYE_UNMOD},
+    {238, LYE_UNMOD},
+    {239, LYE_UNMOD},
+    {240, LYE_UNMOD},
+    {241, LYE_UNMOD},
+    {242, LYE_UNMOD},
+    {243, LYE_UNMOD},
+    {244, LYE_UNMOD},
+    {245, LYE_UNMOD},
+    {246, LYE_UNMOD},
+    {247, LYE_UNMOD},
+    {248, LYE_UNMOD},
+    {249, LYE_UNMOD},
+    {250, LYE_UNMOD},
+    {251, LYE_UNMOD},
+    {252, LYE_UNMOD},
+    {253, LYE_UNMOD},
+    {254, LYE_UNMOD},
+    {255, LYE_UNMOD},
+    {256, LYE_UNMOD},		/* UPARROW */
+    {257, LYE_UNMOD},		/* DNARROW */
+    {258, LYE_UNMOD},		/* RTARROW */
+    {259, LYE_UNMOD},		/* LTARROW */
+    {260, LYE_UNMOD},		/* PGDOWN */
+    {261, LYE_UNMOD},		/* PGUP */
+    {262, LYE_FORM_PASS},	/* HOME */
+    {263, LYE_FORM_PASS},	/* END_KEY */
+    {264, LYK_DWIMHELP | LYE_FORM_LAC},		/* F1 */
+    {265, LYE_UNMOD},		/* DO_KEY */
 #if (defined(_WINDOWS) || defined(__DJGPP__))
-
-LYE_FORM_LAC|LYK_DWIMHELP,
-                LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
-/* F1 */
-
+    {266, LYE_UNMOD},		/* FIND_KEY */
+    {267, LYE_UNMOD},		/* SELECT_KEY */
 #else
-
-LYE_FORM_LAC|LYK_DWIMHELP,
-                LYE_UNMOD,  LYE_FORM_LAC|LYK_WHEREIS, LYE_FORM_LAC|LYK_NEXT,
-/* F1           Do key          Find key        Select key  */
-
-#endif /* _WINDOWS || __DJGPP__ */
-
-LYE_UNMOD,      LYE_NOP,        LYE_UNMOD,      LYE_UNMOD,
-/* Insert key   Remove key      DO_NOTHING      Back tab */
-
-/* 110..111 */
+    {266, LYK_WHEREIS | LYE_FORM_LAC},	/* FIND_KEY */
+    {267, LYK_NEXT | LYE_FORM_LAC},	/* SELECT_KEY */
+#endif
+    {268, LYE_UNMOD},		/* INSERT_KEY */
+    {270, LYE_UNMOD},		/* DO_NOTHING */
+    {271, LYE_UNMOD},		/* BACKTAB_KEY */
 #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
-
-LYE_DELPW,      LYE_UNMOD,
-/* Backspace    Enter */
-
+    {272, LYE_DELPW},
 #else
-
-LYE_UNMOD,      LYE_UNMOD,
-
-#endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
+    {272, LYE_UNMOD},
+#endif
+    {273, LYE_UNMOD},
+    {-1, LYE_UNKNOWN}
 };
 
-/*  Two more tables here, but currently they are all the same.
-    In other words, we are cheating to save space, until there
-    is a need for different tables. - kw */
-static short *Mod2Binding = Mod1Binding;
-static short *Mod3Binding = Mod1Binding;
+LYEditConfig LYModifierBindings[] =
+{
+    {"Modifier Binding", initMod1Binding, Mod1Binding},
+};
 
 #endif /* USE_ALT_BINDINGS */
-/* *INDENT-ON* */
 
-/*
- * Add the array name to LYLineEditors
- */
-
-LYEditCode *LYLineEditors[] =
+static const LYEditInit initDefaultEditor[] =
 {
-    DefaultEditBinding,		/* You can't please everyone, so you ... DW */
+    {1, LYE_BOL},		/* ^B */
+    {2, LYE_DELPW},		/* ^C */
+    {3, LYE_ABORT},		/* ^D */
+    {4, LYE_DELN},		/* ^E */
+    {5, LYE_EOL},		/* ^F */
+    {6, LYE_DELNW},		/* ^G */
+    {7, LYE_ABORT},		/* ^H */
+    {8, LYE_DELP},		/* ^I */
+    {9, LYE_TAB},		/* ^J */
+    {10, LYE_ENTER},		/* ^K */
+    {11, LYE_LOWER},		/* ^L */
+    {13, LYE_ENTER},		/* ^N */
+    {14, LYE_FORWW},		/* ^O */
+    {15, LYE_ABORT},		/* ^P */
+    {16, LYE_BACKW},		/* ^Q */
+    {18, LYE_DELN},		/* ^S */
+    {20, LYE_UPPER},		/* ^U */
+    {21, LYE_ERASE},		/* ^V */
+    {22, LYE_LKCMD},		/* ^W */
+#ifdef CAN_CUT_AND_PASTE
+    {23, LYE_PASTE},		/* ^X */
+#endif
+    {24, LYE_SETM1},		/* ^Y */
+    {30, LYE_SWMAP},		/* ^_ */
+    {31, LYE_DELEL},		/* ^` */
+    {32, LYE_CHAR},		/*   */
+    {33, LYE_CHAR},		/* ! */
+    {34, LYE_CHAR},		/* " */
+    {35, LYE_CHAR},		/* # */
+    {36, LYE_CHAR},		/* $ */
+    {37, LYE_CHAR},		/* % */
+    {38, LYE_CHAR},		/* & */
+    {39, LYE_CHAR},		/* ' */
+    {40, LYE_CHAR},		/* ( */
+    {41, LYE_CHAR},		/* ) */
+    {42, LYE_CHAR},		/* * */
+    {43, LYE_CHAR},		/* + */
+    {44, LYE_CHAR},		/* , */
+    {45, LYE_CHAR},		/* - */
+    {46, LYE_CHAR},		/* . */
+    {47, LYE_CHAR},		/* / */
+    {48, LYE_CHAR},		/* 0 */
+    {49, LYE_CHAR},		/* 1 */
+    {50, LYE_CHAR},		/* 2 */
+    {51, LYE_CHAR},		/* 3 */
+    {52, LYE_CHAR},		/* 4 */
+    {53, LYE_CHAR},		/* 5 */
+    {54, LYE_CHAR},		/* 6 */
+    {55, LYE_CHAR},		/* 7 */
+    {56, LYE_CHAR},		/* 8 */
+    {57, LYE_CHAR},		/* 9 */
+    {58, LYE_CHAR},		/* : */
+    {59, LYE_CHAR},		/* ; */
+    {60, LYE_CHAR},		/* < */
+    {61, LYE_CHAR},		/* = */
+    {62, LYE_CHAR},		/* > */
+    {63, LYE_CHAR},		/* ? */
+    {64, LYE_CHAR},		/* @ */
+    {65, LYE_CHAR},		/* A */
+    {66, LYE_CHAR},		/* B */
+    {67, LYE_CHAR},		/* C */
+    {68, LYE_CHAR},		/* D */
+    {69, LYE_CHAR},		/* E */
+    {70, LYE_CHAR},		/* F */
+    {71, LYE_CHAR},		/* G */
+    {72, LYE_CHAR},		/* H */
+    {73, LYE_CHAR},		/* I */
+    {74, LYE_CHAR},		/* J */
+    {75, LYE_CHAR},		/* K */
+    {76, LYE_CHAR},		/* L */
+    {77, LYE_CHAR},		/* M */
+    {78, LYE_CHAR},		/* N */
+    {79, LYE_CHAR},		/* O */
+    {80, LYE_CHAR},		/* P */
+    {81, LYE_CHAR},		/* Q */
+    {82, LYE_CHAR},		/* R */
+    {83, LYE_CHAR},		/* S */
+    {84, LYE_CHAR},		/* T */
+    {85, LYE_CHAR},		/* U */
+    {86, LYE_CHAR},		/* V */
+    {87, LYE_CHAR},		/* W */
+    {88, LYE_CHAR},		/* X */
+    {89, LYE_CHAR},		/* Y */
+    {90, LYE_CHAR},		/* Z */
+    {91, LYE_CHAR},		/* [ */
+    {92, LYE_CHAR},		/* \ */
+    {93, LYE_CHAR},		/* ] */
+    {94, LYE_CHAR},		/* ^ */
+    {95, LYE_CHAR},		/* _ */
+    {96, LYE_CHAR},		/* ` */
+    {97, LYE_CHAR},		/* a */
+    {98, LYE_CHAR},		/* b */
+    {99, LYE_CHAR},		/* c */
+    {100, LYE_CHAR},		/* d */
+    {101, LYE_CHAR},		/* e */
+    {102, LYE_CHAR},		/* f */
+    {103, LYE_CHAR},		/* g */
+    {104, LYE_CHAR},		/* h */
+    {105, LYE_CHAR},		/* i */
+    {106, LYE_CHAR},		/* j */
+    {107, LYE_CHAR},		/* k */
+    {108, LYE_CHAR},		/* l */
+    {109, LYE_CHAR},		/* m */
+    {110, LYE_CHAR},		/* n */
+    {111, LYE_CHAR},		/* o */
+    {112, LYE_CHAR},		/* p */
+    {113, LYE_CHAR},		/* q */
+    {114, LYE_CHAR},		/* r */
+    {115, LYE_CHAR},		/* s */
+    {116, LYE_CHAR},		/* t */
+    {117, LYE_CHAR},		/* u */
+    {118, LYE_CHAR},		/* v */
+    {119, LYE_CHAR},		/* w */
+    {120, LYE_CHAR},		/* x */
+    {121, LYE_CHAR},		/* y */
+    {122, LYE_CHAR},		/* z */
+    {123, LYE_CHAR},		/* { */
+    {124, LYE_CHAR},		/* | */
+    {125, LYE_CHAR},		/* } */
+    {126, LYE_CHAR},		/* ~ */
+    {127, LYE_DELP},
+    {128, LYE_CHAR},
+    {129, LYE_CHAR},
+    {130, LYE_CHAR},
+    {131, LYE_CHAR},
+    {132, LYE_CHAR},
+    {133, LYE_CHAR},
+    {134, LYE_CHAR},
+    {135, LYE_CHAR},
+    {136, LYE_CHAR},
+    {137, LYE_CHAR},
+    {138, LYE_CHAR},
+    {139, LYE_CHAR},
+    {140, LYE_CHAR},
+    {141, LYE_CHAR},
+#ifdef CJK_EX			/* 1997/11/03 (Mon) 20:30:54 */
+    {142, LYE_CHAR},
+#else
+    {142, LYE_AIX},
+#endif
+    {143, LYE_CHAR},
+    {144, LYE_CHAR},
+    {145, LYE_CHAR},
+    {146, LYE_CHAR},
+    {147, LYE_CHAR},
+    {148, LYE_CHAR},
+    {149, LYE_CHAR},
+    {150, LYE_CHAR},
+    {151, LYE_CHAR},
+    {152, LYE_CHAR},
+    {153, LYE_CHAR},
+    {154, LYE_CHAR},
+    {155, LYE_CHAR},
+    {156, LYE_CHAR},
+    {157, LYE_CHAR},
+    {158, LYE_CHAR},
+    {159, LYE_CHAR},
+    {160, LYE_CHAR},
+    {161, LYE_CHAR},
+    {162, LYE_CHAR},
+    {163, LYE_CHAR},
+    {164, LYE_CHAR},
+    {165, LYE_CHAR},
+    {166, LYE_CHAR},
+    {167, LYE_CHAR},
+    {168, LYE_CHAR},
+    {169, LYE_CHAR},
+    {170, LYE_CHAR},
+    {171, LYE_CHAR},
+    {172, LYE_CHAR},
+    {173, LYE_CHAR},
+    {174, LYE_CHAR},
+    {175, LYE_CHAR},
+    {176, LYE_CHAR},
+    {177, LYE_CHAR},
+    {178, LYE_CHAR},
+    {179, LYE_CHAR},
+    {180, LYE_CHAR},
+    {181, LYE_CHAR},
+    {182, LYE_CHAR},
+    {183, LYE_CHAR},
+    {184, LYE_CHAR},
+    {185, LYE_CHAR},
+    {186, LYE_CHAR},
+    {187, LYE_CHAR},
+    {188, LYE_CHAR},
+    {189, LYE_CHAR},
+    {190, LYE_CHAR},
+    {191, LYE_CHAR},
+    {192, LYE_CHAR},
+    {193, LYE_CHAR},
+    {194, LYE_CHAR},
+    {195, LYE_CHAR},
+    {196, LYE_CHAR},
+    {197, LYE_CHAR},
+    {198, LYE_CHAR},
+    {199, LYE_CHAR},
+    {200, LYE_CHAR},
+    {201, LYE_CHAR},
+    {202, LYE_CHAR},
+    {203, LYE_CHAR},
+    {204, LYE_CHAR},
+    {205, LYE_CHAR},
+    {206, LYE_CHAR},
+    {207, LYE_CHAR},
+    {208, LYE_CHAR},
+    {209, LYE_CHAR},
+    {210, LYE_CHAR},
+    {211, LYE_CHAR},
+    {212, LYE_CHAR},
+    {213, LYE_CHAR},
+    {214, LYE_CHAR},
+    {215, LYE_CHAR},
+    {216, LYE_CHAR},
+    {217, LYE_CHAR},
+    {218, LYE_CHAR},
+    {219, LYE_CHAR},
+    {220, LYE_CHAR},
+    {221, LYE_CHAR},
+    {222, LYE_CHAR},
+    {223, LYE_CHAR},
+    {224, LYE_CHAR},
+    {225, LYE_CHAR},
+    {226, LYE_CHAR},
+    {227, LYE_CHAR},
+    {228, LYE_CHAR},
+    {229, LYE_CHAR},
+    {230, LYE_CHAR},
+    {231, LYE_CHAR},
+    {232, LYE_CHAR},
+    {233, LYE_CHAR},
+    {234, LYE_CHAR},
+    {235, LYE_CHAR},
+    {236, LYE_CHAR},
+    {237, LYE_CHAR},
+    {238, LYE_CHAR},
+    {239, LYE_CHAR},
+    {240, LYE_CHAR},
+    {241, LYE_CHAR},
+    {242, LYE_CHAR},
+    {243, LYE_CHAR},
+    {244, LYE_CHAR},
+    {245, LYE_CHAR},
+    {246, LYE_CHAR},
+    {247, LYE_CHAR},
+    {248, LYE_CHAR},
+    {249, LYE_CHAR},
+    {250, LYE_CHAR},
+    {251, LYE_CHAR},
+    {252, LYE_CHAR},
+    {253, LYE_CHAR},
+    {254, LYE_CHAR},
+    {255, LYE_CHAR},
+    {256, LYE_FORM_PASS},	/* UPARROW */
+    {257, LYE_FORM_PASS},	/* DNARROW */
+    {258, LYE_FORW},		/* RTARROW */
+    {259, LYE_BACK},		/* LTARROW */
+    {260, LYE_FORM_PASS},	/* PGDOWN */
+    {261, LYE_FORM_PASS},	/* PGUP */
+    {262, LYE_BOL},		/* HOME */
+    {263, LYE_EOL},		/* END_KEY */
+    {264, LYE_FORM_PASS},	/* F1 */
+#if !(defined(_WINDOWS) || defined(__DJGPP__))
+    {265, LYE_TAB},		/* DO_KEY */
+    {266, LYE_BOL},		/* FIND_KEY */
+    {267, LYE_EOL},		/* SELECT_KEY */
+#endif
+    {269, LYE_DELP},		/* REMOVE_KEY */
+    {271, LYE_FORM_PASS},	/* BACKTAB_KEY */
+#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
+    {272, LYE_DELP},
+    {273, LYE_ENTER},
+#endif
+    {-1, LYE_UNKNOWN}
+};
+
 #ifdef USE_ALT_BINDINGS
-    BetterEditBinding,		/* No, you certainly can't ... /ked 10/27/98 */
-    BashlikeEditBinding,	/* and one more... - kw 1999-02-15 */
+static const LYEditInit initBetterEditor[] =
+{
+    {1, LYE_BOL},		/* ^B */
+    {2, LYE_BACK},		/* ^C */
+    {3, LYE_ABORT},		/* ^D */
+    {4, LYE_DELN},		/* ^E */
+    {5, LYE_EOL},		/* ^F */
+    {6, LYE_FORW},		/* ^G */
+    {7, LYE_ABORT},		/* ^H */
+    {8, LYE_DELP},		/* ^I */
+    {9, LYE_ENTER},		/* ^J */
+    {10, LYE_ENTER},		/* ^K */
+    {11, LYE_DELEL},		/* ^L */
+    {13, LYE_ENTER},		/* ^N */
+    {14, LYE_FORWW},		/* ^O */
+    {15, LYE_ABORT},		/* ^P */
+    {16, LYE_BACKW},		/* ^Q */
+    {18, LYE_DELPW},		/* ^S */
+    {20, LYE_DELNW},		/* ^U */
+    {21, LYE_ERASE},		/* ^V */
+    {22, LYE_LKCMD},		/* ^W */
+#ifdef CAN_CUT_AND_PASTE
+    {23, LYE_PASTE},		/* ^X */
 #endif
+    {24, LYE_SETM1},		/* ^Y */
+    {30, LYE_UPPER},		/* ^_ */
+    {31, LYE_LOWER},		/* ^` */
+    {32, LYE_CHAR},		/*   */
+    {33, LYE_CHAR},		/* ! */
+    {34, LYE_CHAR},		/* " */
+    {35, LYE_CHAR},		/* # */
+    {36, LYE_CHAR},		/* $ */
+    {37, LYE_CHAR},		/* % */
+    {38, LYE_CHAR},		/* & */
+    {39, LYE_CHAR},		/* ' */
+    {40, LYE_CHAR},		/* ( */
+    {41, LYE_CHAR},		/* ) */
+    {42, LYE_CHAR},		/* * */
+    {43, LYE_CHAR},		/* + */
+    {44, LYE_CHAR},		/* , */
+    {45, LYE_CHAR},		/* - */
+    {46, LYE_CHAR},		/* . */
+    {47, LYE_CHAR},		/* / */
+    {48, LYE_CHAR},		/* 0 */
+    {49, LYE_CHAR},		/* 1 */
+    {50, LYE_CHAR},		/* 2 */
+    {51, LYE_CHAR},		/* 3 */
+    {52, LYE_CHAR},		/* 4 */
+    {53, LYE_CHAR},		/* 5 */
+    {54, LYE_CHAR},		/* 6 */
+    {55, LYE_CHAR},		/* 7 */
+    {56, LYE_CHAR},		/* 8 */
+    {57, LYE_CHAR},		/* 9 */
+    {58, LYE_CHAR},		/* : */
+    {59, LYE_CHAR},		/* ; */
+    {60, LYE_CHAR},		/* < */
+    {61, LYE_CHAR},		/* = */
+    {62, LYE_CHAR},		/* > */
+    {63, LYE_CHAR},		/* ? */
+    {64, LYE_CHAR},		/* @ */
+    {65, LYE_CHAR},		/* A */
+    {66, LYE_CHAR},		/* B */
+    {67, LYE_CHAR},		/* C */
+    {68, LYE_CHAR},		/* D */
+    {69, LYE_CHAR},		/* E */
+    {70, LYE_CHAR},		/* F */
+    {71, LYE_CHAR},		/* G */
+    {72, LYE_CHAR},		/* H */
+    {73, LYE_CHAR},		/* I */
+    {74, LYE_CHAR},		/* J */
+    {75, LYE_CHAR},		/* K */
+    {76, LYE_CHAR},		/* L */
+    {77, LYE_CHAR},		/* M */
+    {78, LYE_CHAR},		/* N */
+    {79, LYE_CHAR},		/* O */
+    {80, LYE_CHAR},		/* P */
+    {81, LYE_CHAR},		/* Q */
+    {82, LYE_CHAR},		/* R */
+    {83, LYE_CHAR},		/* S */
+    {84, LYE_CHAR},		/* T */
+    {85, LYE_CHAR},		/* U */
+    {86, LYE_CHAR},		/* V */
+    {87, LYE_CHAR},		/* W */
+    {88, LYE_CHAR},		/* X */
+    {89, LYE_CHAR},		/* Y */
+    {90, LYE_CHAR},		/* Z */
+    {91, LYE_CHAR},		/* [ */
+    {92, LYE_CHAR},		/* \ */
+    {93, LYE_CHAR},		/* ] */
+    {94, LYE_CHAR},		/* ^ */
+    {95, LYE_CHAR},		/* _ */
+    {96, LYE_CHAR},		/* ` */
+    {97, LYE_CHAR},		/* a */
+    {98, LYE_CHAR},		/* b */
+    {99, LYE_CHAR},		/* c */
+    {100, LYE_CHAR},		/* d */
+    {101, LYE_CHAR},		/* e */
+    {102, LYE_CHAR},		/* f */
+    {103, LYE_CHAR},		/* g */
+    {104, LYE_CHAR},		/* h */
+    {105, LYE_CHAR},		/* i */
+    {106, LYE_CHAR},		/* j */
+    {107, LYE_CHAR},		/* k */
+    {108, LYE_CHAR},		/* l */
+    {109, LYE_CHAR},		/* m */
+    {110, LYE_CHAR},		/* n */
+    {111, LYE_CHAR},		/* o */
+    {112, LYE_CHAR},		/* p */
+    {113, LYE_CHAR},		/* q */
+    {114, LYE_CHAR},		/* r */
+    {115, LYE_CHAR},		/* s */
+    {116, LYE_CHAR},		/* t */
+    {117, LYE_CHAR},		/* u */
+    {118, LYE_CHAR},		/* v */
+    {119, LYE_CHAR},		/* w */
+    {120, LYE_CHAR},		/* x */
+    {121, LYE_CHAR},		/* y */
+    {122, LYE_CHAR},		/* z */
+    {123, LYE_CHAR},		/* { */
+    {124, LYE_CHAR},		/* | */
+    {125, LYE_CHAR},		/* } */
+    {126, LYE_CHAR},		/* ~ */
+    {127, LYE_DELP},
+    {128, LYE_CHAR},
+    {129, LYE_CHAR},
+    {130, LYE_CHAR},
+    {131, LYE_CHAR},
+    {132, LYE_CHAR},
+    {133, LYE_CHAR},
+    {134, LYE_CHAR},
+    {135, LYE_CHAR},
+    {136, LYE_CHAR},
+    {137, LYE_CHAR},
+    {138, LYE_CHAR},
+    {139, LYE_CHAR},
+    {140, LYE_CHAR},
+    {141, LYE_CHAR},
+#ifdef CJK_EX			/* 1997/11/03 (Mon) 20:30:54 */
+    {142, LYE_CHAR},
+#else
+    {142, LYE_AIX},
+#endif
+    {143, LYE_CHAR},
+    {144, LYE_CHAR},
+    {145, LYE_CHAR},
+    {146, LYE_CHAR},
+    {147, LYE_CHAR},
+    {148, LYE_CHAR},
+    {149, LYE_CHAR},
+    {150, LYE_CHAR},
+    {151, LYE_CHAR},
+    {152, LYE_CHAR},
+    {153, LYE_CHAR},
+    {154, LYE_CHAR},
+    {155, LYE_CHAR},
+    {156, LYE_CHAR},
+    {157, LYE_CHAR},
+    {158, LYE_CHAR},
+    {159, LYE_CHAR},
+    {160, LYE_CHAR},
+    {161, LYE_CHAR},
+    {162, LYE_CHAR},
+    {163, LYE_CHAR},
+    {164, LYE_CHAR},
+    {165, LYE_CHAR},
+    {166, LYE_CHAR},
+    {167, LYE_CHAR},
+    {168, LYE_CHAR},
+    {169, LYE_CHAR},
+    {170, LYE_CHAR},
+    {171, LYE_CHAR},
+    {172, LYE_CHAR},
+    {173, LYE_CHAR},
+    {174, LYE_CHAR},
+    {175, LYE_CHAR},
+    {176, LYE_CHAR},
+    {177, LYE_CHAR},
+    {178, LYE_CHAR},
+    {179, LYE_CHAR},
+    {180, LYE_CHAR},
+    {181, LYE_CHAR},
+    {182, LYE_CHAR},
+    {183, LYE_CHAR},
+    {184, LYE_CHAR},
+    {185, LYE_CHAR},
+    {186, LYE_CHAR},
+    {187, LYE_CHAR},
+    {188, LYE_CHAR},
+    {189, LYE_CHAR},
+    {190, LYE_CHAR},
+    {191, LYE_CHAR},
+    {192, LYE_CHAR},
+    {193, LYE_CHAR},
+    {194, LYE_CHAR},
+    {195, LYE_CHAR},
+    {196, LYE_CHAR},
+    {197, LYE_CHAR},
+    {198, LYE_CHAR},
+    {199, LYE_CHAR},
+    {200, LYE_CHAR},
+    {201, LYE_CHAR},
+    {202, LYE_CHAR},
+    {203, LYE_CHAR},
+    {204, LYE_CHAR},
+    {205, LYE_CHAR},
+    {206, LYE_CHAR},
+    {207, LYE_CHAR},
+    {208, LYE_CHAR},
+    {209, LYE_CHAR},
+    {210, LYE_CHAR},
+    {211, LYE_CHAR},
+    {212, LYE_CHAR},
+    {213, LYE_CHAR},
+    {214, LYE_CHAR},
+    {215, LYE_CHAR},
+    {216, LYE_CHAR},
+    {217, LYE_CHAR},
+    {218, LYE_CHAR},
+    {219, LYE_CHAR},
+    {220, LYE_CHAR},
+    {221, LYE_CHAR},
+    {222, LYE_CHAR},
+    {223, LYE_CHAR},
+    {224, LYE_CHAR},
+    {225, LYE_CHAR},
+    {226, LYE_CHAR},
+    {227, LYE_CHAR},
+    {228, LYE_CHAR},
+    {229, LYE_CHAR},
+    {230, LYE_CHAR},
+    {231, LYE_CHAR},
+    {232, LYE_CHAR},
+    {233, LYE_CHAR},
+    {234, LYE_CHAR},
+    {235, LYE_CHAR},
+    {236, LYE_CHAR},
+    {237, LYE_CHAR},
+    {238, LYE_CHAR},
+    {239, LYE_CHAR},
+    {240, LYE_CHAR},
+    {241, LYE_CHAR},
+    {242, LYE_CHAR},
+    {243, LYE_CHAR},
+    {244, LYE_CHAR},
+    {245, LYE_CHAR},
+    {246, LYE_CHAR},
+    {247, LYE_CHAR},
+    {248, LYE_CHAR},
+    {249, LYE_CHAR},
+    {250, LYE_CHAR},
+    {251, LYE_CHAR},
+    {252, LYE_CHAR},
+    {253, LYE_CHAR},
+    {254, LYE_CHAR},
+    {255, LYE_CHAR},
+    {256, LYE_FORM_PASS},	/* UPARROW */
+    {257, LYE_FORM_PASS},	/* DNARROW */
+    {258, LYE_FORW},		/* RTARROW */
+    {259, LYE_BACK},		/* LTARROW */
+    {260, LYE_FORM_PASS},	/* PGDOWN */
+    {261, LYE_FORM_PASS},	/* PGUP */
+    {262, LYE_BOL},		/* HOME */
+    {263, LYE_EOL},		/* END_KEY */
+    {264, LYE_FORM_PASS},	/* F1 */
+#if !(defined(_WINDOWS) || defined(__DJGPP__))
+    {265, LYE_TAB},		/* DO_KEY */
+    {266, LYE_BOL},		/* FIND_KEY */
+    {267, LYE_EOL},		/* SELECT_KEY */
+#endif
+    {269, LYE_DELP},		/* REMOVE_KEY */
+    {271, LYE_FORM_PASS},	/* BACKTAB_KEY */
+#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
+    {272, LYE_DELP},
+    {273, LYE_ENTER},
+#endif
+    {-1, LYE_UNKNOWN}
 };
 
-/*
- * Add the name that the user will see below.
- * The order of LYLineEditors and LYLineditNames MUST be the same.
- */
-const char *LYLineeditNames[] =
+static const LYEditInit initBashlikeEditor[] =
 {
-    "Default Binding",
+    {0, LYE_SETMARK},		/* nul */
+    {1, LYE_BOL},		/* ^B */
+    {2, LYE_BACK},		/* ^C */
+    {3, LYE_ABORT},		/* ^D */
+    {4, LYE_DELN},		/* ^E */
+    {5, LYE_EOL | LYE_DF},	/* ^F */
+    {6, LYE_FORW},		/* ^G */
+    {7, LYE_ABORT},		/* ^H */
+    {8, LYE_DELP},		/* ^I */
+    {9, LYE_TAB},		/* ^J */
+    {10, LYE_ENTER},		/* ^K */
+    {11, LYE_DELEL | LYE_DF},	/* ^L */
+    {12, LYE_FORM_PASS},	/* ^M */
+    {13, LYE_ENTER},		/* ^N */
+    {14, LYE_FORM_PASS},	/* ^O */
+    {15, LYE_FORM_PASS},	/* ^P */
+    {16, LYE_FORM_PASS},	/* ^Q */
+    {18, LYE_BACKW},		/* ^S */
+    {19, LYE_FORWW},		/* XOFF */
+    {20, LYE_TPOS},		/* ^U */
+    {21, LYE_DELBL},		/* ^V */
+    {22, LYE_LKCMD},		/* ^W */
+    {23, LYE_DELPW},		/* ^X */
+    {24, LYE_SETM1},		/* ^Y */
+    {25, LYE_YANK},		/* ^Z */
+    {26, LYE_FORM_PASS},	/* ^[ */
+    {27, LYE_SETM2},		/* ^\ */
+    {28, LYE_FORM_PASS},	/* ^] */
+    {29, LYE_FORM_PASS},	/* ^^ */
+    {30, LYE_SWMAP},		/* ^_ */
+    {31, LYE_ABORT},		/* ^` */
+    {32, LYE_CHAR},		/*   */
+    {33, LYE_CHAR},		/* ! */
+    {34, LYE_CHAR},		/* " */
+    {35, LYE_CHAR},		/* # */
+    {36, LYE_CHAR},		/* $ */
+    {37, LYE_CHAR},		/* % */
+    {38, LYE_CHAR},		/* & */
+    {39, LYE_CHAR},		/* ' */
+    {40, LYE_CHAR},		/* ( */
+    {41, LYE_CHAR},		/* ) */
+    {42, LYE_CHAR},		/* * */
+    {43, LYE_CHAR},		/* + */
+    {44, LYE_CHAR},		/* , */
+    {45, LYE_CHAR},		/* - */
+    {46, LYE_CHAR},		/* . */
+    {47, LYE_CHAR},		/* / */
+    {48, LYE_CHAR},		/* 0 */
+    {49, LYE_CHAR},		/* 1 */
+    {50, LYE_CHAR},		/* 2 */
+    {51, LYE_CHAR},		/* 3 */
+    {52, LYE_CHAR},		/* 4 */
+    {53, LYE_CHAR},		/* 5 */
+    {54, LYE_CHAR},		/* 6 */
+    {55, LYE_CHAR},		/* 7 */
+    {56, LYE_CHAR},		/* 8 */
+    {57, LYE_CHAR},		/* 9 */
+    {58, LYE_CHAR},		/* : */
+    {59, LYE_CHAR},		/* ; */
+    {60, LYE_CHAR},		/* < */
+    {61, LYE_CHAR},		/* = */
+    {62, LYE_CHAR},		/* > */
+    {63, LYE_CHAR},		/* ? */
+    {64, LYE_CHAR},		/* @ */
+    {65, LYE_CHAR},		/* A */
+    {66, LYE_CHAR},		/* B */
+    {67, LYE_CHAR},		/* C */
+    {68, LYE_CHAR},		/* D */
+    {69, LYE_CHAR},		/* E */
+    {70, LYE_CHAR},		/* F */
+    {71, LYE_CHAR},		/* G */
+    {72, LYE_CHAR},		/* H */
+    {73, LYE_CHAR},		/* I */
+    {74, LYE_CHAR},		/* J */
+    {75, LYE_CHAR},		/* K */
+    {76, LYE_CHAR},		/* L */
+    {77, LYE_CHAR},		/* M */
+    {78, LYE_CHAR},		/* N */
+    {79, LYE_CHAR},		/* O */
+    {80, LYE_CHAR},		/* P */
+    {81, LYE_CHAR},		/* Q */
+    {82, LYE_CHAR},		/* R */
+    {83, LYE_CHAR},		/* S */
+    {84, LYE_CHAR},		/* T */
+    {85, LYE_CHAR},		/* U */
+    {86, LYE_CHAR},		/* V */
+    {87, LYE_CHAR},		/* W */
+    {88, LYE_CHAR},		/* X */
+    {89, LYE_CHAR},		/* Y */
+    {90, LYE_CHAR},		/* Z */
+    {91, LYE_CHAR},		/* [ */
+    {92, LYE_CHAR},		/* \ */
+    {93, LYE_CHAR},		/* ] */
+    {94, LYE_CHAR},		/* ^ */
+    {95, LYE_CHAR},		/* _ */
+    {96, LYE_CHAR},		/* ` */
+    {97, LYE_CHAR},		/* a */
+    {98, LYE_CHAR},		/* b */
+    {99, LYE_CHAR},		/* c */
+    {100, LYE_CHAR},		/* d */
+    {101, LYE_CHAR},		/* e */
+    {102, LYE_CHAR},		/* f */
+    {103, LYE_CHAR},		/* g */
+    {104, LYE_CHAR},		/* h */
+    {105, LYE_CHAR},		/* i */
+    {106, LYE_CHAR},		/* j */
+    {107, LYE_CHAR},		/* k */
+    {108, LYE_CHAR},		/* l */
+    {109, LYE_CHAR},		/* m */
+    {110, LYE_CHAR},		/* n */
+    {111, LYE_CHAR},		/* o */
+    {112, LYE_CHAR},		/* p */
+    {113, LYE_CHAR},		/* q */
+    {114, LYE_CHAR},		/* r */
+    {115, LYE_CHAR},		/* s */
+    {116, LYE_CHAR},		/* t */
+    {117, LYE_CHAR},		/* u */
+    {118, LYE_CHAR},		/* v */
+    {119, LYE_CHAR},		/* w */
+    {120, LYE_CHAR},		/* x */
+    {121, LYE_CHAR},		/* y */
+    {122, LYE_CHAR},		/* z */
+    {123, LYE_CHAR},		/* { */
+    {124, LYE_CHAR},		/* | */
+    {125, LYE_CHAR},		/* } */
+    {126, LYE_CHAR},		/* ~ */
+    {127, LYE_DELP},
+    {128, LYE_CHAR},
+    {129, LYE_CHAR},
+    {130, LYE_CHAR},
+    {131, LYE_CHAR},
+    {132, LYE_CHAR},
+    {133, LYE_CHAR},
+    {134, LYE_CHAR},
+    {135, LYE_CHAR},
+    {136, LYE_CHAR},
+    {137, LYE_CHAR},
+    {138, LYE_CHAR},
+    {139, LYE_CHAR},
+    {140, LYE_CHAR},
+    {141, LYE_CHAR},
+    {142, LYE_CHAR},
+    {143, LYE_CHAR},
+    {144, LYE_CHAR},
+    {145, LYE_CHAR},
+    {146, LYE_CHAR},
+    {147, LYE_CHAR},
+    {148, LYE_CHAR},
+    {149, LYE_CHAR},
+    {150, LYE_CHAR},
+    {151, LYE_AIX},
+    {152, LYE_CHAR},
+    {153, LYE_CHAR},
+    {154, LYE_CHAR},
+    {155, LYE_CHAR},
+    {156, LYE_CHAR},
+    {157, LYE_CHAR},
+    {158, LYE_CHAR},
+    {159, LYE_CHAR},
+    {160, LYE_CHAR},
+    {161, LYE_CHAR},
+    {162, LYE_CHAR},
+    {163, LYE_CHAR},
+    {164, LYE_CHAR},
+    {165, LYE_CHAR},
+    {166, LYE_CHAR},
+    {167, LYE_CHAR},
+    {168, LYE_CHAR},
+    {169, LYE_CHAR},
+    {170, LYE_CHAR},
+    {171, LYE_CHAR},
+    {172, LYE_CHAR},
+    {173, LYE_CHAR},
+    {174, LYE_CHAR},
+    {175, LYE_CHAR},
+    {176, LYE_CHAR},
+    {177, LYE_CHAR},
+    {178, LYE_CHAR},
+    {179, LYE_CHAR},
+    {180, LYE_CHAR},
+    {181, LYE_CHAR},
+    {182, LYE_CHAR},
+    {183, LYE_CHAR},
+    {184, LYE_CHAR},
+    {185, LYE_CHAR},
+    {186, LYE_CHAR},
+    {187, LYE_CHAR},
+    {188, LYE_CHAR},
+    {189, LYE_CHAR},
+    {190, LYE_CHAR},
+    {191, LYE_CHAR},
+    {192, LYE_CHAR},
+    {193, LYE_CHAR},
+    {194, LYE_CHAR},
+    {195, LYE_CHAR},
+    {196, LYE_CHAR},
+    {197, LYE_CHAR},
+    {198, LYE_CHAR},
+    {199, LYE_CHAR},
+    {200, LYE_CHAR},
+    {201, LYE_CHAR},
+    {202, LYE_CHAR},
+    {203, LYE_CHAR},
+    {204, LYE_CHAR},
+    {205, LYE_CHAR},
+    {206, LYE_CHAR},
+    {207, LYE_CHAR},
+    {208, LYE_CHAR},
+    {209, LYE_CHAR},
+    {210, LYE_CHAR},
+    {211, LYE_CHAR},
+    {212, LYE_CHAR},
+    {213, LYE_CHAR},
+    {214, LYE_CHAR},
+    {215, LYE_CHAR},
+    {216, LYE_CHAR},
+    {217, LYE_CHAR},
+    {218, LYE_CHAR},
+    {219, LYE_CHAR},
+    {220, LYE_CHAR},
+    {221, LYE_CHAR},
+    {222, LYE_CHAR},
+    {223, LYE_CHAR},
+    {224, LYE_CHAR},
+    {225, LYE_CHAR},
+    {226, LYE_CHAR},
+    {227, LYE_CHAR},
+    {228, LYE_CHAR},
+    {229, LYE_CHAR},
+    {230, LYE_CHAR},
+    {231, LYE_CHAR},
+    {232, LYE_CHAR},
+    {233, LYE_CHAR},
+    {234, LYE_CHAR},
+    {235, LYE_CHAR},
+    {236, LYE_CHAR},
+    {237, LYE_CHAR},
+    {238, LYE_CHAR},
+    {239, LYE_CHAR},
+    {240, LYE_CHAR},
+    {241, LYE_CHAR},
+    {242, LYE_CHAR},
+    {243, LYE_CHAR},
+    {244, LYE_CHAR},
+    {245, LYE_CHAR},
+    {246, LYE_CHAR},
+    {247, LYE_CHAR},
+    {248, LYE_CHAR},
+    {249, LYE_CHAR},
+    {250, LYE_CHAR},
+    {251, LYE_CHAR},
+    {252, LYE_CHAR},
+    {253, LYE_CHAR},
+    {254, LYE_CHAR},
+    {255, LYE_CHAR},
+    {256, LYE_FORM_PASS},	/* UPARROW */
+    {257, LYE_FORM_PASS},	/* DNARROW */
+    {258, LYE_FORW},		/* RTARROW */
+    {259, LYE_BACK},		/* LTARROW */
+    {260, LYE_FORM_PASS},	/* PGDOWN */
+    {261, LYE_FORM_PASS},	/* PGUP */
+    {262, LYE_BOL},		/* HOME */
+    {263, LYE_EOL},		/* END_KEY */
+    {264, LYE_FORM_PASS},	/* F1 */
+#if !(defined(_WINDOWS) || defined(__DJGPP__))
+    {265, LYE_TAB},		/* DO_KEY */
+    {266, LYE_BOL},		/* FIND_KEY */
+    {267, LYE_EOL},		/* SELECT_KEY */
+#endif
+    {269, LYE_DELN},		/* REMOVE_KEY */
+    {271, LYE_FORM_PASS},	/* BACKTAB_KEY */
+#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
+    {272, LYE_DELP},
+    {273, LYE_ENTER},
+#endif
+    {-1, LYE_UNKNOWN}
+};
+#endif /* USE_ALT_BINDINGS */
+
+LYEditConfig LYLineEditors[] =
+{
+    {"Default Binding", initDefaultEditor, DefaultEditBinding},
 #ifdef USE_ALT_BINDINGS
-    "Alternate Bindings",
-    "Bash-like Bindings",
+    {"Alternate Bindings", initBetterEditor, BetterEditBinding},
+    {"Bash-like Bindings", initBashlikeEditor, BashlikeEditBinding},
 #endif
-    (char *) 0
 };
 
+const char *LYLineeditNames[TABLESIZE(LYLineEditors) + 1];
+
 /*
  * Add the URL (relative to helpfilepath) used for context-dependent
  * help on form field editing.
@@ -1062,15 +1268,15 @@ BOOL LYRemapEditBinding(int xlkc,
 	    return FALSE;	/* cannot do, doesn't fit in a char - kw */
 	if (select_edi > 0) {
 	    if ((unsigned int) select_edi < TABLESIZE(LYLineEditors)) {
-		LYLineEditors[select_edi - 1][c] = (LYEditCode) lec;
+		LYLineEditors[select_edi - 1].used[c] = (LYEditCode) lec;
 		success = TRUE;
 	    }
 	} else {
-	    for (j = 0; LYLineeditNames[j]; j++) {
+	    for (j = 0; j < (int) TABLESIZE(LYLineEditors); j++) {
 		success = TRUE;
 		if (select_edi < 0 && j + 1 + select_edi == 0)
 		    continue;
-		LYLineEditors[j][c] = (LYEditCode) lec;
+		LYLineEditors[j].used[c] = (LYEditCode) lec;
 	    }
 	}
     }
@@ -1297,3 +1503,195 @@ int LYEditmapDeclared(void)
 
     return status;
 }
+
+#if 0
+static void printEditMap(LYEditConfig * table)
+{
+    unsigned j, k;
+    char comment[80];
+    int first = TRUE;
+
+    for (j = 0; table->init[j].code >= 0; ++j) {
+	int code = table->init[j].code;
+
+	if (table->init[j].edit != table->used[code]) {
+	    if (first) {
+		printf("TABLE %s\n", table->name);
+		first = FALSE;
+	    }
+	    printf("%u: init %d vs used %d\n",
+		   j,
+		   table->init[j].edit,
+		   table->used[code]);
+	}
+    }
+    for (j = 0; j < KEYMAP_SIZE - 1; ++j) {
+	int code = (int) j;
+	BOOL found = FALSE;
+
+	for (k = 0; table->init[k].code >= 0; ++k) {
+	    if (code == table->init[k].code) {
+		found = TRUE;
+		break;
+	    }
+	}
+	if (!found) {
+	    if (table->used[j] != 0) {
+		int edit = table->used[j];
+		int has_DF = (edit & LYE_DF);
+		int has_LAC = (edit & LYE_FORM_LAC);
+		const char *prefix = "LYE_";
+		const char *name = 0;
+
+		edit &= 0x7f;
+		if (has_LAC) {
+		    Kcmd *cmd = LYKeycodeToKcmd(edit);
+
+		    if (cmd != 0) {
+			prefix = "LYK_";
+			name = cmd->name;
+		    }
+		} else {
+		    name = lec_to_lecname(edit);
+		}
+
+		if (j < 32) {
+		    char temp[80];
+		    const char *what = 0;
+
+		    switch (j) {
+		    case 0:
+			what = "nul";
+			break;
+		    case 17:
+			what = "XON";
+			break;
+		    case 19:
+			what = "XOFF";
+			break;
+		    default:
+			sprintf(temp, "^%c", j + 'A');
+			what = temp;
+			break;
+		    }
+		    sprintf(comment, "\t/* %s */", what);
+		} else if (j < 127) {
+		    sprintf(comment, "\t/* %c */", j);
+		} else {
+		    const char *what;
+
+		    switch (j) {
+		    case UPARROW:
+			what = "UPARROW";
+			break;
+		    case DNARROW:
+			what = "DNARROW";
+			break;
+		    case RTARROW:
+			what = "RTARROW";
+			break;
+		    case LTARROW:
+			what = "LTARROW";
+			break;
+		    case PGDOWN:
+			what = "PGDOWN";
+			break;
+		    case PGUP:
+			what = "PGUP";
+			break;
+		    case HOME:
+			what = "HOME";
+			break;
+		    case END_KEY:
+			what = "END_KEY";
+			break;
+		    case F1:
+			what = "F1";
+			break;
+		    case DO_KEY:
+			what = "DO_KEY";
+			break;
+		    case FIND_KEY:
+			what = "FIND_KEY";
+			break;
+		    case SELECT_KEY:
+			what = "SELECT_KEY";
+			break;
+		    case INSERT_KEY:
+			what = "INSERT_KEY";
+			break;
+		    case REMOVE_KEY:
+			what = "REMOVE_KEY";
+			break;
+		    case DO_NOTHING:
+			what = "DO_NOTHING";
+			break;
+		    case BACKTAB_KEY:
+			what = "BACKTAB_KEY";
+			break;
+		    case MOUSE_KEY:
+			what = "MOUSE_KEY";
+			break;
+		    default:
+			what = "";
+			break;
+		    }
+		    if (*what) {
+			sprintf(comment, "\t/* %s */", what);
+		    } else {
+			strcpy(comment, "");
+		    }
+		}
+		if (name == 0) {
+		    name = "XXX";
+		} else if (!strcmp(name, "PASS")) {
+		    name = "FORM_PASS";
+		}
+		if (first) {
+		    printf("TABLE %s\n", table->name);
+		    first = FALSE;
+		}
+		printf("\t{ %d, %s%s%s%s },%s\n", code, prefix, name,
+		       has_DF ? "|LYE_DF" : "",
+		       has_LAC ? "|LYE_FORM_LAC" : "",
+		       comment);
+	    }
+	}
+    }
+}
+
+#else
+#define printEditMap(table)	/* nothing */
+#endif
+
+static void initLineEditor(LYEditConfig * table)
+{
+    unsigned k;
+    LYEditCode *used = table->used;
+    const LYEditInit *init = table->init;
+
+    memset(used, 0, sizeof(LYEditCode) * (KEYMAP_SIZE - 1));
+    for (k = 0; init[k].code >= 0; ++k) {
+	int code = init[k].code;
+	int edit = init[k].edit;
+
+	used[code] = edit;
+    }
+    printEditMap(table);
+}
+
+/*
+ * Reset the editor bindings to their default values.
+ */
+void LYinitEditmap(void)
+{
+    unsigned j;
+
+    for (j = 0; j < TABLESIZE(LYLineEditors); ++j) {
+	LYLineeditNames[j] = LYLineEditors[j].name;
+	initLineEditor(&LYLineEditors[j]);
+    }
+    for (j = 0; j < TABLESIZE(LYModifierBindings); ++j) {
+	initLineEditor(&LYModifierBindings[j]);
+    }
+}
diff --git a/src/LYForms.c b/src/LYForms.c
index 423d376c..a21436df 100644
--- a/src/LYForms.c
+++ b/src/LYForms.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYForms.c,v 1.103 2013/05/04 12:58:54 tom Exp $ */
+/* $LynxId: LYForms.c,v 1.104 2013/10/12 00:03:00 tom Exp $ */
 #include <HTUtils.h>
 #include <HTCJK.h>
 #include <HTTP.h>
@@ -1029,7 +1029,7 @@ void show_formlink_statusline(const FormInfo * form,
 	    char *xkey_info = NULL;
 
 	    if (!no_editor && non_empty(editor)) {
-		xkey_info = key_for_func_ext(LYK_EDIT_TEXTAREA, for_what);
+		xkey_info = key_for_func_ext(LYK_EDITTEXTAREA, for_what);
 #ifdef TEXTAREA_AUTOEXTEDIT
 		if (!xkey_info)
 		    xkey_info = key_for_func_ext(LYK_DWIMEDIT, for_what);
diff --git a/src/LYKeymap.c b/src/LYKeymap.c
index 7adb9b5d..26c7164d 100644
--- a/src/LYKeymap.c
+++ b/src/LYKeymap.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYKeymap.c,v 1.85 2013/05/03 23:07:29 tom Exp $ */
+/* $LynxId: LYKeymap.c,v 1.86 2013/10/12 00:04:22 tom Exp $ */
 #include <HTUtils.h>
 #include <LYUtils.h>
 #include <LYGlobalDefs.h>
@@ -887,13 +887,13 @@ static Kcmd revmap[] = {
 	LYK_DWIMEDIT, "DWIMEDIT",
 	"use external editor for context-dependent purpose" ),
     DATA(
-	LYK_EDIT_TEXTAREA, "EDITTEXTAREA",
+	LYK_EDITTEXTAREA, "EDITTEXTAREA",
 	"use an external editor to edit a form's textarea" ),
     DATA(
-	LYK_GROW_TEXTAREA, "GROWTEXTAREA",
+	LYK_GROWTEXTAREA, "GROWTEXTAREA",
 	"add 5 new blank lines to the bottom of a textarea" ),
     DATA(
-	LYK_INSERT_FILE, "INSERTFILE",
+	LYK_INSERTFILE, "INSERTFILE",
 	"insert file into a textarea (just above cursorline)" ),
 #ifdef USE_ADDRLIST_PAGE
     DATA(
diff --git a/src/LYKeymap.h b/src/LYKeymap.h
index 5cc8c4c7..5e4e3591 100644
--- a/src/LYKeymap.h
+++ b/src/LYKeymap.h
@@ -1,4 +1,4 @@
-/* $LynxId: LYKeymap.h,v 1.48 2012/02/12 18:29:34 tom Exp $ */
+/* $LynxId: LYKeymap.h,v 1.49 2013/10/12 00:04:22 tom Exp $ */
 #ifndef LYKEYMAP_H
 #define LYKEYMAP_H
 
@@ -199,9 +199,9 @@ extern "C" {
 	,LYK_ELGOTO
 	,LYK_CHANGE_LINK
 	,LYK_DWIMEDIT
-	,LYK_EDIT_TEXTAREA
-	,LYK_GROW_TEXTAREA
-	,LYK_INSERT_FILE
+	,LYK_EDITTEXTAREA
+	,LYK_GROWTEXTAREA
+	,LYK_INSERTFILE
 
 #ifdef USE_ADDRLIST_PAGE
 	,LYK_ADDRLIST
diff --git a/src/LYMain.c b/src/LYMain.c
index 161847fd..6d924436 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYMain.c,v 1.244 2013/10/02 20:08:54 tom Exp $
+ * $LynxId: LYMain.c,v 1.245 2013/10/11 10:06:51 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTTP.h>
@@ -1042,6 +1042,7 @@ int main(int argc,
     ftp_lasthost = typecalloc(char);
 #endif
 
+    LYinitEditmap();
 #ifdef USE_CHARSET_CHOICE
     memset((char *) charset_subsets, 0, sizeof(charset_subset_t) * MAXCHARSETS);
 #endif
diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c
index 5d66b5cc..280de6cf 100644
--- a/src/LYMainLoop.c
+++ b/src/LYMainLoop.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYMainLoop.c,v 1.217 2013/05/05 20:36:20 tom Exp $
+ * $LynxId: LYMainLoop.c,v 1.219 2013/10/12 00:24:53 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTAccess.h>
@@ -2430,7 +2430,7 @@ static int handle_LYK_DWIMEDIT(int *cmd,
      */
     if (nlinks > 0 &&
 	LinkIsTextarea(curdoc.link)) {
-	*cmd = LYK_EDIT_TEXTAREA;
+	*cmd = LYK_EDITTEXTAREA;
 	return 2;
     }
 
@@ -7564,15 +7564,15 @@ int mainloop(void)
 		goto new_cmd;
 	    break;
 
-	case LYK_EDIT_TEXTAREA:	/* use external editor on a TEXTAREA - KED */
+	case LYK_EDITTEXTAREA:	/* use external editor on a TEXTAREA - KED */
 	    handle_LYK_EDIT_TEXTAREA(&refresh_screen, &old_c, real_c);
 	    break;
 
-	case LYK_GROW_TEXTAREA:	/* add new lines to bottom of TEXTAREA - KED */
+	case LYK_GROWTEXTAREA:	/* add new lines to bottom of TEXTAREA - KED */
 	    handle_LYK_GROW_TEXTAREA(&refresh_screen);
 	    break;
 
-	case LYK_INSERT_FILE:	/* insert file in TEXTAREA, above cursor - KED */
+	case LYK_INSERTFILE:	/* insert file in TEXTAREA, above cursor - KED */
 	    handle_LYK_INSERT_FILE(&refresh_screen, &old_c, real_c);
 	    break;
 
@@ -8009,8 +8009,8 @@ static void form_noviceline(int disabled)
     if (!disabled) {
 	LYaddstr(FORM_NOVICELINE_ONE);
     }
-    LYmove(LYlines - 1, 0);
-    LYclrtoeol();
+    LYParkCursor();
+
     if (disabled)
 	return;
     if (EditBinding(FROMASCII('\025')) == LYE_ERASE) {
diff --git a/src/LYOptions.c b/src/LYOptions.c
index 90025a69..8f9cda57 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYOptions.c,v 1.154 2013/06/02 19:37:05 tom Exp $ */
+/* $LynxId: LYOptions.c,v 1.155 2013/10/10 23:29:51 tom Exp $ */
 #include <HTUtils.h>
 #include <HTFTP.h>
 #include <HTTP.h>		/* 'reloading' flag */
@@ -2034,8 +2034,7 @@ void edit_bookmarks(void)
 		if (MBM_A_subbookmark[a])
 		    LYaddstr(MBM_A_subbookmark[a]);
 		LYclrtoeol();
-		LYmove(LYlines - 1, 0);
-		LYclrtoeol();
+		LYParkCursor();
 		break;
 	    }
 	}			/* end for */
diff --git a/src/LYStrings.h b/src/LYStrings.h
index 219413e9..a1cf0cd7 100644
--- a/src/LYStrings.h
+++ b/src/LYStrings.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYStrings.h,v 1.88 2013/05/03 09:37:02 tom Exp $
+ * $LynxId: LYStrings.h,v 1.91 2013/10/12 00:06:34 tom Exp $
  */
 #ifndef LYSTRINGS_H
 #define LYSTRINGS_H
@@ -240,7 +240,8 @@ extern "C" {
 /* line-edit action encoding */
 
     typedef enum {
-	LYE_NOP = 0		/* Do Nothing            */
+	LYE_UNKNOWN = -1	/* no binding            */
+	,LYE_NOP = 0		/* Do Nothing            */
 	,LYE_CHAR		/* Insert printable char */
 	,LYE_ENTER		/* Input complete, return char/lynxkeycode */
 	,LYE_TAB		/* Input complete, return TAB  */
@@ -351,15 +352,27 @@ extern "C" {
 				 int disabled,
 				 int for_mouse);
 
-    typedef unsigned char LYEditCode;
+    typedef unsigned short LYEditCode;
+
+    typedef struct {
+	int code;
+	LYEditCode edit;
+    } LYEditInit;
+
+    typedef struct {
+	const char *name;
+	const LYEditInit *init;
+	LYEditCode *used;
+    } LYEditConfig;
 
     extern int current_lineedit;
     extern const char *LYLineeditNames[];
-    extern LYEditCode *LYLineEditors[];
+    extern LYEditConfig LYLineEditors[];
     extern const char *LYLineeditHelpURLs[];
 
-#define CurrentLineEditor() LYLineEditors[current_lineedit]
+#define CurrentLineEditor() LYLineEditors[current_lineedit].used
 
+    extern void LYinitEditmap(void);
     extern const char *LYLineeditHelpURL(void);
 
     extern int escape_bound;
diff --git a/src/LYUtils.c b/src/LYUtils.c
index 43238170..ea645abe 100644
--- a/src/LYUtils.c
+++ b/src/LYUtils.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYUtils.c,v 1.243 2013/10/03 08:58:05 tom Exp $
+ * $LynxId: LYUtils.c,v 1.244 2013/10/10 23:30:08 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTTCP.h>
@@ -1593,8 +1593,7 @@ void noviceline(int more_flag GCC_UNUSED)
     LYclrtoeol();
     LYaddstr(NOVICE_LINE_ONE);
 
-    LYmove(LYlines - 1, 0);
-    LYclrtoeol();
+    LYParkCursor();
 #if defined(DIRED_SUPPORT ) && defined(OK_OVERRIDE)
     if (lynx_edit_mode && !no_dired_support)
 	LYaddstr(DIRED_NOVICELINE);