/* emacs_keymap.c -- the keymap for emacs_mode in readline (). */

/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.

   This file is part of the GNU Readline Library, a library for
   reading lines of text with interactive input and history editing.

   The GNU Readline Library is free software; you can redistribute it
   and/or modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version 1, or
   (at your option) any later version.

   The GNU Readline Library is distributed in the hope that it will be
   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   The GNU General Public License is often shipped with GNU software, and
   is generally kept in a file called COPYING or LICENSE.  If you do not
   have a copy of the license, write to the Free Software Foundation,
   675 Mass Ave, Cambridge, MA 02139, USA. */

#if !defined (BUFSIZ)
#include <stdio.h>
#endif /* !BUFSIZ */

#include "readline.h"

/* An array of function pointers, one for each possible key.
   If the type byte is ISKMAP, then the pointer is the address of
   a keymap. */

KEYMAP_ENTRY_ARRAY emacs_standard_keymap =
{

  /* Control keys. */
	{ISFUNC, (Function *) 0x0},	/* Control-@ */
	{ISFUNC, rl_beg_of_line},	/* Control-a */
	{ISFUNC, rl_backward},	/* Control-b */
	{ISFUNC, (Function *) 0x0},	/* Control-c */
	{ISFUNC, rl_delete},	/* Control-d */
	{ISFUNC, rl_end_of_line},	/* Control-e */
	{ISFUNC, rl_forward},	/* Control-f */
	{ISFUNC, rl_abort},	/* Control-g */
	{ISFUNC, rl_rubout},	/* Control-h */
	{ISFUNC, rl_complete},	/* Control-i */
	{ISFUNC, rl_newline},	/* Control-j */
	{ISFUNC, rl_kill_line},	/* Control-k */
	{ISFUNC, rl_clear_screen},	/* Control-l */
	{ISFUNC, rl_newline},	/* Control-m */
	{ISFUNC, rl_get_next_history},	/* Control-n */
	{ISFUNC, (Function *) 0x0},	/* Control-o */
	{ISFUNC, rl_get_previous_history},	/* Control-p */
	{ISFUNC, rl_quoted_insert},	/* Control-q */
	{ISFUNC, rl_reverse_search_history},	/* Control-r */
	{ISFUNC, rl_forward_search_history},	/* Control-s */
	{ISFUNC, rl_transpose_chars},	/* Control-t */
	{ISFUNC, rl_unix_line_discard},		/* Control-u */
	{ISFUNC, rl_quoted_insert},	/* Control-v */
	{ISFUNC, rl_unix_word_rubout},	/* Control-w */
	{ISKMAP, (Function *) emacs_ctlx_keymap},	/* Control-x */
	{ISFUNC, rl_yank},	/* Control-y */
	{ISFUNC, (Function *) 0x0},	/* Control-z */
	{ISKMAP, (Function *) emacs_meta_keymap},	/* Control-[ */
	{ISFUNC, (Function *) 0x0},	/* Control-\ */
	{ISFUNC, (Function *) 0x0},	/* Control-] */
	{ISFUNC, (Function *) 0x0},	/* Control-^ */
	{ISFUNC, rl_undo_command},	/* Control-_ */

  /* The start of printing characters. */
	{ISFUNC, rl_insert},	/* SPACE */
	{ISFUNC, rl_insert},	/* ! */
	{ISFUNC, rl_insert},	/* " */
	{ISFUNC, rl_insert},	/* # */
	{ISFUNC, rl_insert},	/* $ */
	{ISFUNC, rl_insert},	/* % */
	{ISFUNC, rl_insert},	/* & */
	{ISFUNC, rl_insert},	/* ' */
	{ISFUNC, rl_insert},	/* ( */
#if defined (PAREN_MATCHING)
	{ISFUNC, rl_insert_close},	/* ) */
#else
	{ISFUNC, rl_insert},	/* ) */
#endif				/* !PAREN_MATCHING */
	{ISFUNC, rl_insert},	/* * */
	{ISFUNC, rl_insert},	/* + */
	{ISFUNC, rl_insert},	/* , */
	{ISFUNC, rl_insert},	/* - */
	{ISFUNC, rl_insert},	/* . */
	{ISFUNC, rl_insert},	/* / */

  /* Regular digits. */
	{ISFUNC, rl_insert},	/* 0 */
	{ISFUNC, rl_insert},	/* 1 */
	{ISFUNC, rl_insert},	/* 2 */
	{ISFUNC, rl_insert},	/* 3 */
	{ISFUNC, rl_insert},	/* 4 */
	{ISFUNC, rl_insert},	/* 5 */
	{ISFUNC, rl_insert},	/* 6 */
	{ISFUNC, rl_insert},	/* 7 */
	{ISFUNC, rl_insert},	/* 8 */
	{ISFUNC, rl_insert},	/* 9 */

  /* A little more punctuation. */
	{ISFUNC, rl_insert},	/* : */
	{ISFUNC, rl_insert},	/* ; */
	{ISFUNC, rl_insert},	/* < */
	{ISFUNC, rl_insert},	/* = */
	{ISFUNC, rl_insert},	/* > */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* @ */

  /* Uppercase alphabet. */
	{ISFUNC, rl_insert},	/* A */
	{ISFUNC, rl_insert},	/* B */
	{ISFUNC, rl_insert},	/* C */
	{ISFUNC, rl_insert},	/* D */
	{ISFUNC, rl_insert},	/* E */
	{ISFUNC, rl_insert},	/* F */
	{ISFUNC, rl_insert},	/* G */
	{ISFUNC, rl_insert},	/* H */
	{ISFUNC, rl_insert},	/* I */
	{ISFUNC, rl_insert},	/* J */
	{ISFUNC, rl_insert},	/* K */
	{ISFUNC, rl_insert},	/* L */
	{ISFUNC, rl_insert},	/* M */
	{ISFUNC, rl_insert},	/* N */
	{ISFUNC, rl_insert},	/* O */
	{ISFUNC, rl_insert},	/* P */
	{ISFUNC, rl_insert},	/* Q */
	{ISFUNC, rl_insert},	/* R */
	{ISFUNC, rl_insert},	/* S */
	{ISFUNC, rl_insert},	/* T */
	{ISFUNC, rl_insert},	/* U */
	{ISFUNC, rl_insert},	/* V */
	{ISFUNC, rl_insert},	/* W */
	{ISFUNC, rl_insert},	/* X */
	{ISFUNC, rl_insert},	/* Y */
	{ISFUNC, rl_insert},	/* Z */

  /* Some more punctuation. */
	{ISFUNC, rl_insert},	/* [ */
	{ISFUNC, rl_insert},	/* \ */
#if defined (PAREN_MATCHING)
	{ISFUNC, rl_insert_close},	/* ] */
#else
	{ISFUNC, rl_insert},	/* ] */
#endif				/* !PAREN_MATCHING */
	{ISFUNC, rl_insert},	/* ^ */
	{ISFUNC, rl_insert},	/* _ */
	{ISFUNC, rl_insert},	/* ` */

  /* Lowercase alphabet. */
	{ISFUNC, rl_insert},	/* a */
	{ISFUNC, rl_insert},	/* b */
	{ISFUNC, rl_insert},	/* c */
	{ISFUNC, rl_insert},	/* d */
	{ISFUNC, rl_insert},	/* e */
	{ISFUNC, rl_insert},	/* f */
	{ISFUNC, rl_insert},	/* g */
	{ISFUNC, rl_insert},	/* h */
	{ISFUNC, rl_insert},	/* i */
	{ISFUNC, rl_insert},	/* j */
	{ISFUNC, rl_insert},	/* k */
	{ISFUNC, rl_insert},	/* l */
	{ISFUNC, rl_insert},	/* m */
	{ISFUNC, rl_insert},	/* n */
	{ISFUNC, rl_insert},	/* o */
	{ISFUNC, rl_insert},	/* p */
	{ISFUNC, rl_insert},	/* q */
	{ISFUNC, rl_insert},	/* r */
	{ISFUNC, rl_insert},	/* s */
	{ISFUNC, rl_insert},	/* t */
	{ISFUNC, rl_insert},	/* u */
	{ISFUNC, rl_insert},	/* v */
	{ISFUNC, rl_insert},	/* w */
	{ISFUNC, rl_insert},	/* x */
	{ISFUNC, rl_insert},	/* y */
	{ISFUNC, rl_insert},	/* z */

  /* Final punctuation. */
	{ISFUNC, rl_insert},	/* { */
	{ISFUNC, rl_insert},	/* | */
#if defined (PAREN_MATCHING)
	{ISFUNC, rl_insert_close},	/* } */
#else
	{ISFUNC, rl_insert},	/* } */
#endif				/* !PAREN_MATCHING */
	{ISFUNC, rl_insert},	/* ~ */
	{ISFUNC, rl_rubout},	/* RUBOUT */

#if KEYMAP_SIZE > 128
  /* Pure 8-bit characters (128 - 159).
     These might be used in some
     character sets. */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */
	{ISFUNC, rl_insert},	/* ? */

  /* ISO Latin-1 characters (160 - 255) */
	{ISFUNC, rl_insert},	/* No-break space */
	{ISFUNC, rl_insert},	/* Inverted exclamation mark */
	{ISFUNC, rl_insert},	/* Cent sign */
	{ISFUNC, rl_insert},	/* Pound sign */
	{ISFUNC, rl_insert},	/* Currency sign */
	{ISFUNC, rl_insert},	/* Yen sign */
	{ISFUNC, rl_insert},	/* Broken bar */
	{ISFUNC, rl_insert},	/* Section sign */
	{ISFUNC, rl_insert},	/* Diaeresis */
	{ISFUNC, rl_insert},	/* Copyright sign */
	{ISFUNC, rl_insert},	/* Feminine ordinal indicator */
	{ISFUNC, rl_insert},	/* Left pointing double angle quotation mark */
	{ISFUNC, rl_insert},	/* Not sign */
	{ISFUNC, rl_insert},	/* Soft hyphen */
	{ISFUNC, rl_insert},	/* Registered sign */
	{ISFUNC, rl_insert},	/* Macron */
	{ISFUNC, rl_insert},	/* Degree sign */
	{ISFUNC, rl_insert},	/* Plus-minus sign */
	{ISFUNC, rl_insert},	/* Superscript two */
	{ISFUNC, rl_insert},	/* Superscript three */
	{ISFUNC, rl_insert},	/* Acute accent */
	{ISFUNC, rl_insert},	/* Micro sign */
	{ISFUNC, rl_insert},	/* Pilcrow sign */
	{ISFUNC, rl_insert},	/* Middle dot */
	{ISFUNC, rl_insert},	/* Cedilla */
	{ISFUNC, rl_insert},	/* Superscript one */
	{ISFUNC, rl_insert},	/* Masculine ordinal indicator */
	{ISFUNC, rl_insert},	/* Right pointing double angle quotation mark */
	{ISFUNC, rl_insert},	/* Vulgar fraction one quarter */
	{ISFUNC, rl_insert},	/* Vulgar fraction one half */
	{ISFUNC, rl_insert},	/* Vulgar fraction three quarters */
	{ISFUNC, rl_insert},	/* Inverted questionk mark */
	{ISFUNC, rl_insert},	/* Latin capital letter a with grave */
	{ISFUNC, rl_insert},	/* Latin capital letter a with acute */
	{ISFUNC, rl_insert},	/* Latin capital letter a with circumflex */
	{ISFUNC, rl_insert},	/* Latin capital letter a with tilde */
	{ISFUNC, rl_insert},	/* Latin capital letter a with diaeresis */
	{ISFUNC, rl_insert},	/* Latin capital letter a with ring above */
	{ISFUNC, rl_insert},	/* Latin capital letter ae */
	{ISFUNC, rl_insert},	/* Latin capital letter c with cedilla */
	{ISFUNC, rl_insert},	/* Latin capital letter e with grave */
	{ISFUNC, rl_insert},	/* Latin capital letter e with acute */
	{ISFUNC, rl_insert},	/* Latin capital letter e with circumflex */
	{ISFUNC, rl_insert},	/* Latin capital letter e with diaeresis */
	{ISFUNC, rl_insert},	/* Latin capital letter i with grave */
	{ISFUNC, rl_insert},	/* Latin capital letter i with acute */
	{ISFUNC, rl_insert},	/* Latin capital letter i with circumflex */
	{ISFUNC, rl_insert},	/* Latin capital letter i with diaeresis */
	{ISFUNC, rl_insert},	/* Latin capital letter eth (Icelandic) */
	{ISFUNC, rl_insert},	/* Latin capital letter n with tilde */
	{ISFUNC, rl_insert},	/* Latin capital letter o with grave */
	{ISFUNC, rl_insert},	/* Latin capital letter o with acute */
	{ISFUNC, rl_insert},	/* Latin capital letter o with circumflex */
	{ISFUNC, rl_insert},	/* Latin capital letter o with tilde */
	{ISFUNC, rl_insert},	/* Latin capital letter o with diaeresis */
	{ISFUNC, rl_insert},	/* Multiplication sign */
	{ISFUNC, rl_insert},	/* Latin capital letter o with stroke */
	{ISFUNC, rl_insert},	/* Latin capital letter u with grave */
	{ISFUNC, rl_insert},	/* Latin capital letter u with acute */
	{ISFUNC, rl_insert},	/* Latin capital letter u with circumflex */
	{ISFUNC, rl_insert},	/* Latin capital letter u with diaeresis */
	{ISFUNC, rl_insert},	/* Latin capital letter Y with acute */
	{ISFUNC, rl_insert},	/* Latin capital letter thorn (Icelandic) */
	{ISFUNC, rl_insert},	/* Latin small letter sharp s (German) */
	{ISFUNC, rl_insert},	/* Latin small letter a with grave */
	{ISFUNC, rl_insert},	/* Latin small letter a with acute */
	{ISFUNC, rl_insert},	/* Latin small letter a with circumflex */
	{ISFUNC, rl_insert},	/* Latin small letter a with tilde */
	{ISFUNC, rl_insert},	/* Latin small letter a with diaeresis */
	{ISFUNC, rl_insert},	/* Latin small letter a with ring above */
	{ISFUNC, rl_insert},	/* Latin small letter ae */
	{ISFUNC, rl_insert},	/* Latin small letter c with cedilla */
	{ISFUNC, rl_insert},	/* Latin small letter e with grave */
	{ISFUNC, rl_insert},	/* Latin small letter e with acute */
	{ISFUNC, rl_insert},	/* Latin small letter e with circumflex */
	{ISFUNC, rl_insert},	/* Latin small letter e with diaeresis */
	{ISFUNC, rl_insert},	/* Latin small letter i with grave */
	{ISFUNC, rl_insert},	/* Latin small letter i with acute */
	{ISFUNC, rl_insert},	/* Latin small letter i with circumflex */
	{ISFUNC, rl_insert},	/* Latin small letter i with diaeresis */
	{ISFUNC, rl_insert},	/* Latin small letter eth (Icelandic) */
	{ISFUNC, rl_insert},	/* Latin small letter n with tilde */
	{ISFUNC, rl_insert},	/* Latin small letter o with grave */
	{ISFUNC, rl_insert},	/* Latin small letter o with acute */
	{ISFUNC, rl_insert},	/* Latin small letter o with circumflex */
	{ISFUNC, rl_insert},	/* Latin small letter o with tilde */
	{ISFUNC, rl_insert},	/* Latin small letter o with diaeresis */
	{ISFUNC, rl_insert},	/* Division sign */
	{ISFUNC, rl_insert},	/* Latin small letter o with stroke */
	{ISFUNC, rl_insert},	/* Latin small letter u with grave */
	{ISFUNC, rl_insert},	/* Latin small letter u with acute */
	{ISFUNC, rl_insert},	/* Latin small letter u with circumflex */
	{ISFUNC, rl_insert},	/* Latin small letter u with diaeresis */
	{ISFUNC, rl_insert},	/* Latin small letter y with acute */
	{ISFUNC, rl_insert},	/* Latin small letter thorn (Icelandic) */
	{ISFUNC, rl_insert}	/* Latin small letter y with diaeresis */
#endif			/* KEYMAP_SIZE > 128 */
};

