/* xkeycaps, Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996
 * Jamie Zawinski <jwz@netscape.com>
 *
 * Permission to use, copy, modify, distribute, and sell this software and its
 * documentation for any purpose is hereby granted without fee, provided that
 * the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation.  No representations are made about the suitability of this
 * software for any purpose.  It is provided "as is" without express or 
 * implied warranty.
 */

#ifdef _AIX
/* Prevent AIX def of XK_Reset which conflicts with the HP definition. */
# define STD_KEYSYMS
#endif

#ifndef XK_KATAKANA
/* We need the Japanese keysym names for the Xmint keyboard. */
# define XK_KATAKANA
#endif

#include <X11/keysym.h>

#include "sun2-geom.h"
#include "sun2-caps.h"
#include "sun2-codes.h"
#include "sun2-xc-map.h"

#include "sun3-geom.h"
#include "sun3-caps.h"
#include "sun3-codes.h"
#include "sun3-xc-map.h"

#include "sun4-geom.h"
#include "sun4-caps.h"
#include "sun4-codes.h"
#include "sun4-xc-map.h"
#include "sun4-ow-map.h"
#include "sun4-r6-map.h"

#include "sun4sw-geom.h"
#include "sun4sw-caps.h"
#include "sun4sw-codes.h"
#include "sun4sw-map.h"

#include "sun4de-geom.h"
#include "sun4de-caps.h"
#include "sun4de-codes.h"
#include "sun4de-map.h"

#include "sun5-geom.h"
#include "sun5-caps.h"
#include "sun5-codes.h"
#include "sun5-xc-map.h"
#include "sun5-ow-map.h"
#include "sun5-r6-map.h"

#include "sun5swfr-geom.h"
#include "sun5swfr-caps.h"
#include "sun5swfr-codes.h"
#include "sun5swfr-ow-map.h"

#include "sun5sw-geom.h"
#include "sun5sw-caps.h"
#include "sun5sw-codes.h"
#include "sun5sw-xc-map.h"
#include "sun5sw-ow-map.h"

#include "sun5de-geom.h"
#include "sun5de-caps.h"
#include "sun5de-codes.h"
#include "sun5de-map.h"

#include "sun5es-geom.h"
#include "sun5es-caps.h"
#include "sun5es-codes.h"
#include "sun5es-map.h"

#ifdef XK_kana_NU	/* just in case some losing vendors don't ship it... */
#include "sun5jp-geom.h"
#include "sun5jp-caps.h"
#include "sun5jp-codes.h"
#include "sun5jp-xc-map.h"
#endif

#include "sun5pc-caps.h"
#include "sun5pc-codes.h"
#include "sun5pc-xc-map.h"
#include "sun5pc-xc2-map.h"
#include "sun5pc-xc6-map.h"
#include "sun5pc-ow-map.h"
#include "sun5pc-owde-map.h"

#include "sun5uk-geom.h"
#include "sun5uk-caps.h"
#include "sun5uk-codes.h"
#include "sun5uk-ow-map.h"

#include "sun101a-codes.h"
#include "sun101a-xc-map.h"

#include "ncd97-geom.h"
#include "ncd97-caps.h"
#include "ncd97-codes.h"
#include "ncd97-map.h"

#include "ncd101-caps.h"
#include "ncd101-codes.h"
#include "ncd101-map.h"

#include "ncd102-caps.h"
#include "ncd102-codes.h"
#include "ncd102-map.h"

#include "ncd102f-caps.h"
#include "ncd102f-codes.h"
#include "ncd102f-map.h"

#include "ncd102n-caps.h"
#include "ncd102n-codes.h"
#include "ncd102n-map.h"

#include "ncd102sf-caps.h"
#include "ncd102sf-codes.h"
#include "ncd102sf-map.h"

#include "ncd107-caps.h"
#include "ncd107-codes.h"
#include "ncd107-map.h"

#include "ncd108-geom.h"
#include "ncd108-caps.h"
#include "ncd108-codes.h"
#include "ncd108-map.h"

#include "ncd108de-caps.h"
#include "ncd108de-map.h"

#include "ncd220-caps.h"
#include "ncd220-codes.h"
#include "ncd220-map.h"

#include "ncd123-caps.h"
#include "ncd123-codes.h"
#include "ncd123-geom.h"
#include "ncd123-map.h"

#include "ncdpc-caps.h"
#include "ncdpc-codes.h"
#include "ncdpc-map.h"

#include "pc101-geom.h"
#include "pc101-caps.h"

#include "pc102-geom.h"

#include "sgi-caps.h"
#include "sgi4-codes.h"
#include "sgi4-r4-map.h"
#include "sgi4-r5-map.h"

#include "sgi5-codes.h"
#include "sgi5-r5-map.h"

