diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 2010-05-03 00:45:10 -0400 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2010-05-03 00:45:10 -0400 |
commit | 903885454167e86ce4cb967f901cbaf741f21501 (patch) | |
tree | 90a46f9f1e6c6194c8f43bbb4aa81e1e50e7e2fe /src/LYEditmap.c | |
parent | dc748b1c47baadafae2c90f0e188927b11b7e029 (diff) | |
download | lynx-snapshots-903885454167e86ce4cb967f901cbaf741f21501.tar.gz |
snapshot of project "lynx", label v2-8-8dev_3c
Diffstat (limited to 'src/LYEditmap.c')
-rw-r--r-- | src/LYEditmap.c | 1299 |
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; +} |