1 /* vi_keymap.c -- the keymap for vi_mode in readline (). */
3 /* Copyright (C) 1988,1989 Free Software Foundation, Inc.
5 This file is part of GNU Readline, a library for reading lines
6 of text with interactive input and history editing.
8 Readline is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 1, or (at your option) any
13 Readline is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with Readline; see the file COPYING. If not, write to the Free
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
28 extern KEYMAP_ENTRY_ARRAY vi_escape_keymap;
30 /* The keymap arrays for handling vi mode. */
31 KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
33 /* The regular control keys come first. */
34 { ISFUNC, (Function *)0x0 }, /* Control-@ */
35 { ISFUNC, (Function *)0x0 }, /* Control-a */
36 { ISFUNC, (Function *)0x0 }, /* Control-b */
37 { ISFUNC, (Function *)0x0 }, /* Control-c */
38 { ISFUNC, rl_vi_eof_maybe }, /* Control-d */
39 { ISFUNC, rl_emacs_editing_mode }, /* Control-e */
40 { ISFUNC, (Function *)0x0 }, /* Control-f */
41 { ISFUNC, rl_abort }, /* Control-g */
42 { ISFUNC, rl_backward }, /* Control-h */
43 { ISFUNC, (Function *)0x0 }, /* Control-i */
44 { ISFUNC, rl_newline }, /* Control-j */
45 { ISFUNC, rl_kill_line }, /* Control-k */
46 { ISFUNC, rl_clear_screen }, /* Control-l */
47 { ISFUNC, rl_newline }, /* Control-m */
48 { ISFUNC, rl_get_next_history }, /* Control-n */
49 { ISFUNC, (Function *)0x0 }, /* Control-o */
50 { ISFUNC, rl_get_previous_history }, /* Control-p */
51 { ISFUNC, rl_quoted_insert }, /* Control-q */
52 { ISFUNC, rl_reverse_search_history }, /* Control-r */
53 { ISFUNC, rl_forward_search_history }, /* Control-s */
54 { ISFUNC, rl_transpose_chars }, /* Control-t */
55 { ISFUNC, rl_unix_line_discard }, /* Control-u */
56 { ISFUNC, rl_quoted_insert }, /* Control-v */
57 { ISFUNC, rl_unix_word_rubout }, /* Control-w */
58 { ISFUNC, (Function *)0x0 }, /* Control-x */
59 { ISFUNC, rl_yank }, /* Control-y */
60 { ISFUNC, (Function *)0x0 }, /* Control-z */
62 { ISKMAP, (Function *)vi_escape_keymap }, /* Control-[ */
63 { ISFUNC, (Function *)0x0 }, /* Control-\ */
64 { ISFUNC, (Function *)0x0 }, /* Control-] */
65 { ISFUNC, (Function *)0x0 }, /* Control-^ */
66 { ISFUNC, rl_undo_command }, /* Control-_ */
68 /* The start of printing characters. */
69 { ISFUNC, rl_forward }, /* SPACE */
70 { ISFUNC, (Function *)0x0 }, /* ! */
71 { ISFUNC, (Function *)0x0 }, /* " */
72 { ISFUNC, rl_vi_comment }, /* # */
73 { ISFUNC, rl_end_of_line }, /* $ */
74 { ISFUNC, rl_vi_match }, /* % */
75 { ISFUNC, (Function *)0x0 }, /* & */
76 { ISFUNC, (Function *)0x0 }, /* ' */
77 { ISFUNC, (Function *)0x0 }, /* ( */
78 { ISFUNC, (Function *)0x0 }, /* ) */
79 { ISFUNC, rl_vi_complete }, /* * */
80 { ISFUNC, rl_get_next_history}, /* + */
81 { ISFUNC, rl_vi_char_search }, /* , */
82 { ISFUNC, rl_get_previous_history }, /* - */
83 { ISFUNC, (Function *)0x0 }, /* . */
84 { ISFUNC, rl_vi_search }, /* / */
87 { ISFUNC, rl_vi_arg_digit }, /* 0 */
88 { ISFUNC, rl_vi_arg_digit }, /* 1 */
89 { ISFUNC, rl_vi_arg_digit }, /* 2 */
90 { ISFUNC, rl_vi_arg_digit }, /* 3 */
91 { ISFUNC, rl_vi_arg_digit }, /* 4 */
92 { ISFUNC, rl_vi_arg_digit }, /* 5 */
93 { ISFUNC, rl_vi_arg_digit }, /* 6 */
94 { ISFUNC, rl_vi_arg_digit }, /* 7 */
95 { ISFUNC, rl_vi_arg_digit }, /* 8 */
96 { ISFUNC, rl_vi_arg_digit }, /* 9 */
98 /* A little more punctuation. */
99 { ISFUNC, (Function *)0x0 }, /* : */
100 { ISFUNC, rl_vi_char_search }, /* ; */
101 { ISFUNC, (Function *)0x0 }, /* < */
102 { ISFUNC, (Function *)0x0 }, /* = */
103 { ISFUNC, (Function *)0x0 }, /* > */
104 { ISFUNC, rl_vi_search }, /* ? */
105 { ISFUNC, (Function *)0x0 }, /* @ */
107 /* Uppercase alphabet. */
108 { ISFUNC, rl_vi_append_eol }, /* A */
109 { ISFUNC, rl_vi_prev_word}, /* B */
110 { ISFUNC, rl_vi_change_to }, /* C */
111 { ISFUNC, rl_vi_delete_to }, /* D */
112 { ISFUNC, rl_vi_end_word }, /* E */
113 { ISFUNC, rl_vi_char_search }, /* F */
114 { ISFUNC, (Function *)0x0 }, /* G */
115 { ISFUNC, (Function *)0x0 }, /* H */
116 { ISFUNC, rl_vi_insert_beg }, /* I */
117 { ISFUNC, (Function *)0x0 }, /* J */
118 { ISFUNC, (Function *)0x0 }, /* K */
119 { ISFUNC, (Function *)0x0 }, /* L */
120 { ISFUNC, (Function *)0x0 }, /* M */
121 { ISFUNC, rl_vi_search_again }, /* N */
122 { ISFUNC, (Function *)0x0 }, /* O */
123 { ISFUNC, rl_vi_put }, /* P */
124 { ISFUNC, (Function *)0x0 }, /* Q */
125 { ISFUNC, rl_vi_replace }, /* R */
126 { ISFUNC, rl_vi_subst }, /* S */
127 { ISFUNC, rl_vi_char_search }, /* T */
128 { ISFUNC, rl_revert_line }, /* U */
129 { ISFUNC, (Function *)0x0 }, /* V */
130 { ISFUNC, rl_vi_next_word }, /* W */
131 { ISFUNC, rl_rubout }, /* X */
132 { ISFUNC, rl_vi_yank_to }, /* Y */
133 { ISFUNC, (Function *)0x0 }, /* Z */
135 /* Some more punctuation. */
136 { ISFUNC, (Function *)0x0 }, /* [ */
137 { ISFUNC, (Function *)0x0 }, /* \ */
138 { ISFUNC, (Function *)0x0 }, /* ] */
139 { ISFUNC, rl_vi_first_print }, /* ^ */
140 { ISFUNC, rl_vi_yank_arg }, /* _ */
141 { ISFUNC, (Function *)0x0 }, /* ` */
143 /* Lowercase alphabet. */
144 { ISFUNC, rl_vi_append_mode }, /* a */
145 { ISFUNC, rl_vi_prev_word }, /* b */
146 { ISFUNC, rl_vi_change_to }, /* c */
147 { ISFUNC, rl_vi_delete_to }, /* d */
148 { ISFUNC, rl_vi_end_word }, /* e */
149 { ISFUNC, rl_vi_char_search }, /* f */
150 { ISFUNC, (Function *)0x0 }, /* g */
151 { ISFUNC, rl_backward }, /* h */
152 { ISFUNC, rl_vi_insertion_mode }, /* i */
153 { ISFUNC, rl_get_next_history }, /* j */
154 { ISFUNC, rl_get_previous_history }, /* k */
155 { ISFUNC, rl_forward }, /* l */
156 { ISFUNC, (Function *)0x0 }, /* m */
157 { ISFUNC, rl_vi_search_again }, /* n */
158 { ISFUNC, (Function *)0x0 }, /* o */
159 { ISFUNC, rl_vi_put }, /* p */
160 { ISFUNC, (Function *)0x0 }, /* q */
161 { ISFUNC, rl_vi_change_char }, /* r */
162 { ISFUNC, rl_vi_subst }, /* s */
163 { ISFUNC, rl_vi_char_search }, /* t */
164 { ISFUNC, rl_undo_command }, /* u */
165 { ISFUNC, (Function *)0x0 }, /* v */
166 { ISFUNC, rl_vi_next_word }, /* w */
167 { ISFUNC, rl_vi_delete }, /* x */
168 { ISFUNC, rl_vi_yank_to }, /* y */
169 { ISFUNC, (Function *)0x0 }, /* z */
171 /* Final punctuation. */
172 { ISFUNC, (Function *)0x0 }, /* { */
173 { ISFUNC, rl_vi_column }, /* | */
174 { ISFUNC, (Function *)0x0 }, /* } */
175 { ISFUNC, rl_vi_change_case }, /* ~ */
176 { ISFUNC, rl_backward } /* RUBOUT */
180 KEYMAP_ENTRY_ARRAY vi_insertion_keymap = {
182 /* The regular control keys come first. */
183 { ISFUNC, (Function *)0x0 }, /* Control-@ */
184 { ISFUNC, rl_insert }, /* Control-a */
185 { ISFUNC, rl_insert }, /* Control-b */
186 { ISFUNC, rl_insert }, /* Control-c */
187 { ISFUNC, rl_vi_eof_maybe }, /* Control-d */
188 { ISFUNC, rl_insert }, /* Control-e */
189 { ISFUNC, rl_insert }, /* Control-f */
190 { ISFUNC, rl_insert }, /* Control-g */
191 { ISFUNC, rl_rubout }, /* Control-h */
192 { ISFUNC, rl_complete }, /* Control-i */
193 { ISFUNC, rl_newline }, /* Control-j */
194 { ISFUNC, rl_insert }, /* Control-k */
195 { ISFUNC, rl_insert }, /* Control-l */
196 { ISFUNC, rl_newline }, /* Control-m */
197 { ISFUNC, rl_insert }, /* Control-n */
198 { ISFUNC, rl_insert }, /* Control-o */
199 { ISFUNC, rl_insert }, /* Control-p */
200 { ISFUNC, rl_insert }, /* Control-q */
201 { ISFUNC, rl_reverse_search_history }, /* Control-r */
202 { ISFUNC, rl_forward_search_history }, /* Control-s */
203 { ISFUNC, rl_transpose_chars }, /* Control-t */
204 { ISFUNC, rl_unix_line_discard }, /* Control-u */
205 { ISFUNC, rl_quoted_insert }, /* Control-v */
206 { ISFUNC, rl_unix_word_rubout }, /* Control-w */
207 { ISFUNC, rl_insert }, /* Control-x */
208 { ISFUNC, rl_yank }, /* Control-y */
209 { ISFUNC, rl_insert }, /* Control-z */
211 { ISFUNC, rl_vi_movement_mode }, /* Control-[ */
212 { ISFUNC, rl_insert }, /* Control-\ */
213 { ISFUNC, rl_insert }, /* Control-] */
214 { ISFUNC, rl_insert }, /* Control-^ */
215 { ISFUNC, rl_undo_command }, /* Control-_ */
217 /* The start of printing characters. */
218 { ISFUNC, rl_insert }, /* SPACE */
219 { ISFUNC, rl_insert }, /* ! */
220 { ISFUNC, rl_insert }, /* " */
221 { ISFUNC, rl_insert }, /* # */
222 { ISFUNC, rl_insert }, /* $ */
223 { ISFUNC, rl_insert }, /* % */
224 { ISFUNC, rl_insert }, /* & */
225 { ISFUNC, rl_insert }, /* ' */
226 { ISFUNC, rl_insert }, /* ( */
227 { ISFUNC, rl_insert }, /* ) */
228 { ISFUNC, rl_insert }, /* * */
229 { ISFUNC, rl_insert }, /* + */
230 { ISFUNC, rl_insert }, /* , */
231 { ISFUNC, rl_insert }, /* - */
232 { ISFUNC, rl_insert }, /* . */
233 { ISFUNC, rl_insert }, /* / */
235 /* Regular digits. */
236 { ISFUNC, rl_insert }, /* 0 */
237 { ISFUNC, rl_insert }, /* 1 */
238 { ISFUNC, rl_insert }, /* 2 */
239 { ISFUNC, rl_insert }, /* 3 */
240 { ISFUNC, rl_insert }, /* 4 */
241 { ISFUNC, rl_insert }, /* 5 */
242 { ISFUNC, rl_insert }, /* 6 */
243 { ISFUNC, rl_insert }, /* 7 */
244 { ISFUNC, rl_insert }, /* 8 */
245 { ISFUNC, rl_insert }, /* 9 */
247 /* A little more punctuation. */
248 { ISFUNC, rl_insert }, /* : */
249 { ISFUNC, rl_insert }, /* ; */
250 { ISFUNC, rl_insert }, /* < */
251 { ISFUNC, rl_insert }, /* = */
252 { ISFUNC, rl_insert }, /* > */
253 { ISFUNC, rl_insert }, /* ? */
254 { ISFUNC, rl_insert }, /* @ */
256 /* Uppercase alphabet. */
257 { ISFUNC, rl_insert }, /* A */
258 { ISFUNC, rl_insert }, /* B */
259 { ISFUNC, rl_insert }, /* C */
260 { ISFUNC, rl_insert }, /* D */
261 { ISFUNC, rl_insert }, /* E */
262 { ISFUNC, rl_insert }, /* F */
263 { ISFUNC, rl_insert }, /* G */
264 { ISFUNC, rl_insert }, /* H */
265 { ISFUNC, rl_insert }, /* I */
266 { ISFUNC, rl_insert }, /* J */
267 { ISFUNC, rl_insert }, /* K */
268 { ISFUNC, rl_insert }, /* L */
269 { ISFUNC, rl_insert }, /* M */
270 { ISFUNC, rl_insert }, /* N */
271 { ISFUNC, rl_insert }, /* O */
272 { ISFUNC, rl_insert }, /* P */
273 { ISFUNC, rl_insert }, /* Q */
274 { ISFUNC, rl_insert }, /* R */
275 { ISFUNC, rl_insert }, /* S */
276 { ISFUNC, rl_insert }, /* T */
277 { ISFUNC, rl_insert }, /* U */
278 { ISFUNC, rl_insert }, /* V */
279 { ISFUNC, rl_insert }, /* W */
280 { ISFUNC, rl_insert }, /* X */
281 { ISFUNC, rl_insert }, /* Y */
282 { ISFUNC, rl_insert }, /* Z */
284 /* Some more punctuation. */
285 { ISFUNC, rl_insert }, /* [ */
286 { ISFUNC, rl_insert }, /* \ */
287 { ISFUNC, rl_insert }, /* ] */
288 { ISFUNC, rl_insert }, /* ^ */
289 { ISFUNC, rl_insert }, /* _ */
290 { ISFUNC, rl_insert }, /* ` */
292 /* Lowercase alphabet. */
293 { ISFUNC, rl_insert }, /* a */
294 { ISFUNC, rl_insert }, /* b */
295 { ISFUNC, rl_insert }, /* c */
296 { ISFUNC, rl_insert }, /* d */
297 { ISFUNC, rl_insert }, /* e */
298 { ISFUNC, rl_insert }, /* f */
299 { ISFUNC, rl_insert }, /* g */
300 { ISFUNC, rl_insert }, /* h */
301 { ISFUNC, rl_insert }, /* i */
302 { ISFUNC, rl_insert }, /* j */
303 { ISFUNC, rl_insert }, /* k */
304 { ISFUNC, rl_insert }, /* l */
305 { ISFUNC, rl_insert }, /* m */
306 { ISFUNC, rl_insert }, /* n */
307 { ISFUNC, rl_insert }, /* o */
308 { ISFUNC, rl_insert }, /* p */
309 { ISFUNC, rl_insert }, /* q */
310 { ISFUNC, rl_insert }, /* r */
311 { ISFUNC, rl_insert }, /* s */
312 { ISFUNC, rl_insert }, /* t */
313 { ISFUNC, rl_insert }, /* u */
314 { ISFUNC, rl_insert }, /* v */
315 { ISFUNC, rl_insert }, /* w */
316 { ISFUNC, rl_insert }, /* x */
317 { ISFUNC, rl_insert }, /* y */
318 { ISFUNC, rl_insert }, /* z */
320 /* Final punctuation. */
321 { ISFUNC, rl_insert }, /* { */
322 { ISFUNC, rl_insert }, /* | */
323 { ISFUNC, rl_insert }, /* } */
324 { ISFUNC, rl_insert }, /* ~ */
325 { ISFUNC, rl_rubout } /* RUBOUT */
328 KEYMAP_ENTRY_ARRAY vi_escape_keymap = {
330 /* The regular control keys come first. */
331 { ISFUNC, (Function *)0x0 }, /* Control-@ */
332 { ISFUNC, (Function *)0x0 }, /* Control-a */
333 { ISFUNC, (Function *)0x0 }, /* Control-b */
334 { ISFUNC, (Function *)0x0 }, /* Control-c */
335 { ISFUNC, (Function *)0x0 }, /* Control-d */
336 { ISFUNC, (Function *)0x0 }, /* Control-e */
337 { ISFUNC, (Function *)0x0 }, /* Control-f */
338 { ISFUNC, (Function *)0x0 }, /* Control-g */
339 { ISFUNC, (Function *)0x0 }, /* Control-h */
340 { ISFUNC, rl_tab_insert}, /* Control-i */
341 { ISFUNC, rl_emacs_editing_mode}, /* Control-j */
342 { ISFUNC, rl_kill_line }, /* Control-k */
343 { ISFUNC, (Function *)0x0 }, /* Control-l */
344 { ISFUNC, rl_emacs_editing_mode}, /* Control-m */
345 { ISFUNC, (Function *)0x0 }, /* Control-n */
346 { ISFUNC, (Function *)0x0 }, /* Control-o */
347 { ISFUNC, (Function *)0x0 }, /* Control-p */
348 { ISFUNC, (Function *)0x0 }, /* Control-q */
349 { ISFUNC, (Function *)0x0 }, /* Control-r */
350 { ISFUNC, (Function *)0x0 }, /* Control-s */
351 { ISFUNC, (Function *)0x0 }, /* Control-t */
352 { ISFUNC, (Function *)0x0 }, /* Control-u */
353 { ISFUNC, (Function *)0x0 }, /* Control-v */
354 { ISFUNC, (Function *)0x0 }, /* Control-w */
355 { ISFUNC, (Function *)0x0 }, /* Control-x */
356 { ISFUNC, (Function *)0x0 }, /* Control-y */
357 { ISFUNC, (Function *)0x0 }, /* Control-z */
359 { ISFUNC, rl_vi_movement_mode }, /* Control-[ */
360 { ISFUNC, (Function *)0x0 }, /* Control-\ */
361 { ISFUNC, (Function *)0x0 }, /* Control-] */
362 { ISFUNC, (Function *)0x0 }, /* Control-^ */
363 { ISFUNC, rl_undo_command }, /* Control-_ */
365 /* The start of printing characters. */
366 { ISFUNC, (Function *)0x0 }, /* SPACE */
367 { ISFUNC, (Function *)0x0 }, /* ! */
368 { ISFUNC, (Function *)0x0 }, /* " */
369 { ISFUNC, (Function *)0x0 }, /* # */
370 { ISFUNC, (Function *)0x0 }, /* $ */
371 { ISFUNC, (Function *)0x0 }, /* % */
372 { ISFUNC, (Function *)0x0 }, /* & */
373 { ISFUNC, (Function *)0x0 }, /* ' */
374 { ISFUNC, (Function *)0x0 }, /* ( */
375 { ISFUNC, (Function *)0x0 }, /* ) */
376 { ISFUNC, (Function *)0x0 }, /* * */
377 { ISFUNC, (Function *)0x0 }, /* + */
378 { ISFUNC, (Function *)0x0 }, /* , */
379 { ISFUNC, (Function *)0x0 }, /* - */
380 { ISFUNC, (Function *)0x0 }, /* . */
381 { ISFUNC, (Function *)0x0 }, /* / */
383 /* Regular digits. */
384 { ISFUNC, rl_vi_arg_digit }, /* 0 */
385 { ISFUNC, rl_vi_arg_digit }, /* 1 */
386 { ISFUNC, rl_vi_arg_digit }, /* 2 */
387 { ISFUNC, rl_vi_arg_digit }, /* 3 */
388 { ISFUNC, rl_vi_arg_digit }, /* 4 */
389 { ISFUNC, rl_vi_arg_digit }, /* 5 */
390 { ISFUNC, rl_vi_arg_digit }, /* 6 */
391 { ISFUNC, rl_vi_arg_digit }, /* 7 */
392 { ISFUNC, rl_vi_arg_digit }, /* 8 */
393 { ISFUNC, rl_vi_arg_digit }, /* 9 */
395 /* A little more punctuation. */
396 { ISFUNC, (Function *)0x0 }, /* : */
397 { ISFUNC, (Function *)0x0 }, /* ; */
398 { ISFUNC, (Function *)0x0 }, /* < */
399 { ISFUNC, (Function *)0x0 }, /* = */
400 { ISFUNC, (Function *)0x0 }, /* > */
401 { ISFUNC, (Function *)0x0 }, /* ? */
402 { ISFUNC, (Function *)0x0 }, /* @ */
404 /* Uppercase alphabet. */
405 { ISFUNC, rl_do_lowercase_version }, /* A */
406 { ISFUNC, rl_do_lowercase_version }, /* B */
407 { ISFUNC, rl_do_lowercase_version }, /* C */
408 { ISFUNC, rl_do_lowercase_version }, /* D */
409 { ISFUNC, rl_do_lowercase_version }, /* E */
410 { ISFUNC, rl_do_lowercase_version }, /* F */
411 { ISFUNC, rl_do_lowercase_version }, /* G */
412 { ISFUNC, rl_do_lowercase_version }, /* H */
413 { ISFUNC, rl_do_lowercase_version }, /* I */
414 { ISFUNC, rl_do_lowercase_version }, /* J */
415 { ISFUNC, rl_do_lowercase_version }, /* K */
416 { ISFUNC, rl_do_lowercase_version }, /* L */
417 { ISFUNC, rl_do_lowercase_version }, /* M */
418 { ISFUNC, rl_do_lowercase_version }, /* N */
419 { ISFUNC, rl_do_lowercase_version }, /* O */
420 { ISFUNC, rl_do_lowercase_version }, /* P */
421 { ISFUNC, rl_do_lowercase_version }, /* Q */
422 { ISFUNC, rl_do_lowercase_version }, /* R */
423 { ISFUNC, rl_do_lowercase_version }, /* S */
424 { ISFUNC, rl_do_lowercase_version }, /* T */
425 { ISFUNC, rl_do_lowercase_version }, /* U */
426 { ISFUNC, rl_do_lowercase_version }, /* V */
427 { ISFUNC, rl_do_lowercase_version }, /* W */
428 { ISFUNC, rl_do_lowercase_version }, /* X */
429 { ISFUNC, rl_do_lowercase_version }, /* Y */
430 { ISFUNC, rl_do_lowercase_version }, /* Z */
432 /* Some more punctuation. */
433 { ISFUNC, (Function *)0x0 }, /* [ */
434 { ISFUNC, (Function *)0x0 }, /* \ */
435 { ISFUNC, (Function *)0x0 }, /* ] */
436 { ISFUNC, (Function *)0x0 }, /* ^ */
437 { ISFUNC, (Function *)0x0 }, /* _ */
438 { ISFUNC, (Function *)0x0 }, /* ` */
440 /* Lowercase alphabet. */
441 { ISFUNC, (Function *)0x0 }, /* a */
442 { ISFUNC, (Function *)0x0 }, /* b */
443 { ISFUNC, (Function *)0x0 }, /* c */
444 { ISFUNC, (Function *)0x0 }, /* d */
445 { ISFUNC, (Function *)0x0 }, /* e */
446 { ISFUNC, (Function *)0x0 }, /* f */
447 { ISFUNC, (Function *)0x0 }, /* g */
448 { ISFUNC, (Function *)0x0 }, /* h */
449 { ISFUNC, (Function *)0x0 }, /* i */
450 { ISFUNC, (Function *)0x0 }, /* j */
451 { ISFUNC, (Function *)0x0 }, /* k */
452 { ISFUNC, (Function *)0x0 }, /* l */
453 { ISFUNC, (Function *)0x0 }, /* m */
454 { ISFUNC, (Function *)0x0 }, /* n */
455 { ISFUNC, (Function *)0x0 }, /* o */
456 { ISFUNC, (Function *)0x0 }, /* p */
457 { ISFUNC, (Function *)0x0 }, /* q */
458 { ISFUNC, (Function *)0x0 }, /* r */
459 { ISFUNC, (Function *)0x0 }, /* s */
460 { ISFUNC, (Function *)0x0 }, /* t */
461 { ISFUNC, (Function *)0x0 }, /* u */
462 { ISFUNC, (Function *)0x0 }, /* v */
463 { ISFUNC, (Function *)0x0 }, /* w */
464 { ISFUNC, (Function *)0x0 }, /* x */
465 { ISFUNC, (Function *)0x0 }, /* y */
466 { ISFUNC, (Function *)0x0 }, /* z */
468 /* Final punctuation. */
469 { ISFUNC, (Function *)0x0 }, /* { */
470 { ISFUNC, (Function *)0x0 }, /* | */
471 { ISFUNC, (Function *)0x0 }, /* } */
472 { ISFUNC, (Function *)0x0 }, /* ~ */
473 { ISFUNC, rl_backward_kill_word } /* RUBOUT */