Integrate new readline from Brian Fox.
[external/binutils.git] / readline / emacs_keymap.c
1 /* emacs_keymap.c -- the keymap for emacs_mode in readline (). */
2
3 /* Copyright (C) 1988,1989 Free Software Foundation, Inc.
4
5    This file is part of GNU Readline, a library for reading lines
6    of text with interactive input and history editing.
7
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
11    later version.
12
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.
17
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. */
21
22 #ifndef BUFSIZ
23 #include <stdio.h>
24 #endif /* BUFSIZ */
25
26 #include "readline.h"
27
28 /* An array of function pointers, one for each possible key.
29    If the type byte is ISKMAP, then the pointer is the address of
30    a keymap. */
31
32 KEYMAP_ENTRY_ARRAY emacs_standard_keymap = {
33
34   /* Control keys. */
35   { ISFUNC, (Function *)0x0 },          /* Control-@ */
36   { ISFUNC, rl_beg_of_line },           /* Control-a */
37   { ISFUNC, rl_backward },              /* Control-b */
38   { ISFUNC, (Function *)0x0 },          /* Control-c */
39   { ISFUNC, rl_delete },                /* Control-d */
40   { ISFUNC, rl_end_of_line },           /* Control-e */
41   { ISFUNC, rl_forward },               /* Control-f */
42   { ISFUNC, rl_abort },                 /* Control-g */
43   { ISFUNC, rl_rubout },                /* Control-h */
44   { ISFUNC, rl_complete },              /* Control-i */
45   { ISFUNC, rl_newline },               /* Control-j */
46   { ISFUNC, rl_kill_line },             /* Control-k */
47   { ISFUNC, rl_clear_screen },          /* Control-l */
48   { ISFUNC, rl_newline },               /* Control-m */
49   { ISFUNC, rl_get_next_history },      /* Control-n */
50   { ISFUNC, (Function *)0x0 },          /* Control-o */
51   { ISFUNC, rl_get_previous_history },  /* Control-p */
52   { ISFUNC, rl_quoted_insert },         /* Control-q */
53   { ISFUNC, rl_reverse_search_history }, /* Control-r */
54   { ISFUNC, rl_forward_search_history }, /* Control-s */
55   { ISFUNC, rl_transpose_chars },       /* Control-t */
56   { ISFUNC, rl_unix_line_discard },     /* Control-u */
57   { ISFUNC, rl_quoted_insert },         /* Control-v */
58   { ISFUNC, rl_unix_word_rubout },      /* Control-w */
59   { ISKMAP, (Function *)emacs_ctlx_keymap },    /* Control-x */
60   { ISFUNC, rl_yank },                  /* Control-y */
61   { ISFUNC, (Function *)0x0 },          /* Control-z */
62   { ISKMAP, (Function *)emacs_meta_keymap }, /* Control-[ */
63   { ISFUNC, (Function *)0x0 },          /* Control-\ */
64   { ISFUNC, (Function *)0x0 },          /* Control-] */
65   { ISFUNC, (Function *)0x0 },          /* Control-^ */
66   { ISFUNC, rl_undo_command },          /* Control-_ */
67
68   /* The start of printing characters. */
69   { ISFUNC, rl_insert },        /* SPACE */
70   { ISFUNC, rl_insert },        /* ! */
71   { ISFUNC, rl_insert },        /* " */
72   { ISFUNC, rl_insert },        /* # */
73   { ISFUNC, rl_insert },        /* $ */
74   { ISFUNC, rl_insert },        /* % */
75   { ISFUNC, rl_insert },        /* & */
76   { ISFUNC, rl_insert },        /* ' */
77   { ISFUNC, rl_insert },        /* ( */
78   { ISFUNC, rl_insert },        /* ) */
79   { ISFUNC, rl_insert },        /* * */
80   { ISFUNC, rl_insert },        /* + */
81   { ISFUNC, rl_insert },        /* , */
82   { ISFUNC, rl_insert },        /* - */
83   { ISFUNC, rl_insert },        /* . */
84   { ISFUNC, rl_insert },        /* / */
85
86   /* Regular digits. */
87   { ISFUNC, rl_insert },        /* 0 */
88   { ISFUNC, rl_insert },        /* 1 */
89   { ISFUNC, rl_insert },        /* 2 */
90   { ISFUNC, rl_insert },        /* 3 */
91   { ISFUNC, rl_insert },        /* 4 */
92   { ISFUNC, rl_insert },        /* 5 */
93   { ISFUNC, rl_insert },        /* 6 */
94   { ISFUNC, rl_insert },        /* 7 */
95   { ISFUNC, rl_insert },        /* 8 */
96   { ISFUNC, rl_insert },        /* 9 */
97
98   /* A little more punctuation. */
99   { ISFUNC, rl_insert },        /* : */
100   { ISFUNC, rl_insert },        /* ; */
101   { ISFUNC, rl_insert },        /* < */
102   { ISFUNC, rl_insert },        /* = */
103   { ISFUNC, rl_insert },        /* > */
104   { ISFUNC, rl_insert },        /* ? */
105   { ISFUNC, rl_insert },        /* @ */
106
107   /* Uppercase alphabet. */
108   { ISFUNC, rl_insert },        /* A */
109   { ISFUNC, rl_insert },        /* B */
110   { ISFUNC, rl_insert },        /* C */
111   { ISFUNC, rl_insert },        /* D */
112   { ISFUNC, rl_insert },        /* E */
113   { ISFUNC, rl_insert },        /* F */
114   { ISFUNC, rl_insert },        /* G */
115   { ISFUNC, rl_insert },        /* H */
116   { ISFUNC, rl_insert },        /* I */
117   { ISFUNC, rl_insert },        /* J */
118   { ISFUNC, rl_insert },        /* K */
119   { ISFUNC, rl_insert },        /* L */
120   { ISFUNC, rl_insert },        /* M */
121   { ISFUNC, rl_insert },        /* N */
122   { ISFUNC, rl_insert },        /* O */
123   { ISFUNC, rl_insert },        /* P */
124   { ISFUNC, rl_insert },        /* Q */
125   { ISFUNC, rl_insert },        /* R */
126   { ISFUNC, rl_insert },        /* S */
127   { ISFUNC, rl_insert },        /* T */
128   { ISFUNC, rl_insert },        /* U */
129   { ISFUNC, rl_insert },        /* V */
130   { ISFUNC, rl_insert },        /* W */
131   { ISFUNC, rl_insert },        /* X */
132   { ISFUNC, rl_insert },        /* Y */
133   { ISFUNC, rl_insert },        /* Z */
134
135   /* Some more punctuation. */
136   { ISFUNC, rl_insert },        /* [ */
137   { ISFUNC, rl_insert },        /* \ */
138   { ISFUNC, rl_insert },        /* ] */
139   { ISFUNC, rl_insert },        /* ^ */
140   { ISFUNC, rl_insert },        /* _ */
141   { ISFUNC, rl_insert },        /* ` */
142
143   /* Lowercase alphabet. */
144   { ISFUNC, rl_insert },        /* a */
145   { ISFUNC, rl_insert },        /* b */
146   { ISFUNC, rl_insert },        /* c */
147   { ISFUNC, rl_insert },        /* d */
148   { ISFUNC, rl_insert },        /* e */
149   { ISFUNC, rl_insert },        /* f */
150   { ISFUNC, rl_insert },        /* g */
151   { ISFUNC, rl_insert },        /* h */
152   { ISFUNC, rl_insert },        /* i */
153   { ISFUNC, rl_insert },        /* j */
154   { ISFUNC, rl_insert },        /* k */
155   { ISFUNC, rl_insert },        /* l */
156   { ISFUNC, rl_insert },        /* m */
157   { ISFUNC, rl_insert },        /* n */
158   { ISFUNC, rl_insert },        /* o */
159   { ISFUNC, rl_insert },        /* p */
160   { ISFUNC, rl_insert },        /* q */
161   { ISFUNC, rl_insert },        /* r */
162   { ISFUNC, rl_insert },        /* s */
163   { ISFUNC, rl_insert },        /* t */
164   { ISFUNC, rl_insert },        /* u */
165   { ISFUNC, rl_insert },        /* v */
166   { ISFUNC, rl_insert },        /* w */
167   { ISFUNC, rl_insert },        /* x */
168   { ISFUNC, rl_insert },        /* y */
169   { ISFUNC, rl_insert },        /* z */
170
171   /* Final punctuation. */
172   { ISFUNC, rl_insert },        /* { */
173   { ISFUNC, rl_insert },        /* | */
174   { ISFUNC, rl_insert },        /* } */
175   { ISFUNC, rl_insert },        /* ~ */
176   { ISFUNC, rl_rubout }         /* RUBOUT */
177 };
178
179 KEYMAP_ENTRY_ARRAY emacs_meta_keymap = {
180
181   /* Meta keys.  Just like above, but the high bit is set. */
182   { ISFUNC, (Function *)0x0 },  /* Meta-Control-@ */
183   { ISFUNC, (Function *)0x0 },  /* Meta-Control-a */
184   { ISFUNC, (Function *)0x0 },  /* Meta-Control-b */
185   { ISFUNC, (Function *)0x0 },  /* Meta-Control-c */
186   { ISFUNC, (Function *)0x0 },  /* Meta-Control-d */
187   { ISFUNC, (Function *)0x0 },  /* Meta-Control-e */
188   { ISFUNC, (Function *)0x0 },  /* Meta-Control-f */
189   { ISFUNC, rl_abort },         /* Meta-Control-g */
190   { ISFUNC, (Function *)0x0 },  /* Meta-Control-h */
191   { ISFUNC, rl_tab_insert },    /* Meta-Control-i */
192   { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-j */
193   { ISFUNC, (Function *)0x0 },  /* Meta-Control-k */
194   { ISFUNC, (Function *)0x0 },  /* Meta-Control-l */
195   { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-m */
196   { ISFUNC, (Function *)0x0 },  /* Meta-Control-n */
197   { ISFUNC, (Function *)0x0 },  /* Meta-Control-o */
198   { ISFUNC, (Function *)0x0 },  /* Meta-Control-p */
199   { ISFUNC, (Function *)0x0 },  /* Meta-Control-q */
200   { ISFUNC, rl_revert_line },   /* Meta-Control-r */
201   { ISFUNC, (Function *)0x0 },  /* Meta-Control-s */
202   { ISFUNC, (Function *)0x0 },  /* Meta-Control-t */
203   { ISFUNC, (Function *)0x0 },  /* Meta-Control-u */
204   { ISFUNC, (Function *)0x0 },  /* Meta-Control-v */
205   { ISFUNC, (Function *)0x0 },  /* Meta-Control-w */
206   { ISFUNC, (Function *)0x0 },  /* Meta-Control-x */
207   { ISFUNC, rl_yank_nth_arg },  /* Meta-Control-y */
208   { ISFUNC, (Function *)0x0 },  /* Meta-Control-z */
209
210   { ISFUNC, (Function *)0x0 },  /* Meta-Control-[ */
211   { ISFUNC, (Function *)0x0 },  /* Meta-Control-\ */
212   { ISFUNC, (Function *)0x0 },  /* Meta-Control-] */
213   { ISFUNC, (Function *)0x0 },  /* Meta-Control-^ */
214   { ISFUNC, (Function *)0x0 },  /* Meta-Control-_ */
215
216   /* The start of printing characters. */
217   { ISFUNC, (Function *)0x0 },  /* Meta-SPACE */
218   { ISFUNC, (Function *)0x0 },  /* Meta-! */
219   { ISFUNC, (Function *)0x0 },  /* Meta-" */
220   { ISFUNC, (Function *)0x0 },  /* Meta-# */
221   { ISFUNC, (Function *)0x0 },  /* Meta-$ */
222   { ISFUNC, (Function *)0x0 },  /* Meta-% */
223   { ISFUNC, (Function *)0x0 },  /* Meta-& */
224   { ISFUNC, (Function *)0x0 },  /* Meta-' */
225   { ISFUNC, (Function *)0x0 },  /* Meta-( */
226   { ISFUNC, (Function *)0x0 },  /* Meta-) */
227   { ISFUNC, (Function *)0x0 },  /* Meta-* */
228   { ISFUNC, (Function *)0x0 },  /* Meta-+ */
229   { ISFUNC, (Function *)0x0 },  /* Meta-, */
230   { ISFUNC, rl_digit_argument }, /* Meta-- */
231   { ISFUNC, (Function *)0x0 },  /* Meta-. */
232   { ISFUNC, (Function *)0x0 },  /* Meta-/ */
233
234   /* Regular digits. */
235   { ISFUNC, rl_digit_argument }, /* Meta-0 */
236   { ISFUNC, rl_digit_argument }, /* Meta-1 */
237   { ISFUNC, rl_digit_argument }, /* Meta-2 */
238   { ISFUNC, rl_digit_argument }, /* Meta-3 */
239   { ISFUNC, rl_digit_argument }, /* Meta-4 */
240   { ISFUNC, rl_digit_argument }, /* Meta-5 */
241   { ISFUNC, rl_digit_argument }, /* Meta-6 */
242   { ISFUNC, rl_digit_argument }, /* Meta-7 */
243   { ISFUNC, rl_digit_argument }, /* Meta-8 */
244   { ISFUNC, rl_digit_argument }, /* Meta-9 */
245
246   /* A little more punctuation. */
247   { ISFUNC, (Function *)0x0 },          /* Meta-: */
248   { ISFUNC, (Function *)0x0 },          /* Meta-; */
249   { ISFUNC, rl_beginning_of_history },  /* Meta-< */
250   { ISFUNC, (Function *)0x0 },          /* Meta-= */
251   { ISFUNC, rl_end_of_history },        /* Meta-> */
252   { ISFUNC, rl_possible_completions },  /* Meta-? */
253   { ISFUNC, (Function *)0x0 },          /* Meta-@ */
254
255   /* Uppercase alphabet. */
256   { ISFUNC, rl_do_lowercase_version },  /* Meta-A */
257   { ISFUNC, rl_do_lowercase_version },  /* Meta-B */
258   { ISFUNC, rl_do_lowercase_version },  /* Meta-C */
259   { ISFUNC, rl_do_lowercase_version },  /* Meta-D */
260   { ISFUNC, rl_do_lowercase_version },  /* Meta-E */
261   { ISFUNC, rl_do_lowercase_version },  /* Meta-F */
262   { ISFUNC, rl_do_lowercase_version },  /* Meta-G */
263   { ISFUNC, rl_do_lowercase_version },  /* Meta-H */
264   { ISFUNC, rl_do_lowercase_version },  /* Meta-I */
265   { ISFUNC, rl_do_lowercase_version },  /* Meta-J */
266   { ISFUNC, rl_do_lowercase_version },  /* Meta-K */
267   { ISFUNC, rl_do_lowercase_version },  /* Meta-L */
268   { ISFUNC, rl_do_lowercase_version },  /* Meta-M */
269   { ISFUNC, rl_do_lowercase_version },  /* Meta-N */
270   { ISFUNC, rl_do_lowercase_version },  /* Meta-O */
271   { ISFUNC, rl_do_lowercase_version },  /* Meta-P */
272   { ISFUNC, rl_do_lowercase_version },  /* Meta-Q */
273   { ISFUNC, rl_do_lowercase_version },  /* Meta-R */
274   { ISFUNC, rl_do_lowercase_version },  /* Meta-S */
275   { ISFUNC, rl_do_lowercase_version },  /* Meta-T */
276   { ISFUNC, rl_do_lowercase_version },  /* Meta-U */
277   { ISFUNC, rl_do_lowercase_version },  /* Meta-V */
278   { ISFUNC, rl_do_lowercase_version },  /* Meta-W */
279   { ISFUNC, rl_do_lowercase_version },  /* Meta-X */
280   { ISFUNC, rl_do_lowercase_version },  /* Meta-Y */
281   { ISFUNC, rl_do_lowercase_version },  /* Meta-Z */
282
283   /* Some more punctuation. */
284   { ISFUNC, rl_arrow_keys },    /* Meta-[ */
285   { ISFUNC, (Function *)0x0 },  /* Meta-\ */
286   { ISFUNC, (Function *)0x0 },  /* Meta-] */
287   { ISFUNC, (Function *)0x0 },  /* Meta-^ */
288   { ISFUNC, (Function *)0x0 },  /* Meta-_ */
289   { ISFUNC, (Function *)0x0 },  /* Meta-` */
290
291   /* Lowercase alphabet. */
292   { ISFUNC, (Function *)0x0 },  /* Meta-a */
293   { ISFUNC, rl_backward_word }, /* Meta-b */
294   { ISFUNC, rl_capitalize_word }, /* Meta-c */
295   { ISFUNC, rl_kill_word },     /* Meta-d */
296   { ISFUNC, (Function *)0x0 },  /* Meta-e */
297   { ISFUNC, rl_forward_word },  /* Meta-f */
298   { ISFUNC, (Function *)0x0 },  /* Meta-g */
299   { ISFUNC, (Function *)0x0 },  /* Meta-h */
300   { ISFUNC, (Function *)0x0 },  /* Meta-i */
301   { ISFUNC, (Function *)0x0 },  /* Meta-j */
302   { ISFUNC, (Function *)0x0 },  /* Meta-k */
303   { ISFUNC, rl_downcase_word }, /* Meta-l */
304   { ISFUNC, (Function *)0x0 },  /* Meta-m */
305   { ISFUNC, (Function *)0x0 },  /* Meta-n */
306   { ISFUNC, rl_arrow_keys },    /* Meta-o */
307   { ISFUNC, (Function *)0x0 },  /* Meta-p */
308   { ISFUNC, (Function *)0x0 },  /* Meta-q */
309   { ISFUNC, rl_revert_line },   /* Meta-r */
310   { ISFUNC, (Function *)0x0 },  /* Meta-s */
311   { ISFUNC, rl_transpose_words }, /* Meta-t */
312   { ISFUNC, rl_upcase_word },   /* Meta-u */
313   { ISFUNC, (Function *)0x0 },  /* Meta-v */
314   { ISFUNC, (Function *)0x0 },  /* Meta-w */
315   { ISFUNC, (Function *)0x0 },  /* Meta-x */
316   { ISFUNC, rl_yank_pop },      /* Meta-y */
317   { ISFUNC, (Function *)0x0 },  /* Meta-z */
318
319   /* Final punctuation. */
320   { ISFUNC, (Function *)0x0 },  /* Meta-{ */
321   { ISFUNC, (Function *)0x0 },  /* Meta-| */
322   { ISFUNC, (Function *)0x0 },  /* Meta-} */
323   { ISFUNC, (Function *)0x0 },  /* Meta-~ */
324   { ISFUNC, rl_backward_kill_word } /* Meta-rubout */
325 };
326
327 KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap = {
328
329   /* Control keys. */
330   { ISFUNC, (Function *)0x0 },          /* Control-@ */
331   { ISFUNC, (Function *)0x0 },          /* Control-a */
332   { ISFUNC, (Function *)0x0 },          /* Control-b */
333   { ISFUNC, (Function *)0x0 },          /* Control-c */
334   { ISFUNC, (Function *)0x0 },          /* Control-d */
335   { ISFUNC, (Function *)0x0 },          /* Control-e */
336   { ISFUNC, (Function *)0x0 },          /* Control-f */
337   { ISFUNC, rl_abort },                 /* Control-g */
338   { ISFUNC, (Function *)0x0 },          /* Control-h */
339   { ISFUNC, (Function *)0x0 },          /* Control-i */
340   { ISFUNC, (Function *)0x0 },          /* Control-j */
341   { ISFUNC, (Function *)0x0 },          /* Control-k */
342   { ISFUNC, (Function *)0x0 },          /* Control-l */
343   { ISFUNC, (Function *)0x0 },          /* Control-m */
344   { ISFUNC, (Function *)0x0 },          /* Control-n */
345   { ISFUNC, (Function *)0x0 },          /* Control-o */
346   { ISFUNC, (Function *)0x0 },          /* Control-p */
347   { ISFUNC, (Function *)0x0 },          /* Control-q */
348   { ISFUNC, rl_re_read_init_file },     /* Control-r */
349   { ISFUNC, (Function *)0x0 },          /* Control-s */
350   { ISFUNC, (Function *)0x0 },          /* Control-t */
351   { ISFUNC, rl_undo_command },          /* Control-u */
352   { ISFUNC, (Function *)0x0 },          /* Control-v */
353   { ISFUNC, (Function *)0x0 },          /* Control-w */
354   { ISFUNC, (Function *)0x0 },          /* Control-x */
355   { ISFUNC, (Function *)0x0 },          /* Control-y */
356   { ISFUNC, (Function *)0x0 },          /* Control-z */
357   { ISFUNC, (Function *)0x0 },          /* Control-[ */
358   { ISFUNC, (Function *)0x0 },          /* Control-\ */
359   { ISFUNC, (Function *)0x0 },          /* Control-] */
360   { ISFUNC, (Function *)0x0 },          /* Control-^ */
361   { ISFUNC, (Function *)0x0 },          /* Control-_ */
362
363   /* The start of printing characters. */
364   { ISFUNC, (Function *)0x0 },          /* SPACE */
365   { ISFUNC, (Function *)0x0 },          /* ! */
366   { ISFUNC, (Function *)0x0 },          /* " */
367   { ISFUNC, (Function *)0x0 },          /* # */
368   { ISFUNC, (Function *)0x0 },          /* $ */
369   { ISFUNC, (Function *)0x0 },          /* % */
370   { ISFUNC, (Function *)0x0 },          /* & */
371   { ISFUNC, (Function *)0x0 },          /* ' */
372   { ISFUNC, rl_start_kbd_macro },       /* ( */
373   { ISFUNC, rl_end_kbd_macro  },        /* ) */
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
381   /* Regular digits. */
382   { ISFUNC, (Function *)0x0 },          /* 0 */
383   { ISFUNC, (Function *)0x0 },          /* 1 */
384   { ISFUNC, (Function *)0x0 },          /* 2 */
385   { ISFUNC, (Function *)0x0 },          /* 3 */
386   { ISFUNC, (Function *)0x0 },          /* 4 */
387   { ISFUNC, (Function *)0x0 },          /* 5 */
388   { ISFUNC, (Function *)0x0 },          /* 6 */
389   { ISFUNC, (Function *)0x0 },          /* 7 */
390   { ISFUNC, (Function *)0x0 },          /* 8 */
391   { ISFUNC, (Function *)0x0 },          /* 9 */
392
393   /* A little more punctuation. */
394   { ISFUNC, (Function *)0x0 },  /* : */
395   { ISFUNC, (Function *)0x0 },  /* ; */
396   { ISFUNC, (Function *)0x0 },  /* < */
397   { ISFUNC, (Function *)0x0 },  /* = */
398   { ISFUNC, (Function *)0x0 },  /* > */
399   { ISFUNC, (Function *)0x0 },  /* ? */
400   { ISFUNC, (Function *)0x0 },  /* @ */
401
402   /* Uppercase alphabet. */
403   { ISFUNC, rl_do_lowercase_version },  /* A */
404   { ISFUNC, rl_do_lowercase_version },  /* B */
405   { ISFUNC, rl_do_lowercase_version },  /* C */
406   { ISFUNC, rl_do_lowercase_version },  /* D */
407   { ISFUNC, rl_do_lowercase_version },  /* E */
408   { ISFUNC, rl_do_lowercase_version },  /* F */
409   { ISFUNC, rl_do_lowercase_version },  /* G */
410   { ISFUNC, rl_do_lowercase_version },  /* H */
411   { ISFUNC, rl_do_lowercase_version },  /* I */
412   { ISFUNC, rl_do_lowercase_version },  /* J */
413   { ISFUNC, rl_do_lowercase_version },  /* K */
414   { ISFUNC, rl_do_lowercase_version },  /* L */
415   { ISFUNC, rl_do_lowercase_version },  /* M */
416   { ISFUNC, rl_do_lowercase_version },  /* N */
417   { ISFUNC, rl_do_lowercase_version },  /* O */
418   { ISFUNC, rl_do_lowercase_version },  /* P */
419   { ISFUNC, rl_do_lowercase_version },  /* Q */
420   { ISFUNC, rl_do_lowercase_version },  /* R */
421   { ISFUNC, rl_do_lowercase_version },  /* S */
422   { ISFUNC, rl_do_lowercase_version },  /* T */
423   { ISFUNC, rl_do_lowercase_version },  /* U */
424   { ISFUNC, rl_do_lowercase_version },  /* V */
425   { ISFUNC, rl_do_lowercase_version },  /* W */
426   { ISFUNC, rl_do_lowercase_version },  /* X */
427   { ISFUNC, rl_do_lowercase_version },  /* Y */
428   { ISFUNC, rl_do_lowercase_version },  /* Z */
429
430   /* Some more punctuation. */
431   { ISFUNC, (Function *)0x0 },          /* [ */
432   { ISFUNC, (Function *)0x0 },          /* \ */
433   { ISFUNC, (Function *)0x0 },          /* ] */
434   { ISFUNC, (Function *)0x0 },          /* ^ */
435   { ISFUNC, (Function *)0x0 },          /* _ */
436   { ISFUNC, (Function *)0x0 },          /* ` */
437
438   /* Lowercase alphabet. */
439   { ISFUNC, (Function *)0x0 },          /* a */
440   { ISFUNC, (Function *)0x0 },          /* b */
441   { ISFUNC, (Function *)0x0 },          /* c */
442   { ISFUNC, (Function *)0x0 },          /* d */
443   { ISFUNC, rl_call_last_kbd_macro },   /* e */
444   { ISFUNC, (Function *)0x0 },          /* f */
445   { ISFUNC, (Function *)0x0 },          /* g */
446   { ISFUNC, (Function *)0x0 },          /* h */
447   { ISFUNC, (Function *)0x0 },          /* i */
448   { ISFUNC, (Function *)0x0 },          /* j */
449   { ISFUNC, (Function *)0x0 },          /* k */
450   { ISFUNC, (Function *)0x0 },          /* l */
451   { ISFUNC, (Function *)0x0 },          /* m */
452   { ISFUNC, (Function *)0x0 },          /* n */
453   { ISFUNC, (Function *)0x0 },          /* o */
454   { ISFUNC, (Function *)0x0 },          /* p */
455   { ISFUNC, (Function *)0x0 },          /* q */
456   { ISFUNC, (Function *)0x0 },          /* r */
457   { ISFUNC, (Function *)0x0 },          /* s */
458   { ISFUNC, (Function *)0x0 },          /* t */
459   { ISFUNC, (Function *)0x0 },          /* u */
460   { ISFUNC, (Function *)0x0 },          /* v */
461   { ISFUNC, (Function *)0x0 },          /* w */
462   { ISFUNC, (Function *)0x0 },          /* x */
463   { ISFUNC, (Function *)0x0 },          /* y */
464   { ISFUNC, (Function *)0x0 },          /* z */
465
466   /* Final punctuation. */
467   { ISFUNC, (Function *)0x0 },          /* { */
468   { ISFUNC, (Function *)0x0 },          /* | */
469   { ISFUNC, (Function *)0x0 },          /* } */
470   { ISFUNC, (Function *)0x0 },          /* ~ */
471   { ISFUNC, rl_backward_kill_line }     /* RUBOUT */
472 };