xref: /freebsd/contrib/tcsh/ed.defns.c (revision 45e5710bbb3676c9d945e9df78019b2c58930a59)
145e5710bSMark Peek /* $Header: /p/tcsh/cvsroot/tcsh/ed.defns.c,v 3.46 2006/03/02 18:46:44 christos Exp $ */
2c80476e4SDavid E. O'Brien /*
3c80476e4SDavid E. O'Brien  * ed.defns.c: Editor function definitions and initialization
4c80476e4SDavid E. O'Brien  */
5c80476e4SDavid E. O'Brien /*-
6c80476e4SDavid E. O'Brien  * Copyright (c) 1980, 1991 The Regents of the University of California.
7c80476e4SDavid E. O'Brien  * All rights reserved.
8c80476e4SDavid E. O'Brien  *
9c80476e4SDavid E. O'Brien  * Redistribution and use in source and binary forms, with or without
10c80476e4SDavid E. O'Brien  * modification, are permitted provided that the following conditions
11c80476e4SDavid E. O'Brien  * are met:
12c80476e4SDavid E. O'Brien  * 1. Redistributions of source code must retain the above copyright
13c80476e4SDavid E. O'Brien  *    notice, this list of conditions and the following disclaimer.
14c80476e4SDavid E. O'Brien  * 2. Redistributions in binary form must reproduce the above copyright
15c80476e4SDavid E. O'Brien  *    notice, this list of conditions and the following disclaimer in the
16c80476e4SDavid E. O'Brien  *    documentation and/or other materials provided with the distribution.
1729301572SMark Peek  * 3. Neither the name of the University nor the names of its contributors
18c80476e4SDavid E. O'Brien  *    may be used to endorse or promote products derived from this software
19c80476e4SDavid E. O'Brien  *    without specific prior written permission.
20c80476e4SDavid E. O'Brien  *
21c80476e4SDavid E. O'Brien  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22c80476e4SDavid E. O'Brien  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23c80476e4SDavid E. O'Brien  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24c80476e4SDavid E. O'Brien  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25c80476e4SDavid E. O'Brien  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26c80476e4SDavid E. O'Brien  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27c80476e4SDavid E. O'Brien  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28c80476e4SDavid E. O'Brien  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29c80476e4SDavid E. O'Brien  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30c80476e4SDavid E. O'Brien  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31c80476e4SDavid E. O'Brien  * SUCH DAMAGE.
32c80476e4SDavid E. O'Brien  */
33c80476e4SDavid E. O'Brien #include "sh.h"
34c80476e4SDavid E. O'Brien 
3545e5710bSMark Peek RCSID("$tcsh: ed.defns.c,v 3.46 2006/03/02 18:46:44 christos Exp $")
36c80476e4SDavid E. O'Brien 
37c80476e4SDavid E. O'Brien #include "ed.h"
38c80476e4SDavid E. O'Brien 
3945e5710bSMark Peek static	void		ed_InitMetaBindings 	(void);
40c80476e4SDavid E. O'Brien 
41c80476e4SDavid E. O'Brien PFCmd   CcFuncTbl[] = {		/* table of available commands */
42c80476e4SDavid E. O'Brien     e_unassigned,
43c80476e4SDavid E. O'Brien /* no #define here -- this is a dummy to detect initing of the key map */
44c80476e4SDavid E. O'Brien     e_unassigned,
45c80476e4SDavid E. O'Brien #define		F_UNASSIGNED	1
46c80476e4SDavid E. O'Brien     e_insert,
47c80476e4SDavid E. O'Brien #define		F_INSERT	2
48c80476e4SDavid E. O'Brien     e_newline,
49c80476e4SDavid E. O'Brien #define		F_NEWLINE	3
50c80476e4SDavid E. O'Brien     e_delprev,
51c80476e4SDavid E. O'Brien #define		F_DELPREV	4
52c80476e4SDavid E. O'Brien     e_delnext,
53c80476e4SDavid E. O'Brien #define		F_DELNEXT	5
54c80476e4SDavid E. O'Brien     e_toend,
55c80476e4SDavid E. O'Brien #define		F_TOEND		6
56c80476e4SDavid E. O'Brien     e_tobeg,
57c80476e4SDavid E. O'Brien #define		F_TOBEG		7
58c80476e4SDavid E. O'Brien     e_charback,
59c80476e4SDavid E. O'Brien #define		F_CHARBACK	8
60c80476e4SDavid E. O'Brien     e_charfwd,
61c80476e4SDavid E. O'Brien #define		F_CHARFWD	9
62c80476e4SDavid E. O'Brien     e_quote,
63c80476e4SDavid E. O'Brien #define		F_QUOTE		10
64c80476e4SDavid E. O'Brien     e_startover,
65c80476e4SDavid E. O'Brien #define		F_STARTOVER	11
66c80476e4SDavid E. O'Brien     e_redisp,
67c80476e4SDavid E. O'Brien #define		F_REDISP	12
68c80476e4SDavid E. O'Brien     e_tty_int,
69c80476e4SDavid E. O'Brien #define		F_TTY_INT	13
70c80476e4SDavid E. O'Brien     e_wordback,
71c80476e4SDavid E. O'Brien #define		F_WORDBACK	14
72c80476e4SDavid E. O'Brien     e_wordfwd,
73c80476e4SDavid E. O'Brien #define		F_WORDFWD	15
74c80476e4SDavid E. O'Brien     e_cleardisp,
75c80476e4SDavid E. O'Brien #define		F_CLEARDISP	16
76c80476e4SDavid E. O'Brien     e_complete,
77c80476e4SDavid E. O'Brien #define		F_COMPLETE	17
78c80476e4SDavid E. O'Brien     e_correct,
79c80476e4SDavid E. O'Brien #define		F_CORRECT	18
80c80476e4SDavid E. O'Brien     e_up_hist,
81c80476e4SDavid E. O'Brien #define		F_UP_HIST	19
82c80476e4SDavid E. O'Brien     e_down_hist,
83c80476e4SDavid E. O'Brien #define		F_DOWN_HIST	20
84c80476e4SDavid E. O'Brien     e_up_search_hist,
85c80476e4SDavid E. O'Brien #define		F_UP_SEARCH_HIST	21
86c80476e4SDavid E. O'Brien     e_down_search_hist,
87c80476e4SDavid E. O'Brien #define		F_DOWN_SEARCH_HIST	22
88c80476e4SDavid E. O'Brien     e_helpme,
89c80476e4SDavid E. O'Brien #define		F_HELPME	23
90c80476e4SDavid E. O'Brien     e_list_choices,
91c80476e4SDavid E. O'Brien #define		F_LIST_CHOICES	24
92c80476e4SDavid E. O'Brien     e_delwordprev,
93c80476e4SDavid E. O'Brien #define		F_DELWORDPREV	25
94c80476e4SDavid E. O'Brien     e_delwordnext,
95c80476e4SDavid E. O'Brien #define		F_DELWORDNEXT	26
96c80476e4SDavid E. O'Brien     e_digit,
97c80476e4SDavid E. O'Brien #define		F_DIGIT		27
98c80476e4SDavid E. O'Brien     e_killend,
99c80476e4SDavid E. O'Brien #define		F_KILLEND	28
100c80476e4SDavid E. O'Brien     e_killbeg,
101c80476e4SDavid E. O'Brien #define		F_KILLBEG	29
102c80476e4SDavid E. O'Brien     e_metanext,
103c80476e4SDavid E. O'Brien #define		F_METANEXT	30
104c80476e4SDavid E. O'Brien     e_send_eof,
105c80476e4SDavid E. O'Brien #define		F_SEND_EOF	31
106c80476e4SDavid E. O'Brien     e_charswitch,
107c80476e4SDavid E. O'Brien #define		F_CHARSWITCH	32
108c80476e4SDavid E. O'Brien     e_which,
109c80476e4SDavid E. O'Brien #define		F_WHICH		33
110c80476e4SDavid E. O'Brien     e_yank_kill,
111c80476e4SDavid E. O'Brien #define		F_YANK_KILL	34
112c80476e4SDavid E. O'Brien     e_tty_dsusp,
113c80476e4SDavid E. O'Brien #define		F_TTY_DSUSP	35
114c80476e4SDavid E. O'Brien     e_tty_flusho,
115c80476e4SDavid E. O'Brien #define		F_TTY_FLUSHO	36
116c80476e4SDavid E. O'Brien     e_tty_quit,
117c80476e4SDavid E. O'Brien #define		F_TTY_QUIT	37
118c80476e4SDavid E. O'Brien     e_tty_tsusp,
119c80476e4SDavid E. O'Brien #define		F_TTY_TSUSP	38
120c80476e4SDavid E. O'Brien     e_tty_stopo,
121c80476e4SDavid E. O'Brien #define		F_TTY_STOPO	39
122c80476e4SDavid E. O'Brien     e_tty_starto,
123c80476e4SDavid E. O'Brien #define		F_TTY_STARTO	40
124c80476e4SDavid E. O'Brien     e_argfour,
125c80476e4SDavid E. O'Brien #define		F_ARGFOUR	41
126c80476e4SDavid E. O'Brien     e_set_mark,
127c80476e4SDavid E. O'Brien #define		F_SET_MARK	42
128c80476e4SDavid E. O'Brien     e_exchange_mark,
129c80476e4SDavid E. O'Brien #define		F_EXCHANGE_MARK	43
130c80476e4SDavid E. O'Brien     e_last_item,
131c80476e4SDavid E. O'Brien #define		F_LAST_ITEM	44
132c80476e4SDavid E. O'Brien     e_delnext_list_eof,
133c80476e4SDavid E. O'Brien #define		F_DELNEXT_LIST_EOF	45
134c80476e4SDavid E. O'Brien     v_cmd_mode,
135c80476e4SDavid E. O'Brien #define		V_CMD_MODE	46
136c80476e4SDavid E. O'Brien     v_insert,
137c80476e4SDavid E. O'Brien #define		V_INSERT	47
138c80476e4SDavid E. O'Brien     e_argdigit,
139c80476e4SDavid E. O'Brien #define		F_ARGDIGIT	48
140c80476e4SDavid E. O'Brien     e_killregion,
141c80476e4SDavid E. O'Brien #define		F_KILLREGION	49
142c80476e4SDavid E. O'Brien     e_copyregion,
143c80476e4SDavid E. O'Brien #define		F_COPYREGION	50
144c80476e4SDavid E. O'Brien     e_gcharswitch,
145c80476e4SDavid E. O'Brien #define		F_GCHARSWITCH	51
146c80476e4SDavid E. O'Brien     e_run_fg_editor,
147c80476e4SDavid E. O'Brien #define		F_RUN_FG_EDITOR	52
148c80476e4SDavid E. O'Brien     e_unassigned,	/* place holder for sequence lead in character */
149c80476e4SDavid E. O'Brien #define		F_XKEY		53
150c80476e4SDavid E. O'Brien     e_uppercase,
151c80476e4SDavid E. O'Brien #define         F_CASEUPPER     54
152c80476e4SDavid E. O'Brien     e_lowercase,
153c80476e4SDavid E. O'Brien #define         F_CASELOWER     55
154c80476e4SDavid E. O'Brien     e_capitolcase,
155c80476e4SDavid E. O'Brien #define         F_CASECAPITAL   56
156c80476e4SDavid E. O'Brien     v_zero,
157c80476e4SDavid E. O'Brien #define		V_ZERO		57
158c80476e4SDavid E. O'Brien     v_add,
159c80476e4SDavid E. O'Brien #define		V_ADD		58
160c80476e4SDavid E. O'Brien     v_addend,
161c80476e4SDavid E. O'Brien #define		V_ADDEND	59
162c80476e4SDavid E. O'Brien     v_wordbegnext,
163c80476e4SDavid E. O'Brien #define		V_WORDBEGNEXT	60
164c80476e4SDavid E. O'Brien     e_killall,
165c80476e4SDavid E. O'Brien #define		F_KILLALL	61
166c80476e4SDavid E. O'Brien     e_unassigned,
167c80476e4SDavid E. O'Brien /* F_EXTENDNEXT removed */
168c80476e4SDavid E. O'Brien     v_insbeg,
169c80476e4SDavid E. O'Brien #define		V_INSBEG	63
170c80476e4SDavid E. O'Brien     v_replmode,
171c80476e4SDavid E. O'Brien #define		V_REPLMODE	64
172c80476e4SDavid E. O'Brien     v_replone,
173c80476e4SDavid E. O'Brien #define		V_REPLONE	65
174c80476e4SDavid E. O'Brien     v_substline,
175c80476e4SDavid E. O'Brien #define		V_SUBSTLINE	66
176c80476e4SDavid E. O'Brien     v_substchar,
177c80476e4SDavid E. O'Brien #define		V_SUBSTCHAR	67
178c80476e4SDavid E. O'Brien     v_chgtoend,
179c80476e4SDavid E. O'Brien #define		V_CHGTOEND	68
180c80476e4SDavid E. O'Brien     e_list_eof,
181c80476e4SDavid E. O'Brien #define		F_LIST_EOF	69
182c80476e4SDavid E. O'Brien     e_list_glob,
183c80476e4SDavid E. O'Brien #define		F_LIST_GLOB	70
184c80476e4SDavid E. O'Brien     e_expand_history,
185c80476e4SDavid E. O'Brien #define		F_EXPAND_HISTORY	71
186c80476e4SDavid E. O'Brien     e_magic_space,
187c80476e4SDavid E. O'Brien #define		F_MAGIC_SPACE	72
188c80476e4SDavid E. O'Brien     e_insovr,
189c80476e4SDavid E. O'Brien #define		F_INSOVR	73
190c80476e4SDavid E. O'Brien     v_cm_complete,
191c80476e4SDavid E. O'Brien #define		V_CM_COMPLETE	74
192c80476e4SDavid E. O'Brien     e_copyprev,
193c80476e4SDavid E. O'Brien #define		F_COPYPREV	75
194c80476e4SDavid E. O'Brien     e_correctl,
195c80476e4SDavid E. O'Brien #define		F_CORRECT_L	76
196c80476e4SDavid E. O'Brien     e_expand_glob,
197c80476e4SDavid E. O'Brien #define		F_EXPAND_GLOB	77
198c80476e4SDavid E. O'Brien     e_expand_vars,
199c80476e4SDavid E. O'Brien #define		F_EXPAND_VARS	78
200c80476e4SDavid E. O'Brien     e_toggle_hist,
201c80476e4SDavid E. O'Brien #define		F_TOGGLE_HIST	79
202c80476e4SDavid E. O'Brien     v_change_case,
203c80476e4SDavid E. O'Brien #define		V_CHGCASE	80
204c80476e4SDavid E. O'Brien     e_expand,
205c80476e4SDavid E. O'Brien #define		F_EXPAND	81
206c80476e4SDavid E. O'Brien     e_load_average,
207c80476e4SDavid E. O'Brien #define		F_LOAD_AVERAGE	82
208c80476e4SDavid E. O'Brien     v_delprev,
209c80476e4SDavid E. O'Brien #define		V_DELPREV	83
210c80476e4SDavid E. O'Brien     v_delmeta,
211c80476e4SDavid E. O'Brien #define		V_DELMETA	84
212c80476e4SDavid E. O'Brien     v_wordfwd,
213c80476e4SDavid E. O'Brien #define		V_WORDFWD	85
214c80476e4SDavid E. O'Brien     v_wordback,
215c80476e4SDavid E. O'Brien #define		V_WORDBACK	86
216c80476e4SDavid E. O'Brien     v_endword,
217c80476e4SDavid E. O'Brien #define		V_ENDWORD	87
218c80476e4SDavid E. O'Brien     v_eword,
219c80476e4SDavid E. O'Brien #define		V_EWORD		88
220c80476e4SDavid E. O'Brien     v_undo,
221c80476e4SDavid E. O'Brien #define		V_UNDO		89
222c80476e4SDavid E. O'Brien     v_ush_meta,
223c80476e4SDavid E. O'Brien #define		V_USH_META	90
224c80476e4SDavid E. O'Brien     v_dsh_meta,
225c80476e4SDavid E. O'Brien #define		V_DSH_META	91
226c80476e4SDavid E. O'Brien     v_rsrch_fwd,
227c80476e4SDavid E. O'Brien #define		V_RSRCH_FWD	92
228c80476e4SDavid E. O'Brien     v_rsrch_back,
229c80476e4SDavid E. O'Brien #define		V_RSRCH_BACK	93
230c80476e4SDavid E. O'Brien     v_char_fwd,
231c80476e4SDavid E. O'Brien #define		V_CHAR_FWD	94
232c80476e4SDavid E. O'Brien     v_char_back,
233c80476e4SDavid E. O'Brien #define		V_CHAR_BACK	95
234c80476e4SDavid E. O'Brien     v_chgmeta,
235c80476e4SDavid E. O'Brien #define		V_CHGMETA	96
236c80476e4SDavid E. O'Brien     e_inc_fwd,
237c80476e4SDavid E. O'Brien #define		F_INC_FWD	97
238c80476e4SDavid E. O'Brien     e_inc_back,
239c80476e4SDavid E. O'Brien #define		F_INC_BACK	98
240c80476e4SDavid E. O'Brien     v_rchar_fwd,
241c80476e4SDavid E. O'Brien #define		V_RCHAR_FWD	99
242c80476e4SDavid E. O'Brien     v_rchar_back,
243c80476e4SDavid E. O'Brien #define		V_RCHAR_BACK	100
244c80476e4SDavid E. O'Brien     v_charto_fwd,
245c80476e4SDavid E. O'Brien #define		V_CHARTO_FWD	101
246c80476e4SDavid E. O'Brien     v_charto_back,
247c80476e4SDavid E. O'Brien #define		V_CHARTO_BACK	102
248c80476e4SDavid E. O'Brien     e_normalize_path,
249c80476e4SDavid E. O'Brien #define		F_PATH_NORM	103
250c80476e4SDavid E. O'Brien     e_delnext_eof,		/* added by mtk@ari.ncl.omron.co.jp (920818) */
251c80476e4SDavid E. O'Brien #define		F_DELNEXT_EOF	104
252c80476e4SDavid E. O'Brien     e_stuff_char,
253c80476e4SDavid E. O'Brien #define		F_STUFF_CHAR	105
254c80476e4SDavid E. O'Brien     e_complete_all,
255c80476e4SDavid E. O'Brien #define		F_COMPLETE_ALL	106
256c80476e4SDavid E. O'Brien     e_list_all,
257c80476e4SDavid E. O'Brien #define		F_LIST_ALL	107
258c80476e4SDavid E. O'Brien     e_complete_fwd,
259c80476e4SDavid E. O'Brien #define		F_COMPLETE_FWD	108
260c80476e4SDavid E. O'Brien     e_complete_back,
261c80476e4SDavid E. O'Brien #define		F_COMPLETE_BACK	109
262c80476e4SDavid E. O'Brien     e_delnext_list,
263c80476e4SDavid E. O'Brien #define		F_DELNEXT_LIST	110
264c80476e4SDavid E. O'Brien     e_normalize_command,
265c80476e4SDavid E. O'Brien #define		F_COMMAND_NORM	111
266c80476e4SDavid E. O'Brien     e_dabbrev_expand,
267c80476e4SDavid E. O'Brien #define		F_DABBREV_EXPAND	112
268c80476e4SDavid E. O'Brien     e_copy_to_clipboard,
269c80476e4SDavid E. O'Brien #define		F_COPY_CLIP	113
270c80476e4SDavid E. O'Brien     e_paste_from_clipboard,
271c80476e4SDavid E. O'Brien #define		F_PASTE_CLIP	114
272c80476e4SDavid E. O'Brien     e_dosify_next,
273c80476e4SDavid E. O'Brien #define		F_DOSIFY_NEXT	115
274c80476e4SDavid E. O'Brien     e_dosify_prev,
275c80476e4SDavid E. O'Brien #define		F_DOSIFY_PREV	116
2763b6eaa7bSAndrey A. Chernov     e_page_up,
2773b6eaa7bSAndrey A. Chernov #define		F_PAGE_UP	117
2783b6eaa7bSAndrey A. Chernov     e_page_down,
2793b6eaa7bSAndrey A. Chernov #define		F_PAGE_DOWN	118
2806767bd61SMark Peek     e_yank_pop,
2816767bd61SMark Peek #define		F_YANK_POP	119
28245e5710bSMark Peek     e_newline_hold,
28345e5710bSMark Peek #define		F_NEWLINE_HOLD	120
28445e5710bSMark Peek     e_newline_down_hist,
28545e5710bSMark Peek #define		F_NEWLINE_DOWN_HIST	121
286c80476e4SDavid E. O'Brien     0				/* DUMMY VALUE */
28745e5710bSMark Peek #define		F_NUM_FNS	122
288c80476e4SDavid E. O'Brien 
289c80476e4SDavid E. O'Brien };
290c80476e4SDavid E. O'Brien 
291c80476e4SDavid E. O'Brien KEYCMD  NumFuns = F_NUM_FNS;
292c80476e4SDavid E. O'Brien 
293c80476e4SDavid E. O'Brien KEYCMD  CcKeyMap[NT_NUM_KEYS];		/* the real key map */
294c80476e4SDavid E. O'Brien KEYCMD  CcAltMap[NT_NUM_KEYS];		/* the alternative key map */
295c80476e4SDavid E. O'Brien #define	F_NUM_FUNCNAMES	(F_NUM_FNS + 2)
296c80476e4SDavid E. O'Brien struct KeyFuncs FuncNames[F_NUM_FUNCNAMES];
297c80476e4SDavid E. O'Brien 
2983b6eaa7bSAndrey A. Chernov #ifdef WINNT_NATIVE
299c80476e4SDavid E. O'Brien extern KEYCMD CcEmacsMap[];
300c80476e4SDavid E. O'Brien extern KEYCMD CcViMap[];
301c80476e4SDavid E. O'Brien extern KEYCMD  CcViCmdMap[];
3023b6eaa7bSAndrey A. Chernov #else /* !WINNT_NATIVE*/
303c80476e4SDavid E. O'Brien KEYCMD  CcEmacsMap[] = {
304c80476e4SDavid E. O'Brien /* keymap table, each index into above tbl; should be 256*sizeof(KEYCMD)
305c80476e4SDavid E. O'Brien    bytes long */
306c80476e4SDavid E. O'Brien 
307c80476e4SDavid E. O'Brien     F_SET_MARK,			/* ^@ */
308c80476e4SDavid E. O'Brien     F_TOBEG,			/* ^A */
309c80476e4SDavid E. O'Brien     F_CHARBACK,			/* ^B */
310c80476e4SDavid E. O'Brien     F_TTY_INT,			/* ^C */
311c80476e4SDavid E. O'Brien     F_DELNEXT_LIST_EOF,		/* ^D */
312c80476e4SDavid E. O'Brien     F_TOEND,			/* ^E */
313c80476e4SDavid E. O'Brien     F_CHARFWD,			/* ^F */
314c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^G */
315c80476e4SDavid E. O'Brien     F_DELPREV,			/* ^H */
316c80476e4SDavid E. O'Brien     F_COMPLETE,			/* ^I */
317c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^J */
318c80476e4SDavid E. O'Brien     F_KILLEND,			/* ^K */
319c80476e4SDavid E. O'Brien     F_CLEARDISP,		/* ^L */
320c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^M */
321c80476e4SDavid E. O'Brien     F_DOWN_HIST,		/* ^N */
322c80476e4SDavid E. O'Brien     F_TTY_FLUSHO,		/* ^O */
323c80476e4SDavid E. O'Brien     F_UP_HIST,			/* ^P */
324c80476e4SDavid E. O'Brien     F_TTY_STARTO,		/* ^Q */
325c80476e4SDavid E. O'Brien     F_REDISP,			/* ^R */
326c80476e4SDavid E. O'Brien     F_TTY_STOPO,		/* ^S */
327c80476e4SDavid E. O'Brien     F_CHARSWITCH,		/* ^T */
328c80476e4SDavid E. O'Brien     F_KILLALL,			/* ^U */
329c80476e4SDavid E. O'Brien     F_QUOTE,			/* ^V */
330c80476e4SDavid E. O'Brien     F_KILLREGION,		/* ^W */
331c80476e4SDavid E. O'Brien     F_XKEY,			/* ^X */
332c80476e4SDavid E. O'Brien     F_YANK_KILL,		/* ^Y */
333c80476e4SDavid E. O'Brien     F_TTY_TSUSP,		/* ^Z */
334c80476e4SDavid E. O'Brien     F_METANEXT,			/* ^[ */
335c80476e4SDavid E. O'Brien     F_TTY_QUIT,			/* ^\ */
336c80476e4SDavid E. O'Brien     F_TTY_DSUSP,		/* ^] */
337c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^^ */
338c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^_ */
339c80476e4SDavid E. O'Brien     F_INSERT,			/* SPACE */
340c80476e4SDavid E. O'Brien     F_INSERT,			/* ! */
341c80476e4SDavid E. O'Brien     F_INSERT,			/* " */
342c80476e4SDavid E. O'Brien     F_INSERT,			/* # */
343c80476e4SDavid E. O'Brien     F_INSERT,			/* $ */
344c80476e4SDavid E. O'Brien     F_INSERT,			/* % */
345c80476e4SDavid E. O'Brien     F_INSERT,			/* & */
346c80476e4SDavid E. O'Brien     F_INSERT,			/* ' */
347c80476e4SDavid E. O'Brien     F_INSERT,			/* ( */
348c80476e4SDavid E. O'Brien     F_INSERT,			/* ) */
349c80476e4SDavid E. O'Brien     F_INSERT,			/* * */
350c80476e4SDavid E. O'Brien     F_INSERT,			/* + */
351c80476e4SDavid E. O'Brien     F_INSERT,			/* , */
352c80476e4SDavid E. O'Brien     F_INSERT,			/* - */
353c80476e4SDavid E. O'Brien     F_INSERT,			/* . */
354c80476e4SDavid E. O'Brien     F_INSERT,			/* / */
355c80476e4SDavid E. O'Brien     F_DIGIT,			/* 0 */
356c80476e4SDavid E. O'Brien     F_DIGIT,			/* 1 */
357c80476e4SDavid E. O'Brien     F_DIGIT,			/* 2 */
358c80476e4SDavid E. O'Brien     F_DIGIT,			/* 3 */
359c80476e4SDavid E. O'Brien     F_DIGIT,			/* 4 */
360c80476e4SDavid E. O'Brien     F_DIGIT,			/* 5 */
361c80476e4SDavid E. O'Brien     F_DIGIT,			/* 6 */
362c80476e4SDavid E. O'Brien     F_DIGIT,			/* 7 */
363c80476e4SDavid E. O'Brien     F_DIGIT,			/* 8 */
364c80476e4SDavid E. O'Brien     F_DIGIT,			/* 9 */
365c80476e4SDavid E. O'Brien     F_INSERT,			/* : */
366c80476e4SDavid E. O'Brien     F_INSERT,			/* ; */
367c80476e4SDavid E. O'Brien     F_INSERT,			/* < */
368c80476e4SDavid E. O'Brien     F_INSERT,			/* = */
369c80476e4SDavid E. O'Brien     F_INSERT,			/* > */
370c80476e4SDavid E. O'Brien     F_INSERT,			/* ? */
371c80476e4SDavid E. O'Brien     F_INSERT,			/* @ */
372c80476e4SDavid E. O'Brien     F_INSERT,			/* A */
373c80476e4SDavid E. O'Brien     F_INSERT,			/* B */
374c80476e4SDavid E. O'Brien     F_INSERT,			/* C */
375c80476e4SDavid E. O'Brien     F_INSERT,			/* D */
376c80476e4SDavid E. O'Brien     F_INSERT,			/* E */
377c80476e4SDavid E. O'Brien     F_INSERT,			/* F */
378c80476e4SDavid E. O'Brien     F_INSERT,			/* G */
379c80476e4SDavid E. O'Brien     F_INSERT,			/* H */
380c80476e4SDavid E. O'Brien     F_INSERT,			/* I */
381c80476e4SDavid E. O'Brien     F_INSERT,			/* J */
382c80476e4SDavid E. O'Brien     F_INSERT,			/* K */
383c80476e4SDavid E. O'Brien     F_INSERT,			/* L */
384c80476e4SDavid E. O'Brien     F_INSERT,			/* M */
385c80476e4SDavid E. O'Brien     F_INSERT,			/* N */
386c80476e4SDavid E. O'Brien     F_INSERT,			/* O */
387c80476e4SDavid E. O'Brien     F_INSERT,			/* P */
388c80476e4SDavid E. O'Brien     F_INSERT,			/* Q */
389c80476e4SDavid E. O'Brien     F_INSERT,			/* R */
390c80476e4SDavid E. O'Brien     F_INSERT,			/* S */
391c80476e4SDavid E. O'Brien     F_INSERT,			/* T */
392c80476e4SDavid E. O'Brien     F_INSERT,			/* U */
393c80476e4SDavid E. O'Brien     F_INSERT,			/* V */
394c80476e4SDavid E. O'Brien     F_INSERT,			/* W */
395c80476e4SDavid E. O'Brien     F_INSERT,			/* X */
396c80476e4SDavid E. O'Brien     F_INSERT,			/* Y */
397c80476e4SDavid E. O'Brien     F_INSERT,			/* Z */
398c80476e4SDavid E. O'Brien     F_INSERT,			/* [ */
399c80476e4SDavid E. O'Brien     F_INSERT,			/* \ */
400c80476e4SDavid E. O'Brien     F_INSERT,			/* ] */
401c80476e4SDavid E. O'Brien     F_INSERT,			/* ^ */
402c80476e4SDavid E. O'Brien     F_INSERT,			/* _ */
403c80476e4SDavid E. O'Brien     F_INSERT,			/* ` */
404c80476e4SDavid E. O'Brien     F_INSERT,			/* a */
405c80476e4SDavid E. O'Brien     F_INSERT,			/* b */
406c80476e4SDavid E. O'Brien     F_INSERT,			/* c */
407c80476e4SDavid E. O'Brien     F_INSERT,			/* d */
408c80476e4SDavid E. O'Brien     F_INSERT,			/* e */
409c80476e4SDavid E. O'Brien     F_INSERT,			/* f */
410c80476e4SDavid E. O'Brien     F_INSERT,			/* g */
411c80476e4SDavid E. O'Brien     F_INSERT,			/* h */
412c80476e4SDavid E. O'Brien     F_INSERT,			/* i */
413c80476e4SDavid E. O'Brien     F_INSERT,			/* j */
414c80476e4SDavid E. O'Brien     F_INSERT,			/* k */
415c80476e4SDavid E. O'Brien     F_INSERT,			/* l */
416c80476e4SDavid E. O'Brien     F_INSERT,			/* m */
417c80476e4SDavid E. O'Brien     F_INSERT,			/* n */
418c80476e4SDavid E. O'Brien     F_INSERT,			/* o */
419c80476e4SDavid E. O'Brien     F_INSERT,			/* p */
420c80476e4SDavid E. O'Brien     F_INSERT,			/* q */
421c80476e4SDavid E. O'Brien     F_INSERT,			/* r */
422c80476e4SDavid E. O'Brien     F_INSERT,			/* s */
423c80476e4SDavid E. O'Brien     F_INSERT,			/* t */
424c80476e4SDavid E. O'Brien     F_INSERT,			/* u */
425c80476e4SDavid E. O'Brien     F_INSERT,			/* v */
426c80476e4SDavid E. O'Brien     F_INSERT,			/* w */
427c80476e4SDavid E. O'Brien     F_INSERT,			/* x */
428c80476e4SDavid E. O'Brien     F_INSERT,			/* y */
429c80476e4SDavid E. O'Brien     F_INSERT,			/* z */
430c80476e4SDavid E. O'Brien     F_INSERT,			/* { */
431c80476e4SDavid E. O'Brien     F_INSERT,			/* | */
432c80476e4SDavid E. O'Brien     F_INSERT,			/* } */
433c80476e4SDavid E. O'Brien     F_INSERT,			/* ~ */
434c80476e4SDavid E. O'Brien     F_DELPREV,			/* ^? */
435c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^@ */
436c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^A */
437c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^B */
438c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^C */
439c80476e4SDavid E. O'Brien     F_LIST_CHOICES,		/* M-^D */
440c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^E */
441c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^F */
442c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^G */
443c80476e4SDavid E. O'Brien     F_DELWORDPREV,		/* M-^H */
444c80476e4SDavid E. O'Brien     F_COMPLETE,			/* M-^I */
445c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^J */
446c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^K */
447c80476e4SDavid E. O'Brien     F_CLEARDISP,		/* M-^L */
448c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^M */
449c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^N */
450c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^O */
451c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^P */
452c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Q */
453c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^R */
454c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^S */
455c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^T */
456c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^U */
457c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^V */
458c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^W */
459c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^X */
460c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Y */
461c80476e4SDavid E. O'Brien     F_RUN_FG_EDITOR,		/* M-^Z */
462c80476e4SDavid E. O'Brien     F_COMPLETE,			/* M-^[ */
463c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^\ */
464c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^] */
465c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^^ */
466c80476e4SDavid E. O'Brien     F_COPYPREV,			/* M-^_ */
467c80476e4SDavid E. O'Brien     F_EXPAND_HISTORY,		/* M-SPACE */
468c80476e4SDavid E. O'Brien     F_EXPAND_HISTORY,		/* M-! */
469c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-" */
470c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-# */
471c80476e4SDavid E. O'Brien     F_CORRECT_L,		/* M-$ */
472c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-% */
473c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-& */
474c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-' */
475c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-( */
476c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-) */
477c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-* */
478c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-+ */
479c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-, */
480c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-- */
481c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-. */
482c80476e4SDavid E. O'Brien     F_DABBREV_EXPAND,		/* M-/ */
483c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-0 */
484c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-1 */
485c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-2 */
486c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-3 */
487c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-4 */
488c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-5 */
489c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-6 */
490c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-7 */
491c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-8 */
492c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* M-9 */
493c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-: */
494c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-; */
495c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-< */
496c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-= */
497c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-> */
498c80476e4SDavid E. O'Brien     F_WHICH,			/* M-? */
499c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-@ */
50045e5710bSMark Peek     F_NEWLINE_HOLD,		/* M-A */
501c80476e4SDavid E. O'Brien     F_WORDBACK,			/* M-B */
502c80476e4SDavid E. O'Brien     F_CASECAPITAL,		/* M-C */
503c80476e4SDavid E. O'Brien     F_DELWORDNEXT,		/* M-D */
504c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-E */
505c80476e4SDavid E. O'Brien     F_WORDFWD,			/* M-F */
506c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-G */
507c80476e4SDavid E. O'Brien     F_HELPME,			/* M-H */
508c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-I */
509c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-J */
510c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-K */
511c80476e4SDavid E. O'Brien     F_CASELOWER,		/* M-L */
512c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-M */
513c80476e4SDavid E. O'Brien     F_DOWN_SEARCH_HIST,		/* M-N */
514c80476e4SDavid E. O'Brien     F_XKEY,			/* M-O *//* extended key esc PWP Mar 88 */
515c80476e4SDavid E. O'Brien     F_UP_SEARCH_HIST,		/* M-P */
516c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Q */
517c80476e4SDavid E. O'Brien     F_TOGGLE_HIST,		/* M-R */
518c80476e4SDavid E. O'Brien     F_CORRECT,			/* M-S */
519c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-T */
520c80476e4SDavid E. O'Brien     F_CASEUPPER,		/* M-U */
521c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-V */
522c80476e4SDavid E. O'Brien     F_COPYREGION,		/* M-W */
523c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-X */
5246767bd61SMark Peek     F_YANK_POP,			/* M-Y */
525c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Z */
526c80476e4SDavid E. O'Brien     F_XKEY,			/* M-[ *//* extended key esc -mf Oct 87 */
527c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-\ */
528c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-] */
529c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^ */
530c80476e4SDavid E. O'Brien     F_LAST_ITEM,		/* M-_ */
531c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-` */
53245e5710bSMark Peek     F_NEWLINE_HOLD,		/* M-a */
533c80476e4SDavid E. O'Brien     F_WORDBACK,			/* M-b */
534c80476e4SDavid E. O'Brien     F_CASECAPITAL,		/* M-c */
535c80476e4SDavid E. O'Brien     F_DELWORDNEXT,		/* M-d */
536c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-e */
537c80476e4SDavid E. O'Brien     F_WORDFWD,			/* M-f */
538c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-g */
539c80476e4SDavid E. O'Brien     F_HELPME,			/* M-h */
540c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-i */
541c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-j */
542c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-k */
543c80476e4SDavid E. O'Brien     F_CASELOWER,		/* M-l */
544c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-m */
545c80476e4SDavid E. O'Brien     F_DOWN_SEARCH_HIST,		/* M-n */
546c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-o */
547c80476e4SDavid E. O'Brien     F_UP_SEARCH_HIST,		/* M-p */
548c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-q */
549c80476e4SDavid E. O'Brien     F_TOGGLE_HIST,		/* M-r */
550c80476e4SDavid E. O'Brien     F_CORRECT,			/* M-s */
551c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-t */
552c80476e4SDavid E. O'Brien     F_CASEUPPER,		/* M-u */
553c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-v */
554c80476e4SDavid E. O'Brien     F_COPYREGION,		/* M-w */
555c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-x */
5566767bd61SMark Peek     F_YANK_POP,			/* M-y */
557c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-z */
558c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-{ */
559c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-| */
560c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-} */
561c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-~ */
562c80476e4SDavid E. O'Brien     F_DELWORDPREV		/* M-^? */
563c80476e4SDavid E. O'Brien };
564c80476e4SDavid E. O'Brien 
565c80476e4SDavid E. O'Brien /*
566c80476e4SDavid E. O'Brien  * keymap table for vi.  Each index into above tbl; should be
567c80476e4SDavid E. O'Brien  * 256 entries long.  Vi mode uses a sticky-extend to do command mode:
568c80476e4SDavid E. O'Brien  * insert mode characters are in the normal keymap, and command mode
569c80476e4SDavid E. O'Brien  * in the extended keymap.
570c80476e4SDavid E. O'Brien  */
571c80476e4SDavid E. O'Brien static KEYCMD  CcViMap[] = {
572c80476e4SDavid E. O'Brien #ifdef KSHVI
573c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^@ */
574c80476e4SDavid E. O'Brien     F_INSERT,			/* ^A */
575c80476e4SDavid E. O'Brien     F_INSERT,			/* ^B */
576c80476e4SDavid E. O'Brien     F_INSERT,			/* ^C */
577c80476e4SDavid E. O'Brien     F_INSERT,			/* ^D */
578c80476e4SDavid E. O'Brien     F_INSERT,			/* ^E */
579c80476e4SDavid E. O'Brien     F_INSERT,			/* ^F */
580c80476e4SDavid E. O'Brien     F_INSERT,			/* ^G */
581c80476e4SDavid E. O'Brien     V_DELPREV,			/* ^H */   /* BackSpace key */
582c80476e4SDavid E. O'Brien     F_COMPLETE,			/* ^I */   /* Tab Key  */
583c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^J */
584c80476e4SDavid E. O'Brien     F_INSERT,			/* ^K */
585c80476e4SDavid E. O'Brien     F_INSERT,			/* ^L */
586c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^M */
587c80476e4SDavid E. O'Brien     F_INSERT,			/* ^N */
588c80476e4SDavid E. O'Brien     F_INSERT,			/* ^O */
589c80476e4SDavid E. O'Brien     F_INSERT,			/* ^P */
590c80476e4SDavid E. O'Brien     F_TTY_STARTO,		/* ^Q */
591c80476e4SDavid E. O'Brien     F_INSERT,			/* ^R */
592c80476e4SDavid E. O'Brien     F_INSERT,			/* ^S */
593c80476e4SDavid E. O'Brien     F_INSERT,			/* ^T */
594c80476e4SDavid E. O'Brien     F_INSERT,			/* ^U */
595c80476e4SDavid E. O'Brien     F_QUOTE,			/* ^V */
596c80476e4SDavid E. O'Brien     F_DELWORDPREV,		/* ^W */  /* Only until start edit pos */
597c80476e4SDavid E. O'Brien     F_INSERT,			/* ^X */
598c80476e4SDavid E. O'Brien     F_INSERT,			/* ^Y */
599c80476e4SDavid E. O'Brien     F_INSERT,			/* ^Z */
600c80476e4SDavid E. O'Brien     V_CMD_MODE,			/* ^[ */  /* [ Esc ] key */
601c80476e4SDavid E. O'Brien     F_TTY_QUIT,			/* ^\ */
602c80476e4SDavid E. O'Brien     F_INSERT,			/* ^] */
603c80476e4SDavid E. O'Brien     F_INSERT,			/* ^^ */
604c80476e4SDavid E. O'Brien     F_INSERT,			/* ^_ */
605c80476e4SDavid E. O'Brien #else /* !KSHVI */
606c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^@ */   /* NOTE: These mapping do NOT */
607c80476e4SDavid E. O'Brien     F_TOBEG,			/* ^A */   /* Correspond well to the KSH */
608c80476e4SDavid E. O'Brien     F_CHARBACK,			/* ^B */   /* VI editting assignments    */
609c80476e4SDavid E. O'Brien     F_TTY_INT,			/* ^C */   /* On the other hand they are */
610c80476e4SDavid E. O'Brien     F_LIST_EOF,			/* ^D */   /* convenient any many people */
611c80476e4SDavid E. O'Brien     F_TOEND,			/* ^E */   /* have gotten used to them   */
612c80476e4SDavid E. O'Brien     F_CHARFWD,			/* ^F */
613c80476e4SDavid E. O'Brien     F_LIST_GLOB,		/* ^G */
614c80476e4SDavid E. O'Brien     F_DELPREV,			/* ^H */   /* BackSpace key */
615c80476e4SDavid E. O'Brien     F_COMPLETE,			/* ^I */   /* Tab Key */
616c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^J */
617c80476e4SDavid E. O'Brien     F_KILLEND,			/* ^K */
618c80476e4SDavid E. O'Brien     F_CLEARDISP,		/* ^L */
619c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^M */
620c80476e4SDavid E. O'Brien     F_DOWN_HIST,		/* ^N */
621c80476e4SDavid E. O'Brien     F_TTY_FLUSHO,		/* ^O */
622c80476e4SDavid E. O'Brien     F_UP_HIST,			/* ^P */
623c80476e4SDavid E. O'Brien     F_TTY_STARTO,		/* ^Q */
624c80476e4SDavid E. O'Brien     F_REDISP,			/* ^R */
625c80476e4SDavid E. O'Brien     F_TTY_STOPO,		/* ^S */
626c80476e4SDavid E. O'Brien     F_CHARSWITCH,		/* ^T */
627c80476e4SDavid E. O'Brien     F_KILLBEG,			/* ^U */
628c80476e4SDavid E. O'Brien     F_QUOTE,			/* ^V */
629c80476e4SDavid E. O'Brien     F_DELWORDPREV,		/* ^W */
630c80476e4SDavid E. O'Brien     F_EXPAND,			/* ^X */
631c80476e4SDavid E. O'Brien     F_TTY_DSUSP,		/* ^Y */
632c80476e4SDavid E. O'Brien     F_TTY_TSUSP,		/* ^Z */
633c80476e4SDavid E. O'Brien     V_CMD_MODE,			/* ^[ */
634c80476e4SDavid E. O'Brien     F_TTY_QUIT,			/* ^\ */
635c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^] */
636c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^^ */
637c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^_ */
638c80476e4SDavid E. O'Brien #endif  /* KSHVI */
639c80476e4SDavid E. O'Brien     F_INSERT,			/* SPACE */
640c80476e4SDavid E. O'Brien     F_INSERT,			/* ! */
641c80476e4SDavid E. O'Brien     F_INSERT,			/* " */
642c80476e4SDavid E. O'Brien     F_INSERT,			/* # */
643c80476e4SDavid E. O'Brien     F_INSERT,			/* $ */
644c80476e4SDavid E. O'Brien     F_INSERT,			/* % */
645c80476e4SDavid E. O'Brien     F_INSERT,			/* & */
646c80476e4SDavid E. O'Brien     F_INSERT,			/* ' */
647c80476e4SDavid E. O'Brien     F_INSERT,			/* ( */
648c80476e4SDavid E. O'Brien     F_INSERT,			/* ) */
649c80476e4SDavid E. O'Brien     F_INSERT,			/* * */
650c80476e4SDavid E. O'Brien     F_INSERT,			/* + */
651c80476e4SDavid E. O'Brien     F_INSERT,			/* , */
652c80476e4SDavid E. O'Brien     F_INSERT,			/* - */
653c80476e4SDavid E. O'Brien     F_INSERT,			/* . */
654c80476e4SDavid E. O'Brien     F_INSERT,			/* / */
655c80476e4SDavid E. O'Brien     F_INSERT,			/* 0 */
656c80476e4SDavid E. O'Brien     F_INSERT,			/* 1 */
657c80476e4SDavid E. O'Brien     F_INSERT,			/* 2 */
658c80476e4SDavid E. O'Brien     F_INSERT,			/* 3 */
659c80476e4SDavid E. O'Brien     F_INSERT,			/* 4 */
660c80476e4SDavid E. O'Brien     F_INSERT,			/* 5 */
661c80476e4SDavid E. O'Brien     F_INSERT,			/* 6 */
662c80476e4SDavid E. O'Brien     F_INSERT,			/* 7 */
663c80476e4SDavid E. O'Brien     F_INSERT,			/* 8 */
664c80476e4SDavid E. O'Brien     F_INSERT,			/* 9 */
665c80476e4SDavid E. O'Brien     F_INSERT,			/* : */
666c80476e4SDavid E. O'Brien     F_INSERT,			/* ; */
667c80476e4SDavid E. O'Brien     F_INSERT,			/* < */
668c80476e4SDavid E. O'Brien     F_INSERT,			/* = */
669c80476e4SDavid E. O'Brien     F_INSERT,			/* > */
670c80476e4SDavid E. O'Brien     F_INSERT,			/* ? */
671c80476e4SDavid E. O'Brien     F_INSERT,			/* @ */
672c80476e4SDavid E. O'Brien     F_INSERT,			/* A */
673c80476e4SDavid E. O'Brien     F_INSERT,			/* B */
674c80476e4SDavid E. O'Brien     F_INSERT,			/* C */
675c80476e4SDavid E. O'Brien     F_INSERT,			/* D */
676c80476e4SDavid E. O'Brien     F_INSERT,			/* E */
677c80476e4SDavid E. O'Brien     F_INSERT,			/* F */
678c80476e4SDavid E. O'Brien     F_INSERT,			/* G */
679c80476e4SDavid E. O'Brien     F_INSERT,			/* H */
680c80476e4SDavid E. O'Brien     F_INSERT,			/* I */
681c80476e4SDavid E. O'Brien     F_INSERT,			/* J */
682c80476e4SDavid E. O'Brien     F_INSERT,			/* K */
683c80476e4SDavid E. O'Brien     F_INSERT,			/* L */
684c80476e4SDavid E. O'Brien     F_INSERT,			/* M */
685c80476e4SDavid E. O'Brien     F_INSERT,			/* N */
686c80476e4SDavid E. O'Brien     F_INSERT,			/* O */
687c80476e4SDavid E. O'Brien     F_INSERT,			/* P */
688c80476e4SDavid E. O'Brien     F_INSERT,			/* Q */
689c80476e4SDavid E. O'Brien     F_INSERT,			/* R */
690c80476e4SDavid E. O'Brien     F_INSERT,			/* S */
691c80476e4SDavid E. O'Brien     F_INSERT,			/* T */
692c80476e4SDavid E. O'Brien     F_INSERT,			/* U */
693c80476e4SDavid E. O'Brien     F_INSERT,			/* V */
694c80476e4SDavid E. O'Brien     F_INSERT,			/* W */
695c80476e4SDavid E. O'Brien     F_INSERT,			/* X */
696c80476e4SDavid E. O'Brien     F_INSERT,			/* Y */
697c80476e4SDavid E. O'Brien     F_INSERT,			/* Z */
698c80476e4SDavid E. O'Brien     F_INSERT,			/* [ */
699c80476e4SDavid E. O'Brien     F_INSERT,			/* \ */
700c80476e4SDavid E. O'Brien     F_INSERT,			/* ] */
701c80476e4SDavid E. O'Brien     F_INSERT,			/* ^ */
702c80476e4SDavid E. O'Brien     F_INSERT,			/* _ */
703c80476e4SDavid E. O'Brien     F_INSERT,			/* ` */
704c80476e4SDavid E. O'Brien     F_INSERT,			/* a */
705c80476e4SDavid E. O'Brien     F_INSERT,			/* b */
706c80476e4SDavid E. O'Brien     F_INSERT,			/* c */
707c80476e4SDavid E. O'Brien     F_INSERT,			/* d */
708c80476e4SDavid E. O'Brien     F_INSERT,			/* e */
709c80476e4SDavid E. O'Brien     F_INSERT,			/* f */
710c80476e4SDavid E. O'Brien     F_INSERT,			/* g */
711c80476e4SDavid E. O'Brien     F_INSERT,			/* h */
712c80476e4SDavid E. O'Brien     F_INSERT,			/* i */
713c80476e4SDavid E. O'Brien     F_INSERT,			/* j */
714c80476e4SDavid E. O'Brien     F_INSERT,			/* k */
715c80476e4SDavid E. O'Brien     F_INSERT,			/* l */
716c80476e4SDavid E. O'Brien     F_INSERT,			/* m */
717c80476e4SDavid E. O'Brien     F_INSERT,			/* n */
718c80476e4SDavid E. O'Brien     F_INSERT,			/* o */
719c80476e4SDavid E. O'Brien     F_INSERT,			/* p */
720c80476e4SDavid E. O'Brien     F_INSERT,			/* q */
721c80476e4SDavid E. O'Brien     F_INSERT,			/* r */
722c80476e4SDavid E. O'Brien     F_INSERT,			/* s */
723c80476e4SDavid E. O'Brien     F_INSERT,			/* t */
724c80476e4SDavid E. O'Brien     F_INSERT,			/* u */
725c80476e4SDavid E. O'Brien     F_INSERT,			/* v */
726c80476e4SDavid E. O'Brien     F_INSERT,			/* w */
727c80476e4SDavid E. O'Brien     F_INSERT,			/* x */
728c80476e4SDavid E. O'Brien     F_INSERT,			/* y */
729c80476e4SDavid E. O'Brien     F_INSERT,			/* z */
730c80476e4SDavid E. O'Brien     F_INSERT,			/* { */
731c80476e4SDavid E. O'Brien     F_INSERT,			/* | */
732c80476e4SDavid E. O'Brien     F_INSERT,			/* } */
733c80476e4SDavid E. O'Brien     F_INSERT,			/* ~ */
734c80476e4SDavid E. O'Brien     F_DELPREV,			/* ^? */
735c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^@ */
736c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^A */
737c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^B */
738c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^C */
739c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^D */
740c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^E */
741c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^F */
742c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^G */
743c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^H */
744c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^I */
745c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^J */
746c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^K */
747c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^L */
748c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^M */
749c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^N */
750c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^O */
751c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^P */
752c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Q */
753c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^R */
754c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^S */
755c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^T */
756c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^U */
757c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^V */
758c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^W */
759c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^X */
760c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Y */
761c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Z */
762c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^[ */
763c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^\ */
764c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^] */
765c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^^ */
766c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^_ */
767c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-SPACE */
768c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-! */
769c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-" */
770c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-# */
771c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-$ */
772c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-% */
773c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-& */
774c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-' */
775c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-( */
776c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-) */
777c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-* */
778c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-+ */
779c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-, */
780c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-- */
781c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-. */
782c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-/ */
783c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-0 */
784c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-1 */
785c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-2 */
786c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-3 */
787c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-4 */
788c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-5 */
789c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-6 */
790c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-7 */
791c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-8 */
792c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-9 */
793c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-: */
794c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-; */
795c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-< */
796c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-= */
797c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-> */
798c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-? */
799c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-@ */
800c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-A */
801c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-B */
802c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-C */
803c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-D */
804c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-E */
805c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-F */
806c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-G */
807c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-H */
808c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-I */
809c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-J */
810c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-K */
811c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-L */
812c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-M */
813c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-N */
814c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-O */
815c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-P */
816c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Q */
817c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-R */
818c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-S */
819c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-T */
820c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-U */
821c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-V */
822c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-W */
823c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-X */
824c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Y */
825c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Z */
826c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-[ */
827c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-\ */
828c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-] */
829c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^ */
830c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-_ */
831c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-` */
832c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-a */
833c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-b */
834c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-c */
835c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-d */
836c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-e */
837c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-f */
838c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-g */
839c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-h */
840c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-i */
841c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-j */
842c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-k */
843c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-l */
844c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-m */
845c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-n */
846c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-o */
847c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-p */
848c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-q */
849c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-r */
850c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-s */
851c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-t */
852c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-u */
853c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-v */
854c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-w */
855c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-x */
856c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-y */
857c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-z */
858c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-{ */
859c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-| */
860c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-} */
861c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-~ */
862c80476e4SDavid E. O'Brien     F_UNASSIGNED		/* M-^? */
863c80476e4SDavid E. O'Brien };
864c80476e4SDavid E. O'Brien 
865c80476e4SDavid E. O'Brien KEYCMD  CcViCmdMap[] = {
866c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^@ */
867c80476e4SDavid E. O'Brien     F_TOBEG,			/* ^A */
868c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^B */
869c80476e4SDavid E. O'Brien     F_TTY_INT,			/* ^C */
870c80476e4SDavid E. O'Brien     F_LIST_CHOICES,		/* ^D */
871c80476e4SDavid E. O'Brien     F_TOEND,			/* ^E */
872c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^F */
873c80476e4SDavid E. O'Brien     F_LIST_GLOB,		/* ^G */
874c80476e4SDavid E. O'Brien     F_CHARBACK,			/* ^H */
875c80476e4SDavid E. O'Brien     V_CM_COMPLETE,		/* ^I */
876c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^J */
877c80476e4SDavid E. O'Brien     F_KILLEND,			/* ^K */
878c80476e4SDavid E. O'Brien     F_CLEARDISP,		/* ^L */
879c80476e4SDavid E. O'Brien     F_NEWLINE,			/* ^M */
880c80476e4SDavid E. O'Brien     F_DOWN_HIST,		/* ^N */
881c80476e4SDavid E. O'Brien     F_TTY_FLUSHO,		/* ^O */
882c80476e4SDavid E. O'Brien     F_UP_HIST,			/* ^P */
883c80476e4SDavid E. O'Brien     F_TTY_STARTO,		/* ^Q */
884c80476e4SDavid E. O'Brien     F_REDISP,			/* ^R */
885c80476e4SDavid E. O'Brien     F_TTY_STOPO,		/* ^S */
886c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^T */
887c80476e4SDavid E. O'Brien     F_KILLBEG,			/* ^U */
888c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^V */
889c80476e4SDavid E. O'Brien     F_DELWORDPREV,		/* ^W */
890c80476e4SDavid E. O'Brien     F_EXPAND,			/* ^X */
891c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^Y */
892c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^Z */
893c80476e4SDavid E. O'Brien     F_METANEXT,			/* ^[ */
894c80476e4SDavid E. O'Brien     F_TTY_QUIT,			/* ^\ */
895c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^] */
896c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^^ */
897c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ^_ */
898c80476e4SDavid E. O'Brien     F_CHARFWD,			/* SPACE */
899c80476e4SDavid E. O'Brien     F_EXPAND_HISTORY,		/* ! */
900c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* " */
901c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* # */
902c80476e4SDavid E. O'Brien     F_TOEND,			/* $ */
903c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* % */
904c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* & */
905c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ' */
906c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ( */
907c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ) */
908c80476e4SDavid E. O'Brien     F_EXPAND_GLOB,		/* * */
909c80476e4SDavid E. O'Brien     F_DOWN_HIST,		/* + */
910c80476e4SDavid E. O'Brien     V_RCHAR_BACK,		/* , */
911c80476e4SDavid E. O'Brien     F_UP_HIST,			/* - */
912c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* . */
913c80476e4SDavid E. O'Brien     V_DSH_META,			/* / */
914c80476e4SDavid E. O'Brien     V_ZERO,			/* 0 */
915c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 1 */
916c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 2 */
917c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 3 */
918c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 4 */
919c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 5 */
920c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 6 */
921c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 7 */
922c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 8 */
923c80476e4SDavid E. O'Brien     F_ARGDIGIT,			/* 9 */
924c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* : */
925c80476e4SDavid E. O'Brien     V_RCHAR_FWD,		/* ; */
926c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* < */
927c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* = */
928c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* > */
929c80476e4SDavid E. O'Brien     V_USH_META,			/* ? */
930c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* @ */
931c80476e4SDavid E. O'Brien     V_ADDEND,			/* A */
932c80476e4SDavid E. O'Brien     V_WORDBACK,			/* B */
933c80476e4SDavid E. O'Brien     V_CHGTOEND,			/* C */
934c80476e4SDavid E. O'Brien     F_KILLEND,			/* D */
935c80476e4SDavid E. O'Brien     V_ENDWORD,			/* E */
936c80476e4SDavid E. O'Brien     V_CHAR_BACK,		/* F */
937c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* G */
938c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* H */
939c80476e4SDavid E. O'Brien     V_INSBEG,			/* I */
940c80476e4SDavid E. O'Brien     F_DOWN_SEARCH_HIST,		/* J */
941c80476e4SDavid E. O'Brien     F_UP_SEARCH_HIST,		/* K */
942c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* L */
943c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M */
944c80476e4SDavid E. O'Brien     V_RSRCH_BACK,		/* N */
945c80476e4SDavid E. O'Brien     F_XKEY,			/* O */
946c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* P */
947c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* Q */
948c80476e4SDavid E. O'Brien     V_REPLMODE,			/* R */
949c80476e4SDavid E. O'Brien     V_SUBSTLINE,		/* S */
950c80476e4SDavid E. O'Brien     V_CHARTO_BACK,		/* T */
951c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* U */
952c80476e4SDavid E. O'Brien     F_EXPAND_VARS,		/* V */
953c80476e4SDavid E. O'Brien     V_WORDFWD,			/* W */
954c80476e4SDavid E. O'Brien     F_DELPREV,			/* X */
955c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* Y */
956c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* Z */
957c80476e4SDavid E. O'Brien     F_XKEY,			/* [ */
958c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* \ */
959c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ] */
960c80476e4SDavid E. O'Brien     F_TOBEG,			/* ^ */
961c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* _ */
962c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* ` */
963c80476e4SDavid E. O'Brien     V_ADD,			/* a */
964c80476e4SDavid E. O'Brien     F_WORDBACK,			/* b */
965c80476e4SDavid E. O'Brien     V_CHGMETA,			/* c */
966c80476e4SDavid E. O'Brien     V_DELMETA,			/* d */
967c80476e4SDavid E. O'Brien     V_EWORD,			/* e */
968c80476e4SDavid E. O'Brien     V_CHAR_FWD,			/* f */
969c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* g */
970c80476e4SDavid E. O'Brien     F_CHARBACK,			/* h */
971c80476e4SDavid E. O'Brien     V_INSERT,			/* i */
972c80476e4SDavid E. O'Brien     F_DOWN_HIST,		/* j */
973c80476e4SDavid E. O'Brien     F_UP_HIST,			/* k */
974c80476e4SDavid E. O'Brien     F_CHARFWD,			/* l */
975c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* m */
976c80476e4SDavid E. O'Brien     V_RSRCH_FWD,		/* n */
977c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* o */
978c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* p */
979c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* q */
980c80476e4SDavid E. O'Brien     V_REPLONE,			/* r */
981c80476e4SDavid E. O'Brien     V_SUBSTCHAR,		/* s */
982c80476e4SDavid E. O'Brien     V_CHARTO_FWD,		/* t */
983c80476e4SDavid E. O'Brien     V_UNDO,			/* u */
984c80476e4SDavid E. O'Brien     F_EXPAND_VARS,		/* v */
985c80476e4SDavid E. O'Brien     V_WORDBEGNEXT,		/* w */
986c80476e4SDavid E. O'Brien     F_DELNEXT_EOF,		/* x */
987c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* y */
988c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* z */
989c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* { */
990c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* | */
991c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* } */
992c80476e4SDavid E. O'Brien     V_CHGCASE,			/* ~ */
993c80476e4SDavid E. O'Brien     F_DELPREV,			/* ^? */
994c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^@ */
995c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^A */
996c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^B */
997c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^C */
998c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^D */
999c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^E */
1000c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^F */
1001c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^G */
1002c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^H */
1003c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^I */
1004c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^J */
1005c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^K */
1006c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^L */
1007c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^M */
1008c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^N */
1009c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^O */
1010c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^P */
1011c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Q */
1012c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^R */
1013c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^S */
1014c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^T */
1015c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^U */
1016c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^V */
1017c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^W */
1018c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^X */
1019c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Y */
1020c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^Z */
1021c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^[ */
1022c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^\ */
1023c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^] */
1024c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^^ */
1025c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^_ */
1026c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-SPACE */
1027c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-! */
1028c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-" */
1029c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-# */
1030c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-$ */
1031c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-% */
1032c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-& */
1033c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-' */
1034c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-( */
1035c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-) */
1036c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-* */
1037c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-+ */
1038c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-, */
1039c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-- */
1040c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-. */
1041c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-/ */
1042c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-0 */
1043c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-1 */
1044c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-2 */
1045c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-3 */
1046c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-4 */
1047c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-5 */
1048c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-6 */
1049c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-7 */
1050c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-8 */
1051c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-9 */
1052c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-: */
1053c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-; */
1054c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-< */
1055c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-= */
1056c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-> */
1057c80476e4SDavid E. O'Brien     F_HELPME,			/* M-? */
1058c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-@ */
1059c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-A */
1060c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-B */
1061c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-C */
1062c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-D */
1063c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-E */
1064c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-F */
1065c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-G */
1066c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-H */
1067c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-I */
1068c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-J */
1069c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-K */
1070c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-L */
1071c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-M */
1072c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-N */
1073c80476e4SDavid E. O'Brien     F_XKEY,			/* M-O *//* extended key esc PWP Mar 88 */
1074c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-P */
1075c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Q */
1076c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-R */
1077c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-S */
1078c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-T */
1079c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-U */
1080c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-V */
1081c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-W */
1082c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-X */
1083c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Y */
1084c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-Z */
1085c80476e4SDavid E. O'Brien     F_XKEY,			/* M-[ *//* extended key esc -mf Oct 87 */
1086c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-\ */
1087c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-] */
1088c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-^ */
1089c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-_ */
1090c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-` */
1091c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-a */
1092c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-b */
1093c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-c */
1094c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-d */
1095c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-e */
1096c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-f */
1097c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-g */
1098c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-h */
1099c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-i */
1100c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-j */
1101c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-k */
1102c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-l */
1103c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-m */
1104c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-n */
1105c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-o */
1106c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-p */
1107c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-q */
1108c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-r */
1109c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-s */
1110c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-t */
1111c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-u */
1112c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-v */
1113c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-w */
1114c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-x */
1115c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-y */
1116c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-z */
1117c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-{ */
1118c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-| */
1119c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-} */
1120c80476e4SDavid E. O'Brien     F_UNASSIGNED,		/* M-~ */
1121c80476e4SDavid E. O'Brien     F_UNASSIGNED		/* M-^? */
1122c80476e4SDavid E. O'Brien };
11233b6eaa7bSAndrey A. Chernov #endif /* WINNT_NATIVE */
1124c80476e4SDavid E. O'Brien 
1125c80476e4SDavid E. O'Brien 
1126c80476e4SDavid E. O'Brien void
112745e5710bSMark Peek editinit(void)
1128c80476e4SDavid E. O'Brien {
1129c80476e4SDavid E. O'Brien     struct KeyFuncs *f;
1130c80476e4SDavid E. O'Brien 
11313b6eaa7bSAndrey A. Chernov #if defined(NLS_CATALOGS) || defined(WINNT_NATIVE)
1132c80476e4SDavid E. O'Brien     int i;
1133c80476e4SDavid E. O'Brien 
1134c80476e4SDavid E. O'Brien     for (i = 0; i < F_NUM_FUNCNAMES; i++)
113545e5710bSMark Peek 	xfree((ptr_t)(intptr_t)FuncNames[i].desc);
1136c80476e4SDavid E. O'Brien #endif
1137c80476e4SDavid E. O'Brien 
1138c80476e4SDavid E. O'Brien     f = FuncNames;
1139c80476e4SDavid E. O'Brien     f->name = "backward-char";
1140c80476e4SDavid E. O'Brien     f->func = F_CHARBACK;
1141c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 1, "Move back a character");
1142c80476e4SDavid E. O'Brien 
1143c80476e4SDavid E. O'Brien     f++;
1144c80476e4SDavid E. O'Brien     f->name = "backward-delete-char";
1145c80476e4SDavid E. O'Brien     f->func = F_DELPREV;
1146c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 2, "Delete the character behind cursor");
1147c80476e4SDavid E. O'Brien 
1148c80476e4SDavid E. O'Brien     f++;
1149c80476e4SDavid E. O'Brien     f->name = "backward-delete-word";
1150c80476e4SDavid E. O'Brien     f->func = F_DELWORDPREV;
1151c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 3,
1152c80476e4SDavid E. O'Brien 	"Cut from beginning of current word to cursor - saved in cut buffer");
1153c80476e4SDavid E. O'Brien 
1154c80476e4SDavid E. O'Brien     f++;
1155c80476e4SDavid E. O'Brien     f->name = "backward-kill-line";
1156c80476e4SDavid E. O'Brien     f->func = F_KILLBEG;
1157c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 4,
1158c80476e4SDavid E. O'Brien 	"Cut from beginning of line to cursor - save in cut buffer");
1159c80476e4SDavid E. O'Brien 
1160c80476e4SDavid E. O'Brien     f++;
1161c80476e4SDavid E. O'Brien     f->name = "backward-word";
1162c80476e4SDavid E. O'Brien     f->func = F_WORDBACK;
1163c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 5, "Move to beginning of current word");
1164c80476e4SDavid E. O'Brien 
1165c80476e4SDavid E. O'Brien     f++;
1166c80476e4SDavid E. O'Brien     f->name = "beginning-of-line";
1167c80476e4SDavid E. O'Brien     f->func = F_TOBEG;
1168c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 6, "Move to beginning of line");
1169c80476e4SDavid E. O'Brien 
1170c80476e4SDavid E. O'Brien     f++;
1171c80476e4SDavid E. O'Brien     f->name = "capitalize-word";
1172c80476e4SDavid E. O'Brien     f->func = F_CASECAPITAL;
1173c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 7,
1174c80476e4SDavid E. O'Brien 	"Capitalize the characters from cursor to end of current word");
1175c80476e4SDavid E. O'Brien 
1176c80476e4SDavid E. O'Brien     f++;
1177c80476e4SDavid E. O'Brien     f->name = "change-case";
1178c80476e4SDavid E. O'Brien     f->func = V_CHGCASE;
1179c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 8,
1180c80476e4SDavid E. O'Brien 	"Vi change case of character under cursor and advance one character");
1181c80476e4SDavid E. O'Brien 
1182c80476e4SDavid E. O'Brien     f++;
1183c80476e4SDavid E. O'Brien     f->name = "change-till-end-of-line";
1184c80476e4SDavid E. O'Brien     f->func = V_CHGTOEND;	/* backward compat. */
1185c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 9, "Vi change to end of line");
1186c80476e4SDavid E. O'Brien 
1187c80476e4SDavid E. O'Brien     f++;
1188c80476e4SDavid E. O'Brien     f->name = "clear-screen";
1189c80476e4SDavid E. O'Brien     f->func = F_CLEARDISP;
1190c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 10, "Clear screen leaving current line on top");
1191c80476e4SDavid E. O'Brien 
1192c80476e4SDavid E. O'Brien     f++;
1193c80476e4SDavid E. O'Brien     f->name = "complete-word";
1194c80476e4SDavid E. O'Brien     f->func = F_COMPLETE;
1195c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 11, "Complete current word");
1196c80476e4SDavid E. O'Brien 
1197c80476e4SDavid E. O'Brien     f++;
1198c80476e4SDavid E. O'Brien     f->name = "complete-word-fwd";
1199c80476e4SDavid E. O'Brien     f->func = F_COMPLETE_FWD;
1200c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 12, "Tab forward through files");
1201c80476e4SDavid E. O'Brien 
1202c80476e4SDavid E. O'Brien     f++;
1203c80476e4SDavid E. O'Brien     f->name = "complete-word-back";
1204c80476e4SDavid E. O'Brien     f->func = F_COMPLETE_BACK;
1205c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 13, "Tab backward through files");
1206c80476e4SDavid E. O'Brien 
1207c80476e4SDavid E. O'Brien     f++;
1208c80476e4SDavid E. O'Brien     f->name = "complete-word-raw";
1209c80476e4SDavid E. O'Brien     f->func = F_COMPLETE_ALL;
1210c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 14,
1211c80476e4SDavid E. O'Brien 	"Complete current word ignoring programmable completions");
1212c80476e4SDavid E. O'Brien 
1213c80476e4SDavid E. O'Brien     f++;
1214c80476e4SDavid E. O'Brien     f->name = "copy-prev-word";
1215c80476e4SDavid E. O'Brien     f->func = F_COPYPREV;
1216c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 15, "Copy current word to cursor");
1217c80476e4SDavid E. O'Brien 
1218c80476e4SDavid E. O'Brien     f++;
1219c80476e4SDavid E. O'Brien     f->name = "copy-region-as-kill";
1220c80476e4SDavid E. O'Brien     f->func = F_COPYREGION;
1221c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 16, "Copy area between mark and cursor to cut buffer");
1222c80476e4SDavid E. O'Brien 
1223c80476e4SDavid E. O'Brien     f++;
1224c80476e4SDavid E. O'Brien     f->name = "dabbrev-expand";
1225c80476e4SDavid E. O'Brien     f->func = F_DABBREV_EXPAND;
1226c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 17,
1227c80476e4SDavid E. O'Brien 		    "Expand to preceding word for which this is a prefix");
1228c80476e4SDavid E. O'Brien 
1229c80476e4SDavid E. O'Brien     f++;
1230c80476e4SDavid E. O'Brien     f->name = "delete-char";
1231c80476e4SDavid E. O'Brien     f->func = F_DELNEXT;
1232c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 18, "Delete character under cursor");
1233c80476e4SDavid E. O'Brien 
1234c80476e4SDavid E. O'Brien     f++;
1235c80476e4SDavid E. O'Brien     f->name = "delete-char-or-eof";
1236c80476e4SDavid E. O'Brien     f->func = F_DELNEXT_EOF;
1237c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 19,
1238c80476e4SDavid E. O'Brien 	"Delete character under cursor or signal end of file on an empty line");
1239c80476e4SDavid E. O'Brien 
1240c80476e4SDavid E. O'Brien     f++;
1241c80476e4SDavid E. O'Brien     f->name = "delete-char-or-list";
1242c80476e4SDavid E. O'Brien     f->func = F_DELNEXT_LIST;
1243c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 20,
1244c80476e4SDavid E. O'Brien 	"Delete character under cursor or list completions if at end of line");
1245c80476e4SDavid E. O'Brien 
1246c80476e4SDavid E. O'Brien     f++;
1247c80476e4SDavid E. O'Brien     f->name = "delete-char-or-list-or-eof";
1248c80476e4SDavid E. O'Brien     f->func = F_DELNEXT_LIST_EOF;
1249c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 21,
1250c80476e4SDavid E. O'Brien     "Delete character under cursor, list completions or signal end of file");
1251c80476e4SDavid E. O'Brien 
1252c80476e4SDavid E. O'Brien     f++;
1253c80476e4SDavid E. O'Brien     f->name = "delete-word";
1254c80476e4SDavid E. O'Brien     f->func = F_DELWORDNEXT;
1255c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 22,
1256c80476e4SDavid E. O'Brien 	"Cut from cursor to end of current word - save in cut buffer");
1257c80476e4SDavid E. O'Brien 
1258c80476e4SDavid E. O'Brien     f++;
1259c80476e4SDavid E. O'Brien     f->name = "digit";
1260c80476e4SDavid E. O'Brien     f->func = F_DIGIT;
1261c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 23, "Adds to argument if started or enters digit");
1262c80476e4SDavid E. O'Brien 
1263c80476e4SDavid E. O'Brien     f++;
1264c80476e4SDavid E. O'Brien     f->name = "digit-argument";
1265c80476e4SDavid E. O'Brien     f->func = F_ARGDIGIT;
1266c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 24, "Digit that starts argument");
1267c80476e4SDavid E. O'Brien 
1268c80476e4SDavid E. O'Brien     f++;
1269c80476e4SDavid E. O'Brien     f->name = "down-history";
1270c80476e4SDavid E. O'Brien     f->func = F_DOWN_HIST;
1271c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 25, "Move to next history line");
1272c80476e4SDavid E. O'Brien 
1273c80476e4SDavid E. O'Brien     f++;
1274c80476e4SDavid E. O'Brien     f->name = "downcase-word";
1275c80476e4SDavid E. O'Brien     f->func = F_CASELOWER;
1276c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 26,
1277c80476e4SDavid E. O'Brien 	"Lowercase the characters from cursor to end of current word");
1278c80476e4SDavid E. O'Brien 
1279c80476e4SDavid E. O'Brien     f++;
1280c80476e4SDavid E. O'Brien     f->name = "end-of-file";
1281c80476e4SDavid E. O'Brien     f->func = F_SEND_EOF;
1282c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 27, "Indicate end of file");
1283c80476e4SDavid E. O'Brien 
1284c80476e4SDavid E. O'Brien     f++;
1285c80476e4SDavid E. O'Brien     f->name = "end-of-line";
1286c80476e4SDavid E. O'Brien     f->func = F_TOEND;
1287c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 28, "Move cursor to end of line");
1288c80476e4SDavid E. O'Brien 
1289c80476e4SDavid E. O'Brien     f++;
1290c80476e4SDavid E. O'Brien     f->name = "exchange-point-and-mark";
1291c80476e4SDavid E. O'Brien     f->func = F_EXCHANGE_MARK;
1292c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 29, "Exchange the cursor and mark");
1293c80476e4SDavid E. O'Brien 
1294c80476e4SDavid E. O'Brien     f++;
1295c80476e4SDavid E. O'Brien     f->name = "expand-glob";
1296c80476e4SDavid E. O'Brien     f->func = F_EXPAND_GLOB;
1297c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 30, "Expand file name wildcards");
1298c80476e4SDavid E. O'Brien 
1299c80476e4SDavid E. O'Brien     f++;
1300c80476e4SDavid E. O'Brien     f->name = "expand-history";
1301c80476e4SDavid E. O'Brien     f->func = F_EXPAND_HISTORY;
1302c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 31, "Expand history escapes");
1303c80476e4SDavid E. O'Brien 
1304c80476e4SDavid E. O'Brien     f++;
1305c80476e4SDavid E. O'Brien     f->name = "expand-line";
1306c80476e4SDavid E. O'Brien     f->func = F_EXPAND;
1307c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 32, "Expand the history escapes in a line");
1308c80476e4SDavid E. O'Brien 
1309c80476e4SDavid E. O'Brien     f++;
1310c80476e4SDavid E. O'Brien     f->name = "expand-variables";
1311c80476e4SDavid E. O'Brien     f->func = F_EXPAND_VARS;
1312c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 33, "Expand variables");
1313c80476e4SDavid E. O'Brien 
1314c80476e4SDavid E. O'Brien     f++;
1315c80476e4SDavid E. O'Brien     f->name = "forward-char";
1316c80476e4SDavid E. O'Brien     f->func = F_CHARFWD;
1317c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 34, "Move forward one character");
1318c80476e4SDavid E. O'Brien 
1319c80476e4SDavid E. O'Brien     f++;
1320c80476e4SDavid E. O'Brien     f->name = "forward-word";
1321c80476e4SDavid E. O'Brien     f->func = F_WORDFWD;
1322c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 35, "Move forward to end of current word");
1323c80476e4SDavid E. O'Brien 
1324c80476e4SDavid E. O'Brien     f++;
1325c80476e4SDavid E. O'Brien     f->name = "gosmacs-transpose-chars";
1326c80476e4SDavid E. O'Brien     f->func = F_GCHARSWITCH;
1327c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 36, "Exchange the two characters before the cursor");
1328c80476e4SDavid E. O'Brien 
1329c80476e4SDavid E. O'Brien     f++;
1330c80476e4SDavid E. O'Brien     f->name = "history-search-backward";
1331c80476e4SDavid E. O'Brien     f->func = F_UP_SEARCH_HIST;
1332c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 37,
1333c80476e4SDavid E. O'Brien 	"Search in history backward for line beginning as current");
1334c80476e4SDavid E. O'Brien 
1335c80476e4SDavid E. O'Brien     f++;
1336c80476e4SDavid E. O'Brien     f->name = "history-search-forward";
1337c80476e4SDavid E. O'Brien     f->func = F_DOWN_SEARCH_HIST;
1338c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 38,
1339c80476e4SDavid E. O'Brien 	"Search in history forward for line beginning as current");
1340c80476e4SDavid E. O'Brien 
1341c80476e4SDavid E. O'Brien     f++;
1342c80476e4SDavid E. O'Brien     f->name = "insert-last-word";
1343c80476e4SDavid E. O'Brien     f->func = F_LAST_ITEM;
1344c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 39, "Insert last item of previous command");
1345c80476e4SDavid E. O'Brien 
1346c80476e4SDavid E. O'Brien     f++;
1347c80476e4SDavid E. O'Brien     f->name = "i-search-fwd";
1348c80476e4SDavid E. O'Brien     f->func = F_INC_FWD;
1349c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 40, "Incremental search forward");
1350c80476e4SDavid E. O'Brien 
1351c80476e4SDavid E. O'Brien     f++;
1352c80476e4SDavid E. O'Brien     f->name = "i-search-back";
1353c80476e4SDavid E. O'Brien     f->func = F_INC_BACK;
1354c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 41, "Incremental search backward");
1355c80476e4SDavid E. O'Brien 
1356c80476e4SDavid E. O'Brien     f++;
1357c80476e4SDavid E. O'Brien     f->name = "keyboard-quit";
1358c80476e4SDavid E. O'Brien     f->func = F_STARTOVER;
1359c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 42, "Clear line");
1360c80476e4SDavid E. O'Brien 
1361c80476e4SDavid E. O'Brien     f++;
1362c80476e4SDavid E. O'Brien     f->name = "kill-line";
1363c80476e4SDavid E. O'Brien     f->func = F_KILLEND;
1364c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 43, "Cut to end of line and save in cut buffer");
1365c80476e4SDavid E. O'Brien 
1366c80476e4SDavid E. O'Brien     f++;
1367c80476e4SDavid E. O'Brien     f->name = "kill-region";
1368c80476e4SDavid E. O'Brien     f->func = F_KILLREGION;
1369c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 44,
1370c80476e4SDavid E. O'Brien 	"Cut area between mark and cursor and save in cut buffer");
1371c80476e4SDavid E. O'Brien 
1372c80476e4SDavid E. O'Brien     f++;
1373c80476e4SDavid E. O'Brien     f->name = "kill-whole-line";
1374c80476e4SDavid E. O'Brien     f->func = F_KILLALL;
1375c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 45, "Cut the entire line and save in cut buffer");
1376c80476e4SDavid E. O'Brien 
1377c80476e4SDavid E. O'Brien     f++;
1378c80476e4SDavid E. O'Brien     f->name = "list-choices";
1379c80476e4SDavid E. O'Brien     f->func = F_LIST_CHOICES;
1380c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 46, "List choices for completion");
1381c80476e4SDavid E. O'Brien 
1382c80476e4SDavid E. O'Brien     f++;
1383c80476e4SDavid E. O'Brien     f->name = "list-choices-raw";
1384c80476e4SDavid E. O'Brien     f->func = F_LIST_ALL;
1385c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 47,
1386c80476e4SDavid E. O'Brien 	"List choices for completion overriding programmable completion");
1387c80476e4SDavid E. O'Brien 
1388c80476e4SDavid E. O'Brien     f++;
1389c80476e4SDavid E. O'Brien     f->name = "list-glob";
1390c80476e4SDavid E. O'Brien     f->func = F_LIST_GLOB;
1391c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 48, "List file name wildcard matches");
1392c80476e4SDavid E. O'Brien 
1393c80476e4SDavid E. O'Brien     f++;
1394c80476e4SDavid E. O'Brien     f->name = "list-or-eof";
1395c80476e4SDavid E. O'Brien     f->func = F_LIST_EOF;
1396c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 49,
1397c80476e4SDavid E. O'Brien 	"List choices for completion or indicate end of file if empty line");
1398c80476e4SDavid E. O'Brien 
1399c80476e4SDavid E. O'Brien     f++;
1400c80476e4SDavid E. O'Brien     f->name = "load-average";
1401c80476e4SDavid E. O'Brien     f->func = F_LOAD_AVERAGE;
1402c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 50, "Display load average and current process status");
1403c80476e4SDavid E. O'Brien 
1404c80476e4SDavid E. O'Brien     f++;
1405c80476e4SDavid E. O'Brien     f->name = "magic-space";
1406c80476e4SDavid E. O'Brien     f->func = F_MAGIC_SPACE;
1407c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 51, "Expand history escapes and insert a space");
1408c80476e4SDavid E. O'Brien 
1409c80476e4SDavid E. O'Brien     f++;
1410c80476e4SDavid E. O'Brien     f->name = "newline";
1411c80476e4SDavid E. O'Brien     f->func = F_NEWLINE;
1412c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 52, "Execute command");
1413c80476e4SDavid E. O'Brien 
1414c80476e4SDavid E. O'Brien     f++;
141545e5710bSMark Peek     f->name = "newline-and-hold";
141645e5710bSMark Peek     f->func = F_NEWLINE_HOLD;
141745e5710bSMark Peek     f->desc = CSAVS(3, 122, "Execute command and keep current line");
141845e5710bSMark Peek 
141945e5710bSMark Peek     f++;
142045e5710bSMark Peek     f->name = "newline-and-down-history";
142145e5710bSMark Peek     f->func = F_NEWLINE_DOWN_HIST;
142245e5710bSMark Peek     f->desc = CSAVS(3, 123, "Execute command and move to next history line");
142345e5710bSMark Peek 
142445e5710bSMark Peek     f++;
1425c80476e4SDavid E. O'Brien     f->name = "normalize-path";
1426c80476e4SDavid E. O'Brien     f->func = F_PATH_NORM;
1427c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 53,
1428c80476e4SDavid E. O'Brien 		    "Expand pathnames, eliminating leading .'s and ..'s");
1429c80476e4SDavid E. O'Brien 
1430c80476e4SDavid E. O'Brien     f++;
1431c80476e4SDavid E. O'Brien     f->name = "normalize-command";
1432c80476e4SDavid E. O'Brien     f->func = F_COMMAND_NORM;
1433c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 54,
1434c80476e4SDavid E. O'Brien 		    "Expand commands to the resulting pathname or alias");
1435c80476e4SDavid E. O'Brien 
1436c80476e4SDavid E. O'Brien     f++;
1437c80476e4SDavid E. O'Brien     f->name = "overwrite-mode";
1438c80476e4SDavid E. O'Brien     f->func = F_INSOVR;
1439c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 55,
1440c80476e4SDavid E. O'Brien 		    "Switch from insert to overwrite mode or vice versa");
1441c80476e4SDavid E. O'Brien 
1442c80476e4SDavid E. O'Brien     f++;
1443c80476e4SDavid E. O'Brien     f->name = "prefix-meta";
1444c80476e4SDavid E. O'Brien     f->func = F_METANEXT;
1445c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 56, "Add 8th bit to next character typed");
1446c80476e4SDavid E. O'Brien 
1447c80476e4SDavid E. O'Brien     f++;
1448c80476e4SDavid E. O'Brien     f->name = "quoted-insert";
1449c80476e4SDavid E. O'Brien     f->func = F_QUOTE;
1450c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 57, "Add the next character typed to the line verbatim");
1451c80476e4SDavid E. O'Brien 
1452c80476e4SDavid E. O'Brien     f++;
1453c80476e4SDavid E. O'Brien     f->name = "redisplay";
1454c80476e4SDavid E. O'Brien     f->func = F_REDISP;
1455c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 58, "Redisplay everything");
1456c80476e4SDavid E. O'Brien 
1457c80476e4SDavid E. O'Brien     f++;
1458c80476e4SDavid E. O'Brien     f->name = "run-fg-editor";
1459c80476e4SDavid E. O'Brien     f->func = F_RUN_FG_EDITOR;
1460c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 59, "Restart stopped editor");
1461c80476e4SDavid E. O'Brien 
1462c80476e4SDavid E. O'Brien     f++;
1463c80476e4SDavid E. O'Brien     f->name = "run-help";
1464c80476e4SDavid E. O'Brien     f->func = F_HELPME;
1465c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 60, "Look for help on current command");
1466c80476e4SDavid E. O'Brien 
1467c80476e4SDavid E. O'Brien     f++;
1468c80476e4SDavid E. O'Brien     f->name = "self-insert-command";
1469c80476e4SDavid E. O'Brien     f->func = F_INSERT;
1470c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 61, "This character is added to the line");
1471c80476e4SDavid E. O'Brien 
1472c80476e4SDavid E. O'Brien     f++;
1473c80476e4SDavid E. O'Brien     f->name = "sequence-lead-in";
1474c80476e4SDavid E. O'Brien     f->func = F_XKEY;
1475c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 62,
1476c80476e4SDavid E. O'Brien 	"This character is the first in a character sequence");
1477c80476e4SDavid E. O'Brien 
1478c80476e4SDavid E. O'Brien     f++;
1479c80476e4SDavid E. O'Brien     f->name = "set-mark-command";
1480c80476e4SDavid E. O'Brien     f->func = F_SET_MARK;
1481c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 63, "Set the mark at cursor");
1482c80476e4SDavid E. O'Brien 
1483c80476e4SDavid E. O'Brien     f++;
1484c80476e4SDavid E. O'Brien     f->name = "spell-word";
1485c80476e4SDavid E. O'Brien     f->func = F_CORRECT;
1486c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 64, "Correct the spelling of current word");
1487c80476e4SDavid E. O'Brien 
1488c80476e4SDavid E. O'Brien     f++;
1489c80476e4SDavid E. O'Brien     f->name = "spell-line";
1490c80476e4SDavid E. O'Brien     f->func = F_CORRECT_L;
1491c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 65, "Correct the spelling of entire line");
1492c80476e4SDavid E. O'Brien 
1493c80476e4SDavid E. O'Brien     f++;
1494c80476e4SDavid E. O'Brien     f->name = "stuff-char";
1495c80476e4SDavid E. O'Brien     f->func = F_STUFF_CHAR;
1496c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 66, "Send character to tty in cooked mode");
1497c80476e4SDavid E. O'Brien 
1498c80476e4SDavid E. O'Brien     f++;
1499c80476e4SDavid E. O'Brien     f->name = "toggle-literal-history";
1500c80476e4SDavid E. O'Brien     f->func = F_TOGGLE_HIST;
1501c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 67,
1502c80476e4SDavid E. O'Brien 	"Toggle between literal and lexical current history line");
1503c80476e4SDavid E. O'Brien 
1504c80476e4SDavid E. O'Brien     f++;
1505c80476e4SDavid E. O'Brien     f->name = "transpose-chars";
1506c80476e4SDavid E. O'Brien     f->func = F_CHARSWITCH;
1507c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 68,
1508c80476e4SDavid E. O'Brien 	"Exchange the character to the left of the cursor with the one under");
1509c80476e4SDavid E. O'Brien 
1510c80476e4SDavid E. O'Brien     f++;
1511c80476e4SDavid E. O'Brien     f->name = "transpose-gosling";
1512c80476e4SDavid E. O'Brien     f->func = F_GCHARSWITCH;
1513c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 69, "Exchange the two characters before the cursor");
1514c80476e4SDavid E. O'Brien 
1515c80476e4SDavid E. O'Brien     f++;
1516c80476e4SDavid E. O'Brien     f->name = "tty-dsusp";
1517c80476e4SDavid E. O'Brien     f->func = F_TTY_DSUSP;
1518c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 70, "Tty delayed suspend character");
1519c80476e4SDavid E. O'Brien 
1520c80476e4SDavid E. O'Brien     f++;
1521c80476e4SDavid E. O'Brien     f->name = "tty-flush-output";
1522c80476e4SDavid E. O'Brien     f->func = F_TTY_FLUSHO;
1523c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 71, "Tty flush output character");
1524c80476e4SDavid E. O'Brien 
1525c80476e4SDavid E. O'Brien     f++;
1526c80476e4SDavid E. O'Brien     f->name = "tty-sigintr";
1527c80476e4SDavid E. O'Brien     f->func = F_TTY_INT;
1528c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 72, "Tty interrupt character");
1529c80476e4SDavid E. O'Brien 
1530c80476e4SDavid E. O'Brien     f++;
1531c80476e4SDavid E. O'Brien     f->name = "tty-sigquit";
1532c80476e4SDavid E. O'Brien     f->func = F_TTY_QUIT;
1533c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 73, "Tty quit character");
1534c80476e4SDavid E. O'Brien 
1535c80476e4SDavid E. O'Brien     f++;
1536c80476e4SDavid E. O'Brien     f->name = "tty-sigtsusp";
1537c80476e4SDavid E. O'Brien     f->func = F_TTY_TSUSP;
1538c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 74, "Tty suspend character");
1539c80476e4SDavid E. O'Brien 
1540c80476e4SDavid E. O'Brien     f++;
1541c80476e4SDavid E. O'Brien     f->name = "tty-start-output";
1542c80476e4SDavid E. O'Brien     f->func = F_TTY_STARTO;
1543c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 75, "Tty allow output character");
1544c80476e4SDavid E. O'Brien 
1545c80476e4SDavid E. O'Brien     f++;
1546c80476e4SDavid E. O'Brien     f->name = "tty-stop-output";
1547c80476e4SDavid E. O'Brien     f->func = F_TTY_STOPO;
1548c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 76, "Tty disallow output character");
1549c80476e4SDavid E. O'Brien 
1550c80476e4SDavid E. O'Brien     f++;
1551c80476e4SDavid E. O'Brien     f->name = "undefined-key";
1552c80476e4SDavid E. O'Brien     f->func = F_UNASSIGNED;
1553c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 77, "Indicates unbound character");
1554c80476e4SDavid E. O'Brien 
1555c80476e4SDavid E. O'Brien     f++;
1556c80476e4SDavid E. O'Brien     f->name = "universal-argument";
1557c80476e4SDavid E. O'Brien     f->func = F_ARGFOUR;
1558c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 78, "Emacs universal argument (argument times 4)");
1559c80476e4SDavid E. O'Brien 
1560c80476e4SDavid E. O'Brien     f++;
1561c80476e4SDavid E. O'Brien     f->name = "up-history";
1562c80476e4SDavid E. O'Brien     f->func = F_UP_HIST;
1563c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 79, "Move to previous history line");
1564c80476e4SDavid E. O'Brien 
1565c80476e4SDavid E. O'Brien     f++;
1566c80476e4SDavid E. O'Brien     f->name = "upcase-word";
1567c80476e4SDavid E. O'Brien     f->func = F_CASEUPPER;
1568c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 80,
1569c80476e4SDavid E. O'Brien 	"Uppercase the characters from cursor to end of current word");
1570c80476e4SDavid E. O'Brien 
1571c80476e4SDavid E. O'Brien     f++;
1572c80476e4SDavid E. O'Brien     f->name = "vi-beginning-of-next-word";
1573c80476e4SDavid E. O'Brien     f->func = V_WORDBEGNEXT;
1574c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 81, "Vi goto the beginning of next word");
1575c80476e4SDavid E. O'Brien 
1576c80476e4SDavid E. O'Brien     f++;
1577c80476e4SDavid E. O'Brien     f->name = "vi-add";
1578c80476e4SDavid E. O'Brien     f->func = V_ADD;
1579c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 82, "Vi enter insert mode after the cursor");
1580c80476e4SDavid E. O'Brien 
1581c80476e4SDavid E. O'Brien     f++;
1582c80476e4SDavid E. O'Brien     f->name = "vi-add-at-eol";
1583c80476e4SDavid E. O'Brien     f->func = V_ADDEND;
1584c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 83, "Vi enter insert mode at end of line");
1585c80476e4SDavid E. O'Brien 
1586c80476e4SDavid E. O'Brien     f++;
1587c80476e4SDavid E. O'Brien     f->name = "vi-chg-case";
1588c80476e4SDavid E. O'Brien     f->func = V_CHGCASE;
1589c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 84,
1590c80476e4SDavid E. O'Brien 	"Vi change case of character under cursor and advance one character");
1591c80476e4SDavid E. O'Brien 
1592c80476e4SDavid E. O'Brien     f++;
1593c80476e4SDavid E. O'Brien     f->name = "vi-chg-meta";
1594c80476e4SDavid E. O'Brien     f->func = V_CHGMETA;
1595c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 85, "Vi change prefix command");
1596c80476e4SDavid E. O'Brien 
1597c80476e4SDavid E. O'Brien     f++;
1598c80476e4SDavid E. O'Brien     f->name = "vi-chg-to-eol";
1599c80476e4SDavid E. O'Brien     f->func = V_CHGTOEND;
1600c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 86, "Vi change to end of line");
1601c80476e4SDavid E. O'Brien 
1602c80476e4SDavid E. O'Brien     f++;
1603c80476e4SDavid E. O'Brien     f->name = "vi-cmd-mode";
1604c80476e4SDavid E. O'Brien     f->func = V_CMD_MODE;
1605c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 87,
1606c80476e4SDavid E. O'Brien 	"Enter vi command mode (use alternative key bindings)");
1607c80476e4SDavid E. O'Brien 
1608c80476e4SDavid E. O'Brien     f++;
1609c80476e4SDavid E. O'Brien     f->name = "vi-cmd-mode-complete";
1610c80476e4SDavid E. O'Brien     f->func = V_CM_COMPLETE;
1611c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 88, "Vi command mode complete current word");
1612c80476e4SDavid E. O'Brien 
1613c80476e4SDavid E. O'Brien     f++;
1614c80476e4SDavid E. O'Brien     f->name = "vi-delprev";
1615c80476e4SDavid E. O'Brien     f->func = V_DELPREV;
1616c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 89, "Vi move to previous character (backspace)");
1617c80476e4SDavid E. O'Brien 
1618c80476e4SDavid E. O'Brien     f++;
1619c80476e4SDavid E. O'Brien     f->name = "vi-delmeta";
1620c80476e4SDavid E. O'Brien     f->func = V_DELMETA;
1621c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 90, "Vi delete prefix command");
1622c80476e4SDavid E. O'Brien 
1623c80476e4SDavid E. O'Brien     f++;
1624c80476e4SDavid E. O'Brien     f->name = "vi-endword";
1625c80476e4SDavid E. O'Brien     f->func = V_ENDWORD;
1626c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 91,
1627c80476e4SDavid E. O'Brien 	"Vi move to the end of the current space delimited word");
1628c80476e4SDavid E. O'Brien 
1629c80476e4SDavid E. O'Brien     f++;
1630c80476e4SDavid E. O'Brien     f->name = "vi-eword";
1631c80476e4SDavid E. O'Brien     f->func = V_EWORD;
1632c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 92, "Vi move to the end of the current word");
1633c80476e4SDavid E. O'Brien 
1634c80476e4SDavid E. O'Brien     f++;
1635c80476e4SDavid E. O'Brien     f->name = "vi-char-back";
1636c80476e4SDavid E. O'Brien     f->func = V_CHAR_BACK;
1637c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 93, "Vi move to the character specified backward");
1638c80476e4SDavid E. O'Brien 
1639c80476e4SDavid E. O'Brien     f++;
1640c80476e4SDavid E. O'Brien     f->name = "vi-char-fwd";
1641c80476e4SDavid E. O'Brien     f->func = V_CHAR_FWD;
1642c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 94, "Vi move to the character specified forward");
1643c80476e4SDavid E. O'Brien 
1644c80476e4SDavid E. O'Brien     f++;
1645c80476e4SDavid E. O'Brien     f->name = "vi-charto-back";
1646c80476e4SDavid E. O'Brien     f->func = V_CHARTO_BACK;
1647c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 95, "Vi move up to the character specified backward");
1648c80476e4SDavid E. O'Brien 
1649c80476e4SDavid E. O'Brien     f++;
1650c80476e4SDavid E. O'Brien     f->name = "vi-charto-fwd";
1651c80476e4SDavid E. O'Brien     f->func = V_CHARTO_FWD;
1652c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 96, "Vi move up to the character specified forward");
1653c80476e4SDavid E. O'Brien 
1654c80476e4SDavid E. O'Brien     f++;
1655c80476e4SDavid E. O'Brien     f->name = "vi-insert";
1656c80476e4SDavid E. O'Brien     f->func = V_INSERT;
1657c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 97, "Enter vi insert mode");
1658c80476e4SDavid E. O'Brien 
1659c80476e4SDavid E. O'Brien     f++;
1660c80476e4SDavid E. O'Brien     f->name = "vi-insert-at-bol";
1661c80476e4SDavid E. O'Brien     f->func = V_INSBEG;
1662c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 98, "Enter vi insert mode at beginning of line");
1663c80476e4SDavid E. O'Brien 
1664c80476e4SDavid E. O'Brien     f++;
1665c80476e4SDavid E. O'Brien     f->name = "vi-repeat-char-fwd";
1666c80476e4SDavid E. O'Brien     f->func = V_RCHAR_FWD;
1667c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 99,
1668c80476e4SDavid E. O'Brien 	"Vi repeat current character search in the same search direction");
1669c80476e4SDavid E. O'Brien 
1670c80476e4SDavid E. O'Brien     f++;
1671c80476e4SDavid E. O'Brien     f->name = "vi-repeat-char-back";
1672c80476e4SDavid E. O'Brien     f->func = V_RCHAR_BACK;
1673c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 100,
1674c80476e4SDavid E. O'Brien 	"Vi repeat current character search in the opposite search direction");
1675c80476e4SDavid E. O'Brien 
1676c80476e4SDavid E. O'Brien     f++;
1677c80476e4SDavid E. O'Brien     f->name = "vi-repeat-search-fwd";
1678c80476e4SDavid E. O'Brien     f->func = V_RSRCH_FWD;
1679c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 101,
1680c80476e4SDavid E. O'Brien 	"Vi repeat current search in the same search direction");
1681c80476e4SDavid E. O'Brien 
1682c80476e4SDavid E. O'Brien     f++;
1683c80476e4SDavid E. O'Brien     f->name = "vi-repeat-search-back";
1684c80476e4SDavid E. O'Brien     f->func = V_RSRCH_BACK;
1685c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 102,
1686c80476e4SDavid E. O'Brien 	"Vi repeat current search in the opposite search direction");
1687c80476e4SDavid E. O'Brien 
1688c80476e4SDavid E. O'Brien     f++;
1689c80476e4SDavid E. O'Brien     f->name = "vi-replace-char";
1690c80476e4SDavid E. O'Brien     f->func = V_REPLONE;
1691c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 103,
1692c80476e4SDavid E. O'Brien 	"Vi replace character under the cursor with the next character typed");
1693c80476e4SDavid E. O'Brien 
1694c80476e4SDavid E. O'Brien     f++;
1695c80476e4SDavid E. O'Brien     f->name = "vi-replace-mode";
1696c80476e4SDavid E. O'Brien     f->func = V_REPLMODE;
1697c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 104, "Vi replace mode");
1698c80476e4SDavid E. O'Brien 
1699c80476e4SDavid E. O'Brien     f++;
1700c80476e4SDavid E. O'Brien     f->name = "vi-search-back";
1701c80476e4SDavid E. O'Brien     f->func = V_USH_META;
1702c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 105, "Vi search history backward");
1703c80476e4SDavid E. O'Brien 
1704c80476e4SDavid E. O'Brien     f++;
1705c80476e4SDavid E. O'Brien     f->name = "vi-search-fwd";
1706c80476e4SDavid E. O'Brien     f->func = V_DSH_META;
1707c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 106, "Vi search history forward");
1708c80476e4SDavid E. O'Brien 
1709c80476e4SDavid E. O'Brien     f++;
1710c80476e4SDavid E. O'Brien     f->name = "vi-substitute-char";
1711c80476e4SDavid E. O'Brien     f->func = V_SUBSTCHAR;
1712c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 107,
1713c80476e4SDavid E. O'Brien 	"Vi replace character under the cursor and enter insert mode");
1714c80476e4SDavid E. O'Brien 
1715c80476e4SDavid E. O'Brien     f++;
1716c80476e4SDavid E. O'Brien     f->name = "vi-substitute-line";
1717c80476e4SDavid E. O'Brien     f->func = V_SUBSTLINE;
1718c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 108, "Vi replace entire line");
1719c80476e4SDavid E. O'Brien 
1720c80476e4SDavid E. O'Brien     f++;
1721c80476e4SDavid E. O'Brien     f->name = "vi-word-back";
1722c80476e4SDavid E. O'Brien     f->func = V_WORDBACK;
1723c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 109, "Vi move to the previous word");
1724c80476e4SDavid E. O'Brien 
1725c80476e4SDavid E. O'Brien     f++;
1726c80476e4SDavid E. O'Brien     f->name = "vi-word-fwd";
1727c80476e4SDavid E. O'Brien     f->func = V_WORDFWD;
1728c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 110, "Vi move to the next word");
1729c80476e4SDavid E. O'Brien 
1730c80476e4SDavid E. O'Brien     f++;
1731c80476e4SDavid E. O'Brien     f->name = "vi-undo";
1732c80476e4SDavid E. O'Brien     f->func = V_UNDO;
1733c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 111, "Vi undo last change");
1734c80476e4SDavid E. O'Brien 
1735c80476e4SDavid E. O'Brien     f++;
1736c80476e4SDavid E. O'Brien     f->name = "vi-zero";
1737c80476e4SDavid E. O'Brien     f->func = V_ZERO;
1738c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 112, "Vi goto the beginning of line");
1739c80476e4SDavid E. O'Brien 
1740c80476e4SDavid E. O'Brien     f++;
1741c80476e4SDavid E. O'Brien     f->name = "which-command";
1742c80476e4SDavid E. O'Brien     f->func = F_WHICH;
1743c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 113, "Perform which of current command");
1744c80476e4SDavid E. O'Brien 
1745c80476e4SDavid E. O'Brien     f++;
1746c80476e4SDavid E. O'Brien     f->name = "yank";
1747c80476e4SDavid E. O'Brien     f->func = F_YANK_KILL;
1748c80476e4SDavid E. O'Brien     f->desc = CSAVS(3, 114, "Paste cut buffer at cursor position");
1749c80476e4SDavid E. O'Brien 
1750c80476e4SDavid E. O'Brien     f++;
17516767bd61SMark Peek     f->name = "yank-pop";
17526767bd61SMark Peek     f->func = F_YANK_POP;
17536767bd61SMark Peek     f->desc = CSAVS(3, 115,
17546767bd61SMark Peek 	"Replace just-yanked text with yank from earlier kill");
17556767bd61SMark Peek 
17566767bd61SMark Peek     f++;
1757c80476e4SDavid E. O'Brien     f->name = "e_copy_to_clipboard";
1758c80476e4SDavid E. O'Brien     f->func = F_COPY_CLIP;
17596767bd61SMark Peek     f->desc = CSAVS(3, 116,
17606767bd61SMark Peek 	"(WIN32 only) Copy cut buffer to system clipboard");
17616767bd61SMark Peek 
1762c80476e4SDavid E. O'Brien     f++;
1763c80476e4SDavid E. O'Brien     f->name = "e_paste_from_clipboard";
1764c80476e4SDavid E. O'Brien     f->func = F_PASTE_CLIP;
17656767bd61SMark Peek     f->desc = CSAVS(3, 117,
17666767bd61SMark Peek 	"(WIN32 only) Paste clipboard buffer at cursor position");
17676767bd61SMark Peek 
1768c80476e4SDavid E. O'Brien     f++;
1769c80476e4SDavid E. O'Brien     f->name = "e_dosify_next";
1770c80476e4SDavid E. O'Brien     f->func = F_DOSIFY_NEXT;
17716767bd61SMark Peek     f->desc = CSAVS(3, 118,
17726767bd61SMark Peek 	"(WIN32 only) Convert each '/' in next word to '\\\\'");
17736767bd61SMark Peek 
1774c80476e4SDavid E. O'Brien     f++;
1775c80476e4SDavid E. O'Brien     f->name = "e_dosify_prev";
1776c80476e4SDavid E. O'Brien     f->func = F_DOSIFY_PREV;
17776767bd61SMark Peek     f->desc = CSAVS(3, 119,
17786767bd61SMark Peek 	"(WIN32 only) Convert each '/' in previous word to '\\\\'");
17796767bd61SMark Peek 
17803b6eaa7bSAndrey A. Chernov     f++;
17813b6eaa7bSAndrey A. Chernov     f->name = "e_page_up";
17823b6eaa7bSAndrey A. Chernov     f->func = F_PAGE_UP;
17836767bd61SMark Peek     f->desc = CSAVS(3, 120, "(WIN32 only) Page visible console window up");
17846767bd61SMark Peek 
17853b6eaa7bSAndrey A. Chernov     f++;
17863b6eaa7bSAndrey A. Chernov     f->name = "e_page_down";
17873b6eaa7bSAndrey A. Chernov     f->func = F_PAGE_DOWN;
17886767bd61SMark Peek     f->desc = CSAVS(3, 121, "(WIN32 only) Page visible console window down");
1789c80476e4SDavid E. O'Brien 
1790c80476e4SDavid E. O'Brien     f++;
1791c80476e4SDavid E. O'Brien     f->name = NULL;
1792c80476e4SDavid E. O'Brien     f->func = 0;
1793c80476e4SDavid E. O'Brien     f->desc = NULL;
1794c80476e4SDavid E. O'Brien 
1795c80476e4SDavid E. O'Brien     f++;
1796c80476e4SDavid E. O'Brien     if (f - FuncNames != F_NUM_FUNCNAMES)
1797c80476e4SDavid E. O'Brien 	abort();
1798c80476e4SDavid E. O'Brien }
1799c80476e4SDavid E. O'Brien 
1800c80476e4SDavid E. O'Brien #ifdef DEBUG_EDIT
1801c80476e4SDavid E. O'Brien void
180245e5710bSMark Peek CheckMaps(void)
1803c80476e4SDavid E. O'Brien {		/* check the size of the key maps */
1804c80476e4SDavid E. O'Brien     int     c1 = (NT_NUM_KEYS * sizeof(KEYCMD));
1805c80476e4SDavid E. O'Brien 
1806c80476e4SDavid E. O'Brien     if ((sizeof(CcKeyMap)) != c1)
1807c80476e4SDavid E. O'Brien 	xprintf("CcKeyMap should be %d entries, but is %d.\r\n",
1808c80476e4SDavid E. O'Brien 		NT_NUM_KEYS, sizeof(CcKeyMap) / sizeof(KEYCMD)));
1809c80476e4SDavid E. O'Brien 
1810c80476e4SDavid E. O'Brien     if ((sizeof(CcAltMap)) != c1)
1811c80476e4SDavid E. O'Brien 	xprintf("CcAltMap should be %d entries, but is %d.\r\n",
1812c80476e4SDavid E. O'Brien 		NT_NUM_KEYS, (sizeof(CcAltMap) / sizeof(KEYCMD)));
1813c80476e4SDavid E. O'Brien 
1814c80476e4SDavid E. O'Brien     if ((sizeof(CcEmacsMap)) != c1)
1815c80476e4SDavid E. O'Brien 	xprintf("CcEmacsMap should be %d entries, but is %d.\r\n",
1816c80476e4SDavid E. O'Brien 		NT_NUM_KEYS, (sizeof(CcEmacsMap) / sizeof(KEYCMD)));
1817c80476e4SDavid E. O'Brien 
1818c80476e4SDavid E. O'Brien     if ((sizeof(CcViMap)) != c1)
1819c80476e4SDavid E. O'Brien 	xprintf("CcViMap should be %d entries, but is %d.\r\n",
1820c80476e4SDavid E. O'Brien 		NT_NUM_KEYS, (sizeof(CcViMap) / sizeof(KEYCMD)));
1821c80476e4SDavid E. O'Brien 
1822c80476e4SDavid E. O'Brien     if ((sizeof(CcViCmdMap)) != c1)
1823c80476e4SDavid E. O'Brien 	xprintf("CcViCmdMap should be %d entries, but is %d.\r\n",
1824c80476e4SDavid E. O'Brien 		NT_NUM_KEYS, (sizeof(CcViCmdMap) / sizeof(KEYCMD)));
1825c80476e4SDavid E. O'Brien }
1826c80476e4SDavid E. O'Brien 
1827c80476e4SDavid E. O'Brien #endif
1828c80476e4SDavid E. O'Brien 
182923338178SMark Peek int    MapsAreInited = 0;
183023338178SMark Peek int    NLSMapsAreInited = 0;
183123338178SMark Peek int    NoNLSRebind;
1832c80476e4SDavid E. O'Brien 
1833c80476e4SDavid E. O'Brien void
183445e5710bSMark Peek ed_InitNLSMaps(void)
1835c80476e4SDavid E. O'Brien {
183623338178SMark Peek     int i;
1837c80476e4SDavid E. O'Brien 
1838c80476e4SDavid E. O'Brien     if (AsciiOnly)
1839c80476e4SDavid E. O'Brien 	return;
1840c80476e4SDavid E. O'Brien     if (NoNLSRebind)
1841c80476e4SDavid E. O'Brien 	return;
1842c80476e4SDavid E. O'Brien     for (i = 0200; i <= 0377; i++) {
184323338178SMark Peek 	if (Isprint(CTL_ESC(i))) {
184423338178SMark Peek 	    CcKeyMap[CTL_ESC(i)] = F_INSERT;
1845c80476e4SDavid E. O'Brien 	}
1846c80476e4SDavid E. O'Brien     }
1847c80476e4SDavid E. O'Brien     NLSMapsAreInited = 1;
1848c80476e4SDavid E. O'Brien }
1849c80476e4SDavid E. O'Brien 
1850c80476e4SDavid E. O'Brien static void
185145e5710bSMark Peek ed_InitMetaBindings(void)
1852c80476e4SDavid E. O'Brien {
1853c80476e4SDavid E. O'Brien     Char    buf[3];
1854c80476e4SDavid E. O'Brien     int     i;
1855c80476e4SDavid E. O'Brien     CStr    cstr;
1856c80476e4SDavid E. O'Brien     KEYCMD *map;
1857c80476e4SDavid E. O'Brien 
1858c80476e4SDavid E. O'Brien     map = CcKeyMap;
185923338178SMark Peek     for (i = 0; i <= 0377 && CcKeyMap[CTL_ESC(i)] != F_METANEXT; i++)
1860c80476e4SDavid E. O'Brien 	continue;
1861c80476e4SDavid E. O'Brien     if (i > 0377) {
186223338178SMark Peek 	for (i = 0; i <= 0377 && CcAltMap[CTL_ESC(i)] != F_METANEXT; i++)
1863c80476e4SDavid E. O'Brien 	    continue;
1864c80476e4SDavid E. O'Brien 	if (i > 0377) {
186523338178SMark Peek 	    i = '\033';
1866c80476e4SDavid E. O'Brien 	    if (VImode)
1867c80476e4SDavid E. O'Brien 		map = CcAltMap;
1868c80476e4SDavid E. O'Brien 	}
1869c80476e4SDavid E. O'Brien 	else {
1870c80476e4SDavid E. O'Brien 	    map = CcAltMap;
1871c80476e4SDavid E. O'Brien 	}
1872c80476e4SDavid E. O'Brien     }
187323338178SMark Peek     buf[0] = (Char)CTL_ESC(i);
1874c80476e4SDavid E. O'Brien     buf[2] = 0;
1875c80476e4SDavid E. O'Brien     cstr.buf = buf;
1876c80476e4SDavid E. O'Brien     cstr.len = 2;
1877c80476e4SDavid E. O'Brien     for (i = 0200; i <= 0377; i++) {
187823338178SMark Peek 	if (map[CTL_ESC(i)] != F_INSERT && map[CTL_ESC(i)] != F_UNASSIGNED && map[CTL_ESC(i)] != F_XKEY) {
187923338178SMark Peek 	    buf[1] = CTL_ESC(i & ASCII);
188023338178SMark Peek 	    AddXkey(&cstr, XmapCmd((int) map[CTL_ESC(i)]), XK_CMD);
1881c80476e4SDavid E. O'Brien 	}
1882c80476e4SDavid E. O'Brien     }
1883c80476e4SDavid E. O'Brien     map[buf[0]] = F_XKEY;
1884c80476e4SDavid E. O'Brien }
1885c80476e4SDavid E. O'Brien 
1886c80476e4SDavid E. O'Brien void
188745e5710bSMark Peek ed_InitVIMaps(void)
1888c80476e4SDavid E. O'Brien {
188923338178SMark Peek     int i;
1890c80476e4SDavid E. O'Brien 
1891c80476e4SDavid E. O'Brien     VImode = 1;
1892c80476e4SDavid E. O'Brien     ResetXmap();
1893c80476e4SDavid E. O'Brien     for (i = 0; i < NT_NUM_KEYS; i++) {
1894c80476e4SDavid E. O'Brien 	CcKeyMap[i] = CcViMap[i];
1895c80476e4SDavid E. O'Brien 	CcAltMap[i] = CcViCmdMap[i];
1896c80476e4SDavid E. O'Brien     }
1897c80476e4SDavid E. O'Brien     ed_InitMetaBindings();
1898c80476e4SDavid E. O'Brien     ed_InitNLSMaps();
1899c80476e4SDavid E. O'Brien     ResetArrowKeys();
1900c80476e4SDavid E. O'Brien     BindArrowKeys();
1901c80476e4SDavid E. O'Brien }
1902c80476e4SDavid E. O'Brien 
1903c80476e4SDavid E. O'Brien void
190445e5710bSMark Peek ed_InitEmacsMaps(void)
1905c80476e4SDavid E. O'Brien {
1906c80476e4SDavid E. O'Brien     int     i;
1907c80476e4SDavid E. O'Brien     Char    buf[3];
1908c80476e4SDavid E. O'Brien     CStr    cstr;
1909c80476e4SDavid E. O'Brien     cstr.buf = buf;
1910c80476e4SDavid E. O'Brien     cstr.len = 2;
1911c80476e4SDavid E. O'Brien 
1912c80476e4SDavid E. O'Brien     VImode = 0;
1913c80476e4SDavid E. O'Brien     ResetXmap();
1914c80476e4SDavid E. O'Brien     for (i = 0; i < NT_NUM_KEYS; i++) {
1915c80476e4SDavid E. O'Brien 	CcKeyMap[i] = CcEmacsMap[i];
1916c80476e4SDavid E. O'Brien 	CcAltMap[i] = F_UNASSIGNED;
1917c80476e4SDavid E. O'Brien     }
1918c80476e4SDavid E. O'Brien     ed_InitMetaBindings();
1919c80476e4SDavid E. O'Brien     ed_InitNLSMaps();
1920c80476e4SDavid E. O'Brien     buf[0] = CTL_ESC('\030');
1921c80476e4SDavid E. O'Brien     buf[2] = 0;
1922c80476e4SDavid E. O'Brien     buf[1] = CTL_ESC('\030');
1923c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_EXCHANGE_MARK), XK_CMD);
1924c80476e4SDavid E. O'Brien     buf[1] = '*';
1925c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_EXPAND_GLOB),   XK_CMD);
1926c80476e4SDavid E. O'Brien     buf[1] = '$';
1927c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_EXPAND_VARS),   XK_CMD);
1928c80476e4SDavid E. O'Brien     buf[1] = 'G';
1929c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_LIST_GLOB),     XK_CMD);
1930c80476e4SDavid E. O'Brien     buf[1] = 'g';
1931c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_LIST_GLOB),     XK_CMD);
1932c80476e4SDavid E. O'Brien     buf[1] = 'n';
1933c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_PATH_NORM),     XK_CMD);
1934c80476e4SDavid E. O'Brien     buf[1] = 'N';
1935c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_PATH_NORM),     XK_CMD);
1936c80476e4SDavid E. O'Brien     buf[1] = '?';
1937c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_COMMAND_NORM),  XK_CMD);
1938c80476e4SDavid E. O'Brien     buf[1] = '\t';
1939c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_COMPLETE_ALL),  XK_CMD);
1940c80476e4SDavid E. O'Brien     buf[1] = CTL_ESC('\004');	/* ^D */
1941c80476e4SDavid E. O'Brien     AddXkey(&cstr, XmapCmd(F_LIST_ALL),      XK_CMD);
1942c80476e4SDavid E. O'Brien     ResetArrowKeys();
1943c80476e4SDavid E. O'Brien     BindArrowKeys();
1944c80476e4SDavid E. O'Brien }
1945c80476e4SDavid E. O'Brien 
1946c80476e4SDavid E. O'Brien void
194745e5710bSMark Peek ed_InitMaps(void)
1948c80476e4SDavid E. O'Brien {
1949c80476e4SDavid E. O'Brien     if (MapsAreInited)
1950c80476e4SDavid E. O'Brien 	return;
19513b6eaa7bSAndrey A. Chernov #ifndef IS_ASCII
1952c80476e4SDavid E. O'Brien     /* This machine has an EBCDIC charset. The assumptions made for the
1953c80476e4SDavid E. O'Brien      * initialized keymaps therefore don't hold, since they are based on
1954c80476e4SDavid E. O'Brien      * ASCII (or ISO8859-1).
1955c80476e4SDavid E. O'Brien      * Here, we do a one-time transformation to EBCDIC environment
1956c80476e4SDavid E. O'Brien      * for the key initializations.
1957c80476e4SDavid E. O'Brien      */
1958c80476e4SDavid E. O'Brien     {
1959c80476e4SDavid E. O'Brien 	KEYCMD temp[NT_NUM_KEYS];
1960c80476e4SDavid E. O'Brien 	static KEYCMD *const list[3] = { CcEmacsMap, CcViMap, CcViCmdMap };
196123338178SMark Peek 	int i, table;
1962c80476e4SDavid E. O'Brien 
1963c80476e4SDavid E. O'Brien 	for (table=0; table<3; ++table)
1964c80476e4SDavid E. O'Brien 	{
1965c80476e4SDavid E. O'Brien 	    /* copy ASCII ordered map to temp table */
1966c80476e4SDavid E. O'Brien 	    for (i = 0; i < NT_NUM_KEYS; i++) {
1967c80476e4SDavid E. O'Brien 		temp[i] = list[table][i];
1968c80476e4SDavid E. O'Brien 	    }
1969c80476e4SDavid E. O'Brien 	    /* write back as EBCDIC ordered map */
1970c80476e4SDavid E. O'Brien 	    for (i = 0; i < NT_NUM_KEYS; i++) {
1971c80476e4SDavid E. O'Brien 		list[table][_toebcdic[i]] = temp[i];
1972c80476e4SDavid E. O'Brien 	    }
1973c80476e4SDavid E. O'Brien 	}
1974c80476e4SDavid E. O'Brien     }
19753b6eaa7bSAndrey A. Chernov #endif /* !IS_ASCII */
1976c80476e4SDavid E. O'Brien 
1977c80476e4SDavid E. O'Brien #ifdef VIDEFAULT
1978c80476e4SDavid E. O'Brien     ed_InitVIMaps();
1979c80476e4SDavid E. O'Brien #else
1980c80476e4SDavid E. O'Brien     ed_InitEmacsMaps();
1981c80476e4SDavid E. O'Brien #endif
1982c80476e4SDavid E. O'Brien 
1983c80476e4SDavid E. O'Brien     MapsAreInited = 1;
1984c80476e4SDavid E. O'Brien }
1985