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