KEYMAP_ENTRY_ARRAY emacs_meta_keymap =
{

  /* Meta keys.  Just like above, but the high bit is set. */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-@ */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-a */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-b */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-c */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-d */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-e */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-f */
	{ISFUNC, rl_abort},	/* Meta-Control-g */
	{ISFUNC, rl_backward_kill_word},	/* Meta-Control-h */
	{ISFUNC, rl_tab_insert},	/* Meta-Control-i */
	{ISFUNC, rl_vi_editing_mode},	/* Meta-Control-j */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-k */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-l */
	{ISFUNC, rl_vi_editing_mode},	/* Meta-Control-m */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-n */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-o */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-p */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-q */
	{ISFUNC, rl_revert_line},	/* Meta-Control-r */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-s */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-t */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-u */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-v */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-w */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-x */
	{ISFUNC, rl_yank_nth_arg},	/* Meta-Control-y */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-z */

	{ISFUNC, rl_complete},	/* Meta-Control-[ */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-\ */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-] */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-^ */
	{ISFUNC, (Function *) 0x0},	/* Meta-Control-_ */

  /* The start of printing characters. */
	{ISFUNC, (Function *) 0x0},	/* Meta-SPACE */
	{ISFUNC, (Function *) 0x0},	/* Meta-! */
	{ISFUNC, (Function *) 0x0},	/* Meta-" */
	{ISFUNC, (Function *) 0x0},	/* Meta-# */
	{ISFUNC, (Function *) 0x0},	/* Meta-$ */
	{ISFUNC, (Function *) 0x0},	/* Meta-% */
	{ISFUNC, rl_tilde_expand},	/* Meta-& */
	{ISFUNC, (Function *) 0x0},	/* Meta-' */
	{ISFUNC, (Function *) 0x0},	/* Meta-( */
	{ISFUNC, (Function *) 0x0},	/* Meta-) */
	{ISFUNC, (Function *) 0x0},	/* Meta-* */
	{ISFUNC, (Function *) 0x0},	/* Meta-+ */
	{ISFUNC, (Function *) 0x0},	/* Meta-, */
	{ISFUNC, rl_digit_argument},	/* Meta-- */
	{ISFUNC, rl_yank_last_arg},	/* Meta-. */
	{ISFUNC, (Function *) 0x0},	/* Meta-/ */

  /* Regular digits. */
	{ISFUNC, rl_digit_argument},	/* Meta-0 */
	{ISFUNC, rl_digit_argument},	/* Meta-1 */
	{ISFUNC, rl_digit_argument},	/* Meta-2 */
	{ISFUNC, rl_digit_argument},	/* Meta-3 */
	{ISFUNC, rl_digit_argument},	/* Meta-4 */
	{ISFUNC, rl_digit_argument},	/* Meta-5 */
	{ISFUNC, rl_digit_argument},	/* Meta-6 */
	{ISFUNC, rl_digit_argument},	/* Meta-7 */
	{ISFUNC, rl_digit_argument},	/* Meta-8 */
	{ISFUNC, rl_digit_argument},	/* Meta-9 */

  /* A little more punctuation. */
	{ISFUNC, (Function *) 0x0},	/* Meta-: */
	{ISFUNC, (Function *) 0x0},	/* Meta-; */
	{ISFUNC, rl_beginning_of_history},	/* Meta-< */
	{ISFUNC, (Function *) 0x0},	/* Meta-= */
	{ISFUNC, rl_end_of_history},	/* Meta-> */
	{ISFUNC, rl_possible_completions},	/* Meta-? */
	{ISFUNC, (Function *) 0x0},	/* Meta-@ */

  /* Uppercase alphabet. */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-A */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-B */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-C */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-D */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-E */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-F */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-G */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-H */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-I */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-J */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-K */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-L */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-M */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-N */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-O */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-P */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-Q */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-R */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-S */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-T */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-U */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-V */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-W */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-X */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-Y */
	{ISFUNC, rl_do_lowercase_version},	/* Meta-Z */

  /* Some more punctuation. */
	{ISFUNC, (Function *) 0x0},	/* Meta-[ *//* was rl_arrow_keys */
	{ISFUNC, rl_delete_horizontal_space},	/* Meta-\ */
	{ISFUNC, (Function *) 0x0},	/* Meta-] */
	{ISFUNC, (Function *) 0x0},	/* Meta-^ */
	{ISFUNC, rl_yank_last_arg},	/* Meta-_ */
	{ISFUNC, (Function *) 0x0},	/* Meta-` */

  /* Lowercase alphabet. */
	{ISFUNC, (Function *) 0x0},	/* Meta-a */
	{ISFUNC, rl_backward_word},	/* Meta-b */
	{ISFUNC, rl_capitalize_word},	/* Meta-c */
	{ISFUNC, rl_kill_word},	/* Meta-d */
	{ISFUNC, (Function *) 0x0},	/* Meta-e */
	{ISFUNC, rl_forward_word},	/* Meta-f */
	{ISFUNC, (Function *) 0x0},	/* Meta-g */
	{ISFUNC, (Function *) 0x0},	/* Meta-h */
	{ISFUNC, (Function *) 0x0},	/* Meta-i */
	{ISFUNC, (Function *) 0x0},	/* Meta-j */
	{ISFUNC, (Function *) 0x0},	/* Meta-k */
	{ISFUNC, rl_downcase_word},	/* Meta-l */
	{ISFUNC, (Function *) 0x0},	/* Meta-m */
	{ISFUNC, rl_noninc_forward_search},	/* Meta-n */
	{ISFUNC, (Function *) 0x0},	/* Meta-o *//* was rl_arrow_keys */
	{ISFUNC, rl_noninc_reverse_search},	/* Meta-p */
	{ISFUNC, (Function *) 0x0},	/* Meta-q */
	{ISFUNC, rl_revert_line},	/* Meta-r */
	{ISFUNC, (Function *) 0x0},	/* Meta-s */
	{ISFUNC, rl_transpose_words},	/* Meta-t */
	{ISFUNC, rl_upcase_word},	/* Meta-u */
	{ISFUNC, (Function *) 0x0},	/* Meta-v */
	{ISFUNC, (Function *) 0x0},	/* Meta-w */
	{ISFUNC, (Function *) 0x0},	/* Meta-x */
	{ISFUNC, rl_yank_pop},	/* Meta-y */
	{ISFUNC, (Function *) 0x0},	/* Meta-z */

  /* Final punctuation. */
	{ISFUNC, (Function *) 0x0},	/* Meta-{ */
	{ISFUNC, (Function *) 0x0},	/* Meta-| */
	{ISFUNC, (Function *) 0x0},	/* Meta-} */
	{ISFUNC, rl_tilde_expand},	/* Meta-~ */
	{ISFUNC, rl_backward_kill_word},	/* Meta-rubout */