#include "sgide-caps.h"
#include "sgi5de-codes.h"
#include "sgi5de-r5-map.h"

#include "nws1250-geom.h"
#include "nws1250-caps.h"
#include "nws1250-codes.h"
#include "nws1250-map.h"

#include "nws3410-geom.h"
#include "nws3410-caps.h"
#include "nws3410-codes.h"
#include "nws3410-map.h"

#include "mac-geom.h"
#include "mac-caps.h"
#include "mac-codes.h"
#include "mac-map.h"

#include "macstd-geom.h"
#include "macstd-caps.h"
#include "macstd-codes.h"
#include "macstd-map.h"

#include "ga5k-caps.h"
#include "ga5k-codes.h"
#include "ga5k-map.h"

#include "lk201-geom.h"
#include "lk201-caps.h"
#include "lk201-codes.h"
#include "lk201-map.h"

#include "lk401-caps.h"
#include "lk401-codes.h"
#include "lk401-map.h"

#include "lk401sf-caps.h"
#include "lk401sf-map.h"
#include "lk401sfdp-map.h"

#include "lk421-geom.h"
#include "lk421-caps.h"
#include "lk421-codes.h"

#include "pcxal-codes.h"
#include "pcxal-map.h"

#include "rt-caps.h"
#include "rt-codes.h"
#include "rt-map.h"

#include "rtsw-caps.h"
#include "rtsw-codes.h"
#include "rtsw-map.h"
#include "rtsw8-map.h"

#include "rs6k-caps.h"
#include "rs6k-codes.h"
#include "rs6k-aix-map.h"
#include "rs6k-xc-map.h"

#include "rs6kde-caps.h"
#include "rs6kde-codes.h"
#include "rs6kde-aix-map.h"

#include "hpitf-geom.h"
#include "hpitf-caps.h"
#include "hpitf-codes.h"
#include "hpitf-map.h"

#include "hpitfsf-caps.h"
#include "hpitfsf-map.h"

#include "hp700rx-codes.h"
#include "hp700rx-map.h"

#include "hppc-codes.h"
#include "hppc-map.h"

#include "hppcde-codes.h"
#include "hppcde-map.h"

#include "hppcuk-codes.h"
#include "hppcuk-caps.h"
#include "hppcuk-map.h"

#include "hppcuk700rx-codes.h"
#include "hppcuk700rx-map.h"

#include "hp4032x-geom.h"
#include "hp4032x-codes.h"
#include "hp4032x-map.h"

#include "sco110-codes.h"
#include "sco110-map.h"

#include "dell-codes.h"
#include "dell-map.h"

#include "phasex110-codes.h"
#include "phasex110-map.h"
#include "phasex110b-codes.h"

#include "phasex-pxch2-codes.h"
#include "phasex-pxch2-map.h"

#include "pc101-2-geom.h"
#include "pc101-2-caps.h"
#include "linux101-2-codes.h"
#include "linux101-2-map.h"

#include "pc101-3-geom.h"
#include "pc101-3-caps.h"
#include "linux101-3-codes.h"
#include "linux101-3-map.h"

#include "pc102-caps.h"
#include "linux102-codes.h"
#include "linux102-map.h"

#include "pc102de-caps.h"
#include "linux102de-map.h"

#include "pc102es-caps.h"
#include "linux102es-map.h"

#include "pc102sf-caps.h"
#include "linux102sf-map.h"

#include "pc102uk-caps.h"
#include "linux102uk-map.h"

#include "pc102-2-geom.h"
#include "pc102-2de-caps.h"
#include "linux102-2-codes.h"
#include "linux102-2de-map.h"

#include "pc102fr-caps.h"
#include "linux102fr-map.h"

#include "uw102-codes.h"
#include "pc102no-caps.h"
#include "uw102no-map.h"

#include "pc102-3-geom.h"
#include "pc102-3uk-caps.h"
#include "linux102-3-codes.h"

#include "gw2k-geom.h"
#include "gw2k-caps.h"
#include "gw2k-codes.h"
#include "gw2k-map.h"

#include "gw2kn-geom.h"
#include "gw2kn-codes.h"
#include "gw2kn-map.h"

#include "ms104-geom.h"
#include "ms104-caps.h"
#include "ms104-linux-codes.h"
#include "ms104-linux-map.h"

#include "ms104-sgi-codes.h"

#include "ms104-sparc-codes.h"
#include "ms104-sparc-map.h"

#include "butterfly-geom.h"
#include "butterfly-codes.h"
#include "butterfly-caps.h"
#include "butterfly-map.h"
#include "butterflyde-caps.h"
#include "butterflyde-map.h"

