1
/* $NetBSD: map.c,v 1.14 2001/01/09 17:22:09 jdolecek Exp $ */
4
* Copyright (c) 1992, 1993
5
* The Regents of the University of California. All rights reserved.
7
* This code is derived from software contributed to Berkeley by
8
* Christos Zoulas of Cornell University.
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
13
* 1. Redistributions of source code must retain the above copyright
14
* notice, this list of conditions and the following disclaimer.
15
* 2. Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in the
17
* documentation and/or other materials provided with the distribution.
18
* 3. All advertising materials mentioning features or use of this software
19
* must display the following acknowledgement:
20
* This product includes software developed by the University of
21
* California, Berkeley and its contributors.
22
* 4. Neither the name of the University nor the names of its contributors
23
* may be used to endorse or promote products derived from this software
24
* without specific prior written permission.
26
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
40
#if !defined(lint) && !defined(SCCSID)
42
static char sccsid[] = "@(#)map.c 8.1 (Berkeley) 6/4/93";
44
__RCSID("$NetBSD: map.c,v 1.14 2001/01/09 17:22:09 jdolecek Exp $");
46
#endif /* not lint && not SCCSID */
49
* map.c: Editor function definitions
57
private void map_print_key(EditLine *, el_action_t *, const char *);
58
private void map_print_some_keys(EditLine *, el_action_t *, int, int);
59
private void map_print_all_keys(EditLine *);
60
private void map_init_nls(EditLine *);
61
private void map_init_meta(EditLine *);
63
/* keymap tables ; should be N_KEYS*sizeof(KEYCMD) bytes long */
66
private const el_action_t el_map_emacs[] = {
67
/* 0 */ EM_SET_MARK, /* ^@ */
68
/* 1 */ ED_MOVE_TO_BEG, /* ^A */
69
/* 2 */ ED_PREV_CHAR, /* ^B */
70
/* 3 */ ED_TTY_SIGINT, /* ^C */
71
/* 4 */ EM_DELETE_OR_LIST, /* ^D */
72
/* 5 */ ED_MOVE_TO_END, /* ^E */
73
/* 6 */ ED_NEXT_CHAR, /* ^F */
74
/* 7 */ ED_UNASSIGNED, /* ^G */
75
/* 8 */ ED_DELETE_PREV_CHAR, /* ^H */
76
/* 9 */ ED_UNASSIGNED, /* ^I */
77
/* 10 */ ED_NEWLINE, /* ^J */
78
/* 11 */ ED_KILL_LINE, /* ^K */
79
/* 12 */ ED_CLEAR_SCREEN, /* ^L */
80
/* 13 */ ED_NEWLINE, /* ^M */
81
/* 14 */ ED_NEXT_HISTORY, /* ^N */
82
/* 15 */ ED_TTY_FLUSH_OUTPUT, /* ^O */
83
/* 16 */ ED_PREV_HISTORY, /* ^P */
84
/* 17 */ ED_TTY_START_OUTPUT, /* ^Q */
85
/* 18 */ ED_REDISPLAY, /* ^R */
86
/* 19 */ ED_TTY_STOP_OUTPUT, /* ^S */
87
/* 20 */ ED_TRANSPOSE_CHARS, /* ^T */
88
/* 21 */ EM_KILL_LINE, /* ^U */
89
/* 22 */ ED_QUOTED_INSERT, /* ^V */
90
/* 23 */ EM_KILL_REGION, /* ^W */
91
/* 24 */ ED_SEQUENCE_LEAD_IN, /* ^X */
92
/* 25 */ EM_YANK, /* ^Y */
93
/* 26 */ ED_TTY_SIGTSTP, /* ^Z */
94
/* 27 */ EM_META_NEXT, /* ^[ */
95
/* 28 */ ED_TTY_SIGQUIT, /* ^\ */
96
/* 29 */ ED_TTY_DSUSP, /* ^] */
97
/* 30 */ ED_UNASSIGNED, /* ^^ */
98
/* 31 */ ED_UNASSIGNED, /* ^_ */
99
/* 32 */ ED_INSERT, /* SPACE */
100
/* 33 */ ED_INSERT, /* ! */
101
/* 34 */ ED_INSERT, /* " */
102
/* 35 */ ED_INSERT, /* # */
103
/* 36 */ ED_INSERT, /* $ */
104
/* 37 */ ED_INSERT, /* % */
105
/* 38 */ ED_INSERT, /* & */
106
/* 39 */ ED_INSERT, /* ' */
107
/* 40 */ ED_INSERT, /* ( */
108
/* 41 */ ED_INSERT, /* ) */
109
/* 42 */ ED_INSERT, /* * */
110
/* 43 */ ED_INSERT, /* + */
111
/* 44 */ ED_INSERT, /* , */
112
/* 45 */ ED_INSERT, /* - */
113
/* 46 */ ED_INSERT, /* . */
114
/* 47 */ ED_INSERT, /* / */
115
/* 48 */ ED_DIGIT, /* 0 */
116
/* 49 */ ED_DIGIT, /* 1 */
117
/* 50 */ ED_DIGIT, /* 2 */
118
/* 51 */ ED_DIGIT, /* 3 */
119
/* 52 */ ED_DIGIT, /* 4 */
120
/* 53 */ ED_DIGIT, /* 5 */
121
/* 54 */ ED_DIGIT, /* 6 */
122
/* 55 */ ED_DIGIT, /* 7 */
123
/* 56 */ ED_DIGIT, /* 8 */
124
/* 57 */ ED_DIGIT, /* 9 */
125
/* 58 */ ED_INSERT, /* : */
126
/* 59 */ ED_INSERT, /* ; */
127
/* 60 */ ED_INSERT, /* < */
128
/* 61 */ ED_INSERT, /* = */
129
/* 62 */ ED_INSERT, /* > */
130
/* 63 */ ED_INSERT, /* ? */
131
/* 64 */ ED_INSERT, /* @ */
132
/* 65 */ ED_INSERT, /* A */
133
/* 66 */ ED_INSERT, /* B */
134
/* 67 */ ED_INSERT, /* C */
135
/* 68 */ ED_INSERT, /* D */
136
/* 69 */ ED_INSERT, /* E */
137
/* 70 */ ED_INSERT, /* F */
138
/* 71 */ ED_INSERT, /* G */
139
/* 72 */ ED_INSERT, /* H */
140
/* 73 */ ED_INSERT, /* I */
141
/* 74 */ ED_INSERT, /* J */
142
/* 75 */ ED_INSERT, /* K */
143
/* 76 */ ED_INSERT, /* L */
144
/* 77 */ ED_INSERT, /* M */
145
/* 78 */ ED_INSERT, /* N */
146
/* 79 */ ED_INSERT, /* O */
147
/* 80 */ ED_INSERT, /* P */
148
/* 81 */ ED_INSERT, /* Q */
149
/* 82 */ ED_INSERT, /* R */
150
/* 83 */ ED_INSERT, /* S */
151
/* 84 */ ED_INSERT, /* T */
152
/* 85 */ ED_INSERT, /* U */
153
/* 86 */ ED_INSERT, /* V */
154
/* 87 */ ED_INSERT, /* W */
155
/* 88 */ ED_INSERT, /* X */
156
/* 89 */ ED_INSERT, /* Y */
157
/* 90 */ ED_INSERT, /* Z */
158
/* 91 */ ED_INSERT, /* [ */
159
/* 92 */ ED_INSERT, /* \ */
160
/* 93 */ ED_INSERT, /* ] */
161
/* 94 */ ED_INSERT, /* ^ */
162
/* 95 */ ED_INSERT, /* _ */
163
/* 96 */ ED_INSERT, /* ` */
164
/* 97 */ ED_INSERT, /* a */
165
/* 98 */ ED_INSERT, /* b */
166
/* 99 */ ED_INSERT, /* c */
167
/* 100 */ ED_INSERT, /* d */
168
/* 101 */ ED_INSERT, /* e */
169
/* 102 */ ED_INSERT, /* f */
170
/* 103 */ ED_INSERT, /* g */
171
/* 104 */ ED_INSERT, /* h */
172
/* 105 */ ED_INSERT, /* i */
173
/* 106 */ ED_INSERT, /* j */
174
/* 107 */ ED_INSERT, /* k */
175
/* 108 */ ED_INSERT, /* l */
176
/* 109 */ ED_INSERT, /* m */
177
/* 110 */ ED_INSERT, /* n */
178
/* 111 */ ED_INSERT, /* o */
179
/* 112 */ ED_INSERT, /* p */
180
/* 113 */ ED_INSERT, /* q */
181
/* 114 */ ED_INSERT, /* r */
182
/* 115 */ ED_INSERT, /* s */
183
/* 116 */ ED_INSERT, /* t */
184
/* 117 */ ED_INSERT, /* u */
185
/* 118 */ ED_INSERT, /* v */
186
/* 119 */ ED_INSERT, /* w */
187
/* 120 */ ED_INSERT, /* x */
188
/* 121 */ ED_INSERT, /* y */
189
/* 122 */ ED_INSERT, /* z */
190
/* 123 */ ED_INSERT, /* { */
191
/* 124 */ ED_INSERT, /* | */
192
/* 125 */ ED_INSERT, /* } */
193
/* 126 */ ED_INSERT, /* ~ */
194
/* 127 */ ED_DELETE_PREV_CHAR, /* ^? */
195
/* 128 */ ED_UNASSIGNED, /* M-^@ */
196
/* 129 */ ED_UNASSIGNED, /* M-^A */
197
/* 130 */ ED_UNASSIGNED, /* M-^B */
198
/* 131 */ ED_UNASSIGNED, /* M-^C */
199
/* 132 */ ED_UNASSIGNED, /* M-^D */
200
/* 133 */ ED_UNASSIGNED, /* M-^E */
201
/* 134 */ ED_UNASSIGNED, /* M-^F */
202
/* 135 */ ED_UNASSIGNED, /* M-^G */
203
/* 136 */ ED_DELETE_PREV_WORD, /* M-^H */
204
/* 137 */ ED_UNASSIGNED, /* M-^I */
205
/* 138 */ ED_UNASSIGNED, /* M-^J */
206
/* 139 */ ED_UNASSIGNED, /* M-^K */
207
/* 140 */ ED_CLEAR_SCREEN, /* M-^L */
208
/* 141 */ ED_UNASSIGNED, /* M-^M */
209
/* 142 */ ED_UNASSIGNED, /* M-^N */
210
/* 143 */ ED_UNASSIGNED, /* M-^O */
211
/* 144 */ ED_UNASSIGNED, /* M-^P */
212
/* 145 */ ED_UNASSIGNED, /* M-^Q */
213
/* 146 */ ED_UNASSIGNED, /* M-^R */
214
/* 147 */ ED_UNASSIGNED, /* M-^S */
215
/* 148 */ ED_UNASSIGNED, /* M-^T */
216
/* 149 */ ED_UNASSIGNED, /* M-^U */
217
/* 150 */ ED_UNASSIGNED, /* M-^V */
218
/* 151 */ ED_UNASSIGNED, /* M-^W */
219
/* 152 */ ED_UNASSIGNED, /* M-^X */
220
/* 153 */ ED_UNASSIGNED, /* M-^Y */
221
/* 154 */ ED_UNASSIGNED, /* M-^Z */
222
/* 155 */ ED_UNASSIGNED, /* M-^[ */
223
/* 156 */ ED_UNASSIGNED, /* M-^\ */
224
/* 157 */ ED_UNASSIGNED, /* M-^] */
225
/* 158 */ ED_UNASSIGNED, /* M-^^ */
226
/* 159 */ EM_COPY_PREV_WORD, /* M-^_ */
227
/* 160 */ ED_UNASSIGNED, /* M-SPACE */
228
/* 161 */ ED_UNASSIGNED, /* M-! */
229
/* 162 */ ED_UNASSIGNED, /* M-" */
230
/* 163 */ ED_UNASSIGNED, /* M-# */
231
/* 164 */ ED_UNASSIGNED, /* M-$ */
232
/* 165 */ ED_UNASSIGNED, /* M-% */
233
/* 166 */ ED_UNASSIGNED, /* M-& */
234
/* 167 */ ED_UNASSIGNED, /* M-' */
235
/* 168 */ ED_UNASSIGNED, /* M-( */
236
/* 169 */ ED_UNASSIGNED, /* M-) */
237
/* 170 */ ED_UNASSIGNED, /* M-* */
238
/* 171 */ ED_UNASSIGNED, /* M-+ */
239
/* 172 */ ED_UNASSIGNED, /* M-, */
240
/* 173 */ ED_UNASSIGNED, /* M-- */
241
/* 174 */ ED_UNASSIGNED, /* M-. */
242
/* 175 */ ED_UNASSIGNED, /* M-/ */
243
/* 176 */ ED_ARGUMENT_DIGIT, /* M-0 */
244
/* 177 */ ED_ARGUMENT_DIGIT, /* M-1 */
245
/* 178 */ ED_ARGUMENT_DIGIT, /* M-2 */
246
/* 179 */ ED_ARGUMENT_DIGIT, /* M-3 */
247
/* 180 */ ED_ARGUMENT_DIGIT, /* M-4 */
248
/* 181 */ ED_ARGUMENT_DIGIT, /* M-5 */
249
/* 182 */ ED_ARGUMENT_DIGIT, /* M-6 */
250
/* 183 */ ED_ARGUMENT_DIGIT, /* M-7 */
251
/* 184 */ ED_ARGUMENT_DIGIT, /* M-8 */
252
/* 185 */ ED_ARGUMENT_DIGIT, /* M-9 */
253
/* 186 */ ED_UNASSIGNED, /* M-: */
254
/* 187 */ ED_UNASSIGNED, /* M-; */
255
/* 188 */ ED_UNASSIGNED, /* M-< */
256
/* 189 */ ED_UNASSIGNED, /* M-= */
257
/* 190 */ ED_UNASSIGNED, /* M-> */
258
/* 191 */ ED_UNASSIGNED, /* M-? */
259
/* 192 */ ED_UNASSIGNED, /* M-@ */
260
/* 193 */ ED_UNASSIGNED, /* M-A */
261
/* 194 */ ED_PREV_WORD, /* M-B */
262
/* 195 */ EM_CAPITOL_CASE, /* M-C */
263
/* 196 */ EM_DELETE_NEXT_WORD, /* M-D */
264
/* 197 */ ED_UNASSIGNED, /* M-E */
265
/* 198 */ EM_NEXT_WORD, /* M-F */
266
/* 199 */ ED_UNASSIGNED, /* M-G */
267
/* 200 */ ED_UNASSIGNED, /* M-H */
268
/* 201 */ ED_UNASSIGNED, /* M-I */
269
/* 202 */ ED_UNASSIGNED, /* M-J */
270
/* 203 */ ED_UNASSIGNED, /* M-K */
271
/* 204 */ EM_LOWER_CASE, /* M-L */
272
/* 205 */ ED_UNASSIGNED, /* M-M */
273
/* 206 */ ED_SEARCH_NEXT_HISTORY, /* M-N */
274
/* 207 */ ED_SEQUENCE_LEAD_IN, /* M-O */
275
/* 208 */ ED_SEARCH_PREV_HISTORY, /* M-P */
276
/* 209 */ ED_UNASSIGNED, /* M-Q */
277
/* 210 */ ED_UNASSIGNED, /* M-R */
278
/* 211 */ ED_UNASSIGNED, /* M-S */
279
/* 212 */ ED_UNASSIGNED, /* M-T */
280
/* 213 */ EM_UPPER_CASE, /* M-U */
281
/* 214 */ ED_UNASSIGNED, /* M-V */
282
/* 215 */ EM_COPY_REGION, /* M-W */
283
/* 216 */ ED_COMMAND, /* M-X */
284
/* 217 */ ED_UNASSIGNED, /* M-Y */
285
/* 218 */ ED_UNASSIGNED, /* M-Z */
286
/* 219 */ ED_SEQUENCE_LEAD_IN, /* M-[ */
287
/* 220 */ ED_UNASSIGNED, /* M-\ */
288
/* 221 */ ED_UNASSIGNED, /* M-] */
289
/* 222 */ ED_UNASSIGNED, /* M-^ */
290
/* 223 */ ED_UNASSIGNED, /* M-_ */
291
/* 223 */ ED_UNASSIGNED, /* M-` */
292
/* 224 */ ED_UNASSIGNED, /* M-a */
293
/* 225 */ ED_PREV_WORD, /* M-b */
294
/* 226 */ EM_CAPITOL_CASE, /* M-c */
295
/* 227 */ EM_DELETE_NEXT_WORD, /* M-d */
296
/* 228 */ ED_UNASSIGNED, /* M-e */
297
/* 229 */ EM_NEXT_WORD, /* M-f */
298
/* 230 */ ED_UNASSIGNED, /* M-g */
299
/* 231 */ ED_UNASSIGNED, /* M-h */
300
/* 232 */ ED_UNASSIGNED, /* M-i */
301
/* 233 */ ED_UNASSIGNED, /* M-j */
302
/* 234 */ ED_UNASSIGNED, /* M-k */
303
/* 235 */ EM_LOWER_CASE, /* M-l */
304
/* 236 */ ED_UNASSIGNED, /* M-m */
305
/* 237 */ ED_SEARCH_NEXT_HISTORY, /* M-n */
306
/* 238 */ ED_UNASSIGNED, /* M-o */
307
/* 239 */ ED_SEARCH_PREV_HISTORY, /* M-p */
308
/* 240 */ ED_UNASSIGNED, /* M-q */
309
/* 241 */ ED_UNASSIGNED, /* M-r */
310
/* 242 */ ED_UNASSIGNED, /* M-s */
311
/* 243 */ ED_UNASSIGNED, /* M-t */
312
/* 244 */ EM_UPPER_CASE, /* M-u */
313
/* 245 */ ED_UNASSIGNED, /* M-v */
314
/* 246 */ EM_COPY_REGION, /* M-w */
315
/* 247 */ ED_COMMAND, /* M-x */
316
/* 248 */ ED_UNASSIGNED, /* M-y */
317
/* 249 */ ED_UNASSIGNED, /* M-z */
318
/* 250 */ ED_UNASSIGNED, /* M-{ */
319
/* 251 */ ED_UNASSIGNED, /* M-| */
320
/* 252 */ ED_UNASSIGNED, /* M-} */
321
/* 253 */ ED_UNASSIGNED, /* M-~ */
322
/* 254 */ ED_DELETE_PREV_WORD /* M-^? */
328
* keymap table for vi. Each index into above tbl; should be
329
* N_KEYS entries long. Vi mode uses a sticky-extend to do command mode:
330
* insert mode characters are in the normal keymap, and command mode
331
* in the extended keymap.
333
private const el_action_t el_map_vi_insert[] = {
335
/* 0 */ ED_UNASSIGNED, /* ^@ */
336
/* 1 */ ED_INSERT, /* ^A */
337
/* 2 */ ED_INSERT, /* ^B */
338
/* 3 */ ED_INSERT, /* ^C */
339
/* 4 */ VI_LIST_OR_EOF, /* ^D */
340
/* 5 */ ED_INSERT, /* ^E */
341
/* 6 */ ED_INSERT, /* ^F */
342
/* 7 */ ED_INSERT, /* ^G */
343
/* 8 */ VI_DELETE_PREV_CHAR, /* ^H */ /* BackSpace key */
344
/* 9 */ ED_INSERT, /* ^I */ /* Tab Key */
345
/* 10 */ ED_NEWLINE, /* ^J */
346
/* 11 */ ED_INSERT, /* ^K */
347
/* 12 */ ED_INSERT, /* ^L */
348
/* 13 */ ED_NEWLINE, /* ^M */
349
/* 14 */ ED_INSERT, /* ^N */
350
/* 15 */ ED_INSERT, /* ^O */
351
/* 16 */ ED_INSERT, /* ^P */
352
/* 17 */ ED_TTY_START_OUTPUT, /* ^Q */
353
/* 18 */ ED_INSERT, /* ^R */
354
/* 19 */ ED_TTY_STOP_OUTPUT, /* ^S */
355
/* 20 */ ED_INSERT, /* ^T */
356
/* 21 */ VI_KILL_LINE_PREV, /* ^U */
357
/* 22 */ ED_QUOTED_INSERT, /* ^V */
358
/* 23 */ ED_DELETE_PREV_WORD, /* ^W */
359
/* ED_DELETE_PREV_WORD: Only until strt edit pos */
360
/* 24 */ ED_INSERT, /* ^X */
361
/* 25 */ ED_INSERT, /* ^Y */
362
/* 26 */ ED_INSERT, /* ^Z */
363
/* 27 */ VI_COMMAND_MODE, /* ^[ */ /* [ Esc ] key */
364
/* 28 */ ED_TTY_SIGQUIT, /* ^\ */
365
/* 29 */ ED_INSERT, /* ^] */
366
/* 30 */ ED_INSERT, /* ^^ */
367
/* 31 */ ED_INSERT, /* ^_ */
370
* NOTE: These mappings do NOT Correspond well
371
* to the KSH VI editing assignments.
372
* On the other and they are convenient and
373
* many people have have gotten used to them.
375
/* 0 */ ED_UNASSIGNED, /* ^@ */
376
/* 1 */ ED_MOVE_TO_BEG, /* ^A */
377
/* 2 */ ED_PREV_CHAR, /* ^B */
378
/* 3 */ ED_TTY_SIGINT, /* ^C */
379
/* 4 */ VI_LIST_OR_EOF, /* ^D */
380
/* 5 */ ED_MOVE_TO_END, /* ^E */
381
/* 6 */ ED_NEXT_CHAR, /* ^F */
382
/* 7 */ ED_UNASSIGNED, /* ^G */
383
/* 8 */ ED_DELETE_PREV_CHAR, /* ^H */ /* BackSpace key */
384
/* 9 */ ED_UNASSIGNED, /* ^I */ /* Tab Key */
385
/* 10 */ ED_NEWLINE, /* ^J */
386
/* 11 */ ED_KILL_LINE, /* ^K */
387
/* 12 */ ED_CLEAR_SCREEN, /* ^L */
388
/* 13 */ ED_NEWLINE, /* ^M */
389
/* 14 */ ED_NEXT_HISTORY, /* ^N */
390
/* 15 */ ED_TTY_FLUSH_OUTPUT, /* ^O */
391
/* 16 */ ED_PREV_HISTORY, /* ^P */
392
/* 17 */ ED_TTY_START_OUTPUT, /* ^Q */
393
/* 18 */ ED_REDISPLAY, /* ^R */
394
/* 19 */ ED_TTY_STOP_OUTPUT, /* ^S */
395
/* 20 */ ED_TRANSPOSE_CHARS, /* ^T */
396
/* 21 */ VI_KILL_LINE_PREV, /* ^U */
397
/* 22 */ ED_QUOTED_INSERT, /* ^V */
398
/* 23 */ ED_DELETE_PREV_WORD, /* ^W */
399
/* 24 */ ED_UNASSIGNED, /* ^X */
400
/* 25 */ ED_TTY_DSUSP, /* ^Y */
401
/* 26 */ ED_TTY_SIGTSTP, /* ^Z */
402
/* 27 */ VI_COMMAND_MODE, /* ^[ */
403
/* 28 */ ED_TTY_SIGQUIT, /* ^\ */
404
/* 29 */ ED_UNASSIGNED, /* ^] */
405
/* 30 */ ED_UNASSIGNED, /* ^^ */
406
/* 31 */ ED_UNASSIGNED, /* ^_ */
408
/* 32 */ ED_INSERT, /* SPACE */
409
/* 33 */ ED_INSERT, /* ! */
410
/* 34 */ ED_INSERT, /* " */
411
/* 35 */ ED_INSERT, /* # */
412
/* 36 */ ED_INSERT, /* $ */
413
/* 37 */ ED_INSERT, /* % */
414
/* 38 */ ED_INSERT, /* & */
415
/* 39 */ ED_INSERT, /* ' */
416
/* 40 */ ED_INSERT, /* ( */
417
/* 41 */ ED_INSERT, /* ) */
418
/* 42 */ ED_INSERT, /* * */
419
/* 43 */ ED_INSERT, /* + */
420
/* 44 */ ED_INSERT, /* , */
421
/* 45 */ ED_INSERT, /* - */
422
/* 46 */ ED_INSERT, /* . */
423
/* 47 */ ED_INSERT, /* / */
424
/* 48 */ ED_INSERT, /* 0 */
425
/* 49 */ ED_INSERT, /* 1 */
426
/* 50 */ ED_INSERT, /* 2 */
427
/* 51 */ ED_INSERT, /* 3 */
428
/* 52 */ ED_INSERT, /* 4 */
429
/* 53 */ ED_INSERT, /* 5 */
430
/* 54 */ ED_INSERT, /* 6 */
431
/* 55 */ ED_INSERT, /* 7 */
432
/* 56 */ ED_INSERT, /* 8 */
433
/* 57 */ ED_INSERT, /* 9 */
434
/* 58 */ ED_INSERT, /* : */
435
/* 59 */ ED_INSERT, /* ; */
436
/* 60 */ ED_INSERT, /* < */
437
/* 61 */ ED_INSERT, /* = */
438
/* 62 */ ED_INSERT, /* > */
439
/* 63 */ ED_INSERT, /* ? */
440
/* 64 */ ED_INSERT, /* @ */
441
/* 65 */ ED_INSERT, /* A */
442
/* 66 */ ED_INSERT, /* B */
443
/* 67 */ ED_INSERT, /* C */
444
/* 68 */ ED_INSERT, /* D */
445
/* 69 */ ED_INSERT, /* E */
446
/* 70 */ ED_INSERT, /* F */
447
/* 71 */ ED_INSERT, /* G */
448
/* 72 */ ED_INSERT, /* H */
449
/* 73 */ ED_INSERT, /* I */
450
/* 74 */ ED_INSERT, /* J */
451
/* 75 */ ED_INSERT, /* K */
452
/* 76 */ ED_INSERT, /* L */
453
/* 77 */ ED_INSERT, /* M */
454
/* 78 */ ED_INSERT, /* N */
455
/* 79 */ ED_INSERT, /* O */
456
/* 80 */ ED_INSERT, /* P */
457
/* 81 */ ED_INSERT, /* Q */
458
/* 82 */ ED_INSERT, /* R */
459
/* 83 */ ED_INSERT, /* S */
460
/* 84 */ ED_INSERT, /* T */
461
/* 85 */ ED_INSERT, /* U */
462
/* 86 */ ED_INSERT, /* V */
463
/* 87 */ ED_INSERT, /* W */
464
/* 88 */ ED_INSERT, /* X */
465
/* 89 */ ED_INSERT, /* Y */
466
/* 90 */ ED_INSERT, /* Z */
467
/* 91 */ ED_INSERT, /* [ */
468
/* 92 */ ED_INSERT, /* \ */
469
/* 93 */ ED_INSERT, /* ] */
470
/* 94 */ ED_INSERT, /* ^ */
471
/* 95 */ ED_INSERT, /* _ */
472
/* 96 */ ED_INSERT, /* ` */
473
/* 97 */ ED_INSERT, /* a */
474
/* 98 */ ED_INSERT, /* b */
475
/* 99 */ ED_INSERT, /* c */
476
/* 100 */ ED_INSERT, /* d */
477
/* 101 */ ED_INSERT, /* e */
478
/* 102 */ ED_INSERT, /* f */
479
/* 103 */ ED_INSERT, /* g */
480
/* 104 */ ED_INSERT, /* h */
481
/* 105 */ ED_INSERT, /* i */
482
/* 106 */ ED_INSERT, /* j */
483
/* 107 */ ED_INSERT, /* k */
484
/* 108 */ ED_INSERT, /* l */
485
/* 109 */ ED_INSERT, /* m */
486
/* 110 */ ED_INSERT, /* n */
487
/* 111 */ ED_INSERT, /* o */
488
/* 112 */ ED_INSERT, /* p */
489
/* 113 */ ED_INSERT, /* q */
490
/* 114 */ ED_INSERT, /* r */
491
/* 115 */ ED_INSERT, /* s */
492
/* 116 */ ED_INSERT, /* t */
493
/* 117 */ ED_INSERT, /* u */
494
/* 118 */ ED_INSERT, /* v */
495
/* 119 */ ED_INSERT, /* w */
496
/* 120 */ ED_INSERT, /* x */
497
/* 121 */ ED_INSERT, /* y */
498
/* 122 */ ED_INSERT, /* z */
499
/* 123 */ ED_INSERT, /* { */
500
/* 124 */ ED_INSERT, /* | */
501
/* 125 */ ED_INSERT, /* } */
502
/* 126 */ ED_INSERT, /* ~ */
503
/* 127 */ ED_DELETE_PREV_CHAR, /* ^? */
504
/* 128 */ ED_UNASSIGNED, /* M-^@ */
505
/* 129 */ ED_UNASSIGNED, /* M-^A */
506
/* 130 */ ED_UNASSIGNED, /* M-^B */
507
/* 131 */ ED_UNASSIGNED, /* M-^C */
508
/* 132 */ ED_UNASSIGNED, /* M-^D */
509
/* 133 */ ED_UNASSIGNED, /* M-^E */
510
/* 134 */ ED_UNASSIGNED, /* M-^F */
511
/* 135 */ ED_UNASSIGNED, /* M-^G */
512
/* 136 */ ED_UNASSIGNED, /* M-^H */
513
/* 137 */ ED_UNASSIGNED, /* M-^I */
514
/* 138 */ ED_UNASSIGNED, /* M-^J */
515
/* 139 */ ED_UNASSIGNED, /* M-^K */
516
/* 140 */ ED_UNASSIGNED, /* M-^L */
517
/* 141 */ ED_UNASSIGNED, /* M-^M */
518
/* 142 */ ED_UNASSIGNED, /* M-^N */
519
/* 143 */ ED_UNASSIGNED, /* M-^O */
520
/* 144 */ ED_UNASSIGNED, /* M-^P */
521
/* 145 */ ED_UNASSIGNED, /* M-^Q */
522
/* 146 */ ED_UNASSIGNED, /* M-^R */
523
/* 147 */ ED_UNASSIGNED, /* M-^S */
524
/* 148 */ ED_UNASSIGNED, /* M-^T */
525
/* 149 */ ED_UNASSIGNED, /* M-^U */
526
/* 150 */ ED_UNASSIGNED, /* M-^V */
527
/* 151 */ ED_UNASSIGNED, /* M-^W */
528
/* 152 */ ED_UNASSIGNED, /* M-^X */
529
/* 153 */ ED_UNASSIGNED, /* M-^Y */
530
/* 154 */ ED_UNASSIGNED, /* M-^Z */
531
/* 155 */ ED_UNASSIGNED, /* M-^[ */
532
/* 156 */ ED_UNASSIGNED, /* M-^\ */
533
/* 157 */ ED_UNASSIGNED, /* M-^] */
534
/* 158 */ ED_UNASSIGNED, /* M-^^ */
535
/* 159 */ ED_UNASSIGNED, /* M-^_ */
536
/* 160 */ ED_UNASSIGNED, /* M-SPACE */
537
/* 161 */ ED_UNASSIGNED, /* M-! */
538
/* 162 */ ED_UNASSIGNED, /* M-" */
539
/* 163 */ ED_UNASSIGNED, /* M-# */
540
/* 164 */ ED_UNASSIGNED, /* M-$ */
541
/* 165 */ ED_UNASSIGNED, /* M-% */
542
/* 166 */ ED_UNASSIGNED, /* M-& */
543
/* 167 */ ED_UNASSIGNED, /* M-' */
544
/* 168 */ ED_UNASSIGNED, /* M-( */
545
/* 169 */ ED_UNASSIGNED, /* M-) */
546
/* 170 */ ED_UNASSIGNED, /* M-* */
547
/* 171 */ ED_UNASSIGNED, /* M-+ */
548
/* 172 */ ED_UNASSIGNED, /* M-, */
549
/* 173 */ ED_UNASSIGNED, /* M-- */
550
/* 174 */ ED_UNASSIGNED, /* M-. */
551
/* 175 */ ED_UNASSIGNED, /* M-/ */
552
/* 176 */ ED_UNASSIGNED, /* M-0 */
553
/* 177 */ ED_UNASSIGNED, /* M-1 */
554
/* 178 */ ED_UNASSIGNED, /* M-2 */
555
/* 179 */ ED_UNASSIGNED, /* M-3 */
556
/* 180 */ ED_UNASSIGNED, /* M-4 */
557
/* 181 */ ED_UNASSIGNED, /* M-5 */
558
/* 182 */ ED_UNASSIGNED, /* M-6 */
559
/* 183 */ ED_UNASSIGNED, /* M-7 */
560
/* 184 */ ED_UNASSIGNED, /* M-8 */
561
/* 185 */ ED_UNASSIGNED, /* M-9 */
562
/* 186 */ ED_UNASSIGNED, /* M-: */
563
/* 187 */ ED_UNASSIGNED, /* M-; */
564
/* 188 */ ED_UNASSIGNED, /* M-< */
565
/* 189 */ ED_UNASSIGNED, /* M-= */
566
/* 190 */ ED_UNASSIGNED, /* M-> */
567
/* 191 */ ED_UNASSIGNED, /* M-? */
568
/* 192 */ ED_UNASSIGNED, /* M-@ */
569
/* 193 */ ED_UNASSIGNED, /* M-A */
570
/* 194 */ ED_UNASSIGNED, /* M-B */
571
/* 195 */ ED_UNASSIGNED, /* M-C */
572
/* 196 */ ED_UNASSIGNED, /* M-D */
573
/* 197 */ ED_UNASSIGNED, /* M-E */
574
/* 198 */ ED_UNASSIGNED, /* M-F */
575
/* 199 */ ED_UNASSIGNED, /* M-G */
576
/* 200 */ ED_UNASSIGNED, /* M-H */
577
/* 201 */ ED_UNASSIGNED, /* M-I */
578
/* 202 */ ED_UNASSIGNED, /* M-J */
579
/* 203 */ ED_UNASSIGNED, /* M-K */
580
/* 204 */ ED_UNASSIGNED, /* M-L */
581
/* 205 */ ED_UNASSIGNED, /* M-M */
582
/* 206 */ ED_UNASSIGNED, /* M-N */
583
/* 207 */ ED_UNASSIGNED, /* M-O */
584
/* 208 */ ED_UNASSIGNED, /* M-P */
585
/* 209 */ ED_UNASSIGNED, /* M-Q */
586
/* 210 */ ED_UNASSIGNED, /* M-R */
587
/* 211 */ ED_UNASSIGNED, /* M-S */
588
/* 212 */ ED_UNASSIGNED, /* M-T */
589
/* 213 */ ED_UNASSIGNED, /* M-U */
590
/* 214 */ ED_UNASSIGNED, /* M-V */
591
/* 215 */ ED_UNASSIGNED, /* M-W */
592
/* 216 */ ED_UNASSIGNED, /* M-X */
593
/* 217 */ ED_UNASSIGNED, /* M-Y */
594
/* 218 */ ED_UNASSIGNED, /* M-Z */
595
/* 219 */ ED_UNASSIGNED, /* M-[ */
596
/* 220 */ ED_UNASSIGNED, /* M-\ */
597
/* 221 */ ED_UNASSIGNED, /* M-] */
598
/* 222 */ ED_UNASSIGNED, /* M-^ */
599
/* 223 */ ED_UNASSIGNED, /* M-_ */
600
/* 224 */ ED_UNASSIGNED, /* M-` */
601
/* 225 */ ED_UNASSIGNED, /* M-a */
602
/* 226 */ ED_UNASSIGNED, /* M-b */
603
/* 227 */ ED_UNASSIGNED, /* M-c */
604
/* 228 */ ED_UNASSIGNED, /* M-d */
605
/* 229 */ ED_UNASSIGNED, /* M-e */
606
/* 230 */ ED_UNASSIGNED, /* M-f */
607
/* 231 */ ED_UNASSIGNED, /* M-g */
608
/* 232 */ ED_UNASSIGNED, /* M-h */
609
/* 233 */ ED_UNASSIGNED, /* M-i */
610
/* 234 */ ED_UNASSIGNED, /* M-j */
611
/* 235 */ ED_UNASSIGNED, /* M-k */
612
/* 236 */ ED_UNASSIGNED, /* M-l */
613
/* 237 */ ED_UNASSIGNED, /* M-m */
614
/* 238 */ ED_UNASSIGNED, /* M-n */
615
/* 239 */ ED_UNASSIGNED, /* M-o */
616
/* 240 */ ED_UNASSIGNED, /* M-p */
617
/* 241 */ ED_UNASSIGNED, /* M-q */
618
/* 242 */ ED_UNASSIGNED, /* M-r */
619
/* 243 */ ED_UNASSIGNED, /* M-s */
620
/* 244 */ ED_UNASSIGNED, /* M-t */
621
/* 245 */ ED_UNASSIGNED, /* M-u */
622
/* 246 */ ED_UNASSIGNED, /* M-v */
623
/* 247 */ ED_UNASSIGNED, /* M-w */
624
/* 248 */ ED_UNASSIGNED, /* M-x */
625
/* 249 */ ED_UNASSIGNED, /* M-y */
626
/* 250 */ ED_UNASSIGNED, /* M-z */
627
/* 251 */ ED_UNASSIGNED, /* M-{ */
628
/* 252 */ ED_UNASSIGNED, /* M-| */
629
/* 253 */ ED_UNASSIGNED, /* M-} */
630
/* 254 */ ED_UNASSIGNED, /* M-~ */
631
/* 255 */ ED_UNASSIGNED /* M-^? */
634
private const el_action_t el_map_vi_command[] = {
635
/* 0 */ ED_UNASSIGNED, /* ^@ */
636
/* 1 */ ED_MOVE_TO_BEG, /* ^A */
637
/* 2 */ ED_UNASSIGNED, /* ^B */
638
/* 3 */ ED_TTY_SIGINT, /* ^C */
639
/* 4 */ ED_UNASSIGNED, /* ^D */
640
/* 5 */ ED_MOVE_TO_END, /* ^E */
641
/* 6 */ ED_UNASSIGNED, /* ^F */
642
/* 7 */ ED_UNASSIGNED, /* ^G */
643
/* 8 */ ED_PREV_CHAR, /* ^H */
644
/* 9 */ ED_UNASSIGNED, /* ^I */
645
/* 10 */ ED_NEWLINE, /* ^J */
646
/* 11 */ ED_KILL_LINE, /* ^K */
647
/* 12 */ ED_CLEAR_SCREEN, /* ^L */
648
/* 13 */ ED_NEWLINE, /* ^M */
649
/* 14 */ ED_NEXT_HISTORY, /* ^N */
650
/* 15 */ ED_TTY_FLUSH_OUTPUT, /* ^O */
651
/* 16 */ ED_PREV_HISTORY, /* ^P */
652
/* 17 */ ED_TTY_START_OUTPUT, /* ^Q */
653
/* 18 */ ED_REDISPLAY, /* ^R */
654
/* 19 */ ED_TTY_STOP_OUTPUT, /* ^S */
655
/* 20 */ ED_UNASSIGNED, /* ^T */
656
/* 21 */ VI_KILL_LINE_PREV, /* ^U */
657
/* 22 */ ED_UNASSIGNED, /* ^V */
658
/* 23 */ ED_DELETE_PREV_WORD, /* ^W */
659
/* 24 */ ED_UNASSIGNED, /* ^X */
660
/* 25 */ ED_UNASSIGNED, /* ^Y */
661
/* 26 */ ED_UNASSIGNED, /* ^Z */
662
/* 27 */ EM_META_NEXT, /* ^[ */
663
/* 28 */ ED_TTY_SIGQUIT, /* ^\ */
664
/* 29 */ ED_UNASSIGNED, /* ^] */
665
/* 30 */ ED_UNASSIGNED, /* ^^ */
666
/* 31 */ ED_UNASSIGNED, /* ^_ */
667
/* 32 */ ED_NEXT_CHAR, /* SPACE */
668
/* 33 */ ED_UNASSIGNED, /* ! */
669
/* 34 */ ED_UNASSIGNED, /* " */
670
/* 35 */ ED_UNASSIGNED, /* # */
671
/* 36 */ ED_MOVE_TO_END, /* $ */
672
/* 37 */ ED_UNASSIGNED, /* % */
673
/* 38 */ ED_UNASSIGNED, /* & */
674
/* 39 */ ED_UNASSIGNED, /* ' */
675
/* 40 */ ED_UNASSIGNED, /* ( */
676
/* 41 */ ED_UNASSIGNED, /* ) */
677
/* 42 */ ED_UNASSIGNED, /* * */
678
/* 43 */ ED_NEXT_HISTORY, /* + */
679
/* 44 */ VI_REPEAT_PREV_CHAR, /* , */
680
/* 45 */ ED_PREV_HISTORY, /* - */
681
/* 46 */ ED_UNASSIGNED, /* . */
682
/* 47 */ VI_SEARCH_PREV, /* / */
683
/* 48 */ VI_ZERO, /* 0 */
684
/* 49 */ ED_ARGUMENT_DIGIT, /* 1 */
685
/* 50 */ ED_ARGUMENT_DIGIT, /* 2 */
686
/* 51 */ ED_ARGUMENT_DIGIT, /* 3 */
687
/* 52 */ ED_ARGUMENT_DIGIT, /* 4 */
688
/* 53 */ ED_ARGUMENT_DIGIT, /* 5 */
689
/* 54 */ ED_ARGUMENT_DIGIT, /* 6 */
690
/* 55 */ ED_ARGUMENT_DIGIT, /* 7 */
691
/* 56 */ ED_ARGUMENT_DIGIT, /* 8 */
692
/* 57 */ ED_ARGUMENT_DIGIT, /* 9 */
693
/* 58 */ ED_COMMAND, /* : */
694
/* 59 */ VI_REPEAT_NEXT_CHAR, /* ; */
695
/* 60 */ ED_UNASSIGNED, /* < */
696
/* 61 */ ED_UNASSIGNED, /* = */
697
/* 62 */ ED_UNASSIGNED, /* > */
698
/* 63 */ VI_SEARCH_NEXT, /* ? */
699
/* 64 */ ED_UNASSIGNED, /* @ */
700
/* 65 */ VI_ADD_AT_EOL, /* A */
701
/* 66 */ VI_PREV_SPACE_WORD, /* B */
702
/* 67 */ VI_CHANGE_TO_EOL, /* C */
703
/* 68 */ ED_KILL_LINE, /* D */
704
/* 69 */ VI_TO_END_WORD, /* E */
705
/* 70 */ VI_PREV_CHAR, /* F */
706
/* 71 */ ED_UNASSIGNED, /* G */
707
/* 72 */ ED_UNASSIGNED, /* H */
708
/* 73 */ VI_INSERT_AT_BOL, /* I */
709
/* 74 */ ED_SEARCH_NEXT_HISTORY, /* J */
710
/* 75 */ ED_SEARCH_PREV_HISTORY, /* K */
711
/* 76 */ ED_UNASSIGNED, /* L */
712
/* 77 */ ED_UNASSIGNED, /* M */
713
/* 78 */ VI_REPEAT_SEARCH_PREV, /* N */
714
/* 79 */ ED_SEQUENCE_LEAD_IN, /* O */
715
/* 80 */ VI_PASTE_PREV, /* P */
716
/* 81 */ ED_UNASSIGNED, /* Q */
717
/* 82 */ VI_REPLACE_MODE, /* R */
718
/* 83 */ VI_SUBSTITUTE_LINE, /* S */
719
/* 84 */ VI_TO_PREV_CHAR, /* T */
720
/* 85 */ ED_UNASSIGNED, /* U */
721
/* 86 */ ED_UNASSIGNED, /* V */
722
/* 87 */ VI_NEXT_SPACE_WORD, /* W */
723
/* 88 */ ED_DELETE_PREV_CHAR, /* X */
724
/* 89 */ ED_UNASSIGNED, /* Y */
725
/* 90 */ ED_UNASSIGNED, /* Z */
726
/* 91 */ ED_SEQUENCE_LEAD_IN, /* [ */
727
/* 92 */ ED_UNASSIGNED, /* \ */
728
/* 93 */ ED_UNASSIGNED, /* ] */
729
/* 94 */ ED_MOVE_TO_BEG, /* ^ */
730
/* 95 */ ED_UNASSIGNED, /* _ */
731
/* 96 */ ED_UNASSIGNED, /* ` */
732
/* 97 */ VI_ADD, /* a */
733
/* 98 */ VI_PREV_WORD, /* b */
734
/* 99 */ VI_CHANGE_META, /* c */
735
/* 100 */ VI_DELETE_META, /* d */
736
/* 101 */ VI_END_WORD, /* e */
737
/* 102 */ VI_NEXT_CHAR, /* f */
738
/* 103 */ ED_UNASSIGNED, /* g */
739
/* 104 */ ED_PREV_CHAR, /* h */
740
/* 105 */ VI_INSERT, /* i */
741
/* 106 */ ED_NEXT_HISTORY, /* j */
742
/* 107 */ ED_PREV_HISTORY, /* k */
743
/* 108 */ ED_NEXT_CHAR, /* l */
744
/* 109 */ ED_UNASSIGNED, /* m */
745
/* 110 */ VI_REPEAT_SEARCH_NEXT, /* n */
746
/* 111 */ ED_UNASSIGNED, /* o */
747
/* 112 */ VI_PASTE_NEXT, /* p */
748
/* 113 */ ED_UNASSIGNED, /* q */
749
/* 114 */ VI_REPLACE_CHAR, /* r */
750
/* 115 */ VI_SUBSTITUTE_CHAR, /* s */
751
/* 116 */ VI_TO_NEXT_CHAR, /* t */
752
/* 117 */ VI_UNDO, /* u */
753
/* 118 */ ED_UNASSIGNED, /* v */
754
/* 119 */ VI_NEXT_WORD, /* w */
755
/* 120 */ ED_DELETE_NEXT_CHAR, /* x */
756
/* 121 */ ED_UNASSIGNED, /* y */
757
/* 122 */ ED_UNASSIGNED, /* z */
758
/* 123 */ ED_UNASSIGNED, /* { */
759
/* 124 */ ED_UNASSIGNED, /* | */
760
/* 125 */ ED_UNASSIGNED, /* } */
761
/* 126 */ VI_CHANGE_CASE, /* ~ */
762
/* 127 */ ED_DELETE_PREV_CHAR, /* ^? */
763
/* 128 */ ED_UNASSIGNED, /* M-^@ */
764
/* 129 */ ED_UNASSIGNED, /* M-^A */
765
/* 130 */ ED_UNASSIGNED, /* M-^B */
766
/* 131 */ ED_UNASSIGNED, /* M-^C */
767
/* 132 */ ED_UNASSIGNED, /* M-^D */
768
/* 133 */ ED_UNASSIGNED, /* M-^E */
769
/* 134 */ ED_UNASSIGNED, /* M-^F */
770
/* 135 */ ED_UNASSIGNED, /* M-^G */
771
/* 136 */ ED_UNASSIGNED, /* M-^H */
772
/* 137 */ ED_UNASSIGNED, /* M-^I */
773
/* 138 */ ED_UNASSIGNED, /* M-^J */
774
/* 139 */ ED_UNASSIGNED, /* M-^K */
775
/* 140 */ ED_UNASSIGNED, /* M-^L */
776
/* 141 */ ED_UNASSIGNED, /* M-^M */
777
/* 142 */ ED_UNASSIGNED, /* M-^N */
778
/* 143 */ ED_UNASSIGNED, /* M-^O */
779
/* 144 */ ED_UNASSIGNED, /* M-^P */
780
/* 145 */ ED_UNASSIGNED, /* M-^Q */
781
/* 146 */ ED_UNASSIGNED, /* M-^R */
782
/* 147 */ ED_UNASSIGNED, /* M-^S */
783
/* 148 */ ED_UNASSIGNED, /* M-^T */
784
/* 149 */ ED_UNASSIGNED, /* M-^U */
785
/* 150 */ ED_UNASSIGNED, /* M-^V */
786
/* 151 */ ED_UNASSIGNED, /* M-^W */
787
/* 152 */ ED_UNASSIGNED, /* M-^X */
788
/* 153 */ ED_UNASSIGNED, /* M-^Y */
789
/* 154 */ ED_UNASSIGNED, /* M-^Z */
790
/* 155 */ ED_UNASSIGNED, /* M-^[ */
791
/* 156 */ ED_UNASSIGNED, /* M-^\ */
792
/* 157 */ ED_UNASSIGNED, /* M-^] */
793
/* 158 */ ED_UNASSIGNED, /* M-^^ */
794
/* 159 */ ED_UNASSIGNED, /* M-^_ */
795
/* 160 */ ED_UNASSIGNED, /* M-SPACE */
796
/* 161 */ ED_UNASSIGNED, /* M-! */
797
/* 162 */ ED_UNASSIGNED, /* M-" */
798
/* 163 */ ED_UNASSIGNED, /* M-# */
799
/* 164 */ ED_UNASSIGNED, /* M-$ */
800
/* 165 */ ED_UNASSIGNED, /* M-% */
801
/* 166 */ ED_UNASSIGNED, /* M-& */
802
/* 167 */ ED_UNASSIGNED, /* M-' */
803
/* 168 */ ED_UNASSIGNED, /* M-( */
804
/* 169 */ ED_UNASSIGNED, /* M-) */
805
/* 170 */ ED_UNASSIGNED, /* M-* */
806
/* 171 */ ED_UNASSIGNED, /* M-+ */
807
/* 172 */ ED_UNASSIGNED, /* M-, */
808
/* 173 */ ED_UNASSIGNED, /* M-- */
809
/* 174 */ ED_UNASSIGNED, /* M-. */
810
/* 175 */ ED_UNASSIGNED, /* M-/ */
811
/* 176 */ ED_UNASSIGNED, /* M-0 */
812
/* 177 */ ED_UNASSIGNED, /* M-1 */
813
/* 178 */ ED_UNASSIGNED, /* M-2 */
814
/* 179 */ ED_UNASSIGNED, /* M-3 */
815
/* 180 */ ED_UNASSIGNED, /* M-4 */
816
/* 181 */ ED_UNASSIGNED, /* M-5 */
817
/* 182 */ ED_UNASSIGNED, /* M-6 */
818
/* 183 */ ED_UNASSIGNED, /* M-7 */
819
/* 184 */ ED_UNASSIGNED, /* M-8 */
820
/* 185 */ ED_UNASSIGNED, /* M-9 */
821
/* 186 */ ED_UNASSIGNED, /* M-: */
822
/* 187 */ ED_UNASSIGNED, /* M-; */
823
/* 188 */ ED_UNASSIGNED, /* M-< */
824
/* 189 */ ED_UNASSIGNED, /* M-= */
825
/* 190 */ ED_UNASSIGNED, /* M-> */
826
/* 191 */ ED_UNASSIGNED, /* M-? */
827
/* 192 */ ED_UNASSIGNED, /* M-@ */
828
/* 193 */ ED_UNASSIGNED, /* M-A */
829
/* 194 */ ED_UNASSIGNED, /* M-B */
830
/* 195 */ ED_UNASSIGNED, /* M-C */
831
/* 196 */ ED_UNASSIGNED, /* M-D */
832
/* 197 */ ED_UNASSIGNED, /* M-E */
833
/* 198 */ ED_UNASSIGNED, /* M-F */
834
/* 199 */ ED_UNASSIGNED, /* M-G */
835
/* 200 */ ED_UNASSIGNED, /* M-H */
836
/* 201 */ ED_UNASSIGNED, /* M-I */
837
/* 202 */ ED_UNASSIGNED, /* M-J */
838
/* 203 */ ED_UNASSIGNED, /* M-K */
839
/* 204 */ ED_UNASSIGNED, /* M-L */
840
/* 205 */ ED_UNASSIGNED, /* M-M */
841
/* 206 */ ED_UNASSIGNED, /* M-N */
842
/* 207 */ ED_SEQUENCE_LEAD_IN, /* M-O */
843
/* 208 */ ED_UNASSIGNED, /* M-P */
844
/* 209 */ ED_UNASSIGNED, /* M-Q */
845
/* 210 */ ED_UNASSIGNED, /* M-R */
846
/* 211 */ ED_UNASSIGNED, /* M-S */
847
/* 212 */ ED_UNASSIGNED, /* M-T */
848
/* 213 */ ED_UNASSIGNED, /* M-U */
849
/* 214 */ ED_UNASSIGNED, /* M-V */
850
/* 215 */ ED_UNASSIGNED, /* M-W */
851
/* 216 */ ED_UNASSIGNED, /* M-X */
852
/* 217 */ ED_UNASSIGNED, /* M-Y */
853
/* 218 */ ED_UNASSIGNED, /* M-Z */
854
/* 219 */ ED_SEQUENCE_LEAD_IN, /* M-[ */
855
/* 220 */ ED_UNASSIGNED, /* M-\ */
856
/* 221 */ ED_UNASSIGNED, /* M-] */
857
/* 222 */ ED_UNASSIGNED, /* M-^ */
858
/* 223 */ ED_UNASSIGNED, /* M-_ */
859
/* 224 */ ED_UNASSIGNED, /* M-` */
860
/* 225 */ ED_UNASSIGNED, /* M-a */
861
/* 226 */ ED_UNASSIGNED, /* M-b */
862
/* 227 */ ED_UNASSIGNED, /* M-c */
863
/* 228 */ ED_UNASSIGNED, /* M-d */
864
/* 229 */ ED_UNASSIGNED, /* M-e */
865
/* 230 */ ED_UNASSIGNED, /* M-f */
866
/* 231 */ ED_UNASSIGNED, /* M-g */
867
/* 232 */ ED_UNASSIGNED, /* M-h */
868
/* 233 */ ED_UNASSIGNED, /* M-i */
869
/* 234 */ ED_UNASSIGNED, /* M-j */
870
/* 235 */ ED_UNASSIGNED, /* M-k */
871
/* 236 */ ED_UNASSIGNED, /* M-l */
872
/* 237 */ ED_UNASSIGNED, /* M-m */
873
/* 238 */ ED_UNASSIGNED, /* M-n */
874
/* 239 */ ED_UNASSIGNED, /* M-o */
875
/* 240 */ ED_UNASSIGNED, /* M-p */
876
/* 241 */ ED_UNASSIGNED, /* M-q */
877
/* 242 */ ED_UNASSIGNED, /* M-r */
878
/* 243 */ ED_UNASSIGNED, /* M-s */
879
/* 244 */ ED_UNASSIGNED, /* M-t */
880
/* 245 */ ED_UNASSIGNED, /* M-u */
881
/* 246 */ ED_UNASSIGNED, /* M-v */
882
/* 247 */ ED_UNASSIGNED, /* M-w */
883
/* 248 */ ED_UNASSIGNED, /* M-x */
884
/* 249 */ ED_UNASSIGNED, /* M-y */
885
/* 250 */ ED_UNASSIGNED, /* M-z */
886
/* 251 */ ED_UNASSIGNED, /* M-{ */
887
/* 252 */ ED_UNASSIGNED, /* M-| */
888
/* 253 */ ED_UNASSIGNED, /* M-} */
889
/* 254 */ ED_UNASSIGNED, /* M-~ */
890
/* 255 */ ED_UNASSIGNED /* M-^? */
895
* Initialize and allocate the maps
898
map_init(EditLine *el)
902
* Make sure those are correct before starting.
905
if (sizeof(el_map_emacs) != N_KEYS * sizeof(el_action_t))
906
EL_ABORT((el->errfile, "Emacs map incorrect\n"));
907
if (sizeof(el_map_vi_command) != N_KEYS * sizeof(el_action_t))
908
EL_ABORT((el->errfile, "Vi command map incorrect\n"));
909
if (sizeof(el_map_vi_insert) != N_KEYS * sizeof(el_action_t))
910
EL_ABORT((el->errfile, "Vi insert map incorrect\n"));
913
el->el_map.alt = (el_action_t *)el_malloc(sizeof(el_action_t) * N_KEYS);
914
if (el->el_map.alt == NULL)
916
el->el_map.key = (el_action_t *)el_malloc(sizeof(el_action_t) * N_KEYS);
917
if (el->el_map.key == NULL)
919
el->el_map.emacs = el_map_emacs;
920
el->el_map.vic = el_map_vi_command;
921
el->el_map.vii = el_map_vi_insert;
922
el->el_map.help = (el_bindings_t *) el_malloc(sizeof(el_bindings_t) *
924
if (el->el_map.help == NULL)
926
(void) memcpy(el->el_map.help, help__get(),
927
sizeof(el_bindings_t) * EL_NUM_FCNS);
928
el->el_map.func = (el_func_t *)el_malloc(sizeof(el_func_t) *
930
if (el->el_map.func == NULL)
932
memcpy(el->el_map.func, func__get(), sizeof(el_func_t) * EL_NUM_FCNS);
933
el->el_map.nfunc = EL_NUM_FCNS;
939
#endif /* VIDEFAULT */
945
* Free the space taken by the editor maps
948
map_end(EditLine *el)
951
el_free((ptr_t) el->el_map.alt);
952
el->el_map.alt = NULL;
953
el_free((ptr_t) el->el_map.key);
954
el->el_map.key = NULL;
955
el->el_map.emacs = NULL;
956
el->el_map.vic = NULL;
957
el->el_map.vii = NULL;
958
el_free((ptr_t) el->el_map.help);
959
el->el_map.help = NULL;
960
el_free((ptr_t) el->el_map.func);
961
el->el_map.func = NULL;
966
* Find all the printable keys and bind them to self insert
969
map_init_nls(EditLine *el)
973
el_action_t *map = el->el_map.key;
975
for (i = 0200; i <= 0377; i++)
982
* Bind all the meta keys to the appropriate ESC-<key> sequence
985
map_init_meta(EditLine *el)
989
el_action_t *map = el->el_map.key;
990
el_action_t *alt = el->el_map.alt;
992
for (i = 0; i <= 0377 && map[i] != EM_META_NEXT; i++)
996
for (i = 0; i <= 0377 && alt[i] != EM_META_NEXT; i++)
1000
if (el->el_map.type == MAP_VI)
1007
for (i = 0200; i <= 0377; i++)
1011
case ED_SEQUENCE_LEAD_IN:
1015
key_add(el, buf, key_map_cmd(el, (int) map[i]), XK_CMD);
1018
map[(int) buf[0]] = ED_SEQUENCE_LEAD_IN;
1023
* Initialize the vi bindings
1026
map_init_vi(EditLine *el)
1029
el_action_t *key = el->el_map.key;
1030
el_action_t *alt = el->el_map.alt;
1031
const el_action_t *vii = el->el_map.vii;
1032
const el_action_t *vic = el->el_map.vic;
1034
el->el_map.type = MAP_VI;
1035
el->el_map.current = el->el_map.key;
1039
for (i = 0; i < N_KEYS; i++) {
1047
tty_bind_char(el, 1);
1048
term_bind_arrow(el);
1052
/* map_init_emacs():
1053
* Initialize the emacs bindings
1056
map_init_emacs(EditLine *el)
1060
el_action_t *key = el->el_map.key;
1061
el_action_t *alt = el->el_map.alt;
1062
const el_action_t *emacs = el->el_map.emacs;
1064
el->el_map.type = MAP_EMACS;
1065
el->el_map.current = el->el_map.key;
1068
for (i = 0; i < N_KEYS; i++) {
1070
alt[i] = ED_UNASSIGNED;
1076
buf[0] = CONTROL('X');
1077
buf[1] = CONTROL('X');
1079
key_add(el, buf, key_map_cmd(el, EM_EXCHANGE_MARK), XK_CMD);
1081
tty_bind_char(el, 1);
1082
term_bind_arrow(el);
1086
/* map_set_editor():
1090
map_set_editor(EditLine *el, char *editor)
1093
if (strcmp(editor, "emacs") == 0) {
1097
if (strcmp(editor, "vi") == 0) {
1105
/* map_get_editor():
1106
* Retrieve the editor
1109
map_get_editor(EditLine *el, const char **editor)
1114
switch (el->el_map.type) {
1127
* Print the function description for 1 key
1130
map_print_key(EditLine *el, el_action_t *map, const char *in)
1132
char outbuf[EL_BUFSIZ];
1135
if (in[0] == '\0' || in[1] == '\0') {
1136
(void) key__decode_str(in, outbuf, "");
1137
for (bp = el->el_map.help; bp->name != NULL; bp++)
1138
if (bp->func == map[(unsigned char) *in]) {
1139
(void) fprintf(el->el_outfile,
1140
"%s\t->\t%s\n", outbuf, bp->name);
1148
/* map_print_some_keys():
1149
* Print keys from first to last
1152
map_print_some_keys(EditLine *el, el_action_t *map, int first, int last)
1155
char firstbuf[2], lastbuf[2];
1156
char unparsbuf[EL_BUFSIZ], extrabuf[EL_BUFSIZ];
1158
firstbuf[0] = first;
1162
if (map[first] == ED_UNASSIGNED) {
1164
(void) fprintf(el->el_outfile,
1165
"%-15s-> is undefined\n",
1166
key__decode_str(firstbuf, unparsbuf, STRQQ));
1169
for (bp = el->el_map.help; bp->name != NULL; bp++) {
1170
if (bp->func == map[first]) {
1171
if (first == last) {
1172
(void) fprintf(el->el_outfile, "%-15s-> %s\n",
1173
key__decode_str(firstbuf, unparsbuf, STRQQ),
1176
(void) fprintf(el->el_outfile,
1177
"%-4s to %-7s-> %s\n",
1178
key__decode_str(firstbuf, unparsbuf, STRQQ),
1179
key__decode_str(lastbuf, extrabuf, STRQQ),
1186
if (map == el->el_map.key) {
1187
(void) fprintf(el->el_outfile,
1188
"BUG!!! %s isn't bound to anything.\n",
1189
key__decode_str(firstbuf, unparsbuf, STRQQ));
1190
(void) fprintf(el->el_outfile, "el->el_map.key[%d] == %d\n",
1191
first, el->el_map.key[first]);
1193
(void) fprintf(el->el_outfile,
1194
"BUG!!! %s isn't bound to anything.\n",
1195
key__decode_str(firstbuf, unparsbuf, STRQQ));
1196
(void) fprintf(el->el_outfile, "el->el_map.alt[%d] == %d\n",
1197
first, el->el_map.alt[first]);
1200
EL_ABORT((el->el_errfile, "Error printing keys\n"));
1204
/* map_print_all_keys():
1205
* Print the function description for all keys.
1208
map_print_all_keys(EditLine *el)
1212
(void) fprintf(el->el_outfile, "Standard key bindings\n");
1214
for (i = 0; i < N_KEYS; i++) {
1215
if (el->el_map.key[prev] == el->el_map.key[i])
1217
map_print_some_keys(el, el->el_map.key, prev, i - 1);
1220
map_print_some_keys(el, el->el_map.key, prev, i - 1);
1222
(void) fprintf(el->el_outfile, "Alternative key bindings\n");
1224
for (i = 0; i < N_KEYS; i++) {
1225
if (el->el_map.alt[prev] == el->el_map.alt[i])
1227
map_print_some_keys(el, el->el_map.alt, prev, i - 1);
1230
map_print_some_keys(el, el->el_map.alt, prev, i - 1);
1232
(void) fprintf(el->el_outfile, "Multi-character bindings\n");
1234
(void) fprintf(el->el_outfile, "Arrow key bindings\n");
1235
term_print_arrow(el, "");
1240
* Add/remove/change bindings
1243
map_bind(EditLine *el, int argc, const char **argv)
1248
char inbuf[EL_BUFSIZ];
1249
char outbuf[EL_BUFSIZ];
1250
const char *in = NULL;
1259
map = el->el_map.key;
1262
for (argc = 1; (p = argv[argc]) != NULL; argc++)
1266
map = el->el_map.alt;
1294
for (bp = el->el_map.help; bp->name != NULL;
1296
(void) fprintf(el->el_outfile,
1298
bp->name, bp->description);
1301
(void) fprintf(el->el_errfile,
1302
"%s: Invalid switch `%c'.\n",
1308
if (argv[argc] == NULL) {
1309
map_print_all_keys(el);
1314
else if ((in = parse__string(inbuf, argv[argc++])) == NULL) {
1315
(void) fprintf(el->el_errfile,
1316
"%s: Invalid \\ or ^ in instring.\n",
1322
(void) term_clear_arrow(el, in);
1326
(void) key_delete(el, in);
1327
else if (map[(unsigned char) *in] == ED_SEQUENCE_LEAD_IN)
1328
(void) key_delete(el, in);
1330
map[(unsigned char) *in] = ED_UNASSIGNED;
1333
if (argv[argc] == NULL) {
1335
term_print_arrow(el, in);
1337
map_print_key(el, map, in);
1341
if (argv[argc + 1] != NULL) {
1350
if ((out = parse__string(outbuf, argv[argc])) == NULL) {
1351
(void) fprintf(el->el_errfile,
1352
"%s: Invalid \\ or ^ in outstring.\n", argv[0]);
1356
term_set_arrow(el, in, key_map_str(el, out), ntype);
1358
key_add(el, in, key_map_str(el, out), ntype);
1359
map[(unsigned char) *in] = ED_SEQUENCE_LEAD_IN;
1363
if ((cmd = parse_cmd(el, argv[argc])) == -1) {
1364
(void) fprintf(el->el_errfile,
1365
"%s: Invalid command `%s'.\n", argv[0], argv[argc]);
1369
term_set_arrow(el, in, key_map_str(el, out), ntype);
1372
key_add(el, in, key_map_cmd(el, cmd), ntype);
1373
map[(unsigned char) *in] = ED_SEQUENCE_LEAD_IN;
1375
key_clear(el, map, in);
1376
map[(unsigned char) *in] = cmd;
1382
EL_ABORT((el->el_errfile, "Bad XK_ type\n", ntype));
1390
* add a user defined function
1393
map_addfunc(EditLine *el, const char *name, const char *help, el_func_t func)
1396
int nf = el->el_map.nfunc + 2;
1398
if (name == NULL || help == NULL || func == NULL)
1401
if ((p = el_realloc(el->el_map.func, nf * sizeof(el_func_t))) == NULL)
1403
el->el_map.func = (el_func_t *) p;
1404
if ((p = el_realloc(el->el_map.help, nf * sizeof(el_bindings_t)))
1407
el->el_map.help = (el_bindings_t *) p;
1409
nf = el->el_map.nfunc;
1410
el->el_map.func[nf] = func;
1412
el->el_map.help[nf].name = name;
1413
el->el_map.help[nf].func = nf;
1414
el->el_map.help[nf].description = help;
1415
el->el_map.help[++nf].name = NULL;