#if KEYMAP_SIZE > 128
  /* Undefined keys. */
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0}
#endif				/* KEYMAP_SIZE > 128 */
};

KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap =
{

  /* Control keys. */
	{ISFUNC, (Function *) 0x0},	/* Control-@ */
	{ISFUNC, (Function *) 0x0},	/* Control-a */
	{ISFUNC, (Function *) 0x0},	/* Control-b */
	{ISFUNC, (Function *) 0x0},	/* Control-c */
	{ISFUNC, (Function *) 0x0},	/* Control-d */
	{ISFUNC, (Function *) 0x0},	/* Control-e */
	{ISFUNC, (Function *) 0x0},	/* Control-f */
	{ISFUNC, rl_abort},	/* Control-g */
	{ISFUNC, (Function *) 0x0},	/* Control-h */
	{ISFUNC, (Function *) 0x0},	/* Control-i */
	{ISFUNC, (Function *) 0x0},	/* Control-j */
	{ISFUNC, (Function *) 0x0},	/* Control-k */
	{ISFUNC, (Function *) 0x0},	/* Control-l */
	{ISFUNC, (Function *) 0x0},	/* Control-m */
	{ISFUNC, (Function *) 0x0},	/* Control-n */
	{ISFUNC, (Function *) 0x0},	/* Control-o */
	{ISFUNC, (Function *) 0x0},	/* Control-p */
	{ISFUNC, (Function *) 0x0},	/* Control-q */
	{ISFUNC, rl_re_read_init_file},		/* Control-r */
	{ISFUNC, (Function *) 0x0},	/* Control-s */
	{ISFUNC, (Function *) 0x0},	/* Control-t */
	{ISFUNC, rl_undo_command},	/* Control-u */
	{ISFUNC, (Function *) 0x0},	/* Control-v */
	{ISFUNC, (Function *) 0x0},	/* Control-w */
	{ISFUNC, (Function *) 0x0},	/* Control-x */
	{ISFUNC, (Function *) 0x0},	/* Control-y */
	{ISFUNC, (Function *) 0x0},	/* Control-z */
	{ISFUNC, (Function *) 0x0},	/* Control-[ */
	{ISFUNC, (Function *) 0x0},	/* Control-\ */
	{ISFUNC, (Function *) 0x0},	/* Control-] */
	{ISFUNC, (Function *) 0x0},	/* Control-^ */
	{ISFUNC, (Function *) 0x0},	/* Control-_ */

  /* The start of printing characters. */
	{ISFUNC, (Function *) 0x0},	/* SPACE */
	{ISFUNC, (Function *) 0x0},	/* ! */
	{ISFUNC, (Function *) 0x0},	/* " */
	{ISFUNC, (Function *) 0x0},	/* # */
	{ISFUNC, (Function *) 0x0},	/* $ */
	{ISFUNC, (Function *) 0x0},	/* % */
	{ISFUNC, (Function *) 0x0},	/* & */
	{ISFUNC, (Function *) 0x0},	/* ' */
	{ISFUNC, rl_start_kbd_macro},	/* ( */
	{ISFUNC, rl_end_kbd_macro},	/* ) */
	{ISFUNC, (Function *) 0x0},	/* * */
	{ISFUNC, (Function *) 0x0},	/* + */
	{ISFUNC, (Function *) 0x0},	/* , */
	{ISFUNC, (Function *) 0x0},	/* - */
	{ISFUNC, (Function *) 0x0},	/* . */
	{ISFUNC, (Function *) 0x0},	/* / */

  /* Regular digits. */
	{ISFUNC, (Function *) 0x0},	/* 0 */
	{ISFUNC, (Function *) 0x0},	/* 1 */
	{ISFUNC, (Function *) 0x0},	/* 2 */
	{ISFUNC, (Function *) 0x0},	/* 3 */
	{ISFUNC, (Function *) 0x0},	/* 4 */
	{ISFUNC, (Function *) 0x0},	/* 5 */
	{ISFUNC, (Function *) 0x0},	/* 6 */
	{ISFUNC, (Function *) 0x0},	/* 7 */
	{ISFUNC, (Function *) 0x0},	/* 8 */
	{ISFUNC, (Function *) 0x0},	/* 9 */

  /* A little more punctuation. */
	{ISFUNC, (Function *) 0x0},	/* : */
	{ISFUNC, (Function *) 0x0},	/* ; */
	{ISFUNC, (Function *) 0x0},	/* < */
	{ISFUNC, (Function *) 0x0},	/* = */
	{ISFUNC, (Function *) 0x0},	/* > */
	{ISFUNC, (Function *) 0x0},	/* ? */
	{ISFUNC, (Function *) 0x0},	/* @ */

  /* Uppercase alphabet. */
	{ISFUNC, rl_do_lowercase_version},	/* A */
	{ISFUNC, rl_do_lowercase_version},	/* B */
	{ISFUNC, rl_do_lowercase_version},	/* C */
	{ISFUNC, rl_do_lowercase_version},	/* D */
	{ISFUNC, rl_do_lowercase_version},	/* E */
	{ISFUNC, rl_do_lowercase_version},	/* F */
	{ISFUNC, rl_do_lowercase_version},	/* G */
	{ISFUNC, rl_do_lowercase_version},	/* H */
	{ISFUNC, rl_do_lowercase_version},	/* I */
	{ISFUNC, rl_do_lowercase_version},	/* J */
	{ISFUNC, rl_do_lowercase_version},	/* K */
	{ISFUNC, rl_do_lowercase_version},	/* L */
	{ISFUNC, rl_do_lowercase_version},	/* M */
	{ISFUNC, rl_do_lowercase_version},	/* N */
	{ISFUNC, rl_do_lowercase_version},	/* O */
	{ISFUNC, rl_do_lowercase_version},	/* P */
	{ISFUNC, rl_do_lowercase_version},	/* Q */
	{ISFUNC, rl_do_lowercase_version},	/* R */
	{ISFUNC, rl_do_lowercase_version},	/* S */
	{ISFUNC, rl_do_lowercase_version},	/* T */
	{ISFUNC, rl_do_lowercase_version},	/* U */
	{ISFUNC, rl_do_lowercase_version},	/* V */
	{ISFUNC, rl_do_lowercase_version},	/* W */
	{ISFUNC, rl_do_lowercase_version},	/* X */
	{ISFUNC, rl_do_lowercase_version},	/* Y */
	{ISFUNC, rl_do_lowercase_version},	/* Z */

  /* Some more punctuation. */
	{ISFUNC, (Function *) 0x0},	/* [ */
	{ISFUNC, (Function *) 0x0},	/* \ */
	{ISFUNC, (Function *) 0x0},	/* ] */
	{ISFUNC, (Function *) 0x0},	/* ^ */
	{ISFUNC, (Function *) 0x0},	/* _ */
	{ISFUNC, (Function *) 0x0},	/* ` */

  /* Lowercase alphabet. */
	{ISFUNC, (Function *) 0x0},	/* a */
	{ISFUNC, (Function *) 0x0},	/* b */
	{ISFUNC, (Function *) 0x0},	/* c */
	{ISFUNC, (Function *) 0x0},	/* d */
	{ISFUNC, rl_call_last_kbd_macro},	/* e */
	{ISFUNC, (Function *) 0x0},	/* f */
	{ISFUNC, (Function *) 0x0},	/* g */
	{ISFUNC, (Function *) 0x0},	/* h */
	{ISFUNC, (Function *) 0x0},	/* i */
	{ISFUNC, (Function *) 0x0},	/* j */
	{ISFUNC, (Function *) 0x0},	/* k */
	{ISFUNC, (Function *) 0x0},	/* l */
	{ISFUNC, (Function *) 0x0},	/* m */
	{ISFUNC, (Function *) 0x0},	/* n */
	{ISFUNC, (Function *) 0x0},	/* o */
	{ISFUNC, (Function *) 0x0},	/* p */
	{ISFUNC, (Function *) 0x0},	/* q */
	{ISFUNC, (Function *) 0x0},	/* r */
	{ISFUNC, (Function *) 0x0},	/* s */
	{ISFUNC, (Function *) 0x0},	/* t */
	{ISFUNC, (Function *) 0x0},	/* u */
	{ISFUNC, (Function *) 0x0},	/* v */
	{ISFUNC, (Function *) 0x0},	/* w */
	{ISFUNC, (Function *) 0x0},	/* x */
	{ISFUNC, (Function *) 0x0},	/* y */
	{ISFUNC, (Function *) 0x0},	/* z */

  /* Final punctuation. */
	{ISFUNC, (Function *) 0x0},	/* { */
	{ISFUNC, (Function *) 0x0},	/* | */
	{ISFUNC, (Function *) 0x0},	/* } */
	{ISFUNC, (Function *) 0x0},	/* ~ */
	{ISFUNC, rl_backward_kill_line},	/* RUBOUT */

#if KEYMAP_SIZE > 128
  /* Undefined keys. */
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0},
	{ISFUNC, (Function *) 0x0}
#endif				/* KEYMAP_SIZE > 128 */
};