159243Sobrien/* 259243Sobrien * ed.defns.c: Editor function definitions and initialization 359243Sobrien */ 459243Sobrien/*- 559243Sobrien * Copyright (c) 1980, 1991 The Regents of the University of California. 659243Sobrien * All rights reserved. 759243Sobrien * 859243Sobrien * Redistribution and use in source and binary forms, with or without 959243Sobrien * modification, are permitted provided that the following conditions 1059243Sobrien * are met: 1159243Sobrien * 1. Redistributions of source code must retain the above copyright 1259243Sobrien * notice, this list of conditions and the following disclaimer. 1359243Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1459243Sobrien * notice, this list of conditions and the following disclaimer in the 1559243Sobrien * documentation and/or other materials provided with the distribution. 16100616Smp * 3. Neither the name of the University nor the names of its contributors 1759243Sobrien * may be used to endorse or promote products derived from this software 1859243Sobrien * without specific prior written permission. 1959243Sobrien * 2059243Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2159243Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2259243Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2359243Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2459243Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2559243Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2659243Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2759243Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2859243Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2959243Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3059243Sobrien * SUCH DAMAGE. 3159243Sobrien */ 3259243Sobrien#include "sh.h" 3359243Sobrien#include "ed.h" 3459243Sobrien 35167465Smpstatic void ed_InitMetaBindings (void); 3659243Sobrien 3759243SobrienPFCmd CcFuncTbl[] = { /* table of available commands */ 3859243Sobrien e_unassigned, 3959243Sobrien/* no #define here -- this is a dummy to detect initing of the key map */ 4059243Sobrien e_unassigned, 4159243Sobrien#define F_UNASSIGNED 1 4259243Sobrien e_insert, 4359243Sobrien#define F_INSERT 2 4459243Sobrien e_newline, 4559243Sobrien#define F_NEWLINE 3 4659243Sobrien e_delprev, 4759243Sobrien#define F_DELPREV 4 4859243Sobrien e_delnext, 4959243Sobrien#define F_DELNEXT 5 5059243Sobrien e_toend, 5159243Sobrien#define F_TOEND 6 5259243Sobrien e_tobeg, 5359243Sobrien#define F_TOBEG 7 5459243Sobrien e_charback, 5559243Sobrien#define F_CHARBACK 8 5659243Sobrien e_charfwd, 5759243Sobrien#define F_CHARFWD 9 5859243Sobrien e_quote, 5959243Sobrien#define F_QUOTE 10 6059243Sobrien e_startover, 6159243Sobrien#define F_STARTOVER 11 6259243Sobrien e_redisp, 6359243Sobrien#define F_REDISP 12 6459243Sobrien e_tty_int, 6559243Sobrien#define F_TTY_INT 13 6659243Sobrien e_wordback, 6759243Sobrien#define F_WORDBACK 14 6859243Sobrien e_wordfwd, 6959243Sobrien#define F_WORDFWD 15 7059243Sobrien e_cleardisp, 7159243Sobrien#define F_CLEARDISP 16 7259243Sobrien e_complete, 7359243Sobrien#define F_COMPLETE 17 7459243Sobrien e_correct, 7559243Sobrien#define F_CORRECT 18 7659243Sobrien e_up_hist, 7759243Sobrien#define F_UP_HIST 19 7859243Sobrien e_down_hist, 7959243Sobrien#define F_DOWN_HIST 20 8059243Sobrien e_up_search_hist, 8159243Sobrien#define F_UP_SEARCH_HIST 21 8259243Sobrien e_down_search_hist, 8359243Sobrien#define F_DOWN_SEARCH_HIST 22 8459243Sobrien e_helpme, 8559243Sobrien#define F_HELPME 23 8659243Sobrien e_list_choices, 8759243Sobrien#define F_LIST_CHOICES 24 8859243Sobrien e_delwordprev, 8959243Sobrien#define F_DELWORDPREV 25 9059243Sobrien e_delwordnext, 9159243Sobrien#define F_DELWORDNEXT 26 9259243Sobrien e_digit, 9359243Sobrien#define F_DIGIT 27 9459243Sobrien e_killend, 9559243Sobrien#define F_KILLEND 28 9659243Sobrien e_killbeg, 9759243Sobrien#define F_KILLBEG 29 9859243Sobrien e_metanext, 9959243Sobrien#define F_METANEXT 30 10059243Sobrien e_send_eof, 10159243Sobrien#define F_SEND_EOF 31 10259243Sobrien e_charswitch, 10359243Sobrien#define F_CHARSWITCH 32 10459243Sobrien e_which, 10559243Sobrien#define F_WHICH 33 10659243Sobrien e_yank_kill, 10759243Sobrien#define F_YANK_KILL 34 10859243Sobrien e_tty_dsusp, 10959243Sobrien#define F_TTY_DSUSP 35 11059243Sobrien e_tty_flusho, 11159243Sobrien#define F_TTY_FLUSHO 36 11259243Sobrien e_tty_quit, 11359243Sobrien#define F_TTY_QUIT 37 11459243Sobrien e_tty_tsusp, 11559243Sobrien#define F_TTY_TSUSP 38 11659243Sobrien e_tty_stopo, 11759243Sobrien#define F_TTY_STOPO 39 11859243Sobrien e_tty_starto, 11959243Sobrien#define F_TTY_STARTO 40 12059243Sobrien e_argfour, 12159243Sobrien#define F_ARGFOUR 41 12259243Sobrien e_set_mark, 12359243Sobrien#define F_SET_MARK 42 12459243Sobrien e_exchange_mark, 12559243Sobrien#define F_EXCHANGE_MARK 43 12659243Sobrien e_last_item, 12759243Sobrien#define F_LAST_ITEM 44 12859243Sobrien e_delnext_list_eof, 12959243Sobrien#define F_DELNEXT_LIST_EOF 45 13059243Sobrien v_cmd_mode, 13159243Sobrien#define V_CMD_MODE 46 13259243Sobrien v_insert, 13359243Sobrien#define V_INSERT 47 13459243Sobrien e_argdigit, 13559243Sobrien#define F_ARGDIGIT 48 13659243Sobrien e_killregion, 13759243Sobrien#define F_KILLREGION 49 13859243Sobrien e_copyregion, 13959243Sobrien#define F_COPYREGION 50 14059243Sobrien e_gcharswitch, 14159243Sobrien#define F_GCHARSWITCH 51 14259243Sobrien e_run_fg_editor, 14359243Sobrien#define F_RUN_FG_EDITOR 52 14459243Sobrien e_unassigned, /* place holder for sequence lead in character */ 14559243Sobrien#define F_XKEY 53 14659243Sobrien e_uppercase, 14759243Sobrien#define F_CASEUPPER 54 14859243Sobrien e_lowercase, 14959243Sobrien#define F_CASELOWER 55 150316957Sdchagin e_capitalcase, 15159243Sobrien#define F_CASECAPITAL 56 15259243Sobrien v_zero, 15359243Sobrien#define V_ZERO 57 15459243Sobrien v_add, 15559243Sobrien#define V_ADD 58 15659243Sobrien v_addend, 15759243Sobrien#define V_ADDEND 59 15859243Sobrien v_wordbegnext, 15959243Sobrien#define V_WORDBEGNEXT 60 16059243Sobrien e_killall, 16159243Sobrien#define F_KILLALL 61 16259243Sobrien e_unassigned, 16359243Sobrien/* F_EXTENDNEXT removed */ 16459243Sobrien v_insbeg, 16559243Sobrien#define V_INSBEG 63 16659243Sobrien v_replmode, 16759243Sobrien#define V_REPLMODE 64 16859243Sobrien v_replone, 16959243Sobrien#define V_REPLONE 65 17059243Sobrien v_substline, 17159243Sobrien#define V_SUBSTLINE 66 17259243Sobrien v_substchar, 17359243Sobrien#define V_SUBSTCHAR 67 17459243Sobrien v_chgtoend, 17559243Sobrien#define V_CHGTOEND 68 17659243Sobrien e_list_eof, 17759243Sobrien#define F_LIST_EOF 69 17859243Sobrien e_list_glob, 17959243Sobrien#define F_LIST_GLOB 70 18059243Sobrien e_expand_history, 18159243Sobrien#define F_EXPAND_HISTORY 71 18259243Sobrien e_magic_space, 18359243Sobrien#define F_MAGIC_SPACE 72 18459243Sobrien e_insovr, 18559243Sobrien#define F_INSOVR 73 18659243Sobrien v_cm_complete, 18759243Sobrien#define V_CM_COMPLETE 74 18859243Sobrien e_copyprev, 18959243Sobrien#define F_COPYPREV 75 19059243Sobrien e_correctl, 19159243Sobrien#define F_CORRECT_L 76 19259243Sobrien e_expand_glob, 19359243Sobrien#define F_EXPAND_GLOB 77 19459243Sobrien e_expand_vars, 19559243Sobrien#define F_EXPAND_VARS 78 19659243Sobrien e_toggle_hist, 19759243Sobrien#define F_TOGGLE_HIST 79 19859243Sobrien v_change_case, 19959243Sobrien#define V_CHGCASE 80 20059243Sobrien e_expand, 20159243Sobrien#define F_EXPAND 81 20259243Sobrien e_load_average, 20359243Sobrien#define F_LOAD_AVERAGE 82 20459243Sobrien v_delprev, 20559243Sobrien#define V_DELPREV 83 20659243Sobrien v_delmeta, 20759243Sobrien#define V_DELMETA 84 20859243Sobrien v_wordfwd, 20959243Sobrien#define V_WORDFWD 85 21059243Sobrien v_wordback, 21159243Sobrien#define V_WORDBACK 86 21259243Sobrien v_endword, 21359243Sobrien#define V_ENDWORD 87 21459243Sobrien v_eword, 21559243Sobrien#define V_EWORD 88 21659243Sobrien v_undo, 21759243Sobrien#define V_UNDO 89 21859243Sobrien v_ush_meta, 21959243Sobrien#define V_USH_META 90 22059243Sobrien v_dsh_meta, 22159243Sobrien#define V_DSH_META 91 22259243Sobrien v_rsrch_fwd, 22359243Sobrien#define V_RSRCH_FWD 92 22459243Sobrien v_rsrch_back, 22559243Sobrien#define V_RSRCH_BACK 93 22659243Sobrien v_char_fwd, 22759243Sobrien#define V_CHAR_FWD 94 22859243Sobrien v_char_back, 22959243Sobrien#define V_CHAR_BACK 95 23059243Sobrien v_chgmeta, 23159243Sobrien#define V_CHGMETA 96 23259243Sobrien e_inc_fwd, 23359243Sobrien#define F_INC_FWD 97 23459243Sobrien e_inc_back, 23559243Sobrien#define F_INC_BACK 98 23659243Sobrien v_rchar_fwd, 23759243Sobrien#define V_RCHAR_FWD 99 23859243Sobrien v_rchar_back, 23959243Sobrien#define V_RCHAR_BACK 100 24059243Sobrien v_charto_fwd, 24159243Sobrien#define V_CHARTO_FWD 101 24259243Sobrien v_charto_back, 24359243Sobrien#define V_CHARTO_BACK 102 24459243Sobrien e_normalize_path, 24559243Sobrien#define F_PATH_NORM 103 24659243Sobrien e_delnext_eof, /* added by mtk@ari.ncl.omron.co.jp (920818) */ 24759243Sobrien#define F_DELNEXT_EOF 104 24859243Sobrien e_stuff_char, 24959243Sobrien#define F_STUFF_CHAR 105 25059243Sobrien e_complete_all, 25159243Sobrien#define F_COMPLETE_ALL 106 25259243Sobrien e_list_all, 25359243Sobrien#define F_LIST_ALL 107 25459243Sobrien e_complete_fwd, 25559243Sobrien#define F_COMPLETE_FWD 108 25659243Sobrien e_complete_back, 25759243Sobrien#define F_COMPLETE_BACK 109 25859243Sobrien e_delnext_list, 25959243Sobrien#define F_DELNEXT_LIST 110 26059243Sobrien e_normalize_command, 26159243Sobrien#define F_COMMAND_NORM 111 26259243Sobrien e_dabbrev_expand, 26359243Sobrien#define F_DABBREV_EXPAND 112 26483098Smp e_dosify_next, 265354195Sbrooks#define F_DOSIFY_NEXT 113 26683098Smp e_dosify_prev, 267354195Sbrooks#define F_DOSIFY_PREV 114 26883098Smp e_page_up, 269354195Sbrooks#define F_PAGE_UP 115 27083098Smp e_page_down, 271354195Sbrooks#define F_PAGE_DOWN 116 27283098Smp e_yank_pop, 273354195Sbrooks#define F_YANK_POP 117 274167465Smp e_newline_hold, 275354195Sbrooks#define F_NEWLINE_HOLD 118 276167465Smp e_newline_down_hist, 277354195Sbrooks#define F_NEWLINE_DOWN_HIST 119 27859243Sobrien 0 /* DUMMY VALUE */ 279354195Sbrooks#define F_NUM_FNS 120 28059243Sobrien 28159243Sobrien}; 28259243Sobrien 28359243SobrienKEYCMD NumFuns = F_NUM_FNS; 28459243Sobrien 28559243SobrienKEYCMD CcKeyMap[NT_NUM_KEYS]; /* the real key map */ 28659243SobrienKEYCMD CcAltMap[NT_NUM_KEYS]; /* the alternative key map */ 28759243Sobrien#define F_NUM_FUNCNAMES (F_NUM_FNS + 2) 28859243Sobrienstruct KeyFuncs FuncNames[F_NUM_FUNCNAMES]; 28959243Sobrien 29069408Sache#ifdef WINNT_NATIVE 29159243Sobrienextern KEYCMD CcEmacsMap[]; 29259243Sobrienextern KEYCMD CcViMap[]; 29359243Sobrienextern KEYCMD CcViCmdMap[]; 29469408Sache#else /* !WINNT_NATIVE*/ 29559243SobrienKEYCMD CcEmacsMap[] = { 29659243Sobrien/* keymap table, each index into above tbl; should be 256*sizeof(KEYCMD) 29759243Sobrien bytes long */ 29859243Sobrien 29959243Sobrien F_SET_MARK, /* ^@ */ 30059243Sobrien F_TOBEG, /* ^A */ 30159243Sobrien F_CHARBACK, /* ^B */ 30259243Sobrien F_TTY_INT, /* ^C */ 30359243Sobrien F_DELNEXT_LIST_EOF, /* ^D */ 30459243Sobrien F_TOEND, /* ^E */ 30559243Sobrien F_CHARFWD, /* ^F */ 30659243Sobrien F_UNASSIGNED, /* ^G */ 30759243Sobrien F_DELPREV, /* ^H */ 30859243Sobrien F_COMPLETE, /* ^I */ 30959243Sobrien F_NEWLINE, /* ^J */ 31059243Sobrien F_KILLEND, /* ^K */ 31159243Sobrien F_CLEARDISP, /* ^L */ 31259243Sobrien F_NEWLINE, /* ^M */ 31359243Sobrien F_DOWN_HIST, /* ^N */ 31459243Sobrien F_TTY_FLUSHO, /* ^O */ 31559243Sobrien F_UP_HIST, /* ^P */ 31659243Sobrien F_TTY_STARTO, /* ^Q */ 31759243Sobrien F_REDISP, /* ^R */ 31859243Sobrien F_TTY_STOPO, /* ^S */ 31959243Sobrien F_CHARSWITCH, /* ^T */ 32059243Sobrien F_KILLALL, /* ^U */ 32159243Sobrien F_QUOTE, /* ^V */ 32259243Sobrien F_KILLREGION, /* ^W */ 32359243Sobrien F_XKEY, /* ^X */ 32459243Sobrien F_YANK_KILL, /* ^Y */ 32559243Sobrien F_TTY_TSUSP, /* ^Z */ 32659243Sobrien F_METANEXT, /* ^[ */ 32759243Sobrien F_TTY_QUIT, /* ^\ */ 32859243Sobrien F_TTY_DSUSP, /* ^] */ 32959243Sobrien F_UNASSIGNED, /* ^^ */ 33059243Sobrien F_UNASSIGNED, /* ^_ */ 33159243Sobrien F_INSERT, /* SPACE */ 33259243Sobrien F_INSERT, /* ! */ 33359243Sobrien F_INSERT, /* " */ 33459243Sobrien F_INSERT, /* # */ 33559243Sobrien F_INSERT, /* $ */ 33659243Sobrien F_INSERT, /* % */ 33759243Sobrien F_INSERT, /* & */ 33859243Sobrien F_INSERT, /* ' */ 33959243Sobrien F_INSERT, /* ( */ 34059243Sobrien F_INSERT, /* ) */ 34159243Sobrien F_INSERT, /* * */ 34259243Sobrien F_INSERT, /* + */ 34359243Sobrien F_INSERT, /* , */ 34459243Sobrien F_INSERT, /* - */ 34559243Sobrien F_INSERT, /* . */ 34659243Sobrien F_INSERT, /* / */ 34759243Sobrien F_DIGIT, /* 0 */ 34859243Sobrien F_DIGIT, /* 1 */ 34959243Sobrien F_DIGIT, /* 2 */ 35059243Sobrien F_DIGIT, /* 3 */ 35159243Sobrien F_DIGIT, /* 4 */ 35259243Sobrien F_DIGIT, /* 5 */ 35359243Sobrien F_DIGIT, /* 6 */ 35459243Sobrien F_DIGIT, /* 7 */ 35559243Sobrien F_DIGIT, /* 8 */ 35659243Sobrien F_DIGIT, /* 9 */ 35759243Sobrien F_INSERT, /* : */ 35859243Sobrien F_INSERT, /* ; */ 35959243Sobrien F_INSERT, /* < */ 36059243Sobrien F_INSERT, /* = */ 36159243Sobrien F_INSERT, /* > */ 36259243Sobrien F_INSERT, /* ? */ 36359243Sobrien F_INSERT, /* @ */ 36459243Sobrien F_INSERT, /* A */ 36559243Sobrien F_INSERT, /* B */ 36659243Sobrien F_INSERT, /* C */ 36759243Sobrien F_INSERT, /* D */ 36859243Sobrien F_INSERT, /* E */ 36959243Sobrien F_INSERT, /* F */ 37059243Sobrien F_INSERT, /* G */ 37159243Sobrien F_INSERT, /* H */ 37259243Sobrien F_INSERT, /* I */ 37359243Sobrien F_INSERT, /* J */ 37459243Sobrien F_INSERT, /* K */ 37559243Sobrien F_INSERT, /* L */ 37659243Sobrien F_INSERT, /* M */ 37759243Sobrien F_INSERT, /* N */ 37859243Sobrien F_INSERT, /* O */ 37959243Sobrien F_INSERT, /* P */ 38059243Sobrien F_INSERT, /* Q */ 38159243Sobrien F_INSERT, /* R */ 38259243Sobrien F_INSERT, /* S */ 38359243Sobrien F_INSERT, /* T */ 38459243Sobrien F_INSERT, /* U */ 38559243Sobrien F_INSERT, /* V */ 38659243Sobrien F_INSERT, /* W */ 38759243Sobrien F_INSERT, /* X */ 38859243Sobrien F_INSERT, /* Y */ 38959243Sobrien F_INSERT, /* Z */ 39059243Sobrien F_INSERT, /* [ */ 39159243Sobrien F_INSERT, /* \ */ 39259243Sobrien F_INSERT, /* ] */ 39359243Sobrien F_INSERT, /* ^ */ 39459243Sobrien F_INSERT, /* _ */ 39559243Sobrien F_INSERT, /* ` */ 39659243Sobrien F_INSERT, /* a */ 39759243Sobrien F_INSERT, /* b */ 39859243Sobrien F_INSERT, /* c */ 39959243Sobrien F_INSERT, /* d */ 40059243Sobrien F_INSERT, /* e */ 40159243Sobrien F_INSERT, /* f */ 40259243Sobrien F_INSERT, /* g */ 40359243Sobrien F_INSERT, /* h */ 40459243Sobrien F_INSERT, /* i */ 40559243Sobrien F_INSERT, /* j */ 40659243Sobrien F_INSERT, /* k */ 40759243Sobrien F_INSERT, /* l */ 40859243Sobrien F_INSERT, /* m */ 40959243Sobrien F_INSERT, /* n */ 41059243Sobrien F_INSERT, /* o */ 41159243Sobrien F_INSERT, /* p */ 41259243Sobrien F_INSERT, /* q */ 41359243Sobrien F_INSERT, /* r */ 41459243Sobrien F_INSERT, /* s */ 41559243Sobrien F_INSERT, /* t */ 41659243Sobrien F_INSERT, /* u */ 41759243Sobrien F_INSERT, /* v */ 41859243Sobrien F_INSERT, /* w */ 41959243Sobrien F_INSERT, /* x */ 42059243Sobrien F_INSERT, /* y */ 42159243Sobrien F_INSERT, /* z */ 42259243Sobrien F_INSERT, /* { */ 42359243Sobrien F_INSERT, /* | */ 42459243Sobrien F_INSERT, /* } */ 42559243Sobrien F_INSERT, /* ~ */ 42659243Sobrien F_DELPREV, /* ^? */ 42759243Sobrien F_UNASSIGNED, /* M-^@ */ 42859243Sobrien F_UNASSIGNED, /* M-^A */ 42959243Sobrien F_UNASSIGNED, /* M-^B */ 43059243Sobrien F_UNASSIGNED, /* M-^C */ 43159243Sobrien F_LIST_CHOICES, /* M-^D */ 43259243Sobrien F_UNASSIGNED, /* M-^E */ 43359243Sobrien F_UNASSIGNED, /* M-^F */ 43459243Sobrien F_UNASSIGNED, /* M-^G */ 43559243Sobrien F_DELWORDPREV, /* M-^H */ 43659243Sobrien F_COMPLETE, /* M-^I */ 43759243Sobrien F_UNASSIGNED, /* M-^J */ 43859243Sobrien F_UNASSIGNED, /* M-^K */ 43959243Sobrien F_CLEARDISP, /* M-^L */ 44059243Sobrien F_UNASSIGNED, /* M-^M */ 44159243Sobrien F_UNASSIGNED, /* M-^N */ 44259243Sobrien F_UNASSIGNED, /* M-^O */ 44359243Sobrien F_UNASSIGNED, /* M-^P */ 44459243Sobrien F_UNASSIGNED, /* M-^Q */ 44559243Sobrien F_UNASSIGNED, /* M-^R */ 44659243Sobrien F_UNASSIGNED, /* M-^S */ 44759243Sobrien F_UNASSIGNED, /* M-^T */ 44859243Sobrien F_UNASSIGNED, /* M-^U */ 44959243Sobrien F_UNASSIGNED, /* M-^V */ 45059243Sobrien F_UNASSIGNED, /* M-^W */ 45159243Sobrien F_UNASSIGNED, /* M-^X */ 45259243Sobrien F_UNASSIGNED, /* M-^Y */ 45359243Sobrien F_RUN_FG_EDITOR, /* M-^Z */ 45459243Sobrien F_COMPLETE, /* M-^[ */ 45559243Sobrien F_UNASSIGNED, /* M-^\ */ 45659243Sobrien F_UNASSIGNED, /* M-^] */ 45759243Sobrien F_UNASSIGNED, /* M-^^ */ 45859243Sobrien F_COPYPREV, /* M-^_ */ 45959243Sobrien F_EXPAND_HISTORY, /* M-SPACE */ 46059243Sobrien F_EXPAND_HISTORY, /* M-! */ 46159243Sobrien F_UNASSIGNED, /* M-" */ 46259243Sobrien F_UNASSIGNED, /* M-# */ 46359243Sobrien F_CORRECT_L, /* M-$ */ 46459243Sobrien F_UNASSIGNED, /* M-% */ 46559243Sobrien F_UNASSIGNED, /* M-& */ 46659243Sobrien F_UNASSIGNED, /* M-' */ 46759243Sobrien F_UNASSIGNED, /* M-( */ 46859243Sobrien F_UNASSIGNED, /* M-) */ 46959243Sobrien F_UNASSIGNED, /* M-* */ 47059243Sobrien F_UNASSIGNED, /* M-+ */ 47159243Sobrien F_UNASSIGNED, /* M-, */ 47259243Sobrien F_UNASSIGNED, /* M-- */ 47359243Sobrien F_UNASSIGNED, /* M-. */ 47459243Sobrien F_DABBREV_EXPAND, /* M-/ */ 47559243Sobrien F_ARGDIGIT, /* M-0 */ 47659243Sobrien F_ARGDIGIT, /* M-1 */ 47759243Sobrien F_ARGDIGIT, /* M-2 */ 47859243Sobrien F_ARGDIGIT, /* M-3 */ 47959243Sobrien F_ARGDIGIT, /* M-4 */ 48059243Sobrien F_ARGDIGIT, /* M-5 */ 48159243Sobrien F_ARGDIGIT, /* M-6 */ 48259243Sobrien F_ARGDIGIT, /* M-7 */ 48359243Sobrien F_ARGDIGIT, /* M-8 */ 48459243Sobrien F_ARGDIGIT, /* M-9 */ 48559243Sobrien F_UNASSIGNED, /* M-: */ 48659243Sobrien F_UNASSIGNED, /* M-; */ 48759243Sobrien F_UNASSIGNED, /* M-< */ 48859243Sobrien F_UNASSIGNED, /* M-= */ 48959243Sobrien F_UNASSIGNED, /* M-> */ 49059243Sobrien F_WHICH, /* M-? */ 49159243Sobrien F_UNASSIGNED, /* M-@ */ 492167465Smp F_NEWLINE_HOLD, /* M-A */ 49359243Sobrien F_WORDBACK, /* M-B */ 49459243Sobrien F_CASECAPITAL, /* M-C */ 49559243Sobrien F_DELWORDNEXT, /* M-D */ 49659243Sobrien F_UNASSIGNED, /* M-E */ 49759243Sobrien F_WORDFWD, /* M-F */ 49859243Sobrien F_UNASSIGNED, /* M-G */ 49959243Sobrien F_HELPME, /* M-H */ 50059243Sobrien F_UNASSIGNED, /* M-I */ 50159243Sobrien F_UNASSIGNED, /* M-J */ 50259243Sobrien F_UNASSIGNED, /* M-K */ 50359243Sobrien F_CASELOWER, /* M-L */ 50459243Sobrien F_UNASSIGNED, /* M-M */ 50559243Sobrien F_DOWN_SEARCH_HIST, /* M-N */ 50659243Sobrien F_XKEY, /* M-O *//* extended key esc PWP Mar 88 */ 50759243Sobrien F_UP_SEARCH_HIST, /* M-P */ 50859243Sobrien F_UNASSIGNED, /* M-Q */ 50959243Sobrien F_TOGGLE_HIST, /* M-R */ 51059243Sobrien F_CORRECT, /* M-S */ 51159243Sobrien F_UNASSIGNED, /* M-T */ 51259243Sobrien F_CASEUPPER, /* M-U */ 51359243Sobrien F_UNASSIGNED, /* M-V */ 51459243Sobrien F_COPYREGION, /* M-W */ 51559243Sobrien F_UNASSIGNED, /* M-X */ 51683098Smp F_YANK_POP, /* M-Y */ 51759243Sobrien F_UNASSIGNED, /* M-Z */ 51859243Sobrien F_XKEY, /* M-[ *//* extended key esc -mf Oct 87 */ 51959243Sobrien F_UNASSIGNED, /* M-\ */ 52059243Sobrien F_UNASSIGNED, /* M-] */ 52159243Sobrien F_UNASSIGNED, /* M-^ */ 52259243Sobrien F_LAST_ITEM, /* M-_ */ 52359243Sobrien F_UNASSIGNED, /* M-` */ 524167465Smp F_NEWLINE_HOLD, /* M-a */ 52559243Sobrien F_WORDBACK, /* M-b */ 52659243Sobrien F_CASECAPITAL, /* M-c */ 52759243Sobrien F_DELWORDNEXT, /* M-d */ 52859243Sobrien F_UNASSIGNED, /* M-e */ 52959243Sobrien F_WORDFWD, /* M-f */ 53059243Sobrien F_UNASSIGNED, /* M-g */ 53159243Sobrien F_HELPME, /* M-h */ 53259243Sobrien F_UNASSIGNED, /* M-i */ 53359243Sobrien F_UNASSIGNED, /* M-j */ 53459243Sobrien F_UNASSIGNED, /* M-k */ 53559243Sobrien F_CASELOWER, /* M-l */ 53659243Sobrien F_UNASSIGNED, /* M-m */ 53759243Sobrien F_DOWN_SEARCH_HIST, /* M-n */ 53859243Sobrien F_UNASSIGNED, /* M-o */ 53959243Sobrien F_UP_SEARCH_HIST, /* M-p */ 54059243Sobrien F_UNASSIGNED, /* M-q */ 54159243Sobrien F_TOGGLE_HIST, /* M-r */ 54259243Sobrien F_CORRECT, /* M-s */ 54359243Sobrien F_UNASSIGNED, /* M-t */ 54459243Sobrien F_CASEUPPER, /* M-u */ 54559243Sobrien F_UNASSIGNED, /* M-v */ 54659243Sobrien F_COPYREGION, /* M-w */ 54759243Sobrien F_UNASSIGNED, /* M-x */ 54883098Smp F_YANK_POP, /* M-y */ 54959243Sobrien F_UNASSIGNED, /* M-z */ 55059243Sobrien F_UNASSIGNED, /* M-{ */ 55159243Sobrien F_UNASSIGNED, /* M-| */ 55259243Sobrien F_UNASSIGNED, /* M-} */ 55359243Sobrien F_UNASSIGNED, /* M-~ */ 55459243Sobrien F_DELWORDPREV /* M-^? */ 55559243Sobrien}; 55659243Sobrien 55759243Sobrien/* 55859243Sobrien * keymap table for vi. Each index into above tbl; should be 55959243Sobrien * 256 entries long. Vi mode uses a sticky-extend to do command mode: 56059243Sobrien * insert mode characters are in the normal keymap, and command mode 56159243Sobrien * in the extended keymap. 56259243Sobrien */ 56359243Sobrienstatic KEYCMD CcViMap[] = { 56459243Sobrien#ifdef KSHVI 56559243Sobrien F_UNASSIGNED, /* ^@ */ 56659243Sobrien F_INSERT, /* ^A */ 56759243Sobrien F_INSERT, /* ^B */ 56859243Sobrien F_INSERT, /* ^C */ 56959243Sobrien F_INSERT, /* ^D */ 57059243Sobrien F_INSERT, /* ^E */ 57159243Sobrien F_INSERT, /* ^F */ 57259243Sobrien F_INSERT, /* ^G */ 57359243Sobrien V_DELPREV, /* ^H */ /* BackSpace key */ 57459243Sobrien F_COMPLETE, /* ^I */ /* Tab Key */ 57559243Sobrien F_NEWLINE, /* ^J */ 57659243Sobrien F_INSERT, /* ^K */ 57759243Sobrien F_INSERT, /* ^L */ 57859243Sobrien F_NEWLINE, /* ^M */ 57959243Sobrien F_INSERT, /* ^N */ 58059243Sobrien F_INSERT, /* ^O */ 58159243Sobrien F_INSERT, /* ^P */ 58259243Sobrien F_TTY_STARTO, /* ^Q */ 58359243Sobrien F_INSERT, /* ^R */ 58459243Sobrien F_INSERT, /* ^S */ 58559243Sobrien F_INSERT, /* ^T */ 58659243Sobrien F_INSERT, /* ^U */ 58759243Sobrien F_QUOTE, /* ^V */ 58859243Sobrien F_DELWORDPREV, /* ^W */ /* Only until start edit pos */ 58959243Sobrien F_INSERT, /* ^X */ 59059243Sobrien F_INSERT, /* ^Y */ 59159243Sobrien F_INSERT, /* ^Z */ 59259243Sobrien V_CMD_MODE, /* ^[ */ /* [ Esc ] key */ 59359243Sobrien F_TTY_QUIT, /* ^\ */ 59459243Sobrien F_INSERT, /* ^] */ 59559243Sobrien F_INSERT, /* ^^ */ 59659243Sobrien F_INSERT, /* ^_ */ 59759243Sobrien#else /* !KSHVI */ 59859243Sobrien F_UNASSIGNED, /* ^@ */ /* NOTE: These mapping do NOT */ 59959243Sobrien F_TOBEG, /* ^A */ /* Correspond well to the KSH */ 60059243Sobrien F_CHARBACK, /* ^B */ /* VI editting assignments */ 60159243Sobrien F_TTY_INT, /* ^C */ /* On the other hand they are */ 60259243Sobrien F_LIST_EOF, /* ^D */ /* convenient any many people */ 60359243Sobrien F_TOEND, /* ^E */ /* have gotten used to them */ 60459243Sobrien F_CHARFWD, /* ^F */ 60559243Sobrien F_LIST_GLOB, /* ^G */ 60659243Sobrien F_DELPREV, /* ^H */ /* BackSpace key */ 60759243Sobrien F_COMPLETE, /* ^I */ /* Tab Key */ 60859243Sobrien F_NEWLINE, /* ^J */ 60959243Sobrien F_KILLEND, /* ^K */ 61059243Sobrien F_CLEARDISP, /* ^L */ 61159243Sobrien F_NEWLINE, /* ^M */ 61259243Sobrien F_DOWN_HIST, /* ^N */ 61359243Sobrien F_TTY_FLUSHO, /* ^O */ 61459243Sobrien F_UP_HIST, /* ^P */ 61559243Sobrien F_TTY_STARTO, /* ^Q */ 61659243Sobrien F_REDISP, /* ^R */ 61759243Sobrien F_TTY_STOPO, /* ^S */ 61859243Sobrien F_CHARSWITCH, /* ^T */ 61959243Sobrien F_KILLBEG, /* ^U */ 62059243Sobrien F_QUOTE, /* ^V */ 62159243Sobrien F_DELWORDPREV, /* ^W */ 62259243Sobrien F_EXPAND, /* ^X */ 62359243Sobrien F_TTY_DSUSP, /* ^Y */ 62459243Sobrien F_TTY_TSUSP, /* ^Z */ 62559243Sobrien V_CMD_MODE, /* ^[ */ 62659243Sobrien F_TTY_QUIT, /* ^\ */ 62759243Sobrien F_UNASSIGNED, /* ^] */ 62859243Sobrien F_UNASSIGNED, /* ^^ */ 62959243Sobrien F_UNASSIGNED, /* ^_ */ 63059243Sobrien#endif /* KSHVI */ 63159243Sobrien F_INSERT, /* SPACE */ 63259243Sobrien F_INSERT, /* ! */ 63359243Sobrien F_INSERT, /* " */ 63459243Sobrien F_INSERT, /* # */ 63559243Sobrien F_INSERT, /* $ */ 63659243Sobrien F_INSERT, /* % */ 63759243Sobrien F_INSERT, /* & */ 63859243Sobrien F_INSERT, /* ' */ 63959243Sobrien F_INSERT, /* ( */ 64059243Sobrien F_INSERT, /* ) */ 64159243Sobrien F_INSERT, /* * */ 64259243Sobrien F_INSERT, /* + */ 64359243Sobrien F_INSERT, /* , */ 64459243Sobrien F_INSERT, /* - */ 64559243Sobrien F_INSERT, /* . */ 64659243Sobrien F_INSERT, /* / */ 64759243Sobrien F_INSERT, /* 0 */ 64859243Sobrien F_INSERT, /* 1 */ 64959243Sobrien F_INSERT, /* 2 */ 65059243Sobrien F_INSERT, /* 3 */ 65159243Sobrien F_INSERT, /* 4 */ 65259243Sobrien F_INSERT, /* 5 */ 65359243Sobrien F_INSERT, /* 6 */ 65459243Sobrien F_INSERT, /* 7 */ 65559243Sobrien F_INSERT, /* 8 */ 65659243Sobrien F_INSERT, /* 9 */ 65759243Sobrien F_INSERT, /* : */ 65859243Sobrien F_INSERT, /* ; */ 65959243Sobrien F_INSERT, /* < */ 66059243Sobrien F_INSERT, /* = */ 66159243Sobrien F_INSERT, /* > */ 66259243Sobrien F_INSERT, /* ? */ 66359243Sobrien F_INSERT, /* @ */ 66459243Sobrien F_INSERT, /* A */ 66559243Sobrien F_INSERT, /* B */ 66659243Sobrien F_INSERT, /* C */ 66759243Sobrien F_INSERT, /* D */ 66859243Sobrien F_INSERT, /* E */ 66959243Sobrien F_INSERT, /* F */ 67059243Sobrien F_INSERT, /* G */ 67159243Sobrien F_INSERT, /* H */ 67259243Sobrien F_INSERT, /* I */ 67359243Sobrien F_INSERT, /* J */ 67459243Sobrien F_INSERT, /* K */ 67559243Sobrien F_INSERT, /* L */ 67659243Sobrien F_INSERT, /* M */ 67759243Sobrien F_INSERT, /* N */ 67859243Sobrien F_INSERT, /* O */ 67959243Sobrien F_INSERT, /* P */ 68059243Sobrien F_INSERT, /* Q */ 68159243Sobrien F_INSERT, /* R */ 68259243Sobrien F_INSERT, /* S */ 68359243Sobrien F_INSERT, /* T */ 68459243Sobrien F_INSERT, /* U */ 68559243Sobrien F_INSERT, /* V */ 68659243Sobrien F_INSERT, /* W */ 68759243Sobrien F_INSERT, /* X */ 68859243Sobrien F_INSERT, /* Y */ 68959243Sobrien F_INSERT, /* Z */ 69059243Sobrien F_INSERT, /* [ */ 69159243Sobrien F_INSERT, /* \ */ 69259243Sobrien F_INSERT, /* ] */ 69359243Sobrien F_INSERT, /* ^ */ 69459243Sobrien F_INSERT, /* _ */ 69559243Sobrien F_INSERT, /* ` */ 69659243Sobrien F_INSERT, /* a */ 69759243Sobrien F_INSERT, /* b */ 69859243Sobrien F_INSERT, /* c */ 69959243Sobrien F_INSERT, /* d */ 70059243Sobrien F_INSERT, /* e */ 70159243Sobrien F_INSERT, /* f */ 70259243Sobrien F_INSERT, /* g */ 70359243Sobrien F_INSERT, /* h */ 70459243Sobrien F_INSERT, /* i */ 70559243Sobrien F_INSERT, /* j */ 70659243Sobrien F_INSERT, /* k */ 70759243Sobrien F_INSERT, /* l */ 70859243Sobrien F_INSERT, /* m */ 70959243Sobrien F_INSERT, /* n */ 71059243Sobrien F_INSERT, /* o */ 71159243Sobrien F_INSERT, /* p */ 71259243Sobrien F_INSERT, /* q */ 71359243Sobrien F_INSERT, /* r */ 71459243Sobrien F_INSERT, /* s */ 71559243Sobrien F_INSERT, /* t */ 71659243Sobrien F_INSERT, /* u */ 71759243Sobrien F_INSERT, /* v */ 71859243Sobrien F_INSERT, /* w */ 71959243Sobrien F_INSERT, /* x */ 72059243Sobrien F_INSERT, /* y */ 72159243Sobrien F_INSERT, /* z */ 72259243Sobrien F_INSERT, /* { */ 72359243Sobrien F_INSERT, /* | */ 72459243Sobrien F_INSERT, /* } */ 72559243Sobrien F_INSERT, /* ~ */ 72659243Sobrien F_DELPREV, /* ^? */ 72759243Sobrien F_UNASSIGNED, /* M-^@ */ 72859243Sobrien F_UNASSIGNED, /* M-^A */ 72959243Sobrien F_UNASSIGNED, /* M-^B */ 73059243Sobrien F_UNASSIGNED, /* M-^C */ 73159243Sobrien F_UNASSIGNED, /* M-^D */ 73259243Sobrien F_UNASSIGNED, /* M-^E */ 73359243Sobrien F_UNASSIGNED, /* M-^F */ 73459243Sobrien F_UNASSIGNED, /* M-^G */ 73559243Sobrien F_UNASSIGNED, /* M-^H */ 73659243Sobrien F_UNASSIGNED, /* M-^I */ 73759243Sobrien F_UNASSIGNED, /* M-^J */ 73859243Sobrien F_UNASSIGNED, /* M-^K */ 73959243Sobrien F_UNASSIGNED, /* M-^L */ 74059243Sobrien F_UNASSIGNED, /* M-^M */ 74159243Sobrien F_UNASSIGNED, /* M-^N */ 74259243Sobrien F_UNASSIGNED, /* M-^O */ 74359243Sobrien F_UNASSIGNED, /* M-^P */ 74459243Sobrien F_UNASSIGNED, /* M-^Q */ 74559243Sobrien F_UNASSIGNED, /* M-^R */ 74659243Sobrien F_UNASSIGNED, /* M-^S */ 74759243Sobrien F_UNASSIGNED, /* M-^T */ 74859243Sobrien F_UNASSIGNED, /* M-^U */ 74959243Sobrien F_UNASSIGNED, /* M-^V */ 75059243Sobrien F_UNASSIGNED, /* M-^W */ 75159243Sobrien F_UNASSIGNED, /* M-^X */ 75259243Sobrien F_UNASSIGNED, /* M-^Y */ 75359243Sobrien F_UNASSIGNED, /* M-^Z */ 75459243Sobrien F_UNASSIGNED, /* M-^[ */ 75559243Sobrien F_UNASSIGNED, /* M-^\ */ 75659243Sobrien F_UNASSIGNED, /* M-^] */ 75759243Sobrien F_UNASSIGNED, /* M-^^ */ 75859243Sobrien F_UNASSIGNED, /* M-^_ */ 75959243Sobrien F_UNASSIGNED, /* M-SPACE */ 76059243Sobrien F_UNASSIGNED, /* M-! */ 76159243Sobrien F_UNASSIGNED, /* M-" */ 76259243Sobrien F_UNASSIGNED, /* M-# */ 76359243Sobrien F_UNASSIGNED, /* M-$ */ 76459243Sobrien F_UNASSIGNED, /* M-% */ 76559243Sobrien F_UNASSIGNED, /* M-& */ 76659243Sobrien F_UNASSIGNED, /* M-' */ 76759243Sobrien F_UNASSIGNED, /* M-( */ 76859243Sobrien F_UNASSIGNED, /* M-) */ 76959243Sobrien F_UNASSIGNED, /* M-* */ 77059243Sobrien F_UNASSIGNED, /* M-+ */ 77159243Sobrien F_UNASSIGNED, /* M-, */ 77259243Sobrien F_UNASSIGNED, /* M-- */ 77359243Sobrien F_UNASSIGNED, /* M-. */ 77459243Sobrien F_UNASSIGNED, /* M-/ */ 77559243Sobrien F_UNASSIGNED, /* M-0 */ 77659243Sobrien F_UNASSIGNED, /* M-1 */ 77759243Sobrien F_UNASSIGNED, /* M-2 */ 77859243Sobrien F_UNASSIGNED, /* M-3 */ 77959243Sobrien F_UNASSIGNED, /* M-4 */ 78059243Sobrien F_UNASSIGNED, /* M-5 */ 78159243Sobrien F_UNASSIGNED, /* M-6 */ 78259243Sobrien F_UNASSIGNED, /* M-7 */ 78359243Sobrien F_UNASSIGNED, /* M-8 */ 78459243Sobrien F_UNASSIGNED, /* M-9 */ 78559243Sobrien F_UNASSIGNED, /* M-: */ 78659243Sobrien F_UNASSIGNED, /* M-; */ 78759243Sobrien F_UNASSIGNED, /* M-< */ 78859243Sobrien F_UNASSIGNED, /* M-= */ 78959243Sobrien F_UNASSIGNED, /* M-> */ 79059243Sobrien F_UNASSIGNED, /* M-? */ 79159243Sobrien F_UNASSIGNED, /* M-@ */ 79259243Sobrien F_UNASSIGNED, /* M-A */ 79359243Sobrien F_UNASSIGNED, /* M-B */ 79459243Sobrien F_UNASSIGNED, /* M-C */ 79559243Sobrien F_UNASSIGNED, /* M-D */ 79659243Sobrien F_UNASSIGNED, /* M-E */ 79759243Sobrien F_UNASSIGNED, /* M-F */ 79859243Sobrien F_UNASSIGNED, /* M-G */ 79959243Sobrien F_UNASSIGNED, /* M-H */ 80059243Sobrien F_UNASSIGNED, /* M-I */ 80159243Sobrien F_UNASSIGNED, /* M-J */ 80259243Sobrien F_UNASSIGNED, /* M-K */ 80359243Sobrien F_UNASSIGNED, /* M-L */ 80459243Sobrien F_UNASSIGNED, /* M-M */ 80559243Sobrien F_UNASSIGNED, /* M-N */ 80659243Sobrien F_UNASSIGNED, /* M-O */ 80759243Sobrien F_UNASSIGNED, /* M-P */ 80859243Sobrien F_UNASSIGNED, /* M-Q */ 80959243Sobrien F_UNASSIGNED, /* M-R */ 81059243Sobrien F_UNASSIGNED, /* M-S */ 81159243Sobrien F_UNASSIGNED, /* M-T */ 81259243Sobrien F_UNASSIGNED, /* M-U */ 81359243Sobrien F_UNASSIGNED, /* M-V */ 81459243Sobrien F_UNASSIGNED, /* M-W */ 81559243Sobrien F_UNASSIGNED, /* M-X */ 81659243Sobrien F_UNASSIGNED, /* M-Y */ 81759243Sobrien F_UNASSIGNED, /* M-Z */ 81859243Sobrien F_UNASSIGNED, /* M-[ */ 81959243Sobrien F_UNASSIGNED, /* M-\ */ 82059243Sobrien F_UNASSIGNED, /* M-] */ 82159243Sobrien F_UNASSIGNED, /* M-^ */ 82259243Sobrien F_UNASSIGNED, /* M-_ */ 82359243Sobrien F_UNASSIGNED, /* M-` */ 82459243Sobrien F_UNASSIGNED, /* M-a */ 82559243Sobrien F_UNASSIGNED, /* M-b */ 82659243Sobrien F_UNASSIGNED, /* M-c */ 82759243Sobrien F_UNASSIGNED, /* M-d */ 82859243Sobrien F_UNASSIGNED, /* M-e */ 82959243Sobrien F_UNASSIGNED, /* M-f */ 83059243Sobrien F_UNASSIGNED, /* M-g */ 83159243Sobrien F_UNASSIGNED, /* M-h */ 83259243Sobrien F_UNASSIGNED, /* M-i */ 83359243Sobrien F_UNASSIGNED, /* M-j */ 83459243Sobrien F_UNASSIGNED, /* M-k */ 83559243Sobrien F_UNASSIGNED, /* M-l */ 83659243Sobrien F_UNASSIGNED, /* M-m */ 83759243Sobrien F_UNASSIGNED, /* M-n */ 83859243Sobrien F_UNASSIGNED, /* M-o */ 83959243Sobrien F_UNASSIGNED, /* M-p */ 84059243Sobrien F_UNASSIGNED, /* M-q */ 84159243Sobrien F_UNASSIGNED, /* M-r */ 84259243Sobrien F_UNASSIGNED, /* M-s */ 84359243Sobrien F_UNASSIGNED, /* M-t */ 84459243Sobrien F_UNASSIGNED, /* M-u */ 84559243Sobrien F_UNASSIGNED, /* M-v */ 84659243Sobrien F_UNASSIGNED, /* M-w */ 84759243Sobrien F_UNASSIGNED, /* M-x */ 84859243Sobrien F_UNASSIGNED, /* M-y */ 84959243Sobrien F_UNASSIGNED, /* M-z */ 85059243Sobrien F_UNASSIGNED, /* M-{ */ 85159243Sobrien F_UNASSIGNED, /* M-| */ 85259243Sobrien F_UNASSIGNED, /* M-} */ 85359243Sobrien F_UNASSIGNED, /* M-~ */ 85459243Sobrien F_UNASSIGNED /* M-^? */ 85559243Sobrien}; 85659243Sobrien 85759243SobrienKEYCMD CcViCmdMap[] = { 85859243Sobrien F_UNASSIGNED, /* ^@ */ 85959243Sobrien F_TOBEG, /* ^A */ 86059243Sobrien F_UNASSIGNED, /* ^B */ 86159243Sobrien F_TTY_INT, /* ^C */ 86259243Sobrien F_LIST_CHOICES, /* ^D */ 86359243Sobrien F_TOEND, /* ^E */ 86459243Sobrien F_UNASSIGNED, /* ^F */ 86559243Sobrien F_LIST_GLOB, /* ^G */ 86659243Sobrien F_CHARBACK, /* ^H */ 86759243Sobrien V_CM_COMPLETE, /* ^I */ 86859243Sobrien F_NEWLINE, /* ^J */ 86959243Sobrien F_KILLEND, /* ^K */ 87059243Sobrien F_CLEARDISP, /* ^L */ 87159243Sobrien F_NEWLINE, /* ^M */ 87259243Sobrien F_DOWN_HIST, /* ^N */ 87359243Sobrien F_TTY_FLUSHO, /* ^O */ 87459243Sobrien F_UP_HIST, /* ^P */ 87559243Sobrien F_TTY_STARTO, /* ^Q */ 87659243Sobrien F_REDISP, /* ^R */ 87759243Sobrien F_TTY_STOPO, /* ^S */ 87859243Sobrien F_UNASSIGNED, /* ^T */ 87959243Sobrien F_KILLBEG, /* ^U */ 88059243Sobrien F_UNASSIGNED, /* ^V */ 88159243Sobrien F_DELWORDPREV, /* ^W */ 88259243Sobrien F_EXPAND, /* ^X */ 88359243Sobrien F_UNASSIGNED, /* ^Y */ 88459243Sobrien F_UNASSIGNED, /* ^Z */ 88559243Sobrien F_METANEXT, /* ^[ */ 88659243Sobrien F_TTY_QUIT, /* ^\ */ 88759243Sobrien F_UNASSIGNED, /* ^] */ 88859243Sobrien F_UNASSIGNED, /* ^^ */ 88959243Sobrien F_UNASSIGNED, /* ^_ */ 89059243Sobrien F_CHARFWD, /* SPACE */ 89159243Sobrien F_EXPAND_HISTORY, /* ! */ 89259243Sobrien F_UNASSIGNED, /* " */ 89359243Sobrien F_UNASSIGNED, /* # */ 89459243Sobrien F_TOEND, /* $ */ 89559243Sobrien F_UNASSIGNED, /* % */ 89659243Sobrien F_UNASSIGNED, /* & */ 89759243Sobrien F_UNASSIGNED, /* ' */ 89859243Sobrien F_UNASSIGNED, /* ( */ 89959243Sobrien F_UNASSIGNED, /* ) */ 90059243Sobrien F_EXPAND_GLOB, /* * */ 90159243Sobrien F_DOWN_HIST, /* + */ 90259243Sobrien V_RCHAR_BACK, /* , */ 90359243Sobrien F_UP_HIST, /* - */ 90459243Sobrien F_UNASSIGNED, /* . */ 90559243Sobrien V_DSH_META, /* / */ 90659243Sobrien V_ZERO, /* 0 */ 90759243Sobrien F_ARGDIGIT, /* 1 */ 90859243Sobrien F_ARGDIGIT, /* 2 */ 90959243Sobrien F_ARGDIGIT, /* 3 */ 91059243Sobrien F_ARGDIGIT, /* 4 */ 91159243Sobrien F_ARGDIGIT, /* 5 */ 91259243Sobrien F_ARGDIGIT, /* 6 */ 91359243Sobrien F_ARGDIGIT, /* 7 */ 91459243Sobrien F_ARGDIGIT, /* 8 */ 91559243Sobrien F_ARGDIGIT, /* 9 */ 91659243Sobrien F_UNASSIGNED, /* : */ 91759243Sobrien V_RCHAR_FWD, /* ; */ 91859243Sobrien F_UNASSIGNED, /* < */ 91959243Sobrien F_UNASSIGNED, /* = */ 92059243Sobrien F_UNASSIGNED, /* > */ 92159243Sobrien V_USH_META, /* ? */ 92259243Sobrien F_UNASSIGNED, /* @ */ 92359243Sobrien V_ADDEND, /* A */ 92459243Sobrien V_WORDBACK, /* B */ 92559243Sobrien V_CHGTOEND, /* C */ 92659243Sobrien F_KILLEND, /* D */ 92759243Sobrien V_ENDWORD, /* E */ 92859243Sobrien V_CHAR_BACK, /* F */ 92959243Sobrien F_UNASSIGNED, /* G */ 93059243Sobrien F_UNASSIGNED, /* H */ 93159243Sobrien V_INSBEG, /* I */ 93259243Sobrien F_DOWN_SEARCH_HIST, /* J */ 93359243Sobrien F_UP_SEARCH_HIST, /* K */ 93459243Sobrien F_UNASSIGNED, /* L */ 93559243Sobrien F_UNASSIGNED, /* M */ 93659243Sobrien V_RSRCH_BACK, /* N */ 93759243Sobrien F_XKEY, /* O */ 93859243Sobrien F_UNASSIGNED, /* P */ 93959243Sobrien F_UNASSIGNED, /* Q */ 94059243Sobrien V_REPLMODE, /* R */ 94159243Sobrien V_SUBSTLINE, /* S */ 94259243Sobrien V_CHARTO_BACK, /* T */ 94359243Sobrien F_UNASSIGNED, /* U */ 94459243Sobrien F_EXPAND_VARS, /* V */ 94559243Sobrien V_WORDFWD, /* W */ 94659243Sobrien F_DELPREV, /* X */ 94759243Sobrien F_UNASSIGNED, /* Y */ 94859243Sobrien F_UNASSIGNED, /* Z */ 94959243Sobrien F_XKEY, /* [ */ 95059243Sobrien F_UNASSIGNED, /* \ */ 95159243Sobrien F_UNASSIGNED, /* ] */ 95259243Sobrien F_TOBEG, /* ^ */ 95359243Sobrien F_UNASSIGNED, /* _ */ 95459243Sobrien F_UNASSIGNED, /* ` */ 95559243Sobrien V_ADD, /* a */ 95659243Sobrien F_WORDBACK, /* b */ 95759243Sobrien V_CHGMETA, /* c */ 95859243Sobrien V_DELMETA, /* d */ 95959243Sobrien V_EWORD, /* e */ 96059243Sobrien V_CHAR_FWD, /* f */ 96159243Sobrien F_UNASSIGNED, /* g */ 96259243Sobrien F_CHARBACK, /* h */ 96359243Sobrien V_INSERT, /* i */ 96459243Sobrien F_DOWN_HIST, /* j */ 96559243Sobrien F_UP_HIST, /* k */ 96659243Sobrien F_CHARFWD, /* l */ 96759243Sobrien F_UNASSIGNED, /* m */ 96859243Sobrien V_RSRCH_FWD, /* n */ 96959243Sobrien F_UNASSIGNED, /* o */ 97059243Sobrien F_UNASSIGNED, /* p */ 97159243Sobrien F_UNASSIGNED, /* q */ 97259243Sobrien V_REPLONE, /* r */ 97359243Sobrien V_SUBSTCHAR, /* s */ 97459243Sobrien V_CHARTO_FWD, /* t */ 97559243Sobrien V_UNDO, /* u */ 97659243Sobrien F_EXPAND_VARS, /* v */ 97759243Sobrien V_WORDBEGNEXT, /* w */ 97859243Sobrien F_DELNEXT_EOF, /* x */ 97959243Sobrien F_UNASSIGNED, /* y */ 98059243Sobrien F_UNASSIGNED, /* z */ 98159243Sobrien F_UNASSIGNED, /* { */ 98259243Sobrien F_UNASSIGNED, /* | */ 98359243Sobrien F_UNASSIGNED, /* } */ 98459243Sobrien V_CHGCASE, /* ~ */ 98559243Sobrien F_DELPREV, /* ^? */ 98659243Sobrien F_UNASSIGNED, /* M-^@ */ 98759243Sobrien F_UNASSIGNED, /* M-^A */ 98859243Sobrien F_UNASSIGNED, /* M-^B */ 98959243Sobrien F_UNASSIGNED, /* M-^C */ 99059243Sobrien F_UNASSIGNED, /* M-^D */ 99159243Sobrien F_UNASSIGNED, /* M-^E */ 99259243Sobrien F_UNASSIGNED, /* M-^F */ 99359243Sobrien F_UNASSIGNED, /* M-^G */ 99459243Sobrien F_UNASSIGNED, /* M-^H */ 99559243Sobrien F_UNASSIGNED, /* M-^I */ 99659243Sobrien F_UNASSIGNED, /* M-^J */ 99759243Sobrien F_UNASSIGNED, /* M-^K */ 99859243Sobrien F_UNASSIGNED, /* M-^L */ 99959243Sobrien F_UNASSIGNED, /* M-^M */ 100059243Sobrien F_UNASSIGNED, /* M-^N */ 100159243Sobrien F_UNASSIGNED, /* M-^O */ 100259243Sobrien F_UNASSIGNED, /* M-^P */ 100359243Sobrien F_UNASSIGNED, /* M-^Q */ 100459243Sobrien F_UNASSIGNED, /* M-^R */ 100559243Sobrien F_UNASSIGNED, /* M-^S */ 100659243Sobrien F_UNASSIGNED, /* M-^T */ 100759243Sobrien F_UNASSIGNED, /* M-^U */ 100859243Sobrien F_UNASSIGNED, /* M-^V */ 100959243Sobrien F_UNASSIGNED, /* M-^W */ 101059243Sobrien F_UNASSIGNED, /* M-^X */ 101159243Sobrien F_UNASSIGNED, /* M-^Y */ 101259243Sobrien F_UNASSIGNED, /* M-^Z */ 101359243Sobrien F_UNASSIGNED, /* M-^[ */ 101459243Sobrien F_UNASSIGNED, /* M-^\ */ 101559243Sobrien F_UNASSIGNED, /* M-^] */ 101659243Sobrien F_UNASSIGNED, /* M-^^ */ 101759243Sobrien F_UNASSIGNED, /* M-^_ */ 101859243Sobrien F_UNASSIGNED, /* M-SPACE */ 101959243Sobrien F_UNASSIGNED, /* M-! */ 102059243Sobrien F_UNASSIGNED, /* M-" */ 102159243Sobrien F_UNASSIGNED, /* M-# */ 102259243Sobrien F_UNASSIGNED, /* M-$ */ 102359243Sobrien F_UNASSIGNED, /* M-% */ 102459243Sobrien F_UNASSIGNED, /* M-& */ 102559243Sobrien F_UNASSIGNED, /* M-' */ 102659243Sobrien F_UNASSIGNED, /* M-( */ 102759243Sobrien F_UNASSIGNED, /* M-) */ 102859243Sobrien F_UNASSIGNED, /* M-* */ 102959243Sobrien F_UNASSIGNED, /* M-+ */ 103059243Sobrien F_UNASSIGNED, /* M-, */ 103159243Sobrien F_UNASSIGNED, /* M-- */ 103259243Sobrien F_UNASSIGNED, /* M-. */ 103359243Sobrien F_UNASSIGNED, /* M-/ */ 103459243Sobrien F_UNASSIGNED, /* M-0 */ 103559243Sobrien F_UNASSIGNED, /* M-1 */ 103659243Sobrien F_UNASSIGNED, /* M-2 */ 103759243Sobrien F_UNASSIGNED, /* M-3 */ 103859243Sobrien F_UNASSIGNED, /* M-4 */ 103959243Sobrien F_UNASSIGNED, /* M-5 */ 104059243Sobrien F_UNASSIGNED, /* M-6 */ 104159243Sobrien F_UNASSIGNED, /* M-7 */ 104259243Sobrien F_UNASSIGNED, /* M-8 */ 104359243Sobrien F_UNASSIGNED, /* M-9 */ 104459243Sobrien F_UNASSIGNED, /* M-: */ 104559243Sobrien F_UNASSIGNED, /* M-; */ 104659243Sobrien F_UNASSIGNED, /* M-< */ 104759243Sobrien F_UNASSIGNED, /* M-= */ 104859243Sobrien F_UNASSIGNED, /* M-> */ 104959243Sobrien F_HELPME, /* M-? */ 105059243Sobrien F_UNASSIGNED, /* M-@ */ 105159243Sobrien F_UNASSIGNED, /* M-A */ 105259243Sobrien F_UNASSIGNED, /* M-B */ 105359243Sobrien F_UNASSIGNED, /* M-C */ 105459243Sobrien F_UNASSIGNED, /* M-D */ 105559243Sobrien F_UNASSIGNED, /* M-E */ 105659243Sobrien F_UNASSIGNED, /* M-F */ 105759243Sobrien F_UNASSIGNED, /* M-G */ 105859243Sobrien F_UNASSIGNED, /* M-H */ 105959243Sobrien F_UNASSIGNED, /* M-I */ 106059243Sobrien F_UNASSIGNED, /* M-J */ 106159243Sobrien F_UNASSIGNED, /* M-K */ 106259243Sobrien F_UNASSIGNED, /* M-L */ 106359243Sobrien F_UNASSIGNED, /* M-M */ 106459243Sobrien F_UNASSIGNED, /* M-N */ 106559243Sobrien F_XKEY, /* M-O *//* extended key esc PWP Mar 88 */ 106659243Sobrien F_UNASSIGNED, /* M-P */ 106759243Sobrien F_UNASSIGNED, /* M-Q */ 106859243Sobrien F_UNASSIGNED, /* M-R */ 106959243Sobrien F_UNASSIGNED, /* M-S */ 107059243Sobrien F_UNASSIGNED, /* M-T */ 107159243Sobrien F_UNASSIGNED, /* M-U */ 107259243Sobrien F_UNASSIGNED, /* M-V */ 107359243Sobrien F_UNASSIGNED, /* M-W */ 107459243Sobrien F_UNASSIGNED, /* M-X */ 107559243Sobrien F_UNASSIGNED, /* M-Y */ 107659243Sobrien F_UNASSIGNED, /* M-Z */ 107759243Sobrien F_XKEY, /* M-[ *//* extended key esc -mf Oct 87 */ 107859243Sobrien F_UNASSIGNED, /* M-\ */ 107959243Sobrien F_UNASSIGNED, /* M-] */ 108059243Sobrien F_UNASSIGNED, /* M-^ */ 108159243Sobrien F_UNASSIGNED, /* M-_ */ 108259243Sobrien F_UNASSIGNED, /* M-` */ 108359243Sobrien F_UNASSIGNED, /* M-a */ 108459243Sobrien F_UNASSIGNED, /* M-b */ 108559243Sobrien F_UNASSIGNED, /* M-c */ 108659243Sobrien F_UNASSIGNED, /* M-d */ 108759243Sobrien F_UNASSIGNED, /* M-e */ 108859243Sobrien F_UNASSIGNED, /* M-f */ 108959243Sobrien F_UNASSIGNED, /* M-g */ 109059243Sobrien F_UNASSIGNED, /* M-h */ 109159243Sobrien F_UNASSIGNED, /* M-i */ 109259243Sobrien F_UNASSIGNED, /* M-j */ 109359243Sobrien F_UNASSIGNED, /* M-k */ 109459243Sobrien F_UNASSIGNED, /* M-l */ 109559243Sobrien F_UNASSIGNED, /* M-m */ 109659243Sobrien F_UNASSIGNED, /* M-n */ 109759243Sobrien F_UNASSIGNED, /* M-o */ 109859243Sobrien F_UNASSIGNED, /* M-p */ 109959243Sobrien F_UNASSIGNED, /* M-q */ 110059243Sobrien F_UNASSIGNED, /* M-r */ 110159243Sobrien F_UNASSIGNED, /* M-s */ 110259243Sobrien F_UNASSIGNED, /* M-t */ 110359243Sobrien F_UNASSIGNED, /* M-u */ 110459243Sobrien F_UNASSIGNED, /* M-v */ 110559243Sobrien F_UNASSIGNED, /* M-w */ 110659243Sobrien F_UNASSIGNED, /* M-x */ 110759243Sobrien F_UNASSIGNED, /* M-y */ 110859243Sobrien F_UNASSIGNED, /* M-z */ 110959243Sobrien F_UNASSIGNED, /* M-{ */ 111059243Sobrien F_UNASSIGNED, /* M-| */ 111159243Sobrien F_UNASSIGNED, /* M-} */ 111259243Sobrien F_UNASSIGNED, /* M-~ */ 111359243Sobrien F_UNASSIGNED /* M-^? */ 111459243Sobrien}; 111569408Sache#endif /* WINNT_NATIVE */ 111659243Sobrien 111759243Sobrien 111859243Sobrienvoid 1119167465Smpeditinit(void) 112059243Sobrien{ 112159243Sobrien struct KeyFuncs *f; 112259243Sobrien 112369408Sache#if defined(NLS_CATALOGS) || defined(WINNT_NATIVE) 112459243Sobrien int i; 112559243Sobrien 112659243Sobrien for (i = 0; i < F_NUM_FUNCNAMES; i++) 1127167465Smp xfree((ptr_t)(intptr_t)FuncNames[i].desc); 112859243Sobrien#endif 112959243Sobrien 113059243Sobrien f = FuncNames; 113159243Sobrien f->name = "backward-char"; 113259243Sobrien f->func = F_CHARBACK; 113359243Sobrien f->desc = CSAVS(3, 1, "Move back a character"); 113459243Sobrien 113559243Sobrien f++; 113659243Sobrien f->name = "backward-delete-char"; 113759243Sobrien f->func = F_DELPREV; 113859243Sobrien f->desc = CSAVS(3, 2, "Delete the character behind cursor"); 113959243Sobrien 114059243Sobrien f++; 114159243Sobrien f->name = "backward-delete-word"; 114259243Sobrien f->func = F_DELWORDPREV; 114359243Sobrien f->desc = CSAVS(3, 3, 114459243Sobrien "Cut from beginning of current word to cursor - saved in cut buffer"); 114559243Sobrien 114659243Sobrien f++; 114759243Sobrien f->name = "backward-kill-line"; 114859243Sobrien f->func = F_KILLBEG; 114959243Sobrien f->desc = CSAVS(3, 4, 115059243Sobrien "Cut from beginning of line to cursor - save in cut buffer"); 115159243Sobrien 115259243Sobrien f++; 115359243Sobrien f->name = "backward-word"; 115459243Sobrien f->func = F_WORDBACK; 115559243Sobrien f->desc = CSAVS(3, 5, "Move to beginning of current word"); 115659243Sobrien 115759243Sobrien f++; 115859243Sobrien f->name = "beginning-of-line"; 115959243Sobrien f->func = F_TOBEG; 116059243Sobrien f->desc = CSAVS(3, 6, "Move to beginning of line"); 116159243Sobrien 116259243Sobrien f++; 116359243Sobrien f->name = "capitalize-word"; 116459243Sobrien f->func = F_CASECAPITAL; 116559243Sobrien f->desc = CSAVS(3, 7, 116659243Sobrien "Capitalize the characters from cursor to end of current word"); 116759243Sobrien 116859243Sobrien f++; 116959243Sobrien f->name = "change-case"; 117059243Sobrien f->func = V_CHGCASE; 117159243Sobrien f->desc = CSAVS(3, 8, 117259243Sobrien "Vi change case of character under cursor and advance one character"); 117359243Sobrien 117459243Sobrien f++; 117559243Sobrien f->name = "change-till-end-of-line"; 117659243Sobrien f->func = V_CHGTOEND; /* backward compat. */ 117759243Sobrien f->desc = CSAVS(3, 9, "Vi change to end of line"); 117859243Sobrien 117959243Sobrien f++; 118059243Sobrien f->name = "clear-screen"; 118159243Sobrien f->func = F_CLEARDISP; 118259243Sobrien f->desc = CSAVS(3, 10, "Clear screen leaving current line on top"); 118359243Sobrien 118459243Sobrien f++; 118559243Sobrien f->name = "complete-word"; 118659243Sobrien f->func = F_COMPLETE; 118759243Sobrien f->desc = CSAVS(3, 11, "Complete current word"); 118859243Sobrien 118959243Sobrien f++; 119059243Sobrien f->name = "complete-word-fwd"; 119159243Sobrien f->func = F_COMPLETE_FWD; 119259243Sobrien f->desc = CSAVS(3, 12, "Tab forward through files"); 119359243Sobrien 119459243Sobrien f++; 119559243Sobrien f->name = "complete-word-back"; 119659243Sobrien f->func = F_COMPLETE_BACK; 119759243Sobrien f->desc = CSAVS(3, 13, "Tab backward through files"); 119859243Sobrien 119959243Sobrien f++; 120059243Sobrien f->name = "complete-word-raw"; 120159243Sobrien f->func = F_COMPLETE_ALL; 120259243Sobrien f->desc = CSAVS(3, 14, 120359243Sobrien "Complete current word ignoring programmable completions"); 120459243Sobrien 120559243Sobrien f++; 120659243Sobrien f->name = "copy-prev-word"; 120759243Sobrien f->func = F_COPYPREV; 120859243Sobrien f->desc = CSAVS(3, 15, "Copy current word to cursor"); 120959243Sobrien 121059243Sobrien f++; 121159243Sobrien f->name = "copy-region-as-kill"; 121259243Sobrien f->func = F_COPYREGION; 121359243Sobrien f->desc = CSAVS(3, 16, "Copy area between mark and cursor to cut buffer"); 121459243Sobrien 121559243Sobrien f++; 121659243Sobrien f->name = "dabbrev-expand"; 121759243Sobrien f->func = F_DABBREV_EXPAND; 121859243Sobrien f->desc = CSAVS(3, 17, 121959243Sobrien "Expand to preceding word for which this is a prefix"); 122059243Sobrien 122159243Sobrien f++; 122259243Sobrien f->name = "delete-char"; 122359243Sobrien f->func = F_DELNEXT; 122459243Sobrien f->desc = CSAVS(3, 18, "Delete character under cursor"); 122559243Sobrien 122659243Sobrien f++; 122759243Sobrien f->name = "delete-char-or-eof"; 122859243Sobrien f->func = F_DELNEXT_EOF; 122959243Sobrien f->desc = CSAVS(3, 19, 123059243Sobrien "Delete character under cursor or signal end of file on an empty line"); 123159243Sobrien 123259243Sobrien f++; 123359243Sobrien f->name = "delete-char-or-list"; 123459243Sobrien f->func = F_DELNEXT_LIST; 123559243Sobrien f->desc = CSAVS(3, 20, 123659243Sobrien "Delete character under cursor or list completions if at end of line"); 123759243Sobrien 123859243Sobrien f++; 123959243Sobrien f->name = "delete-char-or-list-or-eof"; 124059243Sobrien f->func = F_DELNEXT_LIST_EOF; 124159243Sobrien f->desc = CSAVS(3, 21, 124259243Sobrien "Delete character under cursor, list completions or signal end of file"); 124359243Sobrien 124459243Sobrien f++; 124559243Sobrien f->name = "delete-word"; 124659243Sobrien f->func = F_DELWORDNEXT; 124759243Sobrien f->desc = CSAVS(3, 22, 124859243Sobrien "Cut from cursor to end of current word - save in cut buffer"); 124959243Sobrien 125059243Sobrien f++; 125159243Sobrien f->name = "digit"; 125259243Sobrien f->func = F_DIGIT; 125359243Sobrien f->desc = CSAVS(3, 23, "Adds to argument if started or enters digit"); 125459243Sobrien 125559243Sobrien f++; 125659243Sobrien f->name = "digit-argument"; 125759243Sobrien f->func = F_ARGDIGIT; 125859243Sobrien f->desc = CSAVS(3, 24, "Digit that starts argument"); 125959243Sobrien 126059243Sobrien f++; 126159243Sobrien f->name = "down-history"; 126259243Sobrien f->func = F_DOWN_HIST; 126359243Sobrien f->desc = CSAVS(3, 25, "Move to next history line"); 126459243Sobrien 126559243Sobrien f++; 126659243Sobrien f->name = "downcase-word"; 126759243Sobrien f->func = F_CASELOWER; 126859243Sobrien f->desc = CSAVS(3, 26, 126959243Sobrien "Lowercase the characters from cursor to end of current word"); 127059243Sobrien 127159243Sobrien f++; 127259243Sobrien f->name = "end-of-file"; 127359243Sobrien f->func = F_SEND_EOF; 127459243Sobrien f->desc = CSAVS(3, 27, "Indicate end of file"); 127559243Sobrien 127659243Sobrien f++; 127759243Sobrien f->name = "end-of-line"; 127859243Sobrien f->func = F_TOEND; 127959243Sobrien f->desc = CSAVS(3, 28, "Move cursor to end of line"); 128059243Sobrien 128159243Sobrien f++; 128259243Sobrien f->name = "exchange-point-and-mark"; 128359243Sobrien f->func = F_EXCHANGE_MARK; 128459243Sobrien f->desc = CSAVS(3, 29, "Exchange the cursor and mark"); 128559243Sobrien 128659243Sobrien f++; 128759243Sobrien f->name = "expand-glob"; 128859243Sobrien f->func = F_EXPAND_GLOB; 128959243Sobrien f->desc = CSAVS(3, 30, "Expand file name wildcards"); 129059243Sobrien 129159243Sobrien f++; 129259243Sobrien f->name = "expand-history"; 129359243Sobrien f->func = F_EXPAND_HISTORY; 129459243Sobrien f->desc = CSAVS(3, 31, "Expand history escapes"); 129559243Sobrien 129659243Sobrien f++; 129759243Sobrien f->name = "expand-line"; 129859243Sobrien f->func = F_EXPAND; 129959243Sobrien f->desc = CSAVS(3, 32, "Expand the history escapes in a line"); 130059243Sobrien 130159243Sobrien f++; 130259243Sobrien f->name = "expand-variables"; 130359243Sobrien f->func = F_EXPAND_VARS; 130459243Sobrien f->desc = CSAVS(3, 33, "Expand variables"); 130559243Sobrien 130659243Sobrien f++; 130759243Sobrien f->name = "forward-char"; 130859243Sobrien f->func = F_CHARFWD; 130959243Sobrien f->desc = CSAVS(3, 34, "Move forward one character"); 131059243Sobrien 131159243Sobrien f++; 131259243Sobrien f->name = "forward-word"; 131359243Sobrien f->func = F_WORDFWD; 131459243Sobrien f->desc = CSAVS(3, 35, "Move forward to end of current word"); 131559243Sobrien 131659243Sobrien f++; 131759243Sobrien f->name = "gosmacs-transpose-chars"; 131859243Sobrien f->func = F_GCHARSWITCH; 131959243Sobrien f->desc = CSAVS(3, 36, "Exchange the two characters before the cursor"); 132059243Sobrien 132159243Sobrien f++; 132259243Sobrien f->name = "history-search-backward"; 132359243Sobrien f->func = F_UP_SEARCH_HIST; 132459243Sobrien f->desc = CSAVS(3, 37, 132559243Sobrien "Search in history backward for line beginning as current"); 132659243Sobrien 132759243Sobrien f++; 132859243Sobrien f->name = "history-search-forward"; 132959243Sobrien f->func = F_DOWN_SEARCH_HIST; 133059243Sobrien f->desc = CSAVS(3, 38, 133159243Sobrien "Search in history forward for line beginning as current"); 133259243Sobrien 133359243Sobrien f++; 133459243Sobrien f->name = "insert-last-word"; 133559243Sobrien f->func = F_LAST_ITEM; 133659243Sobrien f->desc = CSAVS(3, 39, "Insert last item of previous command"); 133759243Sobrien 133859243Sobrien f++; 133959243Sobrien f->name = "i-search-fwd"; 134059243Sobrien f->func = F_INC_FWD; 134159243Sobrien f->desc = CSAVS(3, 40, "Incremental search forward"); 134259243Sobrien 134359243Sobrien f++; 134459243Sobrien f->name = "i-search-back"; 134559243Sobrien f->func = F_INC_BACK; 134659243Sobrien f->desc = CSAVS(3, 41, "Incremental search backward"); 134759243Sobrien 134859243Sobrien f++; 134959243Sobrien f->name = "keyboard-quit"; 135059243Sobrien f->func = F_STARTOVER; 135159243Sobrien f->desc = CSAVS(3, 42, "Clear line"); 135259243Sobrien 135359243Sobrien f++; 135459243Sobrien f->name = "kill-line"; 135559243Sobrien f->func = F_KILLEND; 135659243Sobrien f->desc = CSAVS(3, 43, "Cut to end of line and save in cut buffer"); 135759243Sobrien 135859243Sobrien f++; 135959243Sobrien f->name = "kill-region"; 136059243Sobrien f->func = F_KILLREGION; 136159243Sobrien f->desc = CSAVS(3, 44, 136259243Sobrien "Cut area between mark and cursor and save in cut buffer"); 136359243Sobrien 136459243Sobrien f++; 136559243Sobrien f->name = "kill-whole-line"; 136659243Sobrien f->func = F_KILLALL; 136759243Sobrien f->desc = CSAVS(3, 45, "Cut the entire line and save in cut buffer"); 136859243Sobrien 136959243Sobrien f++; 137059243Sobrien f->name = "list-choices"; 137159243Sobrien f->func = F_LIST_CHOICES; 137259243Sobrien f->desc = CSAVS(3, 46, "List choices for completion"); 137359243Sobrien 137459243Sobrien f++; 137559243Sobrien f->name = "list-choices-raw"; 137659243Sobrien f->func = F_LIST_ALL; 137759243Sobrien f->desc = CSAVS(3, 47, 137859243Sobrien "List choices for completion overriding programmable completion"); 137959243Sobrien 138059243Sobrien f++; 138159243Sobrien f->name = "list-glob"; 138259243Sobrien f->func = F_LIST_GLOB; 138359243Sobrien f->desc = CSAVS(3, 48, "List file name wildcard matches"); 138459243Sobrien 138559243Sobrien f++; 138659243Sobrien f->name = "list-or-eof"; 138759243Sobrien f->func = F_LIST_EOF; 138859243Sobrien f->desc = CSAVS(3, 49, 138959243Sobrien "List choices for completion or indicate end of file if empty line"); 139059243Sobrien 139159243Sobrien f++; 139259243Sobrien f->name = "load-average"; 139359243Sobrien f->func = F_LOAD_AVERAGE; 139459243Sobrien f->desc = CSAVS(3, 50, "Display load average and current process status"); 139559243Sobrien 139659243Sobrien f++; 139759243Sobrien f->name = "magic-space"; 139859243Sobrien f->func = F_MAGIC_SPACE; 139959243Sobrien f->desc = CSAVS(3, 51, "Expand history escapes and insert a space"); 140059243Sobrien 140159243Sobrien f++; 140259243Sobrien f->name = "newline"; 140359243Sobrien f->func = F_NEWLINE; 140459243Sobrien f->desc = CSAVS(3, 52, "Execute command"); 140559243Sobrien 140659243Sobrien f++; 1407167465Smp f->name = "newline-and-hold"; 1408167465Smp f->func = F_NEWLINE_HOLD; 1409167465Smp f->desc = CSAVS(3, 122, "Execute command and keep current line"); 1410167465Smp 1411167465Smp f++; 1412167465Smp f->name = "newline-and-down-history"; 1413167465Smp f->func = F_NEWLINE_DOWN_HIST; 1414167465Smp f->desc = CSAVS(3, 123, "Execute command and move to next history line"); 1415167465Smp 1416167465Smp f++; 141759243Sobrien f->name = "normalize-path"; 141859243Sobrien f->func = F_PATH_NORM; 141959243Sobrien f->desc = CSAVS(3, 53, 142059243Sobrien "Expand pathnames, eliminating leading .'s and ..'s"); 142159243Sobrien 142259243Sobrien f++; 142359243Sobrien f->name = "normalize-command"; 142459243Sobrien f->func = F_COMMAND_NORM; 142559243Sobrien f->desc = CSAVS(3, 54, 142659243Sobrien "Expand commands to the resulting pathname or alias"); 142759243Sobrien 142859243Sobrien f++; 142959243Sobrien f->name = "overwrite-mode"; 143059243Sobrien f->func = F_INSOVR; 143159243Sobrien f->desc = CSAVS(3, 55, 143259243Sobrien "Switch from insert to overwrite mode or vice versa"); 143359243Sobrien 143459243Sobrien f++; 143559243Sobrien f->name = "prefix-meta"; 143659243Sobrien f->func = F_METANEXT; 143759243Sobrien f->desc = CSAVS(3, 56, "Add 8th bit to next character typed"); 143859243Sobrien 143959243Sobrien f++; 144059243Sobrien f->name = "quoted-insert"; 144159243Sobrien f->func = F_QUOTE; 144259243Sobrien f->desc = CSAVS(3, 57, "Add the next character typed to the line verbatim"); 144359243Sobrien 144459243Sobrien f++; 144559243Sobrien f->name = "redisplay"; 144659243Sobrien f->func = F_REDISP; 144759243Sobrien f->desc = CSAVS(3, 58, "Redisplay everything"); 144859243Sobrien 144959243Sobrien f++; 145059243Sobrien f->name = "run-fg-editor"; 145159243Sobrien f->func = F_RUN_FG_EDITOR; 145259243Sobrien f->desc = CSAVS(3, 59, "Restart stopped editor"); 145359243Sobrien 145459243Sobrien f++; 145559243Sobrien f->name = "run-help"; 145659243Sobrien f->func = F_HELPME; 145759243Sobrien f->desc = CSAVS(3, 60, "Look for help on current command"); 145859243Sobrien 145959243Sobrien f++; 146059243Sobrien f->name = "self-insert-command"; 146159243Sobrien f->func = F_INSERT; 146259243Sobrien f->desc = CSAVS(3, 61, "This character is added to the line"); 146359243Sobrien 146459243Sobrien f++; 146559243Sobrien f->name = "sequence-lead-in"; 146659243Sobrien f->func = F_XKEY; 146759243Sobrien f->desc = CSAVS(3, 62, 146859243Sobrien "This character is the first in a character sequence"); 146959243Sobrien 147059243Sobrien f++; 147159243Sobrien f->name = "set-mark-command"; 147259243Sobrien f->func = F_SET_MARK; 147359243Sobrien f->desc = CSAVS(3, 63, "Set the mark at cursor"); 147459243Sobrien 147559243Sobrien f++; 147659243Sobrien f->name = "spell-word"; 147759243Sobrien f->func = F_CORRECT; 147859243Sobrien f->desc = CSAVS(3, 64, "Correct the spelling of current word"); 147959243Sobrien 148059243Sobrien f++; 148159243Sobrien f->name = "spell-line"; 148259243Sobrien f->func = F_CORRECT_L; 148359243Sobrien f->desc = CSAVS(3, 65, "Correct the spelling of entire line"); 148459243Sobrien 148559243Sobrien f++; 148659243Sobrien f->name = "stuff-char"; 148759243Sobrien f->func = F_STUFF_CHAR; 148859243Sobrien f->desc = CSAVS(3, 66, "Send character to tty in cooked mode"); 148959243Sobrien 149059243Sobrien f++; 149159243Sobrien f->name = "toggle-literal-history"; 149259243Sobrien f->func = F_TOGGLE_HIST; 149359243Sobrien f->desc = CSAVS(3, 67, 149459243Sobrien "Toggle between literal and lexical current history line"); 149559243Sobrien 149659243Sobrien f++; 149759243Sobrien f->name = "transpose-chars"; 149859243Sobrien f->func = F_CHARSWITCH; 149959243Sobrien f->desc = CSAVS(3, 68, 150059243Sobrien "Exchange the character to the left of the cursor with the one under"); 150159243Sobrien 150259243Sobrien f++; 150359243Sobrien f->name = "transpose-gosling"; 150459243Sobrien f->func = F_GCHARSWITCH; 150559243Sobrien f->desc = CSAVS(3, 69, "Exchange the two characters before the cursor"); 150659243Sobrien 150759243Sobrien f++; 150859243Sobrien f->name = "tty-dsusp"; 150959243Sobrien f->func = F_TTY_DSUSP; 151059243Sobrien f->desc = CSAVS(3, 70, "Tty delayed suspend character"); 151159243Sobrien 151259243Sobrien f++; 151359243Sobrien f->name = "tty-flush-output"; 151459243Sobrien f->func = F_TTY_FLUSHO; 151559243Sobrien f->desc = CSAVS(3, 71, "Tty flush output character"); 151659243Sobrien 151759243Sobrien f++; 151859243Sobrien f->name = "tty-sigintr"; 151959243Sobrien f->func = F_TTY_INT; 152059243Sobrien f->desc = CSAVS(3, 72, "Tty interrupt character"); 152159243Sobrien 152259243Sobrien f++; 152359243Sobrien f->name = "tty-sigquit"; 152459243Sobrien f->func = F_TTY_QUIT; 152559243Sobrien f->desc = CSAVS(3, 73, "Tty quit character"); 152659243Sobrien 152759243Sobrien f++; 152859243Sobrien f->name = "tty-sigtsusp"; 152959243Sobrien f->func = F_TTY_TSUSP; 153059243Sobrien f->desc = CSAVS(3, 74, "Tty suspend character"); 153159243Sobrien 153259243Sobrien f++; 153359243Sobrien f->name = "tty-start-output"; 153459243Sobrien f->func = F_TTY_STARTO; 153559243Sobrien f->desc = CSAVS(3, 75, "Tty allow output character"); 153659243Sobrien 153759243Sobrien f++; 153859243Sobrien f->name = "tty-stop-output"; 153959243Sobrien f->func = F_TTY_STOPO; 154059243Sobrien f->desc = CSAVS(3, 76, "Tty disallow output character"); 154159243Sobrien 154259243Sobrien f++; 154359243Sobrien f->name = "undefined-key"; 154459243Sobrien f->func = F_UNASSIGNED; 154559243Sobrien f->desc = CSAVS(3, 77, "Indicates unbound character"); 154659243Sobrien 154759243Sobrien f++; 154859243Sobrien f->name = "universal-argument"; 154959243Sobrien f->func = F_ARGFOUR; 155059243Sobrien f->desc = CSAVS(3, 78, "Emacs universal argument (argument times 4)"); 155159243Sobrien 155259243Sobrien f++; 155359243Sobrien f->name = "up-history"; 155459243Sobrien f->func = F_UP_HIST; 155559243Sobrien f->desc = CSAVS(3, 79, "Move to previous history line"); 155659243Sobrien 155759243Sobrien f++; 155859243Sobrien f->name = "upcase-word"; 155959243Sobrien f->func = F_CASEUPPER; 156059243Sobrien f->desc = CSAVS(3, 80, 156159243Sobrien "Uppercase the characters from cursor to end of current word"); 156259243Sobrien 156359243Sobrien f++; 156459243Sobrien f->name = "vi-beginning-of-next-word"; 156559243Sobrien f->func = V_WORDBEGNEXT; 156659243Sobrien f->desc = CSAVS(3, 81, "Vi goto the beginning of next word"); 156759243Sobrien 156859243Sobrien f++; 156959243Sobrien f->name = "vi-add"; 157059243Sobrien f->func = V_ADD; 157159243Sobrien f->desc = CSAVS(3, 82, "Vi enter insert mode after the cursor"); 157259243Sobrien 157359243Sobrien f++; 157459243Sobrien f->name = "vi-add-at-eol"; 157559243Sobrien f->func = V_ADDEND; 157659243Sobrien f->desc = CSAVS(3, 83, "Vi enter insert mode at end of line"); 157759243Sobrien 157859243Sobrien f++; 157959243Sobrien f->name = "vi-chg-case"; 158059243Sobrien f->func = V_CHGCASE; 158159243Sobrien f->desc = CSAVS(3, 84, 158259243Sobrien "Vi change case of character under cursor and advance one character"); 158359243Sobrien 158459243Sobrien f++; 158559243Sobrien f->name = "vi-chg-meta"; 158659243Sobrien f->func = V_CHGMETA; 158759243Sobrien f->desc = CSAVS(3, 85, "Vi change prefix command"); 158859243Sobrien 158959243Sobrien f++; 159059243Sobrien f->name = "vi-chg-to-eol"; 159159243Sobrien f->func = V_CHGTOEND; 159259243Sobrien f->desc = CSAVS(3, 86, "Vi change to end of line"); 159359243Sobrien 159459243Sobrien f++; 159559243Sobrien f->name = "vi-cmd-mode"; 159659243Sobrien f->func = V_CMD_MODE; 159759243Sobrien f->desc = CSAVS(3, 87, 159859243Sobrien "Enter vi command mode (use alternative key bindings)"); 159959243Sobrien 160059243Sobrien f++; 160159243Sobrien f->name = "vi-cmd-mode-complete"; 160259243Sobrien f->func = V_CM_COMPLETE; 160359243Sobrien f->desc = CSAVS(3, 88, "Vi command mode complete current word"); 160459243Sobrien 160559243Sobrien f++; 160659243Sobrien f->name = "vi-delprev"; 160759243Sobrien f->func = V_DELPREV; 160859243Sobrien f->desc = CSAVS(3, 89, "Vi move to previous character (backspace)"); 160959243Sobrien 161059243Sobrien f++; 161159243Sobrien f->name = "vi-delmeta"; 161259243Sobrien f->func = V_DELMETA; 161359243Sobrien f->desc = CSAVS(3, 90, "Vi delete prefix command"); 161459243Sobrien 161559243Sobrien f++; 161659243Sobrien f->name = "vi-endword"; 161759243Sobrien f->func = V_ENDWORD; 161859243Sobrien f->desc = CSAVS(3, 91, 161959243Sobrien "Vi move to the end of the current space delimited word"); 162059243Sobrien 162159243Sobrien f++; 162259243Sobrien f->name = "vi-eword"; 162359243Sobrien f->func = V_EWORD; 162459243Sobrien f->desc = CSAVS(3, 92, "Vi move to the end of the current word"); 162559243Sobrien 162659243Sobrien f++; 162759243Sobrien f->name = "vi-char-back"; 162859243Sobrien f->func = V_CHAR_BACK; 162959243Sobrien f->desc = CSAVS(3, 93, "Vi move to the character specified backward"); 163059243Sobrien 163159243Sobrien f++; 163259243Sobrien f->name = "vi-char-fwd"; 163359243Sobrien f->func = V_CHAR_FWD; 163459243Sobrien f->desc = CSAVS(3, 94, "Vi move to the character specified forward"); 163559243Sobrien 163659243Sobrien f++; 163759243Sobrien f->name = "vi-charto-back"; 163859243Sobrien f->func = V_CHARTO_BACK; 163959243Sobrien f->desc = CSAVS(3, 95, "Vi move up to the character specified backward"); 164059243Sobrien 164159243Sobrien f++; 164259243Sobrien f->name = "vi-charto-fwd"; 164359243Sobrien f->func = V_CHARTO_FWD; 164459243Sobrien f->desc = CSAVS(3, 96, "Vi move up to the character specified forward"); 164559243Sobrien 164659243Sobrien f++; 164759243Sobrien f->name = "vi-insert"; 164859243Sobrien f->func = V_INSERT; 164959243Sobrien f->desc = CSAVS(3, 97, "Enter vi insert mode"); 165059243Sobrien 165159243Sobrien f++; 165259243Sobrien f->name = "vi-insert-at-bol"; 165359243Sobrien f->func = V_INSBEG; 165459243Sobrien f->desc = CSAVS(3, 98, "Enter vi insert mode at beginning of line"); 165559243Sobrien 165659243Sobrien f++; 165759243Sobrien f->name = "vi-repeat-char-fwd"; 165859243Sobrien f->func = V_RCHAR_FWD; 165959243Sobrien f->desc = CSAVS(3, 99, 166059243Sobrien "Vi repeat current character search in the same search direction"); 166159243Sobrien 166259243Sobrien f++; 166359243Sobrien f->name = "vi-repeat-char-back"; 166459243Sobrien f->func = V_RCHAR_BACK; 166559243Sobrien f->desc = CSAVS(3, 100, 166659243Sobrien "Vi repeat current character search in the opposite search direction"); 166759243Sobrien 166859243Sobrien f++; 166959243Sobrien f->name = "vi-repeat-search-fwd"; 167059243Sobrien f->func = V_RSRCH_FWD; 167159243Sobrien f->desc = CSAVS(3, 101, 167259243Sobrien "Vi repeat current search in the same search direction"); 167359243Sobrien 167459243Sobrien f++; 167559243Sobrien f->name = "vi-repeat-search-back"; 167659243Sobrien f->func = V_RSRCH_BACK; 167759243Sobrien f->desc = CSAVS(3, 102, 167859243Sobrien "Vi repeat current search in the opposite search direction"); 167959243Sobrien 168059243Sobrien f++; 168159243Sobrien f->name = "vi-replace-char"; 168259243Sobrien f->func = V_REPLONE; 168359243Sobrien f->desc = CSAVS(3, 103, 168459243Sobrien "Vi replace character under the cursor with the next character typed"); 168559243Sobrien 168659243Sobrien f++; 168759243Sobrien f->name = "vi-replace-mode"; 168859243Sobrien f->func = V_REPLMODE; 168959243Sobrien f->desc = CSAVS(3, 104, "Vi replace mode"); 169059243Sobrien 169159243Sobrien f++; 169259243Sobrien f->name = "vi-search-back"; 169359243Sobrien f->func = V_USH_META; 169459243Sobrien f->desc = CSAVS(3, 105, "Vi search history backward"); 169559243Sobrien 169659243Sobrien f++; 169759243Sobrien f->name = "vi-search-fwd"; 169859243Sobrien f->func = V_DSH_META; 169959243Sobrien f->desc = CSAVS(3, 106, "Vi search history forward"); 170059243Sobrien 170159243Sobrien f++; 170259243Sobrien f->name = "vi-substitute-char"; 170359243Sobrien f->func = V_SUBSTCHAR; 170459243Sobrien f->desc = CSAVS(3, 107, 170559243Sobrien "Vi replace character under the cursor and enter insert mode"); 170659243Sobrien 170759243Sobrien f++; 170859243Sobrien f->name = "vi-substitute-line"; 170959243Sobrien f->func = V_SUBSTLINE; 171059243Sobrien f->desc = CSAVS(3, 108, "Vi replace entire line"); 171159243Sobrien 171259243Sobrien f++; 171359243Sobrien f->name = "vi-word-back"; 171459243Sobrien f->func = V_WORDBACK; 171559243Sobrien f->desc = CSAVS(3, 109, "Vi move to the previous word"); 171659243Sobrien 171759243Sobrien f++; 171859243Sobrien f->name = "vi-word-fwd"; 171959243Sobrien f->func = V_WORDFWD; 172059243Sobrien f->desc = CSAVS(3, 110, "Vi move to the next word"); 172159243Sobrien 172259243Sobrien f++; 172359243Sobrien f->name = "vi-undo"; 172459243Sobrien f->func = V_UNDO; 172559243Sobrien f->desc = CSAVS(3, 111, "Vi undo last change"); 172659243Sobrien 172759243Sobrien f++; 172859243Sobrien f->name = "vi-zero"; 172959243Sobrien f->func = V_ZERO; 173059243Sobrien f->desc = CSAVS(3, 112, "Vi goto the beginning of line"); 173159243Sobrien 173259243Sobrien f++; 173359243Sobrien f->name = "which-command"; 173459243Sobrien f->func = F_WHICH; 173559243Sobrien f->desc = CSAVS(3, 113, "Perform which of current command"); 173659243Sobrien 173759243Sobrien f++; 173859243Sobrien f->name = "yank"; 173959243Sobrien f->func = F_YANK_KILL; 174059243Sobrien f->desc = CSAVS(3, 114, "Paste cut buffer at cursor position"); 174159243Sobrien 174259243Sobrien f++; 174383098Smp f->name = "yank-pop"; 174483098Smp f->func = F_YANK_POP; 174583098Smp f->desc = CSAVS(3, 115, 174683098Smp "Replace just-yanked text with yank from earlier kill"); 174783098Smp 174883098Smp f++; 174959243Sobrien f->name = "e_dosify_next"; 175059243Sobrien f->func = F_DOSIFY_NEXT; 175183098Smp f->desc = CSAVS(3, 118, 175283098Smp "(WIN32 only) Convert each '/' in next word to '\\\\'"); 175383098Smp 175459243Sobrien f++; 175559243Sobrien f->name = "e_dosify_prev"; 175659243Sobrien f->func = F_DOSIFY_PREV; 175783098Smp f->desc = CSAVS(3, 119, 175883098Smp "(WIN32 only) Convert each '/' in previous word to '\\\\'"); 175983098Smp 176069408Sache f++; 176169408Sache f->name = "e_page_up"; 176269408Sache f->func = F_PAGE_UP; 176383098Smp f->desc = CSAVS(3, 120, "(WIN32 only) Page visible console window up"); 176483098Smp 176569408Sache f++; 176669408Sache f->name = "e_page_down"; 176769408Sache f->func = F_PAGE_DOWN; 176883098Smp f->desc = CSAVS(3, 121, "(WIN32 only) Page visible console window down"); 176959243Sobrien 177059243Sobrien f++; 177159243Sobrien f->name = NULL; 177259243Sobrien f->func = 0; 177359243Sobrien f->desc = NULL; 177459243Sobrien 177559243Sobrien f++; 177659243Sobrien if (f - FuncNames != F_NUM_FUNCNAMES) 177759243Sobrien abort(); 177859243Sobrien} 177959243Sobrien 178059243Sobrien#ifdef DEBUG_EDIT 178159243Sobrienvoid 1782167465SmpCheckMaps(void) 178359243Sobrien{ /* check the size of the key maps */ 1784316957Sdchagin size_t c1 = NT_NUM_KEYS * sizeof(KEYCMD); 178559243Sobrien 1786316957Sdchagin if (sizeof(CcKeyMap) != c1) 1787316957Sdchagin xprintf("CcKeyMap should be %u entries, but is %zu.\r\n", 1788316957Sdchagin NT_NUM_KEYS, sizeof(CcKeyMap) / sizeof(KEYCMD)); 178959243Sobrien 1790316957Sdchagin if (sizeof(CcAltMap) != c1) 1791316957Sdchagin xprintf("CcAltMap should be %u entries, but is %zu.\r\n", 1792316957Sdchagin NT_NUM_KEYS, sizeof(CcAltMap) / sizeof(KEYCMD)); 179359243Sobrien 1794316957Sdchagin if (sizeof(CcEmacsMap) != c1) 1795316957Sdchagin xprintf("CcEmacsMap should be %u entries, but is %zu.\r\n", 1796316957Sdchagin NT_NUM_KEYS, sizeof(CcEmacsMap) / sizeof(KEYCMD)); 179759243Sobrien 1798316957Sdchagin if (sizeof(CcViMap) != c1) 1799316957Sdchagin xprintf("CcViMap should be %u entries, but is %zu.\r\n", 1800316957Sdchagin NT_NUM_KEYS, sizeof(CcViMap) / sizeof(KEYCMD)); 180159243Sobrien 1802316957Sdchagin if (sizeof(CcViCmdMap) != c1) 1803316957Sdchagin xprintf("CcViCmdMap should be %u entries, but is %zu.\r\n", 1804316957Sdchagin NT_NUM_KEYS, sizeof(CcViCmdMap) / sizeof(KEYCMD)); 180559243Sobrien} 180659243Sobrien 180759243Sobrien#endif 180859243Sobrien 1809145479Smpint MapsAreInited = 0; 1810145479Smpint NLSMapsAreInited = 0; 1811145479Smpint NoNLSRebind; 181259243Sobrien 181359243Sobrienvoid 1814167465Smped_InitNLSMaps(void) 181559243Sobrien{ 1816145479Smp int i; 181759243Sobrien 181859243Sobrien if (AsciiOnly) 181959243Sobrien return; 182059243Sobrien if (NoNLSRebind) 182159243Sobrien return; 182259243Sobrien for (i = 0200; i <= 0377; i++) { 1823145479Smp if (Isprint(CTL_ESC(i))) { 1824145479Smp CcKeyMap[CTL_ESC(i)] = F_INSERT; 182559243Sobrien } 182659243Sobrien } 182759243Sobrien NLSMapsAreInited = 1; 182859243Sobrien} 182959243Sobrien 183059243Sobrienstatic void 1831167465Smped_InitMetaBindings(void) 183259243Sobrien{ 183359243Sobrien Char buf[3]; 183459243Sobrien int i; 183559243Sobrien CStr cstr; 183659243Sobrien KEYCMD *map; 183759243Sobrien 183859243Sobrien map = CcKeyMap; 1839145479Smp for (i = 0; i <= 0377 && CcKeyMap[CTL_ESC(i)] != F_METANEXT; i++) 184059243Sobrien continue; 184159243Sobrien if (i > 0377) { 1842145479Smp for (i = 0; i <= 0377 && CcAltMap[CTL_ESC(i)] != F_METANEXT; i++) 184359243Sobrien continue; 184459243Sobrien if (i > 0377) { 1845145479Smp i = '\033'; 184659243Sobrien if (VImode) 184759243Sobrien map = CcAltMap; 184859243Sobrien } 184959243Sobrien else { 185059243Sobrien map = CcAltMap; 185159243Sobrien } 185259243Sobrien } 1853145479Smp buf[0] = (Char)CTL_ESC(i); 185459243Sobrien buf[2] = 0; 185559243Sobrien cstr.buf = buf; 185659243Sobrien cstr.len = 2; 185759243Sobrien for (i = 0200; i <= 0377; i++) { 1858145479Smp if (map[CTL_ESC(i)] != F_INSERT && map[CTL_ESC(i)] != F_UNASSIGNED && map[CTL_ESC(i)] != F_XKEY) { 1859145479Smp buf[1] = CTL_ESC(i & ASCII); 1860145479Smp AddXkey(&cstr, XmapCmd((int) map[CTL_ESC(i)]), XK_CMD); 186159243Sobrien } 186259243Sobrien } 186359243Sobrien map[buf[0]] = F_XKEY; 186459243Sobrien} 186559243Sobrien 186659243Sobrienvoid 1867167465Smped_InitVIMaps(void) 186859243Sobrien{ 1869145479Smp int i; 187059243Sobrien 187159243Sobrien VImode = 1; 1872316957Sdchagin setNS(STRvimode); 1873316957Sdchagin update_wordchars(); 1874316957Sdchagin 187559243Sobrien ResetXmap(); 187659243Sobrien for (i = 0; i < NT_NUM_KEYS; i++) { 187759243Sobrien CcKeyMap[i] = CcViMap[i]; 187859243Sobrien CcAltMap[i] = CcViCmdMap[i]; 187959243Sobrien } 188059243Sobrien ed_InitMetaBindings(); 188159243Sobrien ed_InitNLSMaps(); 188259243Sobrien ResetArrowKeys(); 188359243Sobrien BindArrowKeys(); 188459243Sobrien} 188559243Sobrien 188659243Sobrienvoid 1887167465Smped_InitEmacsMaps(void) 188859243Sobrien{ 188959243Sobrien int i; 189059243Sobrien Char buf[3]; 189159243Sobrien CStr cstr; 189259243Sobrien cstr.buf = buf; 189359243Sobrien cstr.len = 2; 189459243Sobrien 189559243Sobrien VImode = 0; 1896316957Sdchagin if (adrof(STRvimode)) 1897316957Sdchagin unsetv(STRvimode); 1898316957Sdchagin update_wordchars(); 1899316957Sdchagin 190059243Sobrien ResetXmap(); 190159243Sobrien for (i = 0; i < NT_NUM_KEYS; i++) { 190259243Sobrien CcKeyMap[i] = CcEmacsMap[i]; 190359243Sobrien CcAltMap[i] = F_UNASSIGNED; 190459243Sobrien } 190559243Sobrien ed_InitMetaBindings(); 190659243Sobrien ed_InitNLSMaps(); 190759243Sobrien buf[0] = CTL_ESC('\030'); 190859243Sobrien buf[2] = 0; 190959243Sobrien buf[1] = CTL_ESC('\030'); 191059243Sobrien AddXkey(&cstr, XmapCmd(F_EXCHANGE_MARK), XK_CMD); 191159243Sobrien buf[1] = '*'; 191259243Sobrien AddXkey(&cstr, XmapCmd(F_EXPAND_GLOB), XK_CMD); 191359243Sobrien buf[1] = '$'; 191459243Sobrien AddXkey(&cstr, XmapCmd(F_EXPAND_VARS), XK_CMD); 191559243Sobrien buf[1] = 'G'; 191659243Sobrien AddXkey(&cstr, XmapCmd(F_LIST_GLOB), XK_CMD); 191759243Sobrien buf[1] = 'g'; 191859243Sobrien AddXkey(&cstr, XmapCmd(F_LIST_GLOB), XK_CMD); 191959243Sobrien buf[1] = 'n'; 192059243Sobrien AddXkey(&cstr, XmapCmd(F_PATH_NORM), XK_CMD); 192159243Sobrien buf[1] = 'N'; 192259243Sobrien AddXkey(&cstr, XmapCmd(F_PATH_NORM), XK_CMD); 192359243Sobrien buf[1] = '?'; 192459243Sobrien AddXkey(&cstr, XmapCmd(F_COMMAND_NORM), XK_CMD); 192559243Sobrien buf[1] = '\t'; 192659243Sobrien AddXkey(&cstr, XmapCmd(F_COMPLETE_ALL), XK_CMD); 192759243Sobrien buf[1] = CTL_ESC('\004'); /* ^D */ 192859243Sobrien AddXkey(&cstr, XmapCmd(F_LIST_ALL), XK_CMD); 192959243Sobrien ResetArrowKeys(); 193059243Sobrien BindArrowKeys(); 193159243Sobrien} 193259243Sobrien 193359243Sobrienvoid 1934167465Smped_InitMaps(void) 193559243Sobrien{ 193659243Sobrien if (MapsAreInited) 193759243Sobrien return; 193869408Sache#ifndef IS_ASCII 193959243Sobrien /* This machine has an EBCDIC charset. The assumptions made for the 194059243Sobrien * initialized keymaps therefore don't hold, since they are based on 194159243Sobrien * ASCII (or ISO8859-1). 194259243Sobrien * Here, we do a one-time transformation to EBCDIC environment 194359243Sobrien * for the key initializations. 194459243Sobrien */ 194559243Sobrien { 194659243Sobrien KEYCMD temp[NT_NUM_KEYS]; 194759243Sobrien static KEYCMD *const list[3] = { CcEmacsMap, CcViMap, CcViCmdMap }; 1948145479Smp int i, table; 194959243Sobrien 195059243Sobrien for (table=0; table<3; ++table) 195159243Sobrien { 195259243Sobrien /* copy ASCII ordered map to temp table */ 195359243Sobrien for (i = 0; i < NT_NUM_KEYS; i++) { 195459243Sobrien temp[i] = list[table][i]; 195559243Sobrien } 195659243Sobrien /* write back as EBCDIC ordered map */ 195759243Sobrien for (i = 0; i < NT_NUM_KEYS; i++) { 195859243Sobrien list[table][_toebcdic[i]] = temp[i]; 195959243Sobrien } 196059243Sobrien } 196159243Sobrien } 196269408Sache#endif /* !IS_ASCII */ 196359243Sobrien 196459243Sobrien#ifdef VIDEFAULT 196559243Sobrien ed_InitVIMaps(); 196659243Sobrien#else 196759243Sobrien ed_InitEmacsMaps(); 196859243Sobrien#endif 196959243Sobrien 197059243Sobrien MapsAreInited = 1; 197159243Sobrien} 1972