#include "ms105-geom.h"
#include "ms105-linux-codes.h"
#include "ms105-caps.h"
#include "ms105-linux-map.h"
#include "ms105de-caps.h"
#include "ms105de-linux-map.h"

#include "kin-geom.h"
#include "kin-caps.h"
#include "kin-codes.h"

#include "tt-geom.h"
#include "tt-caps.h"
#include "tt-codes.h"
#include "tt-map.h"

#include "tek101-geom.h"
#include "tek101-caps.h"
#include "tek101-codes.h"
#include "tek101-map.h"
#include "tek101-4-map.h"

#include "tek102-geom.h"
#include "tek102-codes.h"
#include "tek102-de-caps.h"
#include "tek102-de-map.h"

#include "tek119-codes.h"
#include "tek119-map.h"

#include "tek200-geom.h"
#include "tek200-caps.h"
#include "tek200-codes.h"

#include "tek200u-da-map.h"
#include "tek200u-de-map.h"
#include "tek200u-fi-map.h"
#include "tek200u-fr-map.h"
#include "tek200u-it-map.h"
#include "tek200u-ka-map.h"
#include "tek200u-no-map.h"
#include "tek200u-sp-map.h"
#include "tek200u-sw-map.h"
#include "tek200u-swde-map.h"
#include "tek200u-uk-map.h"
#include "tek200u-us-map.h"
#include "tek200v-us-map.h"
#include "tek200xesc-us-map.h"
#include "tek200xf11-us-map.h"

#include "tek401-codes.h"
#include "tek401-map.h"
#include "tek401sf-map.h"
#include "tek401sfdp-map.h"

#include "teksun4-codes.h"
#include "teksun4-map.h"

#include "tekxn10-geom.h"
#include "tekxn10-sf-codes.h"
#include "tekxn10-sf-caps.h"
#include "tekxn10-sf-map.h"

#include "labtam-caps.h"
#include "labtam-codes.h"
#include "labtam-map.h"

#include "NeXT-geom.h"
#include "NeXT-caps.h"
#include "NeXT-codes.h"
#include "NeXT-map.h"

#include "mag3k-caps.h"
#include "mag3k-codes.h"
#include "mag3k-map.h"

#include "magat-geom.h"
#include "magat-caps.h"
#include "magat-codes.h"
#include "magat-map.h"

#include "rs2030-caps.h"
#include "rs2030-codes.h"
#include "rs2030-map.h"

#include "xoft2-codes.h"
#include "xoft1-map.h"
#include "xoft2-map.h"

#include "hclpc-geom.h"
#include "hclpc-caps.h"
#include "hclpc-codes.h"
#include "hclpc-map.h"

#ifdef XK_kana_NU	/* just in case some losing vendors don't ship it... */
#include "xmint-geom.h"
#include "xmint-caps.h"
#include "xmint-codes.h"
#include "xmint-map.h"
#endif

#include "aviion300-codes.h"
#include "aviion300-map.h"

#include "xline101-codes.h"
#include "xline101-map.h"

#include "xinside-codes.h"
#include "xinside-map.h"

#include "apollo-geom.h"
#include "apollo-caps.h"
#include "apollo-codes.h"
#include "apollo-map.h"

#include "explorer-geom.h"
#include "explorer-caps.h"
#include "explorer-codes.h"
#include "explorer-map.h"

#include "tm4000m-geom.h"
#include "tm4000m-caps.h" 
#include "tm4000m-codes.h"
#include "tm4000m-map.h" 

#undef countof
#define countof(x) (sizeof((x)) / sizeof(*(x)))

#define KBD(short_name, long_name, vendor_id, geom, caps, codes, map)	\
	{ (short_name), (long_name), (vendor_id),			\
	  (geom), (caps), (codes), (map),				\
	  countof((caps)), countof((codes)), countof((map))		\
	}

struct keyboard_instance all_kbds [] = 
{
  KBD ("Sun2", "Sun type2 (X Consortium layout)", 0,
       &sun2_geom, sun2_caps, sun2_codes, sun2_xc_map),

  KBD ("Sun3", "Sun type3 (X Consortium layout)", 0,
       &sun3_geom, sun3_caps, sun3_codes, sun3_xc_map),

  KBD ("Sun4", "Sun type4 (X Consortium R4/R5 layout)", 0,
       &sun4_geom, sun4_caps, sun4_codes, sun4_xc_map),

  KBD ("Sun4r6", "Sun type4 (X Consortium R6 layout)", 0,
       &sun4_geom, sun4_caps, sun4_codes, sun4_r6_map),

  KBD ("Sun4ow", "Sun type4 (OpenWindows layout)",
       "X11/NeWS - Sun Microsystems Inc.",
       &sun4_geom, sun4_caps, sun4_codes, sun4_ow_map),

  KBD ("Sun4SWr6", "Sun type4 (Swedish R6 layout)", 0,
       &sun4sw_geom, sun4sw_caps, sun4sw_codes, sun4sw_map),

  /* This is the same as the R6 layout, coincidentally enough... */
  KBD ("Sun4SWOW", "Sun type4 (Swedish/Finnish OpenWindows layout)", 0,
       &sun4sw_geom, sun4sw_caps, sun4sw_codes, sun4sw_map),

  KBD ("Sun4DE", "Sun type4 (German R6 layout)", 0,
       &sun4de_geom, sun4de_caps, sun4de_codes, sun4de_map),

  KBD ("Sun5", "Sun type5 (X Consortium R4/R5 layout)", 0,
       &sun5_geom, sun5_caps, sun5_codes, sun5_xc_map),

  KBD ("Sun5r6", "Sun type5 (X Consortium R6 layout)", 0,
       &sun5_geom, sun5_caps, sun5_codes, sun5_r6_map),

  KBD ("Sun5OW", "Sun type5 (OpenWindows layout)", 0,
       &sun5_geom, sun5_caps, sun5_codes, sun5_ow_map),

  KBD ("Sun5SWFROW", "Sun type5 (Swiss-French OpenWindows layout)", 0,
       &sun5swfr_geom, sun5swfr_caps, sun5swfr_codes, sun5swfr_ow_map),

  KBD ("Sun5SW", "Sun type5 (Swedish X Consortium layout + patch)", 0,
       &sun5sw_geom, sun5sw_caps, sun5sw_codes, sun5sw_xc_map),

  KBD ("Sun5SWOW", "Sun type5 (Swedish OpenWindows layout)", 0,
       &sun5sw_geom, sun5sw_caps, sun5sw_codes, sun5sw_ow_map),

#ifdef XK_kana_NU	/* just in case some losing vendors don't ship it... */
  KBD ("Sun5JA", "Sun type5 (Japanese X Consortium layout + patch)", 0,
       &sun5jp_geom, sun5jp_caps, sun5jp_codes, sun5jp_xc_map),
#endif

  KBD ("Sun5UK", "Sun type5 (United Kingdom OpenWindows layout)", 0,
       &sun5uk_geom, sun5uk_caps, sun5uk_codes, sun5uk_ow_map),
 
  KBD ("Sun5DE", "Sun type5 (German OpenWindows layout)", 0,
       &sun5de_geom, sun5de_caps, sun5de_codes, sun5de_ow_map),

  KBD ("Sun5ESOW", "Sun type5 (Spanish OpenWindows layout)", 0,
       &sun5es_geom, sun5es_caps, sun5es_codes, sun5es_ow_map),

  KBD ("Sun5PCr6", "Sun type5/PC (X Consortium R6 layout)", 0,
       &sun5pc_geom, sun5pc_caps, sun5pc_codes, sun5pc_xc6_map),

  KBD ("Sun5PCr4", "Sun type5/PC (X Consortium R4/R5 layout)", 0,
       &sun5pc_geom, sun5pc_caps, sun5pc_codes, sun5pc_xc_map),

  KBD ("Sun5PCr4p", "Sun type5/PC (X Consortium R4/R5 layout + patch)", 0,
       &sun5pc_geom, sun5pc_caps, sun5pc_codes, sun5pc_xc_patched_map),

  KBD ("Sun5PCOW", "Sun type5/PC (OpenWindows layout)", 0,
       &sun5pc_geom, sun5pc_caps, sun5pc_codes, sun5pc_ow_map),

  KBD ("Sun5PCDEOW", "Sun type5/PC (German OpenWindows layout)", 0,
       &sun5pc_geom, sun5pc_caps, sun5pc_codes, sun5pc_owde_map),

  KBD ("Sun101A", "Sun 101A (X Consortium layout)", 0,
       &pc101_geom, pc101_caps, sun101a_codes, sun101a_xc_map),

  KBD ("NCD97", "Network Computing Devices N97",
       "DECWINDOWS (Compatibility String) Network Computing Devices Inc.",
       &ncd97_geom, ncd97_caps, ncd97_codes, ncd97_map),

  KBD ("NCD101", "Network Computing Devices N101",
       "Network Computing Devices Inc.",
       &pc101_geom, ncd101_caps, ncd101_codes, ncd101_map),

  KBD ("NCD102", "Network Computing Devices N102 (US layout)", 0,
       &pc102_geom, ncd102_caps, ncd102_codes, ncd102_map),

  KBD ("NCD102F", "Network Computing Devices N102 (French layout)", 0,
       &pc102_geom, ncd102f_caps, ncd102f_codes, ncd102f_map),

  KBD ("NCD102N", "Network Computing Devices N102 (Norwegian layout)", 0,
       &pc102_geom, ncd102n_caps, ncd102n_codes, ncd102n_map),

  KBD ("NCD102SF","Network Computing Devices N102 (Swedish/Finnish layout)", 0,
       &pc102_geom, ncd102sf_caps, ncd102sf_codes, ncd102sf_map),

  KBD ("NCD107", "Network Computing Devices N107 (US layout)", 0,
       &sun4_geom, ncd107_caps, ncd107_codes, ncd107_map),

  KBD ("NCD108", "Network Computing Devices N108 (US layout)", 0,
       &ncd108_geom, ncd108_caps, ncd108_codes, ncd108_map),

  KBD ("NCD108DE", "Network Computing Devices N108 (German layout)", 0,
       &ncd108_geom, ncd108de_caps, ncd108_codes, ncd108de_map),

  KBD ("NCD220", "Network Computing Devices vt220", 0,
       &ncd220_geom, ncd220_caps, ncd220_codes, ncd220_map),

  KBD ("NCD123UX", "Network Computing Devices 123UX", 0,
       &ncd123_geom, ncd123_caps, ncd123_codes, ncd123_map),

  KBD ("NCDPC", "Network Computing Devices PC-Xview",
       "PC-Xview for Windows, by Network Computing Devices, Inc.",
       &tek101_geom, ncdpc_caps, ncdpc_codes, ncdpc_map),

  KBD ("SGIR4", "Silicon Graphics (X11R4 / IRIX 4.0 layout)", 0,
       &pc101_geom, sgi_caps, sgi4_codes, sgi4_r4_map),

  KBD ("SGI4R5", "Silicon Graphics (X11R5 / IRIX 4.0 layout)", 0,
       &pc101_geom, sgi_caps, sgi4_codes, sgi4_r5_map),

  KBD ("SGI", "Silicon Graphics (X11R5 / IRIX 5.2 layout)", "Silicon Graphics",
       &pc101_geom, sgi_caps, sgi5_codes, sgi5_r5_map),

  KBD ("SGIDE", "Silicon Graphics (X11R5 / IRIX 5.2 German layout)", 0,
       &pc102_geom, sgide_caps, sgi5de_codes, sgi5de_r5_map),

  KBD ("NWS1250", "Sony Net Work Station 1250", 0,
       &nws1250_geom, nws1250_caps, nws1250_codes, nws1250_map),

  KBD ("NWS3410", "Sony Net Work Station 3410", "Sony Corporation",
       &nws3410_geom, nws3410_caps, nws3410_codes, nws3410_map),

  KBD ("Mac", "Apple Extended II", "MacX",
       &mac_geom, mac_caps, mac_codes, mac_map),

  KBD ("MacADB", "Apple Standard ADB", 0,
       &macstd_geom, macstd_caps, macstd_codes, macstd_map),

  KBD ("GA5k", "Concurrent Computer Corp GA5000", "CONCURRENT-ga5000",
       &pc101_geom, ga5k_caps, ga5k_codes, ga5k_map),

  KBD ("LK201", "Digital Equipment Corporation LK201",
       "Digital Equipment Corporation",
       &lk201_geom, lk201_caps, lk201_codes, lk201_map),

  KBD ("LK401", "Digital Equipment Corporation LK401 (US Layout)",
       "DECWINDOWS Digital",
       &lk401_geom, lk401_caps, lk401_codes, lk401_map),

  KBD ("LK401SF",
     "Digital Equipment Corporation LK401 (Swedish TTY Layout)",
       0,
       &lk401_geom, lk401sf_caps, lk401_codes, lk401sf_map),

  KBD ("LK401SFDP",
 "Digital Equipment Corporation LK401 (Swedish DP Layout)",
       0,
       &lk401_geom, lk401sf_caps, lk401_codes, lk401sfdp_map),

  KBD ("LK421", "Digital Equipment Corporation LK421", 0,
       &lk421_geom, lk421_caps, lk421_codes, lk401_map),

  KBD ("PCXAL", "Digital Equipment Corporation PCXAL", 0,
       &pc101_geom, pc101_caps, pcxal_codes, pcxal_map),

  KBD ("RT", "IBM PC/RT", 0,
       &pc101_geom, rt_caps, rt_codes, rt_map),

  KBD ("RTSW", "IBM PC/RT 102 (Swedish 7-bit layout)", 0,
       &pc102_geom, rtsw_caps, rtsw_codes, rtsw_map),

  KBD ("RTSW8", "IBM PC/RT 102 (Swedish 8-bit layout)", 0,
       &pc102_geom, rtsw_caps, rtsw_codes, rtsw8_map),

  KBD ("RS6k", "IBM RS/6000 (AIXWindows R4 layout)",
       "International Business Machines",
       &pc101_geom, rs6k_caps, rs6k_codes, rs6k_aix_map),

  KBD ("RS6kDE", "IBM RS/6000 (AIXWindows German R4 layout)", 0,
       &pc102_geom, rs6kde_caps, rs6kde_codes, rs6kde_aix_map),

  KBD ("RS6k-XC", "IBM RS/6000 (X Consortium R5 layout)", 0,
       &pc101_geom, rs6k_caps, rs6k_codes, rs6k_xc_map),

  KBD ("HP-ITF", "Hewlett-Packard 300/400/700 Series",
       "Hewlett-Packard Company",
       &hpitf_geom, hpitf_caps, hpitf_codes, hpitf_map),

  KBD ("HP-ITFSF", "Hewlett-Packard 300/400/700 Series (Swedish/Finnish)", 0,
       &hpitf_geom, hpitfsf_caps, hpitf_codes, hpitfsf_map),

  KBD ("HP4032X", "Hewlett Packard Aptrex X Terminal (USASCII)", 0,
       &hp4032x_geom, sun5pc_caps, hp4032x_codes, hp4032x_map),

  KBD ("HP700RX", "Hewlett Packard 700/RX X Terminal (US 101-key layout)", 0,
       &pc101_geom, pc101_caps, hp700rx_codes, hp700rx_map),

  KBD ("HP700RXUK", "Hewlett Packard 700/RX X Terminal (UK 102-key layout)", 0,
       &pc102_geom, hppcuk_caps, hppcuk700rx_codes, hppcuk700rx_map),


  KBD ("HPPC",    "PC 101 key keyboard #1 (Hewlett-Packard PC US layout)", 0,
       &pc101_geom, pc101_caps, hppc_codes, hppc_map),

  KBD ("SCO110",  "PC 101 key keyboard #1 (Santa Cruz Operation US layout)",
       "The Santa Cruz Operation",
       &pc101_geom, pc101_caps, sco110_codes, sco110_map),

  KBD ("DELL",    "PC 101 key keyboard #1 (DELL PC US layout)", 0,
       &pc101_geom, pc101_caps, dell_codes, dell_map),

  /* The order of IBM130 and AGE101 is important because of their
     vendor ID strings - see comments in "xoft*.h" to understand... */
  KBD ("IBM130",  "PC 101 key keyboard #1 (AGE XoftWare, XStation 130 layout)",
       "AGE Logic, Inc. Release",
       &pc101_geom, rs6k_caps, rs6k_codes, xoft1_map),

  KBD ("AGE101",  "PC 101 key keyboard #1 (AGE XoftWare, 2.0 PC layout)",
       "AGE Logic, Inc.",
       &pc101_geom, pc101_caps, xoft2_codes, xoft2_map),

  KBD ("HCLPC",   "PC 101 key keyboard #1 (Hummingbird eXceed US layout)",
       "Hummingbird Communications Ltd.",
       &hclpc_geom, hclpc_caps, hclpc_codes, hclpc_map),


  KBD ("XLINE101",  "PC 101 key keyboard #1 (Pericom X-Line US layout)", 0,
       &pc101_geom, pc101_caps, xline101_codes, xline101_map),

  KBD ("XACC101",  "PC 101 key keyboard #1 (Linux/Xaccel US layout)",
       "X Inside Inc.",
       &pc101_geom, pc101_caps, xinside_codes, xinside_map),


  KBD ("L101",    "PC 101 key keyboard #2 (Linux/XFree86 US layout)",
       "The XFree86 Project, Inc",
       &pc101_2_geom, pc101_2_caps, linux101_2_codes, linux101_2_map),


  KBD ("L101-3",    "PC 101 key keyboard #3 (Linux/XFree86 US layout)", 0,
       &pc101_3_geom, pc101_3_caps, linux101_3_codes, linux101_3_map),


  KBD ("L102",    "PC 102 key keyboard #1 (Linux/XFree86 US layout)", 0,
       &pc102_geom, pc102_caps,   linux102_codes, linux102_map),

  KBD ("L102DE",  "PC 102 key keyboard #1 (Linux/XFree86 German layout)", 0,
       &pc102_geom, pc102de_caps, linux102_codes, linux102de_map),

 KBD ("L102ES",   "PC 102 key keyboard #1 (Linux/XFree86 Spanish layout)", 0,
      &pc102_geom, pc102es_caps, linux102_codes, linux102es_map),
 
  KBD ("L102SF",
       "PC 102 key keyboard #1 (Linux/XFree86 Swedish/Finnish layout)", 0,
       &pc102_geom, pc102sf_caps, linux102_codes, linux102sf_map),

  KBD ("L102FR",  "PC 102 key keyboard #1 (Linux/XFree86 French layout)", 0,
       &pc102_geom, pc102fr_caps, linux102_codes, linux102fr_map),

  KBD ("L102UK",  "PC 102 key keyboard #1 (Linux/XFree86 UK layout)", 0,
       &pc102_geom, pc102uk_caps, linux102_codes, linux102uk_map),

  KBD ("UW102NO", "PC 102 key keyboard #1 (SCO UnixWare 2 Norwegian layout)",
       0, &pc102_geom, pc102no_caps, uw102_codes, uw102no_map),

  KBD ("HPPCUK", "PC 102 key keyboard #1 (Hewlett-Packard PC UK layout)", 0,
       &pc102_geom, hppcuk_caps, hppcuk_codes, hppcuk_map),

  KBD ("HPPCDE", "PC 102 key keyboard #1 (Hewlett-Packard PC German layout)",0,
       &pc102_geom, pc102de_caps, hppc_de_codes, hppc_de_map),


  KBD ("L102DE2", "PC 102 key keyboard #2 (Linux/XFree86 German layout)", 0,
       &pc102_2_geom, pc102_2de_caps, linux102_2_codes, linux102_2de_map),

  KBD ("L102-3UK",  "PC 102 key keyboard #3 (Linux/XFree86 UK layout)", 0,
       &pc102_3_geom, pc102_3uk_caps, linux102_3_codes, linux102uk_map),


  KBD ("GW2K", "Gateway 2000 AnyKey Keyboard (Linux/XFree86 layout)", 0,
       &gw2k_geom, gw2k_caps, gw2k_codes, gw2k_map),

  KBD ("MS104", "MS `Natural' Keyboard 104 (Linux/XFree86 US layout)", 0,
       &ms104_geom, ms104_caps, ms104_linux_codes, ms104_linux_map),

  KBD ("MS104SGI", "MS `Natural' Keyboard 104 (IRIX 5.2 layout)", 0,
       &ms104_geom, ms104_caps, ms104_sgi5_codes, sgi5_r5_map),

  /* Sun Interface Converted box, part # 370-2068-01 lets you connect one PC
     standard PS/2 style keyboard, one PS/2 style mouse, and one Sun style
     keyboard into your SparcStation. */
  KBD ("MS104SPARC", "MS `Natural' Keyboard 104 (SparcStation via SIC)", 0,
       &ms104_geom, ms104_caps, ms104_sparc_codes, ms104_sparc_map),
  
  KBD ("GW2KN",
       "MS `Natural' Keyboard 104 (Gateway 2000 PC, Linux/XFree86 layout)", 0,
       &gw2kn_geom, ms104_caps, gw2kn_codes, gw2kn_map),


  KBD ("MS105", "MS `Natural' Keyboard 105 (Linux/XFree86 US layout)", 0,
       &ms105_geom, ms105_caps, ms105_linux_codes, ms105_linux_map),

  KBD ("MS105DE", "MS `Natural' Keyboard 105 (Linux/XFree86 German layout)", 0,
       &ms105_geom, ms105de_caps, ms105_linux_codes, ms105de_linux_map),


  KBD ("BFLY", "Soft Key Butterfly Keyboard (US layout)", 0,
       &butterfly_geom, butterfly_caps, butterfly_codes, butterfly_map),

  KBD ("BFLYDE", "Soft Key Butterfly Keyboard (German layout)", 0,
       &butterfly_geom, butterflyde_caps, butterfly_codes, butterflyde_map),


  KBD ("KINESIS", "Kinesis 120 Ergonomic Keyboard (Linux/XFree86 layout)", 0,
       &kinesis_geom, kinesis_caps, kinesis_codes, linux101_2_map),


  KBD ("TT", "Atari TT", 0,
       &tt_geom, tt_caps, tt_codes, tt_map),

  KBD ("TEK101", "Tektronix XP20 101-Key (US X11R5 layout)",
       "Tektronix, Inc.",
       &tek101_geom, tek101_caps, tek101_codes, tek101_map),

  KBD ("TEK101-4", "Tektronix XP20 101-Key (US X11R4 layout)", 0,
      &tek101_geom, tek101_caps, tek101_codes, tek101_4_map),

  KBD ("TEK102", "Tektronix X358 102-Key (German layout)", 0,
       &tek102_geom, tek102_de_caps, tek102_codes, tek102_de_map),

  KBD ("TEK119", "Tektronix XP119 Sun 5/PC", 0,
       &sun5pc_geom, sun5pc_caps, tek119_codes, tek119_map),

  KBD ("TEK200US", "Tektronix VT200 (US Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_us_map),

  KBD ("TEK200DA", "Tektronix VT200 (Danish Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_da_map),

  KBD ("TEK200DE", "Tektronix VT200 (German Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_de_map),

  KBD ("TEK200FI", "Tektronix VT200 (Finnish Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_fi_map),

  KBD ("TEK200FR", "Tektronix VT200 (French Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_fr_map),

  KBD ("TEK200IT", "Tektronix VT200 (Italian Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_it_map),

  KBD ("TEK200KA", "Tektronix VT200 (Katakana Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_ka_map),

  KBD ("TEK200NO", "Tektronix VT200 (Norwegian Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_no_map),

  KBD ("TEK200SP", "Tektronix VT200 (Spanish Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_sp_map),

  KBD ("TEK200SW", "Tektronix VT200 (Swedish Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_sw_map),

  KBD ("TEK200SWDE", "Tektronix VT200 (Swiss-German Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_swde_map),

  KBD ("TEK200UK", "Tektronix VT200 (UK Ultrix layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200u_uk_map),

  KBD ("TEK200VMS", "Tektronix VT200 (US VMS layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200v_us_map),

  KBD ("TEK200ESC", "Tektronix VT200 (US ESC layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200xesc_us_map),

  KBD ("TEK200F11", "Tektronix VT200 (US F11 layout)", 0,
       &tek200_geom, tek200_caps, tek200_codes, tek200xf11_us_map),

  KBD ("TEK401US", "Tektronix LK401 (US Layout)", 0,
       &lk401_geom, lk401_caps, tek401_codes, tek401_map),

  KBD ("TEK401SF", "Tektronix LK401 (Swedish Typewriter Layout)", 0,
       &lk401_geom, lk401sf_caps, tek401_codes, tek401sf_map),

  KBD ("TEK401SFDP", "Tektronix LK401 (Swedish Dataprocessing Layout)", 0,
       &lk401_geom, lk401sf_caps, tek401_codes, tek401sfdp_map),

  KBD ("TEKsun4", "Tektronix Sun Type4", 0,
       &sun4_geom, sun4_caps, teksun4_codes, teksun4_map),

  KBD ("TEKXN11", "Tektronix XN11 X Terminal (Swedish/Finnish layout)", 0,
       &tekxn10_geom, tekxn10_sf_caps, tekxn10_sf_codes, tekxn10_sf_map),

  KBD ("PhaseX101", "PhaseX (101 Key PC Style Keyboard)",
       "Samsung Electronics Co., Ltd.",
       &pc101_geom, pc101_caps, phasex110_codes, phasex110_map),

  KBD ("PhaseX101b", "PhaseX (101 Key PC Style Keyboard #2)",
       0,
       &pc101_2_geom, pc101_2_caps, phasex110b_codes, phasex110_map),

  KBD ("PhaseXPXCH2", "PhaseX PXCH2 (Wyse 102 Key Keyboard)",
       "Phase X Systems Inc.",
       &pc101_geom, pc101_caps, phasex_pxch2_codes, phasex_pxch2_map),

  KBD ("Labtam", "Labtam X Terminal MT200", "Labtam Australia Pty Ltd",
       &tek101_geom, labtam_caps, labtam_codes, labtam_map),

  KBD ("NeXT", "NeXTstation non-ADB", "Pencom",
       &NeXT_geom, NeXT_caps, NeXT_codes, NeXT_map),

  KBD ("MAG3k", "MIPS Magnum 3000", "MIPS Computer Systems, Inc.",
       &ncd97_geom, mag3k_caps, mag3k_codes, mag3k_map),

  KBD ("MAG-AT", "MIPS Magnum AT (US layout)", 0,
       &magat_geom, magat_caps, magat_codes, magat_map),

  KBD ("RS2030", "MIPS RS-2030", 0,
       &pc101_geom, rs2030_caps, rs2030_codes, rs2030_map),

  KBD ("AViiON", "AViiON 300 (PC layout)", 0,
       &pc101_geom, pc101_caps, aviion300_codes, aviion300_map),

#ifdef XK_kana_NU	/* just in case some losing vendors don't ship it... */
  KBD ("XMINT", "Takaoka Xmint X Terminal",
       "TAKAOKA Electric Manufacturing Co., Ltd.",
       &xmint_geom, xmint_caps, xmint_codes, xmint_map),
#endif

  KBD ("Apollo", "HP Apollo", "Apollo Computer Inc",
       &apollo_geom, apollo_caps, apollo_codes, apollo_map),

  KBD ("TM4000M", "Texas Instruments TravelMate 4000M", 
       0, &tm4000m_geom, tm4000m_caps, tm4000m_codes, tm4000m_map),

  KBD ("Explorer", "Texas Instruments Explorer", "Texas Instruments Explorer",
       &explorer_geom, explorer_caps, explorer_codes, explorer_map),

#undef KBD
  { 0 }
};
