about summary refs log tree commit diff stats
path: root/src/LYEditmap.c
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2010-05-03 00:45:10 -0400
committerThomas E. Dickey <dickey@invisible-island.net>2010-05-03 00:45:10 -0400
commit903885454167e86ce4cb967f901cbaf741f21501 (patch)
tree90a46f9f1e6c6194c8f43bbb4aa81e1e50e7e2fe /src/LYEditmap.c
parentdc748b1c47baadafae2c90f0e188927b11b7e029 (diff)
downloadlynx-snapshots-903885454167e86ce4cb967f901cbaf741f21501.tar.gz
snapshot of project "lynx", label v2-8-8dev_3c
Diffstat (limited to 'src/LYEditmap.c')
-rw-r--r--src/LYEditmap.c1299
1 files changed, 1299 insertions, 0 deletions
diff --git a/src/LYEditmap.c b/src/LYEditmap.c
new file mode 100644
index 00000000..04fdee7f
--- /dev/null
+++ b/src/LYEditmap.c
@@ -0,0 +1,1299 @@
+/*
+ * $LynxId: LYEditmap.c,v 1.27 2008/09/07 23:00:47 tom Exp $
+ *
+ * LYEditMap.c
+ * Keybindings for line and form editting.
+ */
+
+#include <HTUtils.h>
+#include <LYGlobalDefs.h>
+#include <LYStrings.h>
+#include <LYKeymap.h>		/* KEYMAP_SIZE, LKC_*, LYK_* - kw */
+
+/* * * * * LynxEditactionCodes * * * * */
+#ifdef EXP_ALT_BINDINGS
+
+/* Last valid index for the (lynxkeycode+modifier -> lynxeditactioncode)
+ * tables.  Currently all three tables are the same.  - kw
+ */
+#define LAST_MOD1_LKC	0x111
+#define LAST_MOD2_LKC	0x111
+#define LAST_MOD3_LKC	0x111
+
+/*  Get (lynxkeycode+modifier -> lynxeditactioncode) mapping, intermediate.
+ */
+#define LKC_TO_LEC_M1(c) ((c)>LAST_MOD1_LKC? (int)LYE_UNMOD: Mod1Binding[c])
+#define LKC_TO_LEC_M2(c) ((c)>LAST_MOD2_LKC? (int)LYE_UNMOD: Mod2Binding[c])
+#define LKC_TO_LEC_M3(c) ((c)>LAST_MOD3_LKC? (int)LYE_UNMOD: Mod3Binding[c])
+
+#endif /* EXP_ALT_BINDINGS */
+
+int current_lineedit = 0;	/* Index into LYLineEditors[]   */
+
+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 */
+
+#ifdef EXP_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,
+};
+
+/* Oh no, not another one of those tables...
+ *
+ * If modifier bit is set in a lynxkeycode, it is first looked up here.  Note
+ * the type different from the previous tables (short vs.  char), since we want
+ * to hold larger values.  OTOH we can keep the size shorter, everything beyond
+ * the end is effectively LYE_UNMOD (ignore modifier) by virtue of the
+ * LKC_TO_LEC_M1 macro.
+ *
+ * Currently this table isn't specific to the current_lineedit value, it is
+ * shared by all alternative "Bindings" to save space.  However, if the
+ * modifier flag is set only by a LYE_SETMn lynxeditaction, this table can have
+ * 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 */
+
+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         */
+
+#if (defined(_WINDOWS) || defined(__DJGPP__))
+
+LYE_FORM_LAC|LYK_DWIMHELP,
+                LYE_UNMOD,      LYE_UNMOD,      LYE_UNMOD,
+/* F1 */
+
+#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 */
+#if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
+
+LYE_DELPW,      LYE_UNMOD,
+/* Backspace    Enter */
+
+#else
+
+LYE_UNMOD,      LYE_UNMOD,
+
+#endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
+};
+
+/*  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;
+
+#endif /* EXP_ALT_BINDINGS */
+/* *INDENT-ON* */
+
+/*
+ * Add the array name to LYLineEditors
+ */
+
+LYEditCode *LYLineEditors[] =
+{
+    DefaultEditBinding,		/* You can't please everyone, so you ... DW */
+#ifdef EXP_ALT_BINDINGS
+    BetterEditBinding,		/* No, you certainly can't ... /ked 10/27/98 */
+    BashlikeEditBinding,	/* and one more... - kw 1999-02-15 */
+#endif
+};
+
+/*
+ * Add the name that the user will see below.
+ * The order of LYLineEditors and LYLineditNames MUST be the same.
+ */
+const char *LYLineeditNames[] =
+{
+    "Default Binding",
+#ifdef EXP_ALT_BINDINGS
+    "Alternate Bindings",
+    "Bash-like Bindings",
+#endif
+    (char *) 0
+};
+
+/*
+ * Add the URL (relative to helpfilepath) used for context-dependent
+ * help on form field editing.
+ *
+ * The order must correspond to that of LYLineditNames.
+ */
+const char *LYLineeditHelpURLs[] =
+{
+    EDIT_HELP,
+#ifdef EXP_ALT_BINDINGS
+    ALT_EDIT_HELP,
+    BASHLIKE_EDIT_HELP,
+#endif
+    (char *) 0
+};
+
+int EditBinding(int xlkc)
+{
+    int editaction, xleac = LYE_UNMOD;
+    int c = xlkc & LKC_MASK;
+
+    if (xlkc == -1)
+	return LYE_NOP;		/* maybe LYE_ABORT? or LYE_FORM_LAC|LYK_UNKNOWN? */
+#ifdef NOT_ASCII
+    if (c < 256) {
+	c = TOASCII(c);
+    }
+#endif
+#ifdef EXP_ALT_BINDINGS
+    /*
+     * Get intermediate code from one of the lynxkeycode+modifier tables if
+     * applicable, otherwise get the lynxeditactioncode directly.  If we have
+     * more than one modifier bits, the first currently wins.  - kw
+     */
+    if (xlkc & LKC_ISLECLAC) {
+	return LKC2_TO_LEC(xlkc);
+    } else if (xlkc & LKC_MOD1) {
+	xleac = LKC_TO_LEC_M1(c);
+    } else if (xlkc & LKC_MOD2) {
+	xleac = LKC_TO_LEC_M2(c);
+    } else if (xlkc & LKC_MOD3) {
+	xleac = LKC_TO_LEC_M3(c);
+    } else {
+	xleac = UCH(CurrentLineEditor()[c]);
+    }
+#endif
+    /*
+     * If we have an intermediate code that says "same as without modifier",
+     * look that up now; otherwise we are already done.  - kw
+     */
+    if (xleac == LYE_UNMOD) {
+	editaction = CurrentLineEditor()[c];
+    } else {
+	editaction = xleac;
+    }
+    return editaction;
+}
+
+/*
+ * Install lec as the lynxeditaction for lynxkeycode xlkc.  func must be
+ * present in the revmap table.  For normal (non-modifier) lynxkeycodes,
+ * select_edi selects which of the alternative line-editor binding tables is
+ * modified.  If select_edi is positive, only the table given by it is modified
+ * (the DefaultEditBinding table is numbered 1).  If select_edi is 0, all
+ * tables are modified.  If select_edi is negative, all tables except the one
+ * given by abs(select_edi) are modified.  returns TRUE if the mapping was
+ * made, FALSE if not.  Note that this remapping cannot be undone (as might be
+ * desirable as a result of re-parsing lynx.cfg), we don't remember the
+ * original editaction from the Bindings tables anywhere.  - kw
+ */
+BOOL LYRemapEditBinding(int xlkc,
+			int lec,
+			int select_edi)
+{
+    int j;
+    int c = xlkc & LKC_MASK;
+    BOOLEAN success = FALSE;
+
+    if (xlkc < 0 || (xlkc & LKC_ISLAC) || c >= KEYMAP_SIZE + 1)
+	return FALSE;
+#ifdef EXP_ALT_BINDINGS
+    if (xlkc & LKC_MOD1) {
+	if (c > LAST_MOD1_LKC)
+	    return FALSE;
+	else
+	    Mod1Binding[c] = (short) lec;
+	return TRUE;
+    } else if (xlkc & LKC_MOD2) {
+	if (c > LAST_MOD2_LKC)
+	    return FALSE;
+	else
+	    Mod2Binding[c] = (short) lec;
+	return TRUE;
+    } else if (xlkc & LKC_MOD3) {
+	if (c > LAST_MOD3_LKC)
+	    return FALSE;
+	else
+	    Mod3Binding[c] = (short) lec;
+	return TRUE;
+    } else
+#endif /* EXP_ALT_BINDINGS */
+    {
+#ifndef UCHAR_MAX
+#define UCHAR_MAX 255
+#endif
+	if ((unsigned int) lec > UCHAR_MAX)
+	    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;
+		success = TRUE;
+	    }
+	} else {
+	    for (j = 0; LYLineeditNames[j]; j++) {
+		success = TRUE;
+		if (select_edi < 0 && j + 1 + select_edi == 0)
+		    continue;
+		LYLineEditors[j][c] = (LYEditCode) lec;
+	    }
+	}
+    }
+    return success;
+}
+
+/*
+ * Macro to walk through lkc-indexed tables up to imax, in the (ASCII) order
+ *     97 - 122  ('a' - 'z'),
+ *     32 -  96  (' ' - '`', includes 'A' - 'Z'),
+ *    123 - 126  ('{' - '~'),
+ *      0 -  31  (^@  - ^_),
+ *    256 - imax,
+ *    127 - 255
+ */
+#define NEXT_I(i,imax) ((i==122) ? 32 : (i==96) ? 123 : (i==126) ? 0 :\
+			(i==31) ? 256 : (i==imax) ? 127 :\
+			(i==255) ? (-1) :i+1)
+#define FIRST_I 97
+
+int LYKeyForEditAction(int lec)
+{
+    int editaction, i;
+
+    for (i = FIRST_I; i >= 0; i = NEXT_I(i, KEYMAP_SIZE - 2)) {
+	editaction = CurrentLineEditor()[i];
+	if (editaction == lec) {
+#ifdef NOT_ASCII
+	    if (i < 256) {
+		return FROMASCII(i);
+	    } else
+#endif
+		return i;
+	}
+    }
+    return (-1);
+}
+
+/*
+ * Given a lynxactioncode, return a key (lynxkeycode) or sequence of two keys
+ * that results in the given action while forms-editing.  The main keycode is
+ * returned as function value, possibly with modifier bits set; in addition, if
+ * applicable, a key that sets the required modifier flag is returned in
+ * *pmodkey if (pmodkey!=NULL).  Non-lineediting bindings that would require
+ * typing LYE_LKCMD (default ^V) to activate are not checked here, the caller
+ * should do that separately if required.  If no key is bound by current
+ * line-editor bindings to the action, -1 is returned.
+ *
+ * This is all a bit long - it is general enough to continue to work should the
+ * three Mod<N>Binding[] become different tables.  - kw
+ */
+int LYEditKeyForAction(int lac,
+		       int *pmodkey)
+{
+    int editaction, i, c;
+    int mod1found = -1, mod2found = -1, mod3found = -1;
+
+    if (pmodkey)
+	*pmodkey = -1;
+    for (i = FIRST_I; i >= 0; i = NEXT_I(i, KEYMAP_SIZE - 2)) {
+	editaction = CurrentLineEditor()[i];
+#ifdef NOT_ASCII
+	if (i < 256) {
+	    c = FROMASCII(i);
+	} else
+#endif
+	    c = i;
+	if (editaction == (lac | LYE_FORM_LAC))
+	    return c;
+	if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+	    if (lynx_edit_mode && !no_dired_support && lac &&
+		LKC_TO_LAC(key_override, c) == lac)
+		return c;
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+	    if (LKC_TO_LAC(keymap, c) == lac)
+		return c;
+	}
+	if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+	    if (lynx_edit_mode && !no_dired_support && lac &&
+		LKC_TO_LAC(key_override, '\t') == lac)
+		return c;
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+	    if (LKC_TO_LAC(keymap, '\t') == lac)
+		return c;
+	}
+	if (editaction == LYE_SETM1 && mod1found < 0)
+	    mod1found = i;
+	if (editaction == LYE_SETM2 && mod2found < 0)
+	    mod2found = i;
+	if ((editaction & LYE_DF) && mod3found < 0)
+	    mod3found = i;
+    }
+#ifdef EXP_ALT_BINDINGS
+    if (mod3found >= 0) {
+	for (i = mod3found; i >= 0; i = NEXT_I(i, LAST_MOD3_LKC)) {
+	    editaction = CurrentLineEditor()[i];
+	    if (!(editaction & LYE_DF))
+		continue;
+	    editaction = Mod3Binding[i];
+#ifdef NOT_ASCII
+	    if (i < 256) {
+		c = FROMASCII(i);
+	    } else
+#endif
+		c = i;
+	    if (pmodkey)
+		*pmodkey = c;
+	    if (editaction == (lac | LYE_FORM_LAC))
+		return (c | LKC_MOD3);
+	    if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+		if (lynx_edit_mode && !no_dired_support && lac &&
+		    LKC_TO_LAC(key_override, c) == lac)
+		    return (c | LKC_MOD3);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+		if (LKC_TO_LAC(keymap, c) == lac)
+		    return (c | LKC_MOD3);
+	    }
+	    if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+		if (lynx_edit_mode && !no_dired_support && lac &&
+		    LKC_TO_LAC(key_override, '\t') == lac)
+		    return (c | LKC_MOD3);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+		if (LKC_TO_LAC(keymap, '\t') == lac)
+		    return (c | LKC_MOD3);
+	    }
+	}
+    }
+    if (mod1found >= 0) {
+	if (pmodkey) {
+#ifdef NOT_ASCII
+	    if (mod1found < 256) {
+		*pmodkey = FROMASCII(mod1found);
+	    } else
+#endif
+		*pmodkey = mod1found;
+	}
+	for (i = FIRST_I; i >= 0; i = NEXT_I(i, LAST_MOD1_LKC)) {
+	    editaction = Mod1Binding[i];
+#ifdef NOT_ASCII
+	    if (i < 256) {
+		c = FROMASCII(i);
+	    } else
+#endif
+		c = i;
+	    if (editaction == (lac | LYE_FORM_LAC))
+		return (c | LKC_MOD1);
+	    if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+		if (lynx_edit_mode && !no_dired_support && lac &&
+		    LKC_TO_LAC(key_override, c) == lac)
+		    return (c | LKC_MOD1);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+		if (LKC_TO_LAC(keymap, c) == lac)
+		    return (c | LKC_MOD1);
+	    }
+	    if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+		if (lynx_edit_mode && !no_dired_support && lac &&
+		    LKC_TO_LAC(key_override, '\t') == lac)
+		    return (c | LKC_MOD1);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+		if (LKC_TO_LAC(keymap, '\t') == lac)
+		    return (c | LKC_MOD1);
+	    }
+	}
+    }
+    if (mod2found >= 0) {
+	if (pmodkey) {
+#ifdef NOT_ASCII
+	    if (mod1found < 256) {
+		*pmodkey = FROMASCII(mod1found);
+	    } else
+#endif
+		*pmodkey = mod1found;
+	}
+	for (i = FIRST_I; i >= 0; i = NEXT_I(i, LAST_MOD2_LKC)) {
+	    editaction = Mod2Binding[i];
+#ifdef NOT_ASCII
+	    if (i < 256) {
+		c = FROMASCII(i);
+	    } else
+#endif
+		c = i;
+	    if (editaction == (lac | LYE_FORM_LAC))
+		return (c | LKC_MOD2);
+	    if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+		if (lynx_edit_mode && !no_dired_support && lac &&
+		    LKC_TO_LAC(key_override, c) == lac)
+		    return (c | LKC_MOD2);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+		if (LKC_TO_LAC(keymap, c) == lac)
+		    return (c | LKC_MOD2);
+	    }
+	    if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+		if (lynx_edit_mode && !no_dired_support && lac &&
+		    LKC_TO_LAC(key_override, '\t') == lac)
+		    return (c | LKC_MOD2);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+		if (LKC_TO_LAC(keymap, '\t') == lac)
+		    return (c | LKC_MOD2);
+	    }
+	}
+    }
+#endif /* EXP_ALT_BINDINGS */
+    if (pmodkey)
+	*pmodkey = -1;
+    return (-1);
+}
+
+/*
+ * Dummy initializer to ensure this module is linked
+ * if the external model is common block, and the
+ * module is ever placed in a library. - FM
+ */
+int LYEditmapDeclared(void)
+{
+    int status = 1;
+
+    return status;
+}