1/*$Header: /p/tcsh/cvsroot/tcsh/win32/nt.bind.c,v 1.6 2006/03/05 08:59:36 amold Exp $*/
2/*-
3 * Copyright (c) 1980, 1991 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of the University nor the names of its contributors
15 *    may be used to endorse or promote products derived from this software
16 *    without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 */
30#include "sh.h"
31#include "ed.h"
32#include "ed.defns.h"
33
34
35KEYCMD  CcEmacsMap[] = {
36	/* keymap table, each index into above tbl; should be
37	   (256+extra NT bindings)*sizeof(KEYCMD) bytes long */
38
39	F_SET_MARK,			/* ^@ */
40	F_TOBEG,			/* ^A */
41	F_CHARBACK,			/* ^B */
42	F_TTY_INT,			/* ^C */
43	F_DELNEXT_LIST_EOF,		/* ^D */
44	F_TOEND,			/* ^E */
45	F_CHARFWD,			/* ^F */
46	F_UNASSIGNED,		/* ^G */
47	F_DELPREV,			/* ^H */
48	F_COMPLETE,			/* ^I */
49	F_NEWLINE,			/* ^J */
50	F_KILLEND,			/* ^K */
51	F_CLEARDISP,		/* ^L */
52	F_NEWLINE,			/* ^M */
53	F_DOWN_HIST,		/* ^N */
54	F_TTY_FLUSHO,		/* ^O */
55	F_UP_HIST,			/* ^P */
56	F_TTY_STARTO,		/* ^Q */
57	F_REDISP,			/* ^R */
58	F_TTY_STOPO,		/* ^S */
59	F_CHARSWITCH,		/* ^T */
60	F_KILLALL,			/* ^U */
61	F_QUOTE,			/* ^V */
62	F_KILLREGION,		/* ^W */
63	F_XKEY,			/* ^X */
64	F_YANK_KILL,		/* ^Y */
65	F_TTY_TSUSP,		/* ^Z */
66	F_METANEXT,			/* ^[ */
67	F_TTY_QUIT,			/* ^\ */
68	F_TTY_DSUSP,		/* ^] */
69	F_UNASSIGNED,		/* ^^ */
70	F_UNASSIGNED,		/* ^_ */
71	F_INSERT,			/* SPACE */
72	F_INSERT,			/* ! */
73	F_INSERT,			/* " */
74	F_INSERT,			/* # */
75	F_INSERT,			/* $ */
76	F_INSERT,			/* % */
77	F_INSERT,			/* & */
78	F_INSERT,			/* ' */
79	F_INSERT,			/* ( */
80	F_INSERT,			/* ) */
81	F_INSERT,			/* * */
82	F_INSERT,			/* + */
83	F_INSERT,			/* , */
84	F_INSERT,			/* - */
85	F_INSERT,			/* . */
86	F_INSERT,			/* / */
87	F_DIGIT,			/* 0 */
88	F_DIGIT,			/* 1 */
89	F_DIGIT,			/* 2 */
90	F_DIGIT,			/* 3 */
91	F_DIGIT,			/* 4 */
92	F_DIGIT,			/* 5 */
93	F_DIGIT,			/* 6 */
94	F_DIGIT,			/* 7 */
95	F_DIGIT,			/* 8 */
96	F_DIGIT,			/* 9 */
97	F_INSERT,			/* : */
98	F_INSERT,			/* ; */
99	F_INSERT,			/* < */
100	F_INSERT,			/* = */
101	F_INSERT,			/* > */
102	F_INSERT,			/* ? */
103	F_INSERT,			/* @ */
104	F_INSERT,			/* A */
105	F_INSERT,			/* B */
106	F_INSERT,			/* C */
107	F_INSERT,			/* D */
108	F_INSERT,			/* E */
109	F_INSERT,			/* F */
110	F_INSERT,			/* G */
111	F_INSERT,			/* H */
112	F_INSERT,			/* I */
113	F_INSERT,			/* J */
114	F_INSERT,			/* K */
115	F_INSERT,			/* L */
116	F_INSERT,			/* M */
117	F_INSERT,			/* N */
118	F_INSERT,			/* O */
119	F_INSERT,			/* P */
120	F_INSERT,			/* Q */
121	F_INSERT,			/* R */
122	F_INSERT,			/* S */
123	F_INSERT,			/* T */
124	F_INSERT,			/* U */
125	F_INSERT,			/* V */
126	F_INSERT,			/* W */
127	F_INSERT,			/* X */
128	F_INSERT,			/* Y */
129	F_INSERT,			/* Z */
130	F_INSERT,			/* [ */
131	F_INSERT,			/* \ */
132	F_INSERT,			/* ] */
133	F_INSERT,			/* ^ */
134	F_INSERT,			/* _ */
135	F_INSERT,			/* ` */
136	F_INSERT,			/* a */
137	F_INSERT,			/* b */
138	F_INSERT,			/* c */
139	F_INSERT,			/* d */
140	F_INSERT,			/* e */
141	F_INSERT,			/* f */
142	F_INSERT,			/* g */
143	F_INSERT,			/* h */
144	F_INSERT,			/* i */
145	F_INSERT,			/* j */
146	F_INSERT,			/* k */
147	F_INSERT,			/* l */
148	F_INSERT,			/* m */
149	F_INSERT,			/* n */
150	F_INSERT,			/* o */
151	F_INSERT,			/* p */
152	F_INSERT,			/* q */
153	F_INSERT,			/* r */
154	F_INSERT,			/* s */
155	F_INSERT,			/* t */
156	F_INSERT,			/* u */
157	F_INSERT,			/* v */
158	F_INSERT,			/* w */
159	F_INSERT,			/* x */
160	F_INSERT,			/* y */
161	F_INSERT,			/* z */
162	F_INSERT,			/* { */
163	F_INSERT,			/* | */
164	F_INSERT,			/* } */
165	F_INSERT,			/* ~ */
166	F_DELPREV,			/* ^? */
167	F_UNASSIGNED,		/* M-^@ */
168	F_UNASSIGNED,		/* M-^A */
169	F_UNASSIGNED,		/* M-^B */
170	F_UNASSIGNED,		/* M-^C */
171	F_LIST_CHOICES,		/* M-^D */
172	F_UNASSIGNED,		/* M-^E */
173	F_UNASSIGNED,		/* M-^F */
174	F_UNASSIGNED,		/* M-^G */
175	F_DELWORDPREV,		/* M-^H */
176	F_COMPLETE,			/* M-^I */
177	F_UNASSIGNED,		/* M-^J */
178	F_UNASSIGNED,		/* M-^K */
179	F_CLEARDISP,		/* M-^L */
180	F_UNASSIGNED,		/* M-^M */
181	F_UNASSIGNED,		/* M-^N */
182	F_UNASSIGNED,		/* M-^O */
183	F_UNASSIGNED,		/* M-^P */
184	F_UNASSIGNED,		/* M-^Q */
185	F_UNASSIGNED,		/* M-^R */
186	F_UNASSIGNED,		/* M-^S */
187	F_UNASSIGNED,		/* M-^T */
188	F_UNASSIGNED,		/* M-^U */
189	F_UNASSIGNED,		/* M-^V */
190	F_UNASSIGNED,		/* M-^W */
191	F_UNASSIGNED,		/* M-^X */
192	F_UNASSIGNED,		/* M-^Y */
193	F_RUN_FG_EDITOR,		/* M-^Z */
194	F_COMPLETE,			/* M-^[ */
195	F_UNASSIGNED,		/* M-^\ */
196	F_UNASSIGNED,		/* M-^] */
197	F_UNASSIGNED,		/* M-^^ */
198	F_COPYPREV,			/* M-^_ */
199	F_EXPAND_HISTORY,		/* M-SPACE */
200	F_EXPAND_HISTORY,		/* M-! */
201	F_UNASSIGNED,		/* M-" */
202	F_UNASSIGNED,		/* M-# */
203	F_CORRECT_L,		/* M-$ */
204	F_UNASSIGNED,		/* M-% */
205	F_UNASSIGNED,		/* M-& */
206	F_UNASSIGNED,		/* M-' */
207	F_UNASSIGNED,		/* M-( */
208	F_UNASSIGNED,		/* M-) */
209	F_UNASSIGNED,		/* M-* */
210	F_UNASSIGNED,		/* M-+ */
211	F_UNASSIGNED,		/* M-, */
212	F_UNASSIGNED,		/* M-- */
213	F_UNASSIGNED,		/* M-. */
214	F_DABBREV_EXPAND,		/* M-/ */
215	F_ARGDIGIT,			/* M-0 */
216	F_ARGDIGIT,			/* M-1 */
217	F_ARGDIGIT,			/* M-2 */
218	F_ARGDIGIT,			/* M-3 */
219	F_ARGDIGIT,			/* M-4 */
220	F_ARGDIGIT,			/* M-5 */
221	F_ARGDIGIT,			/* M-6 */
222	F_ARGDIGIT,			/* M-7 */
223	F_ARGDIGIT,			/* M-8 */
224	F_ARGDIGIT,			/* M-9 */
225	F_UNASSIGNED,		/* M-: */
226	F_UNASSIGNED,		/* M-; */
227	F_UNASSIGNED,		/* M-< */
228	F_UNASSIGNED,		/* M-= */
229	F_UNASSIGNED,		/* M-> */
230	F_WHICH,			/* M-? */
231	F_UNASSIGNED,		/* M-@ */
232	F_UNASSIGNED,		/* M-A */
233	F_WORDBACK,			/* M-B */
234	F_CASECAPITAL,		/* M-C */
235	F_DELWORDNEXT,		/* M-D */
236	F_UNASSIGNED,		/* M-E */
237	F_WORDFWD,			/* M-F */
238	F_UNASSIGNED,		/* M-G */
239	F_HELPME,			/* M-H */
240	F_UNASSIGNED,		/* M-I */
241	F_UNASSIGNED,		/* M-J */
242	F_UNASSIGNED,		/* M-K */
243	F_CASELOWER,		/* M-L */
244	F_UNASSIGNED,		/* M-M */
245	F_DOWN_SEARCH_HIST,		/* M-N */
246	F_XKEY,			/* M-O *//* extended key esc PWP Mar 88 */
247	F_UP_SEARCH_HIST,		/* M-P */
248	F_UNASSIGNED,		/* M-Q */
249	F_TOGGLE_HIST,		/* M-R */
250	F_CORRECT,			/* M-S */
251	F_UNASSIGNED,		/* M-T */
252	F_CASEUPPER,		/* M-U */
253	F_UNASSIGNED,		/* M-V */
254	F_COPYREGION,		/* M-W */
255	F_UNASSIGNED,		/* M-X */
256	F_UNASSIGNED,		/* M-Y */
257	F_UNASSIGNED,		/* M-Z */
258	F_XKEY,			/* M-[ *//* extended key esc -mf Oct 87 */
259	F_UNASSIGNED,		/* M-\ */
260	F_UNASSIGNED,		/* M-] */
261	F_UNASSIGNED,		/* M-^ */
262	F_LAST_ITEM,		/* M-_ */
263	F_UNASSIGNED,		/* M-` */
264	F_UNASSIGNED,		/* M-a */
265	F_WORDBACK,			/* M-b */
266	F_CASECAPITAL,		/* M-c */
267	F_DELWORDNEXT,		/* M-d */
268	F_UNASSIGNED,		/* M-e */
269	F_WORDFWD,			/* M-f */
270	F_UNASSIGNED,		/* M-g */
271	F_HELPME,			/* M-h */
272	F_UNASSIGNED,		/* M-i */
273	F_UNASSIGNED,		/* M-j */
274	F_UNASSIGNED,		/* M-k */
275	F_CASELOWER,		/* M-l */
276	F_UNASSIGNED,		/* M-m */
277	F_DOWN_SEARCH_HIST,		/* M-n */
278	F_UNASSIGNED,		/* M-o */
279	F_UP_SEARCH_HIST,		/* M-p */
280	F_UNASSIGNED,		/* M-q */
281	F_TOGGLE_HIST,		/* M-r */
282	F_CORRECT,			/* M-s */
283	F_UNASSIGNED,		/* M-t */
284	F_CASEUPPER,		/* M-u */
285	F_UNASSIGNED,		/* M-v */
286	F_COPYREGION,		/* M-w */
287	F_UNASSIGNED,		/* M-x */
288	F_UNASSIGNED,		/* M-y */
289	F_UNASSIGNED,		/* M-z */
290	F_UNASSIGNED,		/* M-{ */
291	F_UNASSIGNED,		/* M-| */
292	F_UNASSIGNED,		/* M-} */
293	F_UNASSIGNED,		/* M-~ */
294	F_DELWORDPREV,		/* M-^? */
295	/* Extra keys begin here */
296	F_UNASSIGNED,		/* f-1 */
297	F_UNASSIGNED,		/* f-2 */
298	F_UNASSIGNED,		/* f-3 */
299	F_UNASSIGNED,		/* f-4 */
300	F_UNASSIGNED,		/* f-5 */
301	F_UNASSIGNED,		/* f-6 */
302	F_UNASSIGNED,		/* f-7 */
303	F_UNASSIGNED,		/* f-8 */
304	F_UNASSIGNED,		/* f-9 */
305	F_UNASSIGNED,		/* f-10 */
306	F_UNASSIGNED,		/* f-11 */
307	F_UNASSIGNED,		/* f-12 */
308	F_UNASSIGNED,		/* f-13 */
309	F_UNASSIGNED,		/* f-14 */
310	F_UNASSIGNED,		/* f-15 */
311	F_UNASSIGNED,		/* f-16 */
312	F_UNASSIGNED,		/* f-17 */
313	F_UNASSIGNED,		/* f-18 */
314	F_UNASSIGNED,		/* f-19 */
315	F_UNASSIGNED,		/* f-20 */
316	F_UNASSIGNED,		/* f-21 */
317	F_UNASSIGNED,		/* f-22 */
318	F_UNASSIGNED,		/* f-23 */
319	F_UNASSIGNED,		/* f-24 */
320	F_UNASSIGNED,		/* PgUp */
321	F_UNASSIGNED,		/* PgDn */
322	F_UNASSIGNED,		/* end */
323	F_UNASSIGNED,		/* home */
324	F_UNASSIGNED,		/* LEFT */
325	F_UNASSIGNED,		/* UP */
326	F_UNASSIGNED,		/* RIGHT */
327	F_UNASSIGNED,		/* DOWN */
328	F_UNASSIGNED,		/* INS */
329	F_UNASSIGNED,		/* DEL */
330	/* ctrl key mappings */
331	F_UNASSIGNED,		/* f-1 */
332	F_UNASSIGNED,		/* f-2 */
333	F_UNASSIGNED,		/* f-3 */
334	F_UNASSIGNED,		/* f-4 */
335	F_UNASSIGNED,		/* f-5 */
336	F_UNASSIGNED,		/* f-6 */
337	F_UNASSIGNED,		/* f-7 */
338	F_UNASSIGNED,		/* f-8 */
339	F_UNASSIGNED,		/* f-9 */
340	F_UNASSIGNED,		/* f-10 */
341	F_UNASSIGNED,		/* f-11 */
342	F_UNASSIGNED,		/* f-12 */
343	F_UNASSIGNED,		/* f-13 */
344	F_UNASSIGNED,		/* f-14 */
345	F_UNASSIGNED,		/* f-15 */
346	F_UNASSIGNED,		/* f-16 */
347	F_UNASSIGNED,		/* f-17 */
348	F_UNASSIGNED,		/* f-18 */
349	F_UNASSIGNED,		/* f-19 */
350	F_UNASSIGNED,		/* f-20 */
351	F_UNASSIGNED,		/* f-21 */
352	F_UNASSIGNED,		/* f-22 */
353	F_UNASSIGNED,		/* f-23 */
354	F_UNASSIGNED,		/* f-24 */
355	F_UNASSIGNED,		/* PgUp */
356	F_UNASSIGNED,		/* PgDn */
357	F_UNASSIGNED,		/* end */
358	F_UNASSIGNED,		/* home */
359	F_UNASSIGNED,		/* LEFT */
360	F_UNASSIGNED,		/* UP */
361	F_UNASSIGNED,		/* RIGHT */
362	F_UNASSIGNED,		/* DOWN */
363	F_UNASSIGNED,		/* INS */
364	F_UNASSIGNED,		/* DEL */
365
366	/* alt key mappings */
367	F_UNASSIGNED,		/* f-1 */
368	F_UNASSIGNED,		/* f-2 */
369	F_UNASSIGNED,		/* f-3 */
370	F_UNASSIGNED,		/* f-4 */
371	F_UNASSIGNED,		/* f-5 */
372	F_UNASSIGNED,		/* f-6 */
373	F_UNASSIGNED,		/* f-7 */
374	F_UNASSIGNED,		/* f-8 */
375	F_UNASSIGNED,		/* f-9 */
376	F_UNASSIGNED,		/* f-10 */
377	F_UNASSIGNED,		/* f-11 */
378	F_UNASSIGNED,		/* f-12 */
379	F_UNASSIGNED,		/* f-13 */
380	F_UNASSIGNED,		/* f-14 */
381	F_UNASSIGNED,		/* f-15 */
382	F_UNASSIGNED,		/* f-16 */
383	F_UNASSIGNED,		/* f-17 */
384	F_UNASSIGNED,		/* f-18 */
385	F_UNASSIGNED,		/* f-19 */
386	F_UNASSIGNED,		/* f-20 */
387	F_UNASSIGNED,		/* f-21 */
388	F_UNASSIGNED,		/* f-22 */
389	F_UNASSIGNED,		/* f-23 */
390	F_UNASSIGNED,		/* f-24 */
391	F_UNASSIGNED,		/* PgUp */
392	F_UNASSIGNED,		/* PgDn */
393	F_UNASSIGNED,		/* end */
394	F_UNASSIGNED,		/* home */
395	F_UNASSIGNED,		/* LEFT */
396	F_UNASSIGNED,		/* UP */
397	F_UNASSIGNED,		/* RIGHT */
398	F_UNASSIGNED,		/* DOWN */
399	F_UNASSIGNED,		/* INS */
400	F_UNASSIGNED,		/* DEL */
401	/* shift key mappings */
402	F_UNASSIGNED,		/* f-1 */
403	F_UNASSIGNED,		/* f-2 */
404	F_UNASSIGNED,		/* f-3 */
405	F_UNASSIGNED,		/* f-4 */
406	F_UNASSIGNED,		/* f-5 */
407	F_UNASSIGNED,		/* f-6 */
408	F_UNASSIGNED,		/* f-7 */
409	F_UNASSIGNED,		/* f-8 */
410	F_UNASSIGNED,		/* f-9 */
411	F_UNASSIGNED,		/* f-10 */
412	F_UNASSIGNED,		/* f-11 */
413	F_UNASSIGNED,		/* f-12 */
414	F_UNASSIGNED,		/* f-13 */
415	F_UNASSIGNED,		/* f-14 */
416	F_UNASSIGNED,		/* f-15 */
417	F_UNASSIGNED,		/* f-16 */
418	F_UNASSIGNED,		/* f-17 */
419	F_UNASSIGNED,		/* f-18 */
420	F_UNASSIGNED,		/* f-19 */
421	F_UNASSIGNED,		/* f-20 */
422	F_UNASSIGNED,		/* f-21 */
423	F_UNASSIGNED,		/* f-22 */
424	F_UNASSIGNED,		/* f-23 */
425	F_UNASSIGNED,		/* f-24 */
426	F_UNASSIGNED,		/* PgUp */
427	F_UNASSIGNED,		/* PgDn */
428	F_UNASSIGNED,		/* end */
429	F_UNASSIGNED,		/* home */
430	F_UNASSIGNED,		/* LEFT */
431	F_UNASSIGNED,		/* UP */
432	F_UNASSIGNED,		/* RIGHT */
433	F_UNASSIGNED,		/* DOWN */
434	F_UNASSIGNED,		/* INS */
435	F_UNASSIGNED		/* DEL */
436};
437
438/*
439 * keymap table for vi.  Each index into above tbl; should be
440 * 256 entries long.  Vi mode uses a sticky-extend to do command mode:
441 * insert mode characters are in the normal keymap, and command mode
442 * in the extended keymap.
443 */
444KEYCMD  CcViMap[] = {
445#ifdef KSHVI
446	F_UNASSIGNED,		/* ^@ */
447	F_INSERT,			/* ^A */
448	F_INSERT,			/* ^B */
449	F_INSERT,			/* ^C */
450	F_INSERT,			/* ^D */
451	F_INSERT,			/* ^E */
452	F_INSERT,			/* ^F */
453	F_INSERT,			/* ^G */
454	V_DELPREV,			/* ^H */   /* BackSpace key */
455	F_COMPLETE,			/* ^I */   /* Tab Key  */
456	F_NEWLINE,			/* ^J */
457	F_INSERT,			/* ^K */
458	F_INSERT,			/* ^L */
459	F_NEWLINE,			/* ^M */
460	F_INSERT,			/* ^N */
461	F_INSERT,			/* ^O */
462	F_INSERT,			/* ^P */
463	F_TTY_STARTO,		/* ^Q */
464	F_INSERT,			/* ^R */
465	F_INSERT,			/* ^S */
466	F_INSERT,			/* ^T */
467	F_INSERT,			/* ^U */
468	F_QUOTE,			/* ^V */
469	F_DELWORDPREV,		/* ^W */  /* Only until start edit pos */
470	F_INSERT,			/* ^X */
471	F_INSERT,			/* ^Y */
472	F_INSERT,			/* ^Z */
473	V_CMD_MODE,			/* ^[ */  /* [ Esc ] key */
474	F_TTY_QUIT,			/* ^\ */
475	F_INSERT,			/* ^] */
476	F_INSERT,			/* ^^ */
477	F_INSERT,			/* ^_ */
478#else /* !KSHVI */
479	F_UNASSIGNED,		/* ^@ */   /* NOTE: These mapping do NOT */
480	F_TOBEG,			/* ^A */   /* Correspond well to the KSH */
481	F_CHARBACK,			/* ^B */   /* VI editting assignments    */
482	F_TTY_INT,			/* ^C */   /* On the other hand they are */
483	F_LIST_EOF,			/* ^D */   /* convenient any many people */
484	F_TOEND,			/* ^E */   /* have gotten used to them   */
485	F_CHARFWD,			/* ^F */
486	F_LIST_GLOB,		/* ^G */
487	F_DELPREV,			/* ^H */   /* BackSpace key */
488	F_COMPLETE,			/* ^I */   /* Tab Key */
489	F_NEWLINE,			/* ^J */
490	F_KILLEND,			/* ^K */
491	F_CLEARDISP,		/* ^L */
492	F_NEWLINE,			/* ^M */
493	F_DOWN_HIST,		/* ^N */
494	F_TTY_FLUSHO,		/* ^O */
495	F_UP_HIST,			/* ^P */
496	F_TTY_STARTO,		/* ^Q */
497	F_REDISP,			/* ^R */
498	F_TTY_STOPO,		/* ^S */
499	F_CHARSWITCH,		/* ^T */
500	F_KILLBEG,			/* ^U */
501	F_QUOTE,			/* ^V */
502	F_DELWORDPREV,		/* ^W */
503	F_EXPAND,			/* ^X */
504	F_TTY_DSUSP,		/* ^Y */
505	F_TTY_TSUSP,		/* ^Z */
506	V_CMD_MODE,			/* ^[ */
507	F_TTY_QUIT,			/* ^\ */
508	F_UNASSIGNED,		/* ^] */
509	F_UNASSIGNED,		/* ^^ */
510	F_UNASSIGNED,		/* ^_ */
511#endif  /* KSHVI */
512	F_INSERT,			/* SPACE */
513	F_INSERT,			/* ! */
514	F_INSERT,			/* " */
515	F_INSERT,			/* # */
516	F_INSERT,			/* $ */
517	F_INSERT,			/* % */
518	F_INSERT,			/* & */
519	F_INSERT,			/* ' */
520	F_INSERT,			/* ( */
521	F_INSERT,			/* ) */
522	F_INSERT,			/* * */
523	F_INSERT,			/* + */
524	F_INSERT,			/* , */
525	F_INSERT,			/* - */
526	F_INSERT,			/* . */
527	F_INSERT,			/* / */
528	F_INSERT,			/* 0 */
529	F_INSERT,			/* 1 */
530	F_INSERT,			/* 2 */
531	F_INSERT,			/* 3 */
532	F_INSERT,			/* 4 */
533	F_INSERT,			/* 5 */
534	F_INSERT,			/* 6 */
535	F_INSERT,			/* 7 */
536	F_INSERT,			/* 8 */
537	F_INSERT,			/* 9 */
538	F_INSERT,			/* : */
539	F_INSERT,			/* ; */
540	F_INSERT,			/* < */
541	F_INSERT,			/* = */
542	F_INSERT,			/* > */
543	F_INSERT,			/* ? */
544	F_INSERT,			/* @ */
545	F_INSERT,			/* A */
546	F_INSERT,			/* B */
547	F_INSERT,			/* C */
548	F_INSERT,			/* D */
549	F_INSERT,			/* E */
550	F_INSERT,			/* F */
551	F_INSERT,			/* G */
552	F_INSERT,			/* H */
553	F_INSERT,			/* I */
554	F_INSERT,			/* J */
555	F_INSERT,			/* K */
556	F_INSERT,			/* L */
557	F_INSERT,			/* M */
558	F_INSERT,			/* N */
559	F_INSERT,			/* O */
560	F_INSERT,			/* P */
561	F_INSERT,			/* Q */
562	F_INSERT,			/* R */
563	F_INSERT,			/* S */
564	F_INSERT,			/* T */
565	F_INSERT,			/* U */
566	F_INSERT,			/* V */
567	F_INSERT,			/* W */
568	F_INSERT,			/* X */
569	F_INSERT,			/* Y */
570	F_INSERT,			/* Z */
571	F_INSERT,			/* [ */
572	F_INSERT,			/* \ */
573	F_INSERT,			/* ] */
574	F_INSERT,			/* ^ */
575	F_INSERT,			/* _ */
576	F_INSERT,			/* ` */
577	F_INSERT,			/* a */
578	F_INSERT,			/* b */
579	F_INSERT,			/* c */
580	F_INSERT,			/* d */
581	F_INSERT,			/* e */
582	F_INSERT,			/* f */
583	F_INSERT,			/* g */
584	F_INSERT,			/* h */
585	F_INSERT,			/* i */
586	F_INSERT,			/* j */
587	F_INSERT,			/* k */
588	F_INSERT,			/* l */
589	F_INSERT,			/* m */
590	F_INSERT,			/* n */
591	F_INSERT,			/* o */
592	F_INSERT,			/* p */
593	F_INSERT,			/* q */
594	F_INSERT,			/* r */
595	F_INSERT,			/* s */
596	F_INSERT,			/* t */
597	F_INSERT,			/* u */
598	F_INSERT,			/* v */
599	F_INSERT,			/* w */
600	F_INSERT,			/* x */
601	F_INSERT,			/* y */
602	F_INSERT,			/* z */
603	F_INSERT,			/* { */
604	F_INSERT,			/* | */
605	F_INSERT,			/* } */
606	F_INSERT,			/* ~ */
607	F_DELPREV,			/* ^? */
608	F_UNASSIGNED,		/* M-^@ */
609	F_UNASSIGNED,		/* M-^A */
610	F_UNASSIGNED,		/* M-^B */
611	F_UNASSIGNED,		/* M-^C */
612	F_UNASSIGNED,		/* M-^D */
613	F_UNASSIGNED,		/* M-^E */
614	F_UNASSIGNED,		/* M-^F */
615	F_UNASSIGNED,		/* M-^G */
616	F_UNASSIGNED,		/* M-^H */
617	F_UNASSIGNED,		/* M-^I */
618	F_UNASSIGNED,		/* M-^J */
619	F_UNASSIGNED,		/* M-^K */
620	F_UNASSIGNED,		/* M-^L */
621	F_UNASSIGNED,		/* M-^M */
622	F_UNASSIGNED,		/* M-^N */
623	F_UNASSIGNED,		/* M-^O */
624	F_UNASSIGNED,		/* M-^P */
625	F_UNASSIGNED,		/* M-^Q */
626	F_UNASSIGNED,		/* M-^R */
627	F_UNASSIGNED,		/* M-^S */
628	F_UNASSIGNED,		/* M-^T */
629	F_UNASSIGNED,		/* M-^U */
630	F_UNASSIGNED,		/* M-^V */
631	F_UNASSIGNED,		/* M-^W */
632	F_UNASSIGNED,		/* M-^X */
633	F_UNASSIGNED,		/* M-^Y */
634	F_UNASSIGNED,		/* M-^Z */
635	F_UNASSIGNED,		/* M-^[ */
636	F_UNASSIGNED,		/* M-^\ */
637	F_UNASSIGNED,		/* M-^] */
638	F_UNASSIGNED,		/* M-^^ */
639	F_UNASSIGNED,		/* M-^_ */
640	F_UNASSIGNED,		/* M-SPACE */
641	F_UNASSIGNED,		/* M-! */
642	F_UNASSIGNED,		/* M-" */
643	F_UNASSIGNED,		/* M-# */
644	F_UNASSIGNED,		/* M-$ */
645	F_UNASSIGNED,		/* M-% */
646	F_UNASSIGNED,		/* M-& */
647	F_UNASSIGNED,		/* M-' */
648	F_UNASSIGNED,		/* M-( */
649	F_UNASSIGNED,		/* M-) */
650	F_UNASSIGNED,		/* M-* */
651	F_UNASSIGNED,		/* M-+ */
652	F_UNASSIGNED,		/* M-, */
653	F_UNASSIGNED,		/* M-- */
654	F_UNASSIGNED,		/* M-. */
655	F_UNASSIGNED,		/* M-/ */
656	F_UNASSIGNED,		/* M-0 */
657	F_UNASSIGNED,		/* M-1 */
658	F_UNASSIGNED,		/* M-2 */
659	F_UNASSIGNED,		/* M-3 */
660	F_UNASSIGNED,		/* M-4 */
661	F_UNASSIGNED,		/* M-5 */
662	F_UNASSIGNED,		/* M-6 */
663	F_UNASSIGNED,		/* M-7 */
664	F_UNASSIGNED,		/* M-8 */
665	F_UNASSIGNED,		/* M-9 */
666	F_UNASSIGNED,		/* M-: */
667	F_UNASSIGNED,		/* M-; */
668	F_UNASSIGNED,		/* M-< */
669	F_UNASSIGNED,		/* M-= */
670	F_UNASSIGNED,		/* M-> */
671	F_UNASSIGNED,		/* M-? */
672	F_UNASSIGNED,		/* M-@ */
673	F_UNASSIGNED,		/* M-A */
674	F_UNASSIGNED,		/* M-B */
675	F_UNASSIGNED,		/* M-C */
676	F_UNASSIGNED,		/* M-D */
677	F_UNASSIGNED,		/* M-E */
678	F_UNASSIGNED,		/* M-F */
679	F_UNASSIGNED,		/* M-G */
680	F_UNASSIGNED,		/* M-H */
681	F_UNASSIGNED,		/* M-I */
682	F_UNASSIGNED,		/* M-J */
683	F_UNASSIGNED,		/* M-K */
684	F_UNASSIGNED,		/* M-L */
685	F_UNASSIGNED,		/* M-M */
686	F_UNASSIGNED,		/* M-N */
687	F_UNASSIGNED,		/* M-O */
688	F_UNASSIGNED,		/* M-P */
689	F_UNASSIGNED,		/* M-Q */
690	F_UNASSIGNED,		/* M-R */
691	F_UNASSIGNED,		/* M-S */
692	F_UNASSIGNED,		/* M-T */
693	F_UNASSIGNED,		/* M-U */
694	F_UNASSIGNED,		/* M-V */
695	F_UNASSIGNED,		/* M-W */
696	F_UNASSIGNED,		/* M-X */
697	F_UNASSIGNED,		/* M-Y */
698	F_UNASSIGNED,		/* M-Z */
699	F_UNASSIGNED,		/* M-[ */
700	F_UNASSIGNED,		/* M-\ */
701	F_UNASSIGNED,		/* M-] */
702	F_UNASSIGNED,		/* M-^ */
703	F_UNASSIGNED,		/* M-_ */
704	F_UNASSIGNED,		/* M-` */
705	F_UNASSIGNED,		/* M-a */
706	F_UNASSIGNED,		/* M-b */
707	F_UNASSIGNED,		/* M-c */
708	F_UNASSIGNED,		/* M-d */
709	F_UNASSIGNED,		/* M-e */
710	F_UNASSIGNED,		/* M-f */
711	F_UNASSIGNED,		/* M-g */
712	F_UNASSIGNED,		/* M-h */
713	F_UNASSIGNED,		/* M-i */
714	F_UNASSIGNED,		/* M-j */
715	F_UNASSIGNED,		/* M-k */
716	F_UNASSIGNED,		/* M-l */
717	F_UNASSIGNED,		/* M-m */
718	F_UNASSIGNED,		/* M-n */
719	F_UNASSIGNED,		/* M-o */
720	F_UNASSIGNED,		/* M-p */
721	F_UNASSIGNED,		/* M-q */
722	F_UNASSIGNED,		/* M-r */
723	F_UNASSIGNED,		/* M-s */
724	F_UNASSIGNED,		/* M-t */
725	F_UNASSIGNED,		/* M-u */
726	F_UNASSIGNED,		/* M-v */
727	F_UNASSIGNED,		/* M-w */
728	F_UNASSIGNED,		/* M-x */
729	F_UNASSIGNED,		/* M-y */
730	F_UNASSIGNED,		/* M-z */
731	F_UNASSIGNED,		/* M-{ */
732	F_UNASSIGNED,		/* M-| */
733	F_UNASSIGNED,		/* M-} */
734	F_UNASSIGNED,		/* M-~ */
735	F_UNASSIGNED,		/* M-^? */
736	/* Extra keys begin here */
737	F_UNASSIGNED,		/* f-1 */
738	F_UNASSIGNED,		/* f-2 */
739	F_UNASSIGNED,		/* f-3 */
740	F_UNASSIGNED,		/* f-4 */
741	F_UNASSIGNED,		/* f-5 */
742	F_UNASSIGNED,		/* f-6 */
743	F_UNASSIGNED,		/* f-7 */
744	F_UNASSIGNED,		/* f-8 */
745	F_UNASSIGNED,		/* f-9 */
746	F_UNASSIGNED,		/* f-10 */
747	F_UNASSIGNED,		/* f-11 */
748	F_UNASSIGNED,		/* f-12 */
749	F_UNASSIGNED,		/* f-13 */
750	F_UNASSIGNED,		/* f-14 */
751	F_UNASSIGNED,		/* f-15 */
752	F_UNASSIGNED,		/* f-16 */
753	F_UNASSIGNED,		/* f-17 */
754	F_UNASSIGNED,		/* f-18 */
755	F_UNASSIGNED,		/* f-19 */
756	F_UNASSIGNED,		/* f-20 */
757	F_UNASSIGNED,		/* f-21 */
758	F_UNASSIGNED,		/* f-22 */
759	F_UNASSIGNED,		/* f-23 */
760	F_UNASSIGNED,		/* f-24 */
761	F_UNASSIGNED,		/* PgUp */
762	F_UNASSIGNED,		/* PgDn */
763	F_UNASSIGNED,		/* end */
764	F_UNASSIGNED,		/* home */
765	F_UNASSIGNED,		/* LEFT */
766	F_UNASSIGNED,		/* UP */
767	F_UNASSIGNED,		/* RIGHT */
768	F_UNASSIGNED,		/* DOWN */
769	F_UNASSIGNED,		/* INS */
770	F_UNASSIGNED,		/* DEL */
771	/* ctrl key mappings */
772	F_UNASSIGNED,		/* f-1 */
773	F_UNASSIGNED,		/* f-2 */
774	F_UNASSIGNED,		/* f-3 */
775	F_UNASSIGNED,		/* f-4 */
776	F_UNASSIGNED,		/* f-5 */
777	F_UNASSIGNED,		/* f-6 */
778	F_UNASSIGNED,		/* f-7 */
779	F_UNASSIGNED,		/* f-8 */
780	F_UNASSIGNED,		/* f-9 */
781	F_UNASSIGNED,		/* f-10 */
782	F_UNASSIGNED,		/* f-11 */
783	F_UNASSIGNED,		/* f-12 */
784	F_UNASSIGNED,		/* f-13 */
785	F_UNASSIGNED,		/* f-14 */
786	F_UNASSIGNED,		/* f-15 */
787	F_UNASSIGNED,		/* f-16 */
788	F_UNASSIGNED,		/* f-17 */
789	F_UNASSIGNED,		/* f-18 */
790	F_UNASSIGNED,		/* f-19 */
791	F_UNASSIGNED,		/* f-20 */
792	F_UNASSIGNED,		/* f-21 */
793	F_UNASSIGNED,		/* f-22 */
794	F_UNASSIGNED,		/* f-23 */
795	F_UNASSIGNED,		/* f-24 */
796	F_UNASSIGNED,		/* PgUp */
797	F_UNASSIGNED,		/* PgDn */
798	F_UNASSIGNED,		/* end */
799	F_UNASSIGNED,		/* home */
800	F_UNASSIGNED,		/* LEFT */
801	F_UNASSIGNED,		/* UP */
802	F_UNASSIGNED,		/* RIGHT */
803	F_UNASSIGNED,		/* DOWN */
804	F_UNASSIGNED,		/* INS */
805	F_UNASSIGNED,		/* DEL */
806
807	/* alt key mappings */
808	F_UNASSIGNED,		/* f-1 */
809	F_UNASSIGNED,		/* f-2 */
810	F_UNASSIGNED,		/* f-3 */
811	F_UNASSIGNED,		/* f-4 */
812	F_UNASSIGNED,		/* f-5 */
813	F_UNASSIGNED,		/* f-6 */
814	F_UNASSIGNED,		/* f-7 */
815	F_UNASSIGNED,		/* f-8 */
816	F_UNASSIGNED,		/* f-9 */
817	F_UNASSIGNED,		/* f-10 */
818	F_UNASSIGNED,		/* f-11 */
819	F_UNASSIGNED,		/* f-12 */
820	F_UNASSIGNED,		/* f-13 */
821	F_UNASSIGNED,		/* f-14 */
822	F_UNASSIGNED,		/* f-15 */
823	F_UNASSIGNED,		/* f-16 */
824	F_UNASSIGNED,		/* f-17 */
825	F_UNASSIGNED,		/* f-18 */
826	F_UNASSIGNED,		/* f-19 */
827	F_UNASSIGNED,		/* f-20 */
828	F_UNASSIGNED,		/* f-21 */
829	F_UNASSIGNED,		/* f-22 */
830	F_UNASSIGNED,		/* f-23 */
831	F_UNASSIGNED,		/* f-24 */
832	F_UNASSIGNED,		/* PgUp */
833	F_UNASSIGNED,		/* PgDn */
834	F_UNASSIGNED,		/* end */
835	F_UNASSIGNED,		/* home */
836	F_UNASSIGNED,		/* LEFT */
837	F_UNASSIGNED,		/* UP */
838	F_UNASSIGNED,		/* RIGHT */
839	F_UNASSIGNED,		/* DOWN */
840	F_UNASSIGNED,		/* INS */
841	F_UNASSIGNED,		/* DEL */
842	/* shift key mappings */
843	F_UNASSIGNED,		/* f-1 */
844	F_UNASSIGNED,		/* f-2 */
845	F_UNASSIGNED,		/* f-3 */
846	F_UNASSIGNED,		/* f-4 */
847	F_UNASSIGNED,		/* f-5 */
848	F_UNASSIGNED,		/* f-6 */
849	F_UNASSIGNED,		/* f-7 */
850	F_UNASSIGNED,		/* f-8 */
851	F_UNASSIGNED,		/* f-9 */
852	F_UNASSIGNED,		/* f-10 */
853	F_UNASSIGNED,		/* f-11 */
854	F_UNASSIGNED,		/* f-12 */
855	F_UNASSIGNED,		/* f-13 */
856	F_UNASSIGNED,		/* f-14 */
857	F_UNASSIGNED,		/* f-15 */
858	F_UNASSIGNED,		/* f-16 */
859	F_UNASSIGNED,		/* f-17 */
860	F_UNASSIGNED,		/* f-18 */
861	F_UNASSIGNED,		/* f-19 */
862	F_UNASSIGNED,		/* f-20 */
863	F_UNASSIGNED,		/* f-21 */
864	F_UNASSIGNED,		/* f-22 */
865	F_UNASSIGNED,		/* f-23 */
866	F_UNASSIGNED,		/* f-24 */
867	F_UNASSIGNED,		/* PgUp */
868	F_UNASSIGNED,		/* PgDn */
869	F_UNASSIGNED,		/* end */
870	F_UNASSIGNED,		/* home */
871	F_UNASSIGNED,		/* LEFT */
872	F_UNASSIGNED,		/* UP */
873	F_UNASSIGNED,		/* RIGHT */
874	F_UNASSIGNED,		/* DOWN */
875	F_UNASSIGNED,		/* INS */
876	F_UNASSIGNED		/* DEL */
877};
878
879KEYCMD  CcViCmdMap[] = {
880	F_UNASSIGNED,		/* ^@ */
881	F_TOBEG,			/* ^A */
882	F_UNASSIGNED,		/* ^B */
883	F_TTY_INT,			/* ^C */
884	F_LIST_CHOICES,		/* ^D */
885	F_TOEND,			/* ^E */
886	F_UNASSIGNED,		/* ^F */
887	F_LIST_GLOB,		/* ^G */
888	F_CHARBACK,			/* ^H */
889	V_CM_COMPLETE,		/* ^I */
890	F_NEWLINE,			/* ^J */
891	F_KILLEND,			/* ^K */
892	F_CLEARDISP,		/* ^L */
893	F_NEWLINE,			/* ^M */
894	F_DOWN_HIST,		/* ^N */
895	F_TTY_FLUSHO,		/* ^O */
896	F_UP_HIST,			/* ^P */
897	F_TTY_STARTO,		/* ^Q */
898	F_REDISP,			/* ^R */
899	F_TTY_STOPO,		/* ^S */
900	F_UNASSIGNED,		/* ^T */
901	F_KILLBEG,			/* ^U */
902	F_UNASSIGNED,		/* ^V */
903	F_DELWORDPREV,		/* ^W */
904	F_EXPAND,			/* ^X */
905	F_UNASSIGNED,		/* ^Y */
906	F_UNASSIGNED,		/* ^Z */
907	F_METANEXT,			/* ^[ */
908	F_TTY_QUIT,			/* ^\ */
909	F_UNASSIGNED,		/* ^] */
910	F_UNASSIGNED,		/* ^^ */
911	F_UNASSIGNED,		/* ^_ */
912	F_CHARFWD,			/* SPACE */
913	F_EXPAND_HISTORY,		/* ! */
914	F_UNASSIGNED,		/* " */
915	F_UNASSIGNED,		/* # */
916	F_TOEND,			/* $ */
917	F_UNASSIGNED,		/* % */
918	F_UNASSIGNED,		/* & */
919	F_UNASSIGNED,		/* ' */
920	F_UNASSIGNED,		/* ( */
921	F_UNASSIGNED,		/* ) */
922	F_EXPAND_GLOB,		/* * */
923	F_DOWN_HIST,		/* + */
924	V_RCHAR_BACK,		/* , */
925	F_UP_HIST,			/* - */
926	F_UNASSIGNED,		/* . */
927	V_DSH_META,			/* / */
928	V_ZERO,			/* 0 */
929	F_ARGDIGIT,			/* 1 */
930	F_ARGDIGIT,			/* 2 */
931	F_ARGDIGIT,			/* 3 */
932	F_ARGDIGIT,			/* 4 */
933	F_ARGDIGIT,			/* 5 */
934	F_ARGDIGIT,			/* 6 */
935	F_ARGDIGIT,			/* 7 */
936	F_ARGDIGIT,			/* 8 */
937	F_ARGDIGIT,			/* 9 */
938	F_UNASSIGNED,		/* : */
939	V_RCHAR_FWD,		/* ; */
940	F_UNASSIGNED,		/* < */
941	F_UNASSIGNED,		/* = */
942	F_UNASSIGNED,		/* > */
943	V_USH_META,			/* ? */
944	F_UNASSIGNED,		/* @ */
945	V_ADDEND,			/* A */
946	V_WORDBACK,			/* B */
947	V_CHGTOEND,			/* C */
948	F_KILLEND,			/* D */
949	V_ENDWORD,			/* E */
950	V_CHAR_BACK,		/* F */
951	F_UNASSIGNED,		/* G */
952	F_UNASSIGNED,		/* H */
953	V_INSBEG,			/* I */
954	F_DOWN_SEARCH_HIST,		/* J */
955	F_UP_SEARCH_HIST,		/* K */
956	F_UNASSIGNED,		/* L */
957	F_UNASSIGNED,		/* M */
958	V_RSRCH_BACK,		/* N */
959	F_XKEY,			/* O */
960	F_UNASSIGNED,		/* P */
961	F_UNASSIGNED,		/* Q */
962	V_REPLMODE,			/* R */
963	V_SUBSTLINE,		/* S */
964	V_CHARTO_BACK,		/* T */
965	F_UNASSIGNED,		/* U */
966	F_EXPAND_VARS,		/* V */
967	V_WORDFWD,			/* W */
968	F_DELPREV,			/* X */
969	F_UNASSIGNED,		/* Y */
970	F_UNASSIGNED,		/* Z */
971	F_XKEY,			/* [ */
972	F_UNASSIGNED,		/* \ */
973	F_UNASSIGNED,		/* ] */
974	F_TOBEG,			/* ^ */
975	F_UNASSIGNED,		/* _ */
976	F_UNASSIGNED,		/* ` */
977	V_ADD,			/* a */
978	F_WORDBACK,			/* b */
979	V_CHGMETA,			/* c */
980	V_DELMETA,			/* d */
981	V_EWORD,			/* e */
982	V_CHAR_FWD,			/* f */
983	F_UNASSIGNED,		/* g */
984	F_CHARBACK,			/* h */
985	V_INSERT,			/* i */
986	F_DOWN_HIST,		/* j */
987	F_UP_HIST,			/* k */
988	F_CHARFWD,			/* l */
989	F_UNASSIGNED,		/* m */
990	V_RSRCH_FWD,		/* n */
991	F_UNASSIGNED,		/* o */
992	F_UNASSIGNED,		/* p */
993	F_UNASSIGNED,		/* q */
994	V_REPLONE,			/* r */
995	V_SUBSTCHAR,		/* s */
996	V_CHARTO_FWD,		/* t */
997	V_UNDO,			/* u */
998	F_EXPAND_VARS,		/* v */
999	V_WORDBEGNEXT,		/* w */
1000	F_DELNEXT_EOF,		/* x */
1001	F_UNASSIGNED,		/* y */
1002	F_UNASSIGNED,		/* z */
1003	F_UNASSIGNED,		/* { */
1004	F_UNASSIGNED,		/* | */
1005	F_UNASSIGNED,		/* } */
1006	V_CHGCASE,			/* ~ */
1007	F_DELPREV,			/* ^? */
1008	F_UNASSIGNED,		/* M-^@ */
1009	F_UNASSIGNED,		/* M-^A */
1010	F_UNASSIGNED,		/* M-^B */
1011	F_UNASSIGNED,		/* M-^C */
1012	F_UNASSIGNED,		/* M-^D */
1013	F_UNASSIGNED,		/* M-^E */
1014	F_UNASSIGNED,		/* M-^F */
1015	F_UNASSIGNED,		/* M-^G */
1016	F_UNASSIGNED,		/* M-^H */
1017	F_UNASSIGNED,		/* M-^I */
1018	F_UNASSIGNED,		/* M-^J */
1019	F_UNASSIGNED,		/* M-^K */
1020	F_UNASSIGNED,		/* M-^L */
1021	F_UNASSIGNED,		/* M-^M */
1022	F_UNASSIGNED,		/* M-^N */
1023	F_UNASSIGNED,		/* M-^O */
1024	F_UNASSIGNED,		/* M-^P */
1025	F_UNASSIGNED,		/* M-^Q */
1026	F_UNASSIGNED,		/* M-^R */
1027	F_UNASSIGNED,		/* M-^S */
1028	F_UNASSIGNED,		/* M-^T */
1029	F_UNASSIGNED,		/* M-^U */
1030	F_UNASSIGNED,		/* M-^V */
1031	F_UNASSIGNED,		/* M-^W */
1032	F_UNASSIGNED,		/* M-^X */
1033	F_UNASSIGNED,		/* M-^Y */
1034	F_UNASSIGNED,		/* M-^Z */
1035	F_UNASSIGNED,		/* M-^[ */
1036	F_UNASSIGNED,		/* M-^\ */
1037	F_UNASSIGNED,		/* M-^] */
1038	F_UNASSIGNED,		/* M-^^ */
1039	F_UNASSIGNED,		/* M-^_ */
1040	F_UNASSIGNED,		/* M-SPACE */
1041	F_UNASSIGNED,		/* M-! */
1042	F_UNASSIGNED,		/* M-" */
1043	F_UNASSIGNED,		/* M-# */
1044	F_UNASSIGNED,		/* M-$ */
1045	F_UNASSIGNED,		/* M-% */
1046	F_UNASSIGNED,		/* M-& */
1047	F_UNASSIGNED,		/* M-' */
1048	F_UNASSIGNED,		/* M-( */
1049	F_UNASSIGNED,		/* M-) */
1050	F_UNASSIGNED,		/* M-* */
1051	F_UNASSIGNED,		/* M-+ */
1052	F_UNASSIGNED,		/* M-, */
1053	F_UNASSIGNED,		/* M-- */
1054	F_UNASSIGNED,		/* M-. */
1055	F_UNASSIGNED,		/* M-/ */
1056	F_UNASSIGNED,		/* M-0 */
1057	F_UNASSIGNED,		/* M-1 */
1058	F_UNASSIGNED,		/* M-2 */
1059	F_UNASSIGNED,		/* M-3 */
1060	F_UNASSIGNED,		/* M-4 */
1061	F_UNASSIGNED,		/* M-5 */
1062	F_UNASSIGNED,		/* M-6 */
1063	F_UNASSIGNED,		/* M-7 */
1064	F_UNASSIGNED,		/* M-8 */
1065	F_UNASSIGNED,		/* M-9 */
1066	F_UNASSIGNED,		/* M-: */
1067	F_UNASSIGNED,		/* M-; */
1068	F_UNASSIGNED,		/* M-< */
1069	F_UNASSIGNED,		/* M-= */
1070	F_UNASSIGNED,		/* M-> */
1071	F_HELPME,			/* M-? */
1072	F_UNASSIGNED,		/* M-@ */
1073	F_UNASSIGNED,		/* M-A */
1074	F_UNASSIGNED,		/* M-B */
1075	F_UNASSIGNED,		/* M-C */
1076	F_UNASSIGNED,		/* M-D */
1077	F_UNASSIGNED,		/* M-E */
1078	F_UNASSIGNED,		/* M-F */
1079	F_UNASSIGNED,		/* M-G */
1080	F_UNASSIGNED,		/* M-H */
1081	F_UNASSIGNED,		/* M-I */
1082	F_UNASSIGNED,		/* M-J */
1083	F_UNASSIGNED,		/* M-K */
1084	F_UNASSIGNED,		/* M-L */
1085	F_UNASSIGNED,		/* M-M */
1086	F_UNASSIGNED,		/* M-N */
1087	F_XKEY,			/* M-O *//* extended key esc PWP Mar 88 */
1088	F_UNASSIGNED,		/* M-P */
1089	F_UNASSIGNED,		/* M-Q */
1090	F_UNASSIGNED,		/* M-R */
1091	F_UNASSIGNED,		/* M-S */
1092	F_UNASSIGNED,		/* M-T */
1093	F_UNASSIGNED,		/* M-U */
1094	F_UNASSIGNED,		/* M-V */
1095	F_UNASSIGNED,		/* M-W */
1096	F_UNASSIGNED,		/* M-X */
1097	F_UNASSIGNED,		/* M-Y */
1098	F_UNASSIGNED,		/* M-Z */
1099	F_XKEY,			/* M-[ *//* extended key esc -mf Oct 87 */
1100	F_UNASSIGNED,		/* M-\ */
1101	F_UNASSIGNED,		/* M-] */
1102	F_UNASSIGNED,		/* M-^ */
1103	F_UNASSIGNED,		/* M-_ */
1104	F_UNASSIGNED,		/* M-` */
1105	F_UNASSIGNED,		/* M-a */
1106	F_UNASSIGNED,		/* M-b */
1107	F_UNASSIGNED,		/* M-c */
1108	F_UNASSIGNED,		/* M-d */
1109	F_UNASSIGNED,		/* M-e */
1110	F_UNASSIGNED,		/* M-f */
1111	F_UNASSIGNED,		/* M-g */
1112	F_UNASSIGNED,		/* M-h */
1113	F_UNASSIGNED,		/* M-i */
1114	F_UNASSIGNED,		/* M-j */
1115	F_UNASSIGNED,		/* M-k */
1116	F_UNASSIGNED,		/* M-l */
1117	F_UNASSIGNED,		/* M-m */
1118	F_UNASSIGNED,		/* M-n */
1119	F_UNASSIGNED,		/* M-o */
1120	F_UNASSIGNED,		/* M-p */
1121	F_UNASSIGNED,		/* M-q */
1122	F_UNASSIGNED,		/* M-r */
1123	F_UNASSIGNED,		/* M-s */
1124	F_UNASSIGNED,		/* M-t */
1125	F_UNASSIGNED,		/* M-u */
1126	F_UNASSIGNED,		/* M-v */
1127	F_UNASSIGNED,		/* M-w */
1128	F_UNASSIGNED,		/* M-x */
1129	F_UNASSIGNED,		/* M-y */
1130	F_UNASSIGNED,		/* M-z */
1131	F_UNASSIGNED,		/* M-{ */
1132	F_UNASSIGNED,		/* M-| */
1133	F_UNASSIGNED,		/* M-} */
1134	F_UNASSIGNED,		/* M-~ */
1135	F_UNASSIGNED,		/* M-^? */
1136	/* extra keys begin here */
1137	F_UNASSIGNED,		/* f-1 */
1138	F_UNASSIGNED,		/* f-2 */
1139	F_UNASSIGNED,		/* f-3 */
1140	F_UNASSIGNED,		/* f-4 */
1141	F_UNASSIGNED,		/* f-5 */
1142	F_UNASSIGNED,		/* f-6 */
1143	F_UNASSIGNED,		/* f-7 */
1144	F_UNASSIGNED,		/* f-8 */
1145	F_UNASSIGNED,		/* f-9 */
1146	F_UNASSIGNED,		/* f-10 */
1147	F_UNASSIGNED,		/* f-11 */
1148	F_UNASSIGNED,		/* f-12 */
1149	F_UNASSIGNED,		/* f-13 */
1150	F_UNASSIGNED,		/* f-14 */
1151	F_UNASSIGNED,		/* f-15 */
1152	F_UNASSIGNED,		/* f-16 */
1153	F_UNASSIGNED,		/* f-17 */
1154	F_UNASSIGNED,		/* f-18 */
1155	F_UNASSIGNED,		/* f-19 */
1156	F_UNASSIGNED,		/* f-20 */
1157	F_UNASSIGNED,		/* f-21 */
1158	F_UNASSIGNED,		/* f-22 */
1159	F_UNASSIGNED,		/* f-23 */
1160	F_UNASSIGNED,		/* f-24 */
1161	F_UNASSIGNED,		/* PgUp */
1162	F_UNASSIGNED,		/* PgDn */
1163	F_UNASSIGNED,		/* end */
1164	F_UNASSIGNED,		/* home */
1165	F_UNASSIGNED,		/* LEFT */
1166	F_UNASSIGNED,		/* UP */
1167	F_UNASSIGNED,		/* RIGHT */
1168	F_UNASSIGNED,		/* DOWN */
1169	F_UNASSIGNED,		/* INS */
1170	F_UNASSIGNED,		/* DEL */
1171
1172	/* ctrl key mappings */
1173	F_UNASSIGNED,		/* f-1 */
1174	F_UNASSIGNED,		/* f-2 */
1175	F_UNASSIGNED,		/* f-3 */
1176	F_UNASSIGNED,		/* f-4 */
1177	F_UNASSIGNED,		/* f-5 */
1178	F_UNASSIGNED,		/* f-6 */
1179	F_UNASSIGNED,		/* f-7 */
1180	F_UNASSIGNED,		/* f-8 */
1181	F_UNASSIGNED,		/* f-9 */
1182	F_UNASSIGNED,		/* f-10 */
1183	F_UNASSIGNED,		/* f-11 */
1184	F_UNASSIGNED,		/* f-12 */
1185	F_UNASSIGNED,		/* f-13 */
1186	F_UNASSIGNED,		/* f-14 */
1187	F_UNASSIGNED,		/* f-15 */
1188	F_UNASSIGNED,		/* f-16 */
1189	F_UNASSIGNED,		/* f-17 */
1190	F_UNASSIGNED,		/* f-18 */
1191	F_UNASSIGNED,		/* f-19 */
1192	F_UNASSIGNED,		/* f-20 */
1193	F_UNASSIGNED,		/* f-21 */
1194	F_UNASSIGNED,		/* f-22 */
1195	F_UNASSIGNED,		/* f-23 */
1196	F_UNASSIGNED,		/* f-24 */
1197	F_UNASSIGNED,		/* PgUp */
1198	F_UNASSIGNED,		/* PgDn */
1199	F_UNASSIGNED,		/* end */
1200	F_UNASSIGNED,		/* home */
1201	F_UNASSIGNED,		/* LEFT */
1202	F_UNASSIGNED,		/* UP */
1203	F_UNASSIGNED,		/* RIGHT */
1204	F_UNASSIGNED,		/* DOWN */
1205	F_UNASSIGNED,		/* INS */
1206	F_UNASSIGNED,		/* DEL */
1207
1208	/* alt key mappings */
1209	F_UNASSIGNED,		/* f-1 */
1210	F_UNASSIGNED,		/* f-2 */
1211	F_UNASSIGNED,		/* f-3 */
1212	F_UNASSIGNED,		/* f-4 */
1213	F_UNASSIGNED,		/* f-5 */
1214	F_UNASSIGNED,		/* f-6 */
1215	F_UNASSIGNED,		/* f-7 */
1216	F_UNASSIGNED,		/* f-8 */
1217	F_UNASSIGNED,		/* f-9 */
1218	F_UNASSIGNED,		/* f-10 */
1219	F_UNASSIGNED,		/* f-11 */
1220	F_UNASSIGNED,		/* f-12 */
1221	F_UNASSIGNED,		/* f-13 */
1222	F_UNASSIGNED,		/* f-14 */
1223	F_UNASSIGNED,		/* f-15 */
1224	F_UNASSIGNED,		/* f-16 */
1225	F_UNASSIGNED,		/* f-17 */
1226	F_UNASSIGNED,		/* f-18 */
1227	F_UNASSIGNED,		/* f-19 */
1228	F_UNASSIGNED,		/* f-20 */
1229	F_UNASSIGNED,		/* f-21 */
1230	F_UNASSIGNED,		/* f-22 */
1231	F_UNASSIGNED,		/* f-23 */
1232	F_UNASSIGNED,		/* f-24 */
1233	F_UNASSIGNED,		/* PgUp */
1234	F_UNASSIGNED,		/* PgDn */
1235	F_UNASSIGNED,		/* end */
1236	F_UNASSIGNED,		/* home */
1237	F_UNASSIGNED,		/* LEFT */
1238	F_UNASSIGNED,		/* UP */
1239	F_UNASSIGNED,		/* RIGHT */
1240	F_UNASSIGNED,		/* DOWN */
1241	F_UNASSIGNED,		/* INS */
1242	F_UNASSIGNED,		/* DEL */
1243	/* shift key mappings */
1244	F_UNASSIGNED,		/* f-1 */
1245	F_UNASSIGNED,		/* f-2 */
1246	F_UNASSIGNED,		/* f-3 */
1247	F_UNASSIGNED,		/* f-4 */
1248	F_UNASSIGNED,		/* f-5 */
1249	F_UNASSIGNED,		/* f-6 */
1250	F_UNASSIGNED,		/* f-7 */
1251	F_UNASSIGNED,		/* f-8 */
1252	F_UNASSIGNED,		/* f-9 */
1253	F_UNASSIGNED,		/* f-10 */
1254	F_UNASSIGNED,		/* f-11 */
1255	F_UNASSIGNED,		/* f-12 */
1256	F_UNASSIGNED,		/* f-13 */
1257	F_UNASSIGNED,		/* f-14 */
1258	F_UNASSIGNED,		/* f-15 */
1259	F_UNASSIGNED,		/* f-16 */
1260	F_UNASSIGNED,		/* f-17 */
1261	F_UNASSIGNED,		/* f-18 */
1262	F_UNASSIGNED,		/* f-19 */
1263	F_UNASSIGNED,		/* f-20 */
1264	F_UNASSIGNED,		/* f-21 */
1265	F_UNASSIGNED,		/* f-22 */
1266	F_UNASSIGNED,		/* f-23 */
1267	F_UNASSIGNED,		/* f-24 */
1268	F_UNASSIGNED,		/* PgUp */
1269	F_UNASSIGNED,		/* PgDn */
1270	F_UNASSIGNED,		/* end */
1271	F_UNASSIGNED,		/* home */
1272	F_UNASSIGNED,		/* LEFT */
1273	F_UNASSIGNED,		/* UP */
1274	F_UNASSIGNED,		/* RIGHT */
1275	F_UNASSIGNED,		/* DOWN */
1276	F_UNASSIGNED,		/* INS */
1277	F_UNASSIGNED		/* DEL */
1278};
1279	static void
1280nt_bad_spec(const Char *keystr)
1281{
1282	xprintf(CGETS(20, 4, "Bad key spec %S\n"), keystr);
1283}
1284extern int lstricmp(char*,char*);
1285Char nt_translate_bindkey(const Char*s) {
1286	char *astr = short2str(s);
1287	short fkey;
1288	char corm; /* 1 for ctrl map, 2 for meta map, 3 for shift map*/
1289	Char keycode = 0;
1290
1291	corm = 0;
1292
1293	if (astr[0] == 'C')
1294		corm= 1;
1295	else if (astr[0] == 'M')
1296		corm = 2;
1297	else if (astr[0] == 'S') /*shift keymap by avner.lottem@intel.com*/
1298		corm = 3;
1299
1300	if (corm)
1301		astr += 2; /* skip C- or M- or S-*/
1302
1303	fkey = (short)atoi(astr);
1304	if (fkey !=0) {
1305		keycode = (NT_SPECIFIC_BINDING_OFFSET+ (fkey-1) );
1306	}
1307	else {
1308		if (!_stricmp("pgup",astr)) {
1309			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN);
1310		}
1311		else if (!_stricmp("pgdown",astr)) {
1312			keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 1);
1313		}
1314		else if (!_stricmp("end",astr)) {
1315			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 2);
1316		}
1317		else if (!_stricmp("home",astr)) {
1318			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 3);
1319		}
1320		else if (!_stricmp("left",astr)) {
1321			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 4);
1322		}
1323		else if (!_stricmp("up",astr)) {
1324			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 5);
1325		}
1326		else if (!_stricmp("right",astr)) {
1327			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 6);
1328		}
1329		else if (!_stricmp("down",astr)) {
1330			keycode =  (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 7);
1331		}
1332		else if (!_stricmp("ins",astr)) {
1333			keycode =  (NT_SPECIFIC_BINDING_OFFSET + INS_DEL_MAPPING_BEGIN );
1334		}
1335		else if (!_stricmp("del",astr)) {
1336			keycode =  (NT_SPECIFIC_BINDING_OFFSET +INS_DEL_MAPPING_BEGIN +1 );
1337		}
1338		else
1339			nt_bad_spec(s);
1340	}
1341	if (keycode && corm) {
1342		if (corm == 1)
1343			keycode +=  CTRL_KEY_OFFSET;
1344		else if (corm == 2)
1345			keycode +=  ALT_KEY_OFFSET;
1346		else if (corm == 3)
1347			keycode +=  SHIFT_KEY_OFFSET;
1348	}
1349
1350	return keycode;
1351}
1352