/* * $LynxId: LYEditmap.c,v 1.29 2013/01/04 00:03:24 tom Exp $ * * LYEditMap.c * Keybindings for line and form editting. */ #include #include #include #include /* KEYMAP_SIZE, LKC_*, LYK_* - kw */ /* * * * * LynxEditactionCodes * * * * */ #ifdef USE_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 /* USE_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 USE_ALT_BINDINGS static LYEditCode BetterEditBinding[KEYMAP_SIZE - 1]={ LYE_NOP, LYE_BOL, LYE_BACK, LYE_ABORT, /* nul ^A ^B ^C */ LYE_DELN, LYE_EOL, LYE_FORW, LYE_ABORT, /* ^D ^E ^F ^G */ LYE_DELP, LYE_ENTER, LYE_ENTER, LYE_DELEL, /* bs tab nl ^K */ LYE_NOP, LYE_ENTER, LYE_FORWW, LYE_ABORT, /* ^L cr ^N ^O */ LYE_BACKW, LYE_NOP, LYE_DELPW, LYE_NOP, /* ^P XON ^R XOFF */ #ifdef CAN_CUT_AND_PASTE LYE_DELNW, LYE_ERASE, LYE_LKCMD, LYE_PASTE, #else LYE_DELNW, LYE_ERASE, LYE_LKCMD, LYE_NOP, #endif /* ^T ^U ^V ^W */ LYE_SETM1, LYE_NOP, LYE_NOP, LYE_NOP, /* ^X ^Y ^Z ESC */ LYE_NOP, LYE_NOP, LYE_UPPER, LYE_LOWER, /* ^\ ^] ^^ ^_ */ /* sp .. RUBOUT */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP, /* 80..9F ISO-8859-1 8-bit escape characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, #ifdef CJK_EX /* 1997/11/03 (Mon) 20:30:54 */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, #else LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX, /* 97 AIX */ #endif LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* A0..FF (permissible ISO-8859-1) 8-bit characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* 100..10F function key definitions in LYStrings.h */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK, /* UPARROW DNARROW RTARROW LTARROW */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL, /* PGDOWN PGUP HOME END */ #if (defined(_WINDOWS) || defined(__DJGPP__)) LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP, /* F1 */ #else LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL, /* F1 Do key Find key Select key */ #endif /* _WINDOWS || __DJGPP__ */ LYE_NOP, LYE_DELP, LYE_NOP, LYE_FORM_PASS, /* Insert key Remove key DO_NOTHING Back tab */ /* 110..18F */ #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER) LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP, /* Backspace Enter */ #else LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* MOUSE_KEY */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 190..20F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 210..28F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 290..293 */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, }; /* kw */ /* Default except: ^B=cursor-backward[+],^F=cursor-forward[+], */ /* ^K=delete-to-EOL[+][++],^X=Modifier Prefix, */ /* ^[ (ESC)=Modifier Prefix, */ /* ^R=BACKW, ^S=FORWW, */ /* ^T=transpose-chars, */ /* ^U=delete-to-BOL, ^W=delete-prev-word, */ /* ^@ (NUL)=SETMARK, ^Y=YANK, */ /* ^_=ABORT (undo), */ /* ^P=FORM_PASS, ^N=FORM_PASS, */ /* ^O=FORM_PASS, ^L=FORM_PASS, */ /* ^\=FORM_PASS, ^]=FORM_PASS, */ /* ^Z=FORM_PASS, F1=FORM_PASS, */ /* ^E=EOL[++], Remove=DELN */ /* [+]: same as BetterEditBinding */ /* [++]: additionally set double-key modifier */ /* Default where BetterEditBinding deviates: ^^=SWMAP, */ /* tab=LYE_TAB */ /* Some functions for which the modifier binding is preferred: */ /* M-bs,M-del=delete-prev-word, M-d=delete-next-word, */ /* M-b=BACKW, M-f=FORWW, */ static LYEditCode BashlikeEditBinding[KEYMAP_SIZE - 1] = { LYE_SETMARK, LYE_BOL, LYE_BACK, LYE_ABORT, /* nul ^A ^B ^C */ LYE_DELN, LYE_EOL|LYE_DF, LYE_FORW, LYE_ABORT, /* ^D ^E ^F ^G */ LYE_DELP, LYE_TAB, LYE_ENTER, LYE_DELEL|LYE_DF, /* bs tab nl ^K */ LYE_FORM_PASS, LYE_ENTER, LYE_FORM_PASS, LYE_FORM_PASS, /* ^L cr ^N ^O */ LYE_FORM_PASS, LYE_NOP, LYE_BACKW, LYE_FORWW, /* ^P XON ^R ^S/XOFF */ LYE_TPOS, LYE_DELBL, LYE_LKCMD, LYE_DELPW, /* ^T ^U ^V ^W */ LYE_SETM1, LYE_YANK, LYE_FORM_PASS, LYE_SETM2, /* ^X ^Y ^Z ESC */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_SWMAP, LYE_ABORT, /* ^\ ^] ^^ ^_ */ /* sp .. RUBOUT */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP, /* 80..9F ISO-8859-1 8-bit escape characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX, /* 97 AIX */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* A0..FF (permissible ISO-8859-1) 8-bit characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* 100..10F function key definitions in LYStrings.h */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK, /* UPARROW DNARROW RTARROW LTARROW */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL, /* PGDOWN PGUP HOME END */ #if (defined(_WINDOWS) || defined(__DJGPP__)) LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP, /* F1 */ #else LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL, /* F1 Do key Find key Select key */ #endif /* _WINDOWS || __DJGPP__ */ LYE_NOP, LYE_DELN, LYE_NOP, LYE_FORM_PASS, /* Insert key Remove key DO_NOTHING Back tab */ /* 110..18F */ #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER) LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP, /* Backspace Enter */ #else LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* MOUSE_KEY */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 190..20F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 210..28F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 290..293 */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, }; /* 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 /* USE_ALT_BINDINGS */ /* *INDENT-ON* */ /* * Add the array name to LYLineEditors */ LYEditCode *LYLineEditors[] = { DefaultEditBinding, /* You can't please everyone, so you ... DW */ #ifdef USE_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 USE_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 USE_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 USE_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 USE_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 /* USE_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 ModBinding[] 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 USE_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 /* USE_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; }