1 /* vi_keymap.c -- the keymap for vi_mode in readline (). */
2 
3 /* Copyright (C) 1987-2017 Free Software Foundation, Inc.
4 
5    This file is part of the GNU Readline Library (Readline), a library
6    for reading lines of text with interactive input and history editing.
7 
8    Readline is free software: you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation, either version 3 of the License, or
11    (at your option) any later version.
12 
13    Readline is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with Readline.  If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #if !defined (BUFSIZ)
23 #include <stdio.h>
24 #endif /* !BUFSIZ */
25 
26 #include "readline.h"
27 
28 #if 0
29 extern KEYMAP_ENTRY_ARRAY vi_escape_keymap;
30 #endif
31 
32 /* The keymap arrays for handling vi mode. */
33 KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
34   /* The regular control keys come first. */
35   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-@ */
36   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-a */
37   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-b */
38   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-c */
39   { ISFUNC, rl_vi_eof_maybe },			/* Control-d */
40   { ISFUNC, rl_emacs_editing_mode },		/* Control-e */
41   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-f */
42   { ISFUNC, rl_abort },				/* Control-g */
43   { ISFUNC, rl_backward_char },			/* Control-h */
44   { ISFUNC, (rl_command_func_t *)0x0 },		/* 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, (rl_command_func_t *)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_vi_unix_word_rubout },		/* Control-w */
59   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-x */
60   { ISFUNC, rl_yank },				/* Control-y */
61   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-z */
62 
63   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-[ */	/* vi_escape_keymap */
64   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-\ */
65   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-] */
66   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-^ */
67   { ISFUNC, rl_vi_undo },			/* Control-_ */
68 
69   /* The start of printing characters. */
70   { ISFUNC, rl_forward_char },			/* SPACE */
71   { ISFUNC, (rl_command_func_t *)0x0 },		/* ! */
72   { ISFUNC, (rl_command_func_t *)0x0 },		/* " */
73   { ISFUNC, rl_insert_comment },		/* # */
74   { ISFUNC, rl_end_of_line },			/* $ */
75   { ISFUNC, rl_vi_match },			/* % */
76   { ISFUNC, rl_vi_tilde_expand },		/* & */
77   { ISFUNC, (rl_command_func_t *)0x0 },		/* ' */
78   { ISFUNC, (rl_command_func_t *)0x0 },		/* ( */
79   { ISFUNC, (rl_command_func_t *)0x0 },		/* ) */
80   { ISFUNC, rl_vi_complete },			/* * */
81   { ISFUNC, rl_get_next_history},		/* + */
82   { ISFUNC, rl_vi_char_search },		/* , */
83   { ISFUNC, rl_get_previous_history },		/* - */
84   { ISFUNC, rl_vi_redo },			/* . */
85   { ISFUNC, rl_vi_search },			/* / */
86 
87   /* Regular digits. */
88   { ISFUNC, rl_beg_of_line },			/* 0 */
89   { ISFUNC, rl_vi_arg_digit },			/* 1 */
90   { ISFUNC, rl_vi_arg_digit },			/* 2 */
91   { ISFUNC, rl_vi_arg_digit },			/* 3 */
92   { ISFUNC, rl_vi_arg_digit },			/* 4 */
93   { ISFUNC, rl_vi_arg_digit },			/* 5 */
94   { ISFUNC, rl_vi_arg_digit },			/* 6 */
95   { ISFUNC, rl_vi_arg_digit },			/* 7 */
96   { ISFUNC, rl_vi_arg_digit },			/* 8 */
97   { ISFUNC, rl_vi_arg_digit },			/* 9 */
98 
99   /* A little more punctuation. */
100   { ISFUNC, (rl_command_func_t *)0x0 },		/* : */
101   { ISFUNC, rl_vi_char_search },		/* ; */
102   { ISFUNC, (rl_command_func_t *)0x0 },		/* < */
103   { ISFUNC, rl_vi_complete },			/* = */
104   { ISFUNC, (rl_command_func_t *)0x0 },		/* > */
105   { ISFUNC, rl_vi_search },			/* ? */
106   { ISFUNC, (rl_command_func_t *)0x0 },		/* @ */
107 
108   /* Uppercase alphabet. */
109   { ISFUNC, rl_vi_append_eol },			/* A */
110   { ISFUNC, rl_vi_prev_word},			/* B */
111   { ISFUNC, rl_vi_change_to },			/* C */
112   { ISFUNC, rl_vi_delete_to },			/* D */
113   { ISFUNC, rl_vi_end_word },			/* E */
114   { ISFUNC, rl_vi_char_search },		/* F */
115   { ISFUNC, rl_vi_fetch_history },		/* G */
116   { ISFUNC, (rl_command_func_t *)0x0 },		/* H */
117   { ISFUNC, rl_vi_insert_beg },			/* I */
118   { ISFUNC, (rl_command_func_t *)0x0 },		/* J */
119   { ISFUNC, (rl_command_func_t *)0x0 },		/* K */
120   { ISFUNC, (rl_command_func_t *)0x0 },		/* L */
121   { ISFUNC, (rl_command_func_t *)0x0 },		/* M */
122   { ISFUNC, rl_vi_search_again },		/* N */
123   { ISFUNC, (rl_command_func_t *)0x0 },		/* O */
124   { ISFUNC, rl_vi_put },			/* P */
125   { ISFUNC, (rl_command_func_t *)0x0 },		/* Q */
126   { ISFUNC, rl_vi_replace },			/* R */
127   { ISFUNC, rl_vi_subst },			/* S */
128   { ISFUNC, rl_vi_char_search },		/* T */
129   { ISFUNC, rl_revert_line },			/* U */
130   { ISFUNC, (rl_command_func_t *)0x0 },		/* V */
131   { ISFUNC, rl_vi_next_word },			/* W */
132   { ISFUNC, rl_vi_rubout },			/* X */
133   { ISFUNC, rl_vi_yank_to },			/* Y */
134   { ISFUNC, (rl_command_func_t *)0x0 },		/* Z */
135 
136   /* Some more punctuation. */
137   { ISFUNC, (rl_command_func_t *)0x0 },		/* [ */
138   { ISFUNC, rl_vi_complete },			/* \ */
139   { ISFUNC, (rl_command_func_t *)0x0 },		/* ] */
140   { ISFUNC, rl_vi_first_print },		/* ^ */
141   { ISFUNC, rl_vi_yank_arg },			/* _ */
142   { ISFUNC, rl_vi_goto_mark },			/* ` */
143 
144   /* Lowercase alphabet. */
145   { ISFUNC, rl_vi_append_mode },		/* a */
146   { ISFUNC, rl_vi_prev_word },			/* b */
147   { ISFUNC, rl_vi_change_to },			/* c */
148   { ISFUNC, rl_vi_delete_to },			/* d */
149   { ISFUNC, rl_vi_end_word },			/* e */
150   { ISFUNC, rl_vi_char_search },		/* f */
151   { ISFUNC, (rl_command_func_t *)0x0 },		/* g */
152   { ISFUNC, rl_backward_char },			/* h */
153   { ISFUNC, rl_vi_insert_mode },		/* i */
154   { ISFUNC, rl_get_next_history },		/* j */
155   { ISFUNC, rl_get_previous_history },		/* k */
156   { ISFUNC, rl_forward_char },			/* l */
157   { ISFUNC, rl_vi_set_mark },			/* m */
158   { ISFUNC, rl_vi_search_again },		/* n */
159   { ISFUNC, (rl_command_func_t *)0x0 },		/* o */
160   { ISFUNC, rl_vi_put },			/* p */
161   { ISFUNC, (rl_command_func_t *)0x0 },		/* q */
162   { ISFUNC, rl_vi_change_char },		/* r */
163   { ISFUNC, rl_vi_subst },			/* s */
164   { ISFUNC, rl_vi_char_search },		/* t */
165   { ISFUNC, rl_vi_undo },			/* u */
166   { ISFUNC, (rl_command_func_t *)0x0 },		/* v */
167   { ISFUNC, rl_vi_next_word },			/* w */
168   { ISFUNC, rl_vi_delete },			/* x */
169   { ISFUNC, rl_vi_yank_to },			/* y */
170   { ISFUNC, (rl_command_func_t *)0x0 },		/* z */
171 
172   /* Final punctuation. */
173   { ISFUNC, (rl_command_func_t *)0x0 },		/* { */
174   { ISFUNC, rl_vi_column },			/* | */
175   { ISFUNC, (rl_command_func_t *)0x0 },		/* } */
176   { ISFUNC, rl_vi_change_case },		/* ~ */
177   { ISFUNC, (rl_command_func_t *)0x0 },		/* RUBOUT */
178 
179 #if KEYMAP_SIZE > 128
180   /* Undefined keys. */
181   { ISFUNC, (rl_command_func_t *)0x0 },
182   { ISFUNC, (rl_command_func_t *)0x0 },
183   { ISFUNC, (rl_command_func_t *)0x0 },
184   { ISFUNC, (rl_command_func_t *)0x0 },
185   { ISFUNC, (rl_command_func_t *)0x0 },
186   { ISFUNC, (rl_command_func_t *)0x0 },
187   { ISFUNC, (rl_command_func_t *)0x0 },
188   { ISFUNC, (rl_command_func_t *)0x0 },
189   { ISFUNC, (rl_command_func_t *)0x0 },
190   { ISFUNC, (rl_command_func_t *)0x0 },
191   { ISFUNC, (rl_command_func_t *)0x0 },
192   { ISFUNC, (rl_command_func_t *)0x0 },
193   { ISFUNC, (rl_command_func_t *)0x0 },
194   { ISFUNC, (rl_command_func_t *)0x0 },
195   { ISFUNC, (rl_command_func_t *)0x0 },
196   { ISFUNC, (rl_command_func_t *)0x0 },
197   { ISFUNC, (rl_command_func_t *)0x0 },
198   { ISFUNC, (rl_command_func_t *)0x0 },
199   { ISFUNC, (rl_command_func_t *)0x0 },
200   { ISFUNC, (rl_command_func_t *)0x0 },
201   { ISFUNC, (rl_command_func_t *)0x0 },
202   { ISFUNC, (rl_command_func_t *)0x0 },
203   { ISFUNC, (rl_command_func_t *)0x0 },
204   { ISFUNC, (rl_command_func_t *)0x0 },
205   { ISFUNC, (rl_command_func_t *)0x0 },
206   { ISFUNC, (rl_command_func_t *)0x0 },
207   { ISFUNC, (rl_command_func_t *)0x0 },
208   { ISFUNC, (rl_command_func_t *)0x0 },
209   { ISFUNC, (rl_command_func_t *)0x0 },
210   { ISFUNC, (rl_command_func_t *)0x0 },
211   { ISFUNC, (rl_command_func_t *)0x0 },
212   { ISFUNC, (rl_command_func_t *)0x0 },
213   { ISFUNC, (rl_command_func_t *)0x0 },
214   { ISFUNC, (rl_command_func_t *)0x0 },
215   { ISFUNC, (rl_command_func_t *)0x0 },
216   { ISFUNC, (rl_command_func_t *)0x0 },
217   { ISFUNC, (rl_command_func_t *)0x0 },
218   { ISFUNC, (rl_command_func_t *)0x0 },
219   { ISFUNC, (rl_command_func_t *)0x0 },
220   { ISFUNC, (rl_command_func_t *)0x0 },
221   { ISFUNC, (rl_command_func_t *)0x0 },
222   { ISFUNC, (rl_command_func_t *)0x0 },
223   { ISFUNC, (rl_command_func_t *)0x0 },
224   { ISFUNC, (rl_command_func_t *)0x0 },
225   { ISFUNC, (rl_command_func_t *)0x0 },
226   { ISFUNC, (rl_command_func_t *)0x0 },
227   { ISFUNC, (rl_command_func_t *)0x0 },
228   { ISFUNC, (rl_command_func_t *)0x0 },
229   { ISFUNC, (rl_command_func_t *)0x0 },
230   { ISFUNC, (rl_command_func_t *)0x0 },
231   { ISFUNC, (rl_command_func_t *)0x0 },
232   { ISFUNC, (rl_command_func_t *)0x0 },
233   { ISFUNC, (rl_command_func_t *)0x0 },
234   { ISFUNC, (rl_command_func_t *)0x0 },
235   { ISFUNC, (rl_command_func_t *)0x0 },
236   { ISFUNC, (rl_command_func_t *)0x0 },
237   { ISFUNC, (rl_command_func_t *)0x0 },
238   { ISFUNC, (rl_command_func_t *)0x0 },
239   { ISFUNC, (rl_command_func_t *)0x0 },
240   { ISFUNC, (rl_command_func_t *)0x0 },
241   { ISFUNC, (rl_command_func_t *)0x0 },
242   { ISFUNC, (rl_command_func_t *)0x0 },
243   { ISFUNC, (rl_command_func_t *)0x0 },
244   { ISFUNC, (rl_command_func_t *)0x0 },
245   { ISFUNC, (rl_command_func_t *)0x0 },
246   { ISFUNC, (rl_command_func_t *)0x0 },
247   { ISFUNC, (rl_command_func_t *)0x0 },
248   { ISFUNC, (rl_command_func_t *)0x0 },
249   { ISFUNC, (rl_command_func_t *)0x0 },
250   { ISFUNC, (rl_command_func_t *)0x0 },
251   { ISFUNC, (rl_command_func_t *)0x0 },
252   { ISFUNC, (rl_command_func_t *)0x0 },
253   { ISFUNC, (rl_command_func_t *)0x0 },
254   { ISFUNC, (rl_command_func_t *)0x0 },
255   { ISFUNC, (rl_command_func_t *)0x0 },
256   { ISFUNC, (rl_command_func_t *)0x0 },
257   { ISFUNC, (rl_command_func_t *)0x0 },
258   { ISFUNC, (rl_command_func_t *)0x0 },
259   { ISFUNC, (rl_command_func_t *)0x0 },
260   { ISFUNC, (rl_command_func_t *)0x0 },
261   { ISFUNC, (rl_command_func_t *)0x0 },
262   { ISFUNC, (rl_command_func_t *)0x0 },
263   { ISFUNC, (rl_command_func_t *)0x0 },
264   { ISFUNC, (rl_command_func_t *)0x0 },
265   { ISFUNC, (rl_command_func_t *)0x0 },
266   { ISFUNC, (rl_command_func_t *)0x0 },
267   { ISFUNC, (rl_command_func_t *)0x0 },
268   { ISFUNC, (rl_command_func_t *)0x0 },
269   { ISFUNC, (rl_command_func_t *)0x0 },
270   { ISFUNC, (rl_command_func_t *)0x0 },
271   { ISFUNC, (rl_command_func_t *)0x0 },
272   { ISFUNC, (rl_command_func_t *)0x0 },
273   { ISFUNC, (rl_command_func_t *)0x0 },
274   { ISFUNC, (rl_command_func_t *)0x0 },
275   { ISFUNC, (rl_command_func_t *)0x0 },
276   { ISFUNC, (rl_command_func_t *)0x0 },
277   { ISFUNC, (rl_command_func_t *)0x0 },
278   { ISFUNC, (rl_command_func_t *)0x0 },
279   { ISFUNC, (rl_command_func_t *)0x0 },
280   { ISFUNC, (rl_command_func_t *)0x0 },
281   { ISFUNC, (rl_command_func_t *)0x0 },
282   { ISFUNC, (rl_command_func_t *)0x0 },
283   { ISFUNC, (rl_command_func_t *)0x0 },
284   { ISFUNC, (rl_command_func_t *)0x0 },
285   { ISFUNC, (rl_command_func_t *)0x0 },
286   { ISFUNC, (rl_command_func_t *)0x0 },
287   { ISFUNC, (rl_command_func_t *)0x0 },
288   { ISFUNC, (rl_command_func_t *)0x0 },
289   { ISFUNC, (rl_command_func_t *)0x0 },
290   { ISFUNC, (rl_command_func_t *)0x0 },
291   { ISFUNC, (rl_command_func_t *)0x0 },
292   { ISFUNC, (rl_command_func_t *)0x0 },
293   { ISFUNC, (rl_command_func_t *)0x0 },
294   { ISFUNC, (rl_command_func_t *)0x0 },
295   { ISFUNC, (rl_command_func_t *)0x0 },
296   { ISFUNC, (rl_command_func_t *)0x0 },
297   { ISFUNC, (rl_command_func_t *)0x0 },
298   { ISFUNC, (rl_command_func_t *)0x0 },
299   { ISFUNC, (rl_command_func_t *)0x0 },
300   { ISFUNC, (rl_command_func_t *)0x0 },
301   { ISFUNC, (rl_command_func_t *)0x0 },
302   { ISFUNC, (rl_command_func_t *)0x0 },
303   { ISFUNC, (rl_command_func_t *)0x0 },
304   { ISFUNC, (rl_command_func_t *)0x0 },
305   { ISFUNC, (rl_command_func_t *)0x0 },
306   { ISFUNC, (rl_command_func_t *)0x0 },
307   { ISFUNC, (rl_command_func_t *)0x0 },
308   { ISFUNC, (rl_command_func_t *)0x0 }
309 #endif /* KEYMAP_SIZE > 128 */
310 };
311 
312 KEYMAP_ENTRY_ARRAY vi_insertion_keymap = {
313   /* The regular control keys come first. */
314   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-@ */
315   { ISFUNC, rl_insert },			/* Control-a */
316   { ISFUNC, rl_insert },			/* Control-b */
317   { ISFUNC, rl_insert },			/* Control-c */
318   { ISFUNC, rl_vi_eof_maybe },			/* Control-d */
319   { ISFUNC, rl_insert },			/* Control-e */
320   { ISFUNC, rl_insert },			/* Control-f */
321   { ISFUNC, rl_insert },			/* Control-g */
322   { ISFUNC, rl_rubout },			/* Control-h */
323   { ISFUNC, rl_complete },			/* Control-i */
324   { ISFUNC, rl_newline },			/* Control-j */
325   { ISFUNC, rl_insert },			/* Control-k */
326   { ISFUNC, rl_insert },			/* Control-l */
327   { ISFUNC, rl_newline },			/* Control-m */
328   { ISFUNC, rl_menu_complete},			/* Control-n */
329   { ISFUNC, rl_insert },			/* Control-o */
330   { ISFUNC, rl_backward_menu_complete },	/* Control-p */
331   { ISFUNC, rl_insert },			/* Control-q */
332   { ISFUNC, rl_reverse_search_history },	/* Control-r */
333   { ISFUNC, rl_forward_search_history },	/* Control-s */
334   { ISFUNC, rl_transpose_chars },		/* Control-t */
335   { ISFUNC, rl_unix_line_discard },		/* Control-u */
336   { ISFUNC, rl_quoted_insert },			/* Control-v */
337   { ISFUNC, rl_vi_unix_word_rubout },		/* Control-w */
338   { ISFUNC, rl_insert },			/* Control-x */
339   { ISFUNC, rl_yank },				/* Control-y */
340   { ISFUNC, rl_insert },			/* Control-z */
341 
342   { ISFUNC, rl_vi_movement_mode },		/* Control-[ */
343   { ISFUNC, rl_insert },			/* Control-\ */
344   { ISFUNC, rl_insert },			/* Control-] */
345   { ISFUNC, rl_insert },			/* Control-^ */
346   { ISFUNC, rl_vi_undo },			/* Control-_ */
347 
348   /* The start of printing characters. */
349   { ISFUNC, rl_insert },			/* SPACE */
350   { ISFUNC, rl_insert },			/* ! */
351   { ISFUNC, rl_insert },			/* " */
352   { ISFUNC, rl_insert },			/* # */
353   { ISFUNC, rl_insert },			/* $ */
354   { ISFUNC, rl_insert },			/* % */
355   { ISFUNC, rl_insert },			/* & */
356   { ISFUNC, rl_insert },			/* ' */
357   { ISFUNC, rl_insert },			/* ( */
358   { ISFUNC, rl_insert },			/* ) */
359   { ISFUNC, rl_insert },			/* * */
360   { ISFUNC, rl_insert },			/* + */
361   { ISFUNC, rl_insert },			/* , */
362   { ISFUNC, rl_insert },			/* - */
363   { ISFUNC, rl_insert },			/* . */
364   { ISFUNC, rl_insert },			/* / */
365 
366   /* Regular digits. */
367   { ISFUNC, rl_insert },			/* 0 */
368   { ISFUNC, rl_insert },			/* 1 */
369   { ISFUNC, rl_insert },			/* 2 */
370   { ISFUNC, rl_insert },			/* 3 */
371   { ISFUNC, rl_insert },			/* 4 */
372   { ISFUNC, rl_insert },			/* 5 */
373   { ISFUNC, rl_insert },			/* 6 */
374   { ISFUNC, rl_insert },			/* 7 */
375   { ISFUNC, rl_insert },			/* 8 */
376   { ISFUNC, rl_insert },			/* 9 */
377 
378   /* A little more punctuation. */
379   { ISFUNC, rl_insert },			/* : */
380   { ISFUNC, rl_insert },			/* ; */
381   { ISFUNC, rl_insert },			/* < */
382   { ISFUNC, rl_insert },			/* = */
383   { ISFUNC, rl_insert },			/* > */
384   { ISFUNC, rl_insert },			/* ? */
385   { ISFUNC, rl_insert },			/* @ */
386 
387   /* Uppercase alphabet. */
388   { ISFUNC, rl_insert },			/* A */
389   { ISFUNC, rl_insert },			/* B */
390   { ISFUNC, rl_insert },			/* C */
391   { ISFUNC, rl_insert },			/* D */
392   { ISFUNC, rl_insert },			/* E */
393   { ISFUNC, rl_insert },			/* F */
394   { ISFUNC, rl_insert },			/* G */
395   { ISFUNC, rl_insert },			/* H */
396   { ISFUNC, rl_insert },			/* I */
397   { ISFUNC, rl_insert },			/* J */
398   { ISFUNC, rl_insert },			/* K */
399   { ISFUNC, rl_insert },			/* L */
400   { ISFUNC, rl_insert },			/* M */
401   { ISFUNC, rl_insert },			/* N */
402   { ISFUNC, rl_insert },			/* O */
403   { ISFUNC, rl_insert },			/* P */
404   { ISFUNC, rl_insert },			/* Q */
405   { ISFUNC, rl_insert },			/* R */
406   { ISFUNC, rl_insert },			/* S */
407   { ISFUNC, rl_insert },			/* T */
408   { ISFUNC, rl_insert },			/* U */
409   { ISFUNC, rl_insert },			/* V */
410   { ISFUNC, rl_insert },			/* W */
411   { ISFUNC, rl_insert },			/* X */
412   { ISFUNC, rl_insert },			/* Y */
413   { ISFUNC, rl_insert },			/* Z */
414 
415   /* Some more punctuation. */
416   { ISFUNC, rl_insert },			/* [ */
417   { ISFUNC, rl_insert },			/* \ */
418   { ISFUNC, rl_insert },			/* ] */
419   { ISFUNC, rl_insert },			/* ^ */
420   { ISFUNC, rl_insert },			/* _ */
421   { ISFUNC, rl_insert },			/* ` */
422 
423   /* Lowercase alphabet. */
424   { ISFUNC, rl_insert },			/* a */
425   { ISFUNC, rl_insert },			/* b */
426   { ISFUNC, rl_insert },			/* c */
427   { ISFUNC, rl_insert },			/* d */
428   { ISFUNC, rl_insert },			/* e */
429   { ISFUNC, rl_insert },			/* f */
430   { ISFUNC, rl_insert },			/* g */
431   { ISFUNC, rl_insert },			/* h */
432   { ISFUNC, rl_insert },			/* i */
433   { ISFUNC, rl_insert },			/* j */
434   { ISFUNC, rl_insert },			/* k */
435   { ISFUNC, rl_insert },			/* l */
436   { ISFUNC, rl_insert },			/* m */
437   { ISFUNC, rl_insert },			/* n */
438   { ISFUNC, rl_insert },			/* o */
439   { ISFUNC, rl_insert },			/* p */
440   { ISFUNC, rl_insert },			/* q */
441   { ISFUNC, rl_insert },			/* r */
442   { ISFUNC, rl_insert },			/* s */
443   { ISFUNC, rl_insert },			/* t */
444   { ISFUNC, rl_insert },			/* u */
445   { ISFUNC, rl_insert },			/* v */
446   { ISFUNC, rl_insert },			/* w */
447   { ISFUNC, rl_insert },			/* x */
448   { ISFUNC, rl_insert },			/* y */
449   { ISFUNC, rl_insert },			/* z */
450 
451   /* Final punctuation. */
452   { ISFUNC, rl_insert },			/* { */
453   { ISFUNC, rl_insert },			/* | */
454   { ISFUNC, rl_insert },			/* } */
455   { ISFUNC, rl_insert },			/* ~ */
456   { ISFUNC, rl_rubout },			/* RUBOUT */
457 
458 #if KEYMAP_SIZE > 128
459   /* Pure 8-bit characters (128 - 159).
460      These might be used in some
461      character sets. */
462   { ISFUNC, rl_insert },	/* ? */
463   { ISFUNC, rl_insert },	/* ? */
464   { ISFUNC, rl_insert },	/* ? */
465   { ISFUNC, rl_insert },	/* ? */
466   { ISFUNC, rl_insert },	/* ? */
467   { ISFUNC, rl_insert },	/* ? */
468   { ISFUNC, rl_insert },	/* ? */
469   { ISFUNC, rl_insert },	/* ? */
470   { ISFUNC, rl_insert },	/* ? */
471   { ISFUNC, rl_insert },	/* ? */
472   { ISFUNC, rl_insert },	/* ? */
473   { ISFUNC, rl_insert },	/* ? */
474   { ISFUNC, rl_insert },	/* ? */
475   { ISFUNC, rl_insert },	/* ? */
476   { ISFUNC, rl_insert },	/* ? */
477   { ISFUNC, rl_insert },	/* ? */
478   { ISFUNC, rl_insert },	/* ? */
479   { ISFUNC, rl_insert },	/* ? */
480   { ISFUNC, rl_insert },	/* ? */
481   { ISFUNC, rl_insert },	/* ? */
482   { ISFUNC, rl_insert },	/* ? */
483   { ISFUNC, rl_insert },	/* ? */
484   { ISFUNC, rl_insert },	/* ? */
485   { ISFUNC, rl_insert },	/* ? */
486   { ISFUNC, rl_insert },	/* ? */
487   { ISFUNC, rl_insert },	/* ? */
488   { ISFUNC, rl_insert },	/* ? */
489   { ISFUNC, rl_insert },	/* ? */
490   { ISFUNC, rl_insert },	/* ? */
491   { ISFUNC, rl_insert },	/* ? */
492   { ISFUNC, rl_insert },	/* ? */
493   { ISFUNC, rl_insert },	/* ? */
494 
495   /* ISO Latin-1 characters (160 - 255) */
496   { ISFUNC, rl_insert },	/* No-break space */
497   { ISFUNC, rl_insert },	/* Inverted exclamation mark */
498   { ISFUNC, rl_insert },	/* Cent sign */
499   { ISFUNC, rl_insert },	/* Pound sign */
500   { ISFUNC, rl_insert },	/* Currency sign */
501   { ISFUNC, rl_insert },	/* Yen sign */
502   { ISFUNC, rl_insert },	/* Broken bar */
503   { ISFUNC, rl_insert },	/* Section sign */
504   { ISFUNC, rl_insert },	/* Diaeresis */
505   { ISFUNC, rl_insert },	/* Copyright sign */
506   { ISFUNC, rl_insert },	/* Feminine ordinal indicator */
507   { ISFUNC, rl_insert },	/* Left pointing double angle quotation mark */
508   { ISFUNC, rl_insert },	/* Not sign */
509   { ISFUNC, rl_insert },	/* Soft hyphen */
510   { ISFUNC, rl_insert },	/* Registered sign */
511   { ISFUNC, rl_insert },	/* Macron */
512   { ISFUNC, rl_insert },	/* Degree sign */
513   { ISFUNC, rl_insert },	/* Plus-minus sign */
514   { ISFUNC, rl_insert },	/* Superscript two */
515   { ISFUNC, rl_insert },	/* Superscript three */
516   { ISFUNC, rl_insert },	/* Acute accent */
517   { ISFUNC, rl_insert },	/* Micro sign */
518   { ISFUNC, rl_insert },	/* Pilcrow sign */
519   { ISFUNC, rl_insert },	/* Middle dot */
520   { ISFUNC, rl_insert },	/* Cedilla */
521   { ISFUNC, rl_insert },	/* Superscript one */
522   { ISFUNC, rl_insert },	/* Masculine ordinal indicator */
523   { ISFUNC, rl_insert },	/* Right pointing double angle quotation mark */
524   { ISFUNC, rl_insert },	/* Vulgar fraction one quarter */
525   { ISFUNC, rl_insert },	/* Vulgar fraction one half */
526   { ISFUNC, rl_insert },	/* Vulgar fraction three quarters */
527   { ISFUNC, rl_insert },	/* Inverted questionk mark */
528   { ISFUNC, rl_insert },	/* Latin capital letter a with grave */
529   { ISFUNC, rl_insert },	/* Latin capital letter a with acute */
530   { ISFUNC, rl_insert },	/* Latin capital letter a with circumflex */
531   { ISFUNC, rl_insert },	/* Latin capital letter a with tilde */
532   { ISFUNC, rl_insert },	/* Latin capital letter a with diaeresis */
533   { ISFUNC, rl_insert },	/* Latin capital letter a with ring above */
534   { ISFUNC, rl_insert },	/* Latin capital letter ae */
535   { ISFUNC, rl_insert },	/* Latin capital letter c with cedilla */
536   { ISFUNC, rl_insert },	/* Latin capital letter e with grave */
537   { ISFUNC, rl_insert },	/* Latin capital letter e with acute */
538   { ISFUNC, rl_insert },	/* Latin capital letter e with circumflex */
539   { ISFUNC, rl_insert },	/* Latin capital letter e with diaeresis */
540   { ISFUNC, rl_insert },	/* Latin capital letter i with grave */
541   { ISFUNC, rl_insert },	/* Latin capital letter i with acute */
542   { ISFUNC, rl_insert },	/* Latin capital letter i with circumflex */
543   { ISFUNC, rl_insert },	/* Latin capital letter i with diaeresis */
544   { ISFUNC, rl_insert },	/* Latin capital letter eth (Icelandic) */
545   { ISFUNC, rl_insert },	/* Latin capital letter n with tilde */
546   { ISFUNC, rl_insert },	/* Latin capital letter o with grave */
547   { ISFUNC, rl_insert },	/* Latin capital letter o with acute */
548   { ISFUNC, rl_insert },	/* Latin capital letter o with circumflex */
549   { ISFUNC, rl_insert },	/* Latin capital letter o with tilde */
550   { ISFUNC, rl_insert },	/* Latin capital letter o with diaeresis */
551   { ISFUNC, rl_insert },	/* Multiplication sign */
552   { ISFUNC, rl_insert },	/* Latin capital letter o with stroke */
553   { ISFUNC, rl_insert },	/* Latin capital letter u with grave */
554   { ISFUNC, rl_insert },	/* Latin capital letter u with acute */
555   { ISFUNC, rl_insert },	/* Latin capital letter u with circumflex */
556   { ISFUNC, rl_insert },	/* Latin capital letter u with diaeresis */
557   { ISFUNC, rl_insert },	/* Latin capital letter Y with acute */
558   { ISFUNC, rl_insert },	/* Latin capital letter thorn (Icelandic) */
559   { ISFUNC, rl_insert },	/* Latin small letter sharp s (German) */
560   { ISFUNC, rl_insert },	/* Latin small letter a with grave */
561   { ISFUNC, rl_insert },	/* Latin small letter a with acute */
562   { ISFUNC, rl_insert },	/* Latin small letter a with circumflex */
563   { ISFUNC, rl_insert },	/* Latin small letter a with tilde */
564   { ISFUNC, rl_insert },	/* Latin small letter a with diaeresis */
565   { ISFUNC, rl_insert },	/* Latin small letter a with ring above */
566   { ISFUNC, rl_insert },	/* Latin small letter ae */
567   { ISFUNC, rl_insert },	/* Latin small letter c with cedilla */
568   { ISFUNC, rl_insert },	/* Latin small letter e with grave */
569   { ISFUNC, rl_insert },	/* Latin small letter e with acute */
570   { ISFUNC, rl_insert },	/* Latin small letter e with circumflex */
571   { ISFUNC, rl_insert },	/* Latin small letter e with diaeresis */
572   { ISFUNC, rl_insert },	/* Latin small letter i with grave */
573   { ISFUNC, rl_insert },	/* Latin small letter i with acute */
574   { ISFUNC, rl_insert },	/* Latin small letter i with circumflex */
575   { ISFUNC, rl_insert },	/* Latin small letter i with diaeresis */
576   { ISFUNC, rl_insert },	/* Latin small letter eth (Icelandic) */
577   { ISFUNC, rl_insert },	/* Latin small letter n with tilde */
578   { ISFUNC, rl_insert },	/* Latin small letter o with grave */
579   { ISFUNC, rl_insert },	/* Latin small letter o with acute */
580   { ISFUNC, rl_insert },	/* Latin small letter o with circumflex */
581   { ISFUNC, rl_insert },	/* Latin small letter o with tilde */
582   { ISFUNC, rl_insert },	/* Latin small letter o with diaeresis */
583   { ISFUNC, rl_insert },	/* Division sign */
584   { ISFUNC, rl_insert },	/* Latin small letter o with stroke */
585   { ISFUNC, rl_insert },	/* Latin small letter u with grave */
586   { ISFUNC, rl_insert },	/* Latin small letter u with acute */
587   { ISFUNC, rl_insert },	/* Latin small letter u with circumflex */
588   { ISFUNC, rl_insert },	/* Latin small letter u with diaeresis */
589   { ISFUNC, rl_insert },	/* Latin small letter y with acute */
590   { ISFUNC, rl_insert },	/* Latin small letter thorn (Icelandic) */
591   { ISFUNC, rl_insert }		/* Latin small letter y with diaeresis */
592 #endif /* KEYMAP_SIZE > 128 */
593 };
594 
595 /* Unused for the time being. */
596 #if 0
597 KEYMAP_ENTRY_ARRAY vi_escape_keymap = {
598   /* The regular control keys come first. */
599   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-@ */
600   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-a */
601   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-b */
602   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-c */
603   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-d */
604   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-e */
605   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-f */
606   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-g */
607   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-h */
608   { ISFUNC, rl_tab_insert},			/* Control-i */
609   { ISFUNC, rl_emacs_editing_mode},		/* Control-j */
610   { ISFUNC, rl_kill_line },			/* Control-k */
611   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-l */
612   { ISFUNC, rl_emacs_editing_mode},		/* Control-m */
613   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-n */
614   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-o */
615   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-p */
616   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-q */
617   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-r */
618   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-s */
619   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-t */
620   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-u */
621   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-v */
622   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-w */
623   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-x */
624   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-y */
625   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-z */
626 
627   { ISFUNC, rl_vi_movement_mode },		/* Control-[ */
628   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-\ */
629   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-] */
630   { ISFUNC, (rl_command_func_t *)0x0 },		/* Control-^ */
631   { ISFUNC, rl_vi_undo },			/* Control-_ */
632 
633   /* The start of printing characters. */
634   { ISFUNC, (rl_command_func_t *)0x0 },		/* SPACE */
635   { ISFUNC, (rl_command_func_t *)0x0 },		/* ! */
636   { ISFUNC, (rl_command_func_t *)0x0 },		/* " */
637   { ISFUNC, (rl_command_func_t *)0x0 },		/* # */
638   { ISFUNC, (rl_command_func_t *)0x0 },		/* $ */
639   { ISFUNC, (rl_command_func_t *)0x0 },		/* % */
640   { ISFUNC, (rl_command_func_t *)0x0 },		/* & */
641   { ISFUNC, (rl_command_func_t *)0x0 },		/* ' */
642   { ISFUNC, (rl_command_func_t *)0x0 },		/* ( */
643   { ISFUNC, (rl_command_func_t *)0x0 },		/* ) */
644   { ISFUNC, (rl_command_func_t *)0x0 },		/* * */
645   { ISFUNC, (rl_command_func_t *)0x0 },		/* + */
646   { ISFUNC, (rl_command_func_t *)0x0 },		/* , */
647   { ISFUNC, (rl_command_func_t *)0x0 },		/* - */
648   { ISFUNC, (rl_command_func_t *)0x0 },		/* . */
649   { ISFUNC, (rl_command_func_t *)0x0 },		/* / */
650 
651   /* Regular digits. */
652   { ISFUNC, rl_vi_arg_digit },			/* 0 */
653   { ISFUNC, rl_vi_arg_digit },			/* 1 */
654   { ISFUNC, rl_vi_arg_digit },			/* 2 */
655   { ISFUNC, rl_vi_arg_digit },			/* 3 */
656   { ISFUNC, rl_vi_arg_digit },			/* 4 */
657   { ISFUNC, rl_vi_arg_digit },			/* 5 */
658   { ISFUNC, rl_vi_arg_digit },			/* 6 */
659   { ISFUNC, rl_vi_arg_digit },			/* 7 */
660   { ISFUNC, rl_vi_arg_digit },			/* 8 */
661   { ISFUNC, rl_vi_arg_digit },			/* 9 */
662 
663   /* A little more punctuation. */
664   { ISFUNC, (rl_command_func_t *)0x0 },		/* : */
665   { ISFUNC, (rl_command_func_t *)0x0 },		/* ; */
666   { ISFUNC, (rl_command_func_t *)0x0 },		/* < */
667   { ISFUNC, (rl_command_func_t *)0x0 },		/* = */
668   { ISFUNC, (rl_command_func_t *)0x0 },		/* > */
669   { ISFUNC, (rl_command_func_t *)0x0 },		/* ? */
670   { ISFUNC, (rl_command_func_t *)0x0 },		/* @ */
671 
672   /* Uppercase alphabet. */
673   { ISFUNC, rl_do_lowercase_version },		/* A */
674   { ISFUNC, rl_do_lowercase_version },		/* B */
675   { ISFUNC, rl_do_lowercase_version },		/* C */
676   { ISFUNC, rl_do_lowercase_version },		/* D */
677   { ISFUNC, rl_do_lowercase_version },		/* E */
678   { ISFUNC, rl_do_lowercase_version },		/* F */
679   { ISFUNC, rl_do_lowercase_version },		/* G */
680   { ISFUNC, rl_do_lowercase_version },		/* H */
681   { ISFUNC, rl_do_lowercase_version },		/* I */
682   { ISFUNC, rl_do_lowercase_version },		/* J */
683   { ISFUNC, rl_do_lowercase_version },		/* K */
684   { ISFUNC, rl_do_lowercase_version },		/* L */
685   { ISFUNC, rl_do_lowercase_version },		/* M */
686   { ISFUNC, rl_do_lowercase_version },		/* N */
687   { ISFUNC, rl_do_lowercase_version },		/* O */
688   { ISFUNC, rl_do_lowercase_version },		/* P */
689   { ISFUNC, rl_do_lowercase_version },		/* Q */
690   { ISFUNC, rl_do_lowercase_version },		/* R */
691   { ISFUNC, rl_do_lowercase_version },		/* S */
692   { ISFUNC, rl_do_lowercase_version },		/* T */
693   { ISFUNC, rl_do_lowercase_version },		/* U */
694   { ISFUNC, rl_do_lowercase_version },		/* V */
695   { ISFUNC, rl_do_lowercase_version },		/* W */
696   { ISFUNC, rl_do_lowercase_version },		/* X */
697   { ISFUNC, rl_do_lowercase_version },		/* Y */
698   { ISFUNC, rl_do_lowercase_version },		/* Z */
699 
700   /* Some more punctuation. */
701   { ISFUNC, rl_arrow_keys },			/* [ */
702   { ISFUNC, (rl_command_func_t *)0x0 },		/* \ */
703   { ISFUNC, (rl_command_func_t *)0x0 },		/* ] */
704   { ISFUNC, (rl_command_func_t *)0x0 },		/* ^ */
705   { ISFUNC, (rl_command_func_t *)0x0 },		/* _ */
706   { ISFUNC, (rl_command_func_t *)0x0 },		/* ` */
707 
708   /* Lowercase alphabet. */
709   { ISFUNC, (rl_command_func_t *)0x0 },		/* a */
710   { ISFUNC, (rl_command_func_t *)0x0 },		/* b */
711   { ISFUNC, (rl_command_func_t *)0x0 },		/* c */
712   { ISFUNC, (rl_command_func_t *)0x0 },		/* d */
713   { ISFUNC, (rl_command_func_t *)0x0 },		/* e */
714   { ISFUNC, (rl_command_func_t *)0x0 },		/* f */
715   { ISFUNC, (rl_command_func_t *)0x0 },		/* g */
716   { ISFUNC, (rl_command_func_t *)0x0 },		/* h */
717   { ISFUNC, (rl_command_func_t *)0x0 },		/* i */
718   { ISFUNC, (rl_command_func_t *)0x0 },		/* j */
719   { ISFUNC, (rl_command_func_t *)0x0 },		/* k */
720   { ISFUNC, (rl_command_func_t *)0x0 },		/* l */
721   { ISFUNC, (rl_command_func_t *)0x0 },		/* m */
722   { ISFUNC, (rl_command_func_t *)0x0 },		/* n */
723   { ISFUNC, rl_arrow_keys },			/* o */
724   { ISFUNC, (rl_command_func_t *)0x0 },		/* p */
725   { ISFUNC, (rl_command_func_t *)0x0 },		/* q */
726   { ISFUNC, (rl_command_func_t *)0x0 },		/* r */
727   { ISFUNC, (rl_command_func_t *)0x0 },		/* s */
728   { ISFUNC, (rl_command_func_t *)0x0 },		/* t */
729   { ISFUNC, (rl_command_func_t *)0x0 },		/* u */
730   { ISFUNC, (rl_command_func_t *)0x0 },		/* v */
731   { ISFUNC, (rl_command_func_t *)0x0 },		/* w */
732   { ISFUNC, (rl_command_func_t *)0x0 },		/* x */
733   { ISFUNC, (rl_command_func_t *)0x0 },		/* y */
734   { ISFUNC, (rl_command_func_t *)0x0 },		/* z */
735 
736   /* Final punctuation. */
737   { ISFUNC, (rl_command_func_t *)0x0 },		/* { */
738   { ISFUNC, (rl_command_func_t *)0x0 },		/* | */
739   { ISFUNC, (rl_command_func_t *)0x0 },		/* } */
740   { ISFUNC, (rl_command_func_t *)0x0 },		/* ~ */
741   { ISFUNC, rl_backward_kill_word },		/* RUBOUT */
742 
743 #if KEYMAP_SIZE > 128
744   /* Undefined keys. */
745   { ISFUNC, (rl_command_func_t *)0x0 },
746   { ISFUNC, (rl_command_func_t *)0x0 },
747   { ISFUNC, (rl_command_func_t *)0x0 },
748   { ISFUNC, (rl_command_func_t *)0x0 },
749   { ISFUNC, (rl_command_func_t *)0x0 },
750   { ISFUNC, (rl_command_func_t *)0x0 },
751   { ISFUNC, (rl_command_func_t *)0x0 },
752   { ISFUNC, (rl_command_func_t *)0x0 },
753   { ISFUNC, (rl_command_func_t *)0x0 },
754   { ISFUNC, (rl_command_func_t *)0x0 },
755   { ISFUNC, (rl_command_func_t *)0x0 },
756   { ISFUNC, (rl_command_func_t *)0x0 },
757   { ISFUNC, (rl_command_func_t *)0x0 },
758   { ISFUNC, (rl_command_func_t *)0x0 },
759   { ISFUNC, (rl_command_func_t *)0x0 },
760   { ISFUNC, (rl_command_func_t *)0x0 },
761   { ISFUNC, (rl_command_func_t *)0x0 },
762   { ISFUNC, (rl_command_func_t *)0x0 },
763   { ISFUNC, (rl_command_func_t *)0x0 },
764   { ISFUNC, (rl_command_func_t *)0x0 },
765   { ISFUNC, (rl_command_func_t *)0x0 },
766   { ISFUNC, (rl_command_func_t *)0x0 },
767   { ISFUNC, (rl_command_func_t *)0x0 },
768   { ISFUNC, (rl_command_func_t *)0x0 },
769   { ISFUNC, (rl_command_func_t *)0x0 },
770   { ISFUNC, (rl_command_func_t *)0x0 },
771   { ISFUNC, (rl_command_func_t *)0x0 },
772   { ISFUNC, (rl_command_func_t *)0x0 },
773   { ISFUNC, (rl_command_func_t *)0x0 },
774   { ISFUNC, (rl_command_func_t *)0x0 },
775   { ISFUNC, (rl_command_func_t *)0x0 },
776   { ISFUNC, (rl_command_func_t *)0x0 },
777   { ISFUNC, (rl_command_func_t *)0x0 },
778   { ISFUNC, (rl_command_func_t *)0x0 },
779   { ISFUNC, (rl_command_func_t *)0x0 },
780   { ISFUNC, (rl_command_func_t *)0x0 },
781   { ISFUNC, (rl_command_func_t *)0x0 },
782   { ISFUNC, (rl_command_func_t *)0x0 },
783   { ISFUNC, (rl_command_func_t *)0x0 },
784   { ISFUNC, (rl_command_func_t *)0x0 },
785   { ISFUNC, (rl_command_func_t *)0x0 },
786   { ISFUNC, (rl_command_func_t *)0x0 },
787   { ISFUNC, (rl_command_func_t *)0x0 },
788   { ISFUNC, (rl_command_func_t *)0x0 },
789   { ISFUNC, (rl_command_func_t *)0x0 },
790   { ISFUNC, (rl_command_func_t *)0x0 },
791   { ISFUNC, (rl_command_func_t *)0x0 },
792   { ISFUNC, (rl_command_func_t *)0x0 },
793   { ISFUNC, (rl_command_func_t *)0x0 },
794   { ISFUNC, (rl_command_func_t *)0x0 },
795   { ISFUNC, (rl_command_func_t *)0x0 },
796   { ISFUNC, (rl_command_func_t *)0x0 },
797   { ISFUNC, (rl_command_func_t *)0x0 },
798   { ISFUNC, (rl_command_func_t *)0x0 },
799   { ISFUNC, (rl_command_func_t *)0x0 },
800   { ISFUNC, (rl_command_func_t *)0x0 },
801   { ISFUNC, (rl_command_func_t *)0x0 },
802   { ISFUNC, (rl_command_func_t *)0x0 },
803   { ISFUNC, (rl_command_func_t *)0x0 },
804   { ISFUNC, (rl_command_func_t *)0x0 },
805   { ISFUNC, (rl_command_func_t *)0x0 },
806   { ISFUNC, (rl_command_func_t *)0x0 },
807   { ISFUNC, (rl_command_func_t *)0x0 },
808   { ISFUNC, (rl_command_func_t *)0x0 },
809   { ISFUNC, (rl_command_func_t *)0x0 },
810   { ISFUNC, (rl_command_func_t *)0x0 },
811   { ISFUNC, (rl_command_func_t *)0x0 },
812   { ISFUNC, (rl_command_func_t *)0x0 },
813   { ISFUNC, (rl_command_func_t *)0x0 },
814   { ISFUNC, (rl_command_func_t *)0x0 },
815   { ISFUNC, (rl_command_func_t *)0x0 },
816   { ISFUNC, (rl_command_func_t *)0x0 },
817   { ISFUNC, (rl_command_func_t *)0x0 },
818   { ISFUNC, (rl_command_func_t *)0x0 },
819   { ISFUNC, (rl_command_func_t *)0x0 },
820   { ISFUNC, (rl_command_func_t *)0x0 },
821   { ISFUNC, (rl_command_func_t *)0x0 },
822   { ISFUNC, (rl_command_func_t *)0x0 },
823   { ISFUNC, (rl_command_func_t *)0x0 },
824   { ISFUNC, (rl_command_func_t *)0x0 },
825   { ISFUNC, (rl_command_func_t *)0x0 },
826   { ISFUNC, (rl_command_func_t *)0x0 },
827   { ISFUNC, (rl_command_func_t *)0x0 },
828   { ISFUNC, (rl_command_func_t *)0x0 },
829   { ISFUNC, (rl_command_func_t *)0x0 },
830   { ISFUNC, (rl_command_func_t *)0x0 },
831   { ISFUNC, (rl_command_func_t *)0x0 },
832   { ISFUNC, (rl_command_func_t *)0x0 },
833   { ISFUNC, (rl_command_func_t *)0x0 },
834   { ISFUNC, (rl_command_func_t *)0x0 },
835   { ISFUNC, (rl_command_func_t *)0x0 },
836   { ISFUNC, (rl_command_func_t *)0x0 },
837   { ISFUNC, (rl_command_func_t *)0x0 },
838   { ISFUNC, (rl_command_func_t *)0x0 },
839   { ISFUNC, (rl_command_func_t *)0x0 },
840   { ISFUNC, (rl_command_func_t *)0x0 },
841   { ISFUNC, (rl_command_func_t *)0x0 },
842   { ISFUNC, (rl_command_func_t *)0x0 },
843   { ISFUNC, (rl_command_func_t *)0x0 },
844   { ISFUNC, (rl_command_func_t *)0x0 },
845   { ISFUNC, (rl_command_func_t *)0x0 },
846   { ISFUNC, (rl_command_func_t *)0x0 },
847   { ISFUNC, (rl_command_func_t *)0x0 },
848   { ISFUNC, (rl_command_func_t *)0x0 },
849   { ISFUNC, (rl_command_func_t *)0x0 },
850   { ISFUNC, (rl_command_func_t *)0x0 },
851   { ISFUNC, (rl_command_func_t *)0x0 },
852   { ISFUNC, (rl_command_func_t *)0x0 },
853   { ISFUNC, (rl_command_func_t *)0x0 },
854   { ISFUNC, (rl_command_func_t *)0x0 },
855   { ISFUNC, (rl_command_func_t *)0x0 },
856   { ISFUNC, (rl_command_func_t *)0x0 },
857   { ISFUNC, (rl_command_func_t *)0x0 },
858   { ISFUNC, (rl_command_func_t *)0x0 },
859   { ISFUNC, (rl_command_func_t *)0x0 },
860   { ISFUNC, (rl_command_func_t *)0x0 },
861   { ISFUNC, (rl_command_func_t *)0x0 },
862   { ISFUNC, (rl_command_func_t *)0x0 },
863   { ISFUNC, (rl_command_func_t *)0x0 },
864   { ISFUNC, (rl_command_func_t *)0x0 },
865   { ISFUNC, (rl_command_func_t *)0x0 },
866   { ISFUNC, (rl_command_func_t *)0x0 },
867   { ISFUNC, (rl_command_func_t *)0x0 },
868   { ISFUNC, (rl_command_func_t *)0x0 },
869   { ISFUNC, (rl_command_func_t *)0x0 },
870   { ISFUNC, (rl_command_func_t *)0x0 },
871   { ISFUNC, (rl_command_func_t *)0x0 },
872   { ISFUNC, (rl_command_func_t *)0x0 }
873 #endif /* KEYMAP_SIZE > 128 */
874 };
875 #endif
876