home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / gdb / readline / vi_keymap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-05-08  |  17.5 KB  |  485 lines

  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.