Source to bsd/dev/i386/PCKeymap.c


Enter a symbol's name here to quickly find it.

/*
 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
 *
 * @[email protected]
 * 
 * "Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
 * Reserved.  This file contains Original Code and/or Modifications of
 * Original Code as defined in and that are subject to the Apple Public
 * Source License Version 1.0 (the 'License').  You may not use this file
 * except in compliance with the License.  Please obtain a copy of the
 * License at http://www.apple.com/publicsource and read it before using
 * this file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
 * License for the specific language governing rights and limitations
 * under the License."
 * 
 * @[email protected]
 */

/* Copyright (c) 1992 NeXT Computer, Inc.  All rights reserverd
 *
 * PCKeymap.c - Declaration of the PC's default keymap string
 *
 * HISTORY
 * 07 Dec 1992	Joe Pasqua
 *	Created  true PC version.
 */

// NOTE:
// The following keys are multi-byte sequences on the PC keyboard. They get
// mapped into a single scan code for our purposes. Here is the mapping:
//	PC Key		PC Code		NeXT Code
//	Right-Ctrl	E0-1D		0x60
//	Right-Alt	E0-38		0x61
//	Keypad-Enter	E0-1C		0x62
//	Keypad-/	E0-35		0x63
//	Up-Arrow	E0-48		0x64
//	Down-Arrow	E0-50		0x65
//	Left-Arrow	E0-4B		0x66
//	Right-Arrow	E0-4D		0x67
//	Insert		E0-52		0x68
//	Delete		E0-53		0x69
//	Page Up		E0-49		0x6A
//	Page Down	E0-51		0x6B
//	Home		E0-47		0x6C
//	End		E0-4F		0x6D

#import	<bsd/dev/event.h>
#import	<bsd/dev/ev_keymap.h>

#define	CTRL(c)	((c)&037)

//
// NOTE:	Because there is no Command key on the PC keyboard, we are
//		splitting the ALT keys up. We'll use Left-Alt as Command, and
//		Right-Alt as ALT.
//
static const unsigned char PCDefaultKeymap[] = {
0x00, 0x00,     /* char file format */
6,              /* Modifier key definitions */
        0x01, 0x02,     0x2A, 0x36,     /* Shift, 2 keys */
        0x02, 0x02,     0x1D, 0x60,	/* Ctrl, 2 keys */
        0x03, 0x01,     0x61,		/* Alt, 1 key */
        0x04, 0x01,     0x38,		/* Cmd, 1 key */
        0x05, 0x15,     0x52, 0x53, 0x62, 0x4F, 0x50, 0x51, 0x4B, 0x4C, 0x4D,
                        0x4E, 0x47, 0x48, 0x49, 0x45, 0x63, 0x37, 0x4A,
                        0x64, 0x65, 0x66, 0x67,   /* NumPad, 21 key(s) */
	0x06, 0x01,	0x3B,	/* The help key	*/
104,             /* Key Definitions */
        0xff,   /* Key 0x00 unassigned */
        /* Key 0x01 modifier key mask bits (0x02) */
        (1<<NX_MODIFIERKEY_SHIFT),
                NX_ASCIISET,    CTRL('['),      /* no flags */
                NX_ASCIISET,         '~',       /* Shift */
        /* Key 0x02 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '1',       /* no flags */
                NX_ASCIISET,         '!',       /* Shift */
                NX_SYMBOLSET,       0xad,       /* Alt */
                NX_ASCIISET,        0xa1,       /* Shift Alt */
        /* Key 0x03 modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '2',       /* no flags */
                NX_ASCIISET,         '@',       /* Shift */
                NX_ASCIISET,    CTRL('@'),      /* Ctrl */
                NX_ASCIISET,    CTRL('@'),      /* Shift Ctrl */
                NX_ASCIISET,        0xb2,       /* Alt */
                NX_ASCIISET,        0xb3,       /* Shift Alt */
                NX_ASCIISET,    CTRL('@'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('@'),      /* Shift Ctrl Alt */
        /* Key 0x04 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '3',       /* no flags */
                NX_ASCIISET,         '#',       /* Shift */
                NX_ASCIISET,        0xa3,       /* Alt */
                NX_SYMBOLSET,       0xba,       /* Shift Alt */
        /* Key 0x05 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '4',       /* no flags */
                NX_ASCIISET,         '$',       /* Shift */
                NX_ASCIISET,        0xa2,       /* Alt */
                NX_ASCIISET,        0xa8,       /* Shift Alt */
        /* Key 0x06 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '5',       /* no flags */
                NX_ASCIISET,         '%',       /* Shift */
                NX_SYMBOLSET,       0xa5,       /* Alt */
                NX_ASCIISET,        0xbd,       /* Shift Alt */
        /* Key 0x07 modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '6',       /* no flags */
                NX_ASCIISET,         '^',       /* Shift */
                NX_ASCIISET,    CTRL('^'),      /* Ctrl */
                NX_ASCIISET,    CTRL('^'),      /* Shift Ctrl */
                NX_ASCIISET,        0xb6,       /* Alt */
                NX_ASCIISET,        0xc3,       /* Shift Alt */
                NX_ASCIISET,    CTRL('^'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('^'),      /* Shift Ctrl Alt */
        /* Key 0x08 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '7',       /* no flags */
                NX_ASCIISET,         '&',       /* Shift */
                NX_ASCIISET,        0xb7,       /* Alt */
                NX_SYMBOLSET,       0xab,       /* Shift Alt */
        /* Key 0x09 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '8',       /* no flags */
                NX_ASCIISET,         '*',       /* Shift */
                NX_SYMBOLSET,       0xb0,       /* Alt */
                NX_ASCIISET,        0xb4,       /* Shift Alt */
        /* Key 0x0A modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '9',       /* no flags */
                NX_ASCIISET,         '(',       /* Shift */
                NX_ASCIISET,        0xac,       /* Alt */
                NX_ASCIISET,        0xab,       /* Shift Alt */
        /* Key 0x0B modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '0',       /* no flags */
                NX_ASCIISET,         ')',       /* Shift */
                NX_ASCIISET,        0xad,       /* Alt */
                NX_ASCIISET,        0xbb,       /* Shift Alt */
        /* Key 0x0C modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '-',       /* no flags */
                NX_ASCIISET,         '_',       /* Shift */
                NX_ASCIISET,    CTRL('_'),      /* Ctrl */
                NX_ASCIISET,    CTRL('_'),      /* Shift Ctrl */
                NX_ASCIISET,        0xb1,       /* Alt */
                NX_ASCIISET,        0xd0,       /* Shift Alt */
                NX_ASCIISET,    CTRL('_'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('_'),      /* Shift Ctrl Alt */
        /* Key 0x0D modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '=',       /* no flags */
                NX_ASCIISET,         '+',       /* Shift */
                NX_SYMBOLSET,       0xb9,       /* Alt */
                NX_SYMBOLSET,       0xb1,       /* Shift Alt */
        /* Key 0x0E modifier key mask bits (0x02) */
        (1<<NX_MODIFIERKEY_SHIFT),
                NX_ASCIISET,        0x7f,       /* no flags */
                NX_ASCIISET,        '\b',       /* Shift */
        /* Key 0x0f modifier key mask bits (0x02) */
        (1<<NX_MODIFIERKEY_SHIFT),
                NX_ASCIISET,        '\t',       /* no flags */
                NX_ASCIISET,    CTRL('Y'),      /* Shift */
        /* Key 0x10 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'q',       /* no flags */
                NX_ASCIISET,         'Q',       /* AlphaShift */
                NX_ASCIISET,    CTRL('Q'),      /* Ctrl */
                NX_ASCIISET,    CTRL('Q'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xfa,       /* Alt */
                NX_ASCIISET,        0xea,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('Q'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('Q'),      /* AlphaShift Ctrl Alt */
        /* Key 0x11 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'w',       /* no flags */
                NX_ASCIISET,         'W',       /* AlphaShift */
                NX_ASCIISET,    CTRL('W'),      /* Ctrl */
                NX_ASCIISET,    CTRL('W'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xc8,       /* Alt */
                NX_SYMBOLSET,       0xc7,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('W'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('W'),      /* AlphaShift Ctrl Alt */
        /* Key 0x12 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'e',       /* no flags */
                NX_ASCIISET,         'E',       /* AlphaShift */
                NX_ASCIISET,    CTRL('E'),      /* Ctrl */
                NX_ASCIISET,    CTRL('E'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xc2,       /* Alt */
                NX_ASCIISET,        0xc5,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('E'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('E'),      /* AlphaShift Ctrl Alt */
        /* Key 0x13 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'r',       /* no flags */
                NX_ASCIISET,         'R',       /* AlphaShift */
                NX_ASCIISET,    CTRL('R'),      /* Ctrl */
                NX_ASCIISET,    CTRL('R'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xe2,       /* Alt */
                NX_SYMBOLSET,       0xd2,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('R'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('R'),      /* AlphaShift Ctrl Alt */
        /* Key 0x14 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         't',       /* no flags */
                NX_ASCIISET,         'T',       /* AlphaShift */
                NX_ASCIISET,    CTRL('T'),      /* Ctrl */
                NX_ASCIISET,    CTRL('T'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xe4,       /* Alt */
                NX_SYMBOLSET,       0xd4,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('T'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('T'),      /* AlphaShift Ctrl Alt */
        /* Key 0x15 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'y',       /* no flags */
                NX_ASCIISET,         'Y',       /* AlphaShift */
                NX_ASCIISET,    CTRL('Y'),      /* Ctrl */
                NX_ASCIISET,    CTRL('Y'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xa5,       /* Alt */
                NX_SYMBOLSET,       0xdb,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('Y'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('Y'),      /* AlphaShift Ctrl Alt */
        /* Key 0x16 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'u',       /* no flags */
                NX_ASCIISET,         'U',       /* AlphaShift */
                NX_ASCIISET,    CTRL('U'),      /* Ctrl */
                NX_ASCIISET,    CTRL('U'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xc8,       /* Alt */
                NX_ASCIISET,        0xcd,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('U'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('U'),      /* AlphaShift Ctrl Alt */
        /* Key 0x17 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'i',       /* no flags */
                NX_ASCIISET,         'I',       /* AlphaShift */
                NX_ASCIISET,        '\t',       /* Ctrl */
                NX_ASCIISET,        '\t',       /* AlphaShift Ctrl */
                NX_ASCIISET,        0xc1,       /* Alt */
                NX_ASCIISET,        0xf5,       /* AlphaShift Alt */
                NX_ASCIISET,        '\t',       /* Ctrl Alt */
                NX_ASCIISET,        '\t',       /* AlphaShift Ctrl Alt */
        /* Key 0x18 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'o',       /* no flags */
                NX_ASCIISET,         'O',       /* AlphaShift */
                NX_ASCIISET,    CTRL('O'),      /* Ctrl */
                NX_ASCIISET,    CTRL('O'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xf9,       /* Alt */
                NX_ASCIISET,        0xe9,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('O'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('O'),      /* AlphaShift Ctrl Alt */
        /* Key 0x19 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'p',       /* no flags */
                NX_ASCIISET,         'P',       /* AlphaShift */
                NX_ASCIISET,    CTRL('P'),      /* Ctrl */
                NX_ASCIISET,    CTRL('P'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0x70,       /* Alt */
                NX_SYMBOLSET,       0x50,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('P'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('P'),      /* AlphaShift Ctrl Alt */
        /* Key 0x1A modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '[',       /* no flags */
                NX_ASCIISET,         '{',       /* Shift */
                NX_ASCIISET,    CTRL('['),      /* Ctrl */
                NX_ASCIISET,    CTRL('['),      /* Shift Ctrl */
                NX_ASCIISET,         '`',       /* Alt */
                NX_ASCIISET,        0xaa,       /* Shift Alt */
                NX_ASCIISET,    CTRL('['),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('['),      /* Shift Ctrl Alt */
        /* Key 0x1B modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         ']',       /* no flags */
                NX_ASCIISET,         '}',       /* Shift */
                NX_ASCIISET,    CTRL(']'),      /* Ctrl */
                NX_ASCIISET,    CTRL(']'),      /* Shift Ctrl */
                NX_ASCIISET,        '\'',       /* Alt */
                NX_ASCIISET,        0xba,       /* Shift Alt */
                NX_ASCIISET,    CTRL(']'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL(']'),      /* Shift Ctrl Alt */
        /* Key 0x1C modifier key mask bits (0x10) */
        (1<<NX_MODIFIERKEY_COMMAND),
                NX_ASCIISET,        '\r',       /* no flags */
                NX_ASCIISET,    CTRL('C'),      /* Cmd */
        0xff,   /* Key 0x1D unassigned - Left Control */
        /* Key 0x1E modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'a',       /* no flags */
                NX_ASCIISET,         'A',       /* AlphaShift */
                NX_ASCIISET,    CTRL('A'),      /* Ctrl */
                NX_ASCIISET,    CTRL('A'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xca,       /* Alt */
                NX_ASCIISET,        0xc7,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('A'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('A'),      /* AlphaShift Ctrl Alt */
        /* Key 0x1F modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         's',       /* no flags */
                NX_ASCIISET,         'S',       /* AlphaShift */
                NX_ASCIISET,    CTRL('S'),      /* Ctrl */
                NX_ASCIISET,    CTRL('S'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xfb,       /* Alt */
                NX_ASCIISET,        0xa7,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('S'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('S'),      /* AlphaShift Ctrl Alt */
        /* Key 0x20 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'd',       /* no flags */
                NX_ASCIISET,         'D',       /* AlphaShift */
                NX_ASCIISET,    CTRL('D'),      /* Ctrl */
                NX_ASCIISET,    CTRL('D'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0x44,       /* Alt */
                NX_SYMBOLSET,       0xb6,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('D'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('D'),      /* AlphaShift Ctrl Alt */
        /* Key 0x21 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'f',       /* no flags */
                NX_ASCIISET,         'F',       /* AlphaShift */
                NX_ASCIISET,    CTRL('F'),      /* Ctrl */
                NX_ASCIISET,    CTRL('F'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xa6,       /* Alt */
                NX_SYMBOLSET,       0xac,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('F'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('F'),      /* AlphaShift Ctrl Alt */
        /* Key 0x22 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'g',       /* no flags */
                NX_ASCIISET,         'G',       /* AlphaShift */
                NX_ASCIISET,    CTRL('G'),      /* Ctrl */
                NX_ASCIISET,    CTRL('G'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xf1,       /* Alt */
                NX_ASCIISET,        0xe1,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('G'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('G'),      /* AlphaShift Ctrl Alt */
        /* Key 0x23 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'h',       /* no flags */
                NX_ASCIISET,         'H',       /* AlphaShift */
                NX_ASCIISET,        '\b',       /* Ctrl */
                NX_ASCIISET,        '\b',       /* AlphaShift Ctrl */
                NX_ASCIISET,        0xe3,       /* Alt */
                NX_ASCIISET,        0xeb,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('@'),      /* Ctrl Alt */
                0x18,   CTRL('@'),      /* AlphaShift Ctrl Alt */
        /* Key 0x24 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'j',       /* no flags */
                NX_ASCIISET,         'J',       /* AlphaShift */
                NX_ASCIISET,        '\n',       /* Ctrl */
                NX_ASCIISET,        '\n',       /* AlphaShift Ctrl */
                NX_ASCIISET,        0xc6,       /* Alt */
                NX_ASCIISET,        0xae,       /* AlphaShift Alt */
                NX_ASCIISET,        '\n',       /* Ctrl Alt */
                NX_ASCIISET,        '\n',       /* AlphaShift Ctrl Alt */
        /* Key 0x25 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'k',       /* no flags */
                NX_ASCIISET,         'K',       /* AlphaShift */
                NX_ASCIISET,    CTRL('K'),      /* Ctrl */
                NX_ASCIISET,    CTRL('K'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xce,       /* Alt */
                NX_ASCIISET,        0xaf,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('K'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('K'),      /* AlphaShift Ctrl Alt */
        /* Key 0x26 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'l',       /* no flags */
                NX_ASCIISET,         'L',       /* AlphaShift */
                NX_ASCIISET,        '\f',       /* Ctrl */
                NX_ASCIISET,        '\f',       /* AlphaShift Ctrl */
                NX_ASCIISET,        0xf8,       /* Alt */
                NX_ASCIISET,        0xe8,       /* AlphaShift Alt */
                NX_ASCIISET,        '\f',       /* Ctrl Alt */
                NX_ASCIISET,        '\f',       /* AlphaShift Ctrl Alt */
        /* Key 0x27 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         ';',       /* no flags */
                NX_ASCIISET,         ':',       /* Shift */
                NX_SYMBOLSET,       0xb2,       /* Alt */
                NX_SYMBOLSET,       0xa2,       /* Shift Alt */
        /* Key 0x28 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,        '\'',       /* no flags */
                NX_ASCIISET,         '"',       /* Shift */
                NX_ASCIISET,        0xa9,       /* Alt */
                NX_SYMBOLSET,       0xae,       /* Shift Alt */
        /* Key 0x29 modifier key mask bits (0x02) */
        (1<<NX_MODIFIERKEY_SHIFT),
                NX_ASCIISET,         '`',	/* no flags */
                NX_ASCIISET,         '~',       /* Shift */
        0xff,   /* Key 0x2A unassigned - Left Shift */
        /* Key 0x2B modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,        '\\',       /* no flags */
                NX_ASCIISET,         '|',       /* Shift */
                NX_ASCIISET,    CTRL('\\'),     /* Ctrl */
                NX_ASCIISET,    CTRL('\\'),     /* Shift Ctrl */
                NX_ASCIISET,        0xe3,       /* Alt */
                NX_ASCIISET,        0xeb,       /* Shift Alt */
                NX_ASCIISET,    CTRL('\\'),     /* Ctrl Alt */
                NX_ASCIISET,    CTRL('\\'),     /* Shift Ctrl Alt */
        /* Key 0x2C modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'z',       /* no flags */
                NX_ASCIISET,         'Z',       /* AlphaShift */
                NX_ASCIISET,    CTRL('Z'),      /* Ctrl */
                NX_ASCIISET,    CTRL('Z'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xcf,       /* Alt */
                NX_SYMBOLSET,       0x57,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('Z'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('Z'),      /* AlphaShift Ctrl Alt */
        /* Key 0x2D modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'x',       /* no flags */
                NX_ASCIISET,         'X',       /* AlphaShift */
                NX_ASCIISET,    CTRL('X'),      /* Ctrl */
                NX_ASCIISET,    CTRL('X'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xb4,       /* Alt */
                NX_SYMBOLSET,       0xce,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('X'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('X'),      /* AlphaShift Ctrl Alt */
        /* Key 0x2E modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'c',       /* no flags */
                NX_ASCIISET,         'C',       /* AlphaShift */
                NX_ASCIISET,    CTRL('C'),      /* Ctrl */
                NX_ASCIISET,    CTRL('C'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xe3,       /* Alt */
                NX_SYMBOLSET,       0xd3,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('C'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('C'),      /* AlphaShift Ctrl Alt */
        /* Key 0x2F modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'v',       /* no flags */
                NX_ASCIISET,         'V',       /* AlphaShift */
                NX_ASCIISET,    CTRL('V'),      /* Ctrl */
                NX_ASCIISET,    CTRL('V'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xd6,       /* Alt */
                NX_SYMBOLSET,       0xe0,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('V'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('V'),      /* AlphaShift Ctrl Alt */
        /* Key 0x30 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'b',       /* no flags */
                NX_ASCIISET,         'B',       /* AlphaShift */
                NX_ASCIISET,    CTRL('B'),      /* Ctrl */
                NX_ASCIISET,    CTRL('B'),      /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0xe5,       /* Alt */
                NX_SYMBOLSET,       0xf2,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('B'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('B'),      /* AlphaShift Ctrl Alt */
        /* Key 0x31 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'n',       /* no flags */
                NX_ASCIISET,         'N',       /* AlphaShift */
                NX_ASCIISET,    CTRL('N'),      /* Ctrl */
                NX_ASCIISET,    CTRL('N'),      /* AlphaShift Ctrl */
                NX_ASCIISET,        0xc4,       /* Alt */
                NX_SYMBOLSET,       0xaf,       /* AlphaShift Alt */
                NX_ASCIISET,    CTRL('N'),      /* Ctrl Alt */
                NX_ASCIISET,    CTRL('N'),      /* AlphaShift Ctrl Alt */
        /* Key 0x32 modifier key mask bits (0x0d) */
        (1<<NX_MODIFIERKEY_ALPHALOCK)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         'm',       /* no flags */
                NX_ASCIISET,         'M',       /* AlphaShift */
                NX_ASCIISET,        '\r',       /* Ctrl */
                NX_ASCIISET,        '\r',       /* AlphaShift Ctrl */
                NX_SYMBOLSET,       0x6d,       /* Alt */
                NX_SYMBOLSET,       0xd8,       /* AlphaShift Alt */
                NX_ASCIISET,        '\r',       /* Ctrl Alt */
                NX_ASCIISET,        '\r',       /* AlphaShift Ctrl Alt */
        /* Key 0x33 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         ',',       /* no flags */
                NX_ASCIISET,         '<',       /* Shift */
                NX_ASCIISET,        0xcb,       /* Alt */
                NX_SYMBOLSET,       0xa3,       /* Shift Alt */
        /* Key 0x34 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '.',       /* no flags */
                NX_ASCIISET,         '>',       /* Shift */
                NX_ASCIISET,        0xbc,       /* Alt */
                NX_SYMBOLSET,       0xb3,       /* Shift Alt */
        /* Key 0x35 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '/',       /* no flags */
                NX_ASCIISET,         '?',       /* Shift */
                NX_SYMBOLSET,       0xb8,       /* Alt */
                NX_ASCIISET,        0xbf,       /* Shift Alt */
        0xff,   /* Key 0x36 unassigned - Right Shift */
        /* Key 0x37 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '*',       /* all */
        0xff,   /* Key 0x38 unassigned - Left Alt */
        /* Key 0x39 modifier key mask bits (0x0c) */
        (1<<NX_MODIFIERKEY_CONTROL)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         ' ',       /* no flags */
                NX_ASCIISET,    CTRL('@'),      /* Ctrl */
                NX_ASCIISET,        0x80,       /* Alt */
                NX_ASCIISET,    CTRL('@'),      /* Ctrl Alt */
        0xff,   /* Key 0x3A unassigned - CAPS LOCK */
        0xff,   /* Key 0x3B unassigned - F1	*/
        0xff,   /* Key 0x3C unassigned - F2	*/
        0xff,   /* Key 0x3D unassigned - F3	*/
        0xff,   /* Key 0x3E unassigned - F4	*/
        0xff,   /* Key 0x3F unassigned - F5	*/
        0xff,   /* Key 0x40 unassigned - F6	*/
        0xff,   /* Key 0x41 unassigned - F7	*/
        0xff,   /* Key 0x42 unassigned - F8	*/
        0xff,   /* Key 0x43 unassigned - F9	*/
        0xff,   /* Key 0x44 unassigned - F10	*/
        /* Key 0x45 modifier key mask bits (0x0a) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '`',       /* no flags */
                NX_ASCIISET,         '~',       /* Shift */
                NX_ASCIISET,         '`',       /* Alt */
                NX_SYMBOLSET,       0xbb,       /* Shift Alt */
        0xff,   /* Key 0x46 unassigned */
        /* Key 0x47 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '7',       /* all */
        /* Key 0x48 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '8',       /* all */
        /* Key 0x49 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '9',       /* all */
        /* Key 0x4A modifier key mask bits (0x00) */
        0,
                NX_SYMBOLSET,       0x2d,       /* all */
        /* Key 0x4B modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '4',       /* all */
        /* Key 0x4C modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '5',       /* all */
        /* Key 0x4D modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '6',       /* all */
        /* Key 0x4E modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '+',       /* all */
        /* Key 0x4F modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '1',       /* all */
        /* Key 0x50 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '2',       /* all */
        /* Key 0x51 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '3',       /* all */
        /* Key 0x52 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '0',       /* all */
        /* Key 0x53 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,         '.',       /* all */
        0xff,   /* Key 0x54 unassigned */
        0xff,   /* Key 0x55 unassigned */
        0xff,   /* Key 0x56 unassigned */
        0xff,   /* Key 0x57 unassigned - F11	*/
        0xff,   /* Key 0x58 unassigned - F12	*/
        0xff,   /* Key 0x59 unassigned */
        0xff,   /* Key 0x5A unassigned */
        0xff,   /* Key 0x5B unassigned */
        0xff,   /* Key 0x5C unassigned */
        0xff,   /* Key 0x5D unassigned */
        0xff,   /* Key 0x5E unassigned */
        0xff,   /* Key 0x5F unassigned */
        0xff,   /* Key 0x60 unassigned - Right Ctrl	*/
        0xff,   /* Key 0x61 unassigned - Right Alt	*/
        /* Key 0x62 modifier key mask bits (0x00) */
        0,
                NX_ASCIISET,    CTRL('C'),      /* all */
        /* Key 0x63 modifier key mask bits (0x0e) */
        (1<<NX_MODIFIERKEY_SHIFT)|(1<<NX_MODIFIERKEY_CONTROL)|
        (1<<NX_MODIFIERKEY_ALTERNATE),
                NX_ASCIISET,         '/',       /* no flags */
                NX_ASCIISET,        '\\',       /* Shift */
                NX_ASCIISET,         '/',       /* Ctrl */
                NX_ASCIISET,    CTRL('\\'),     /* Shift Ctrl */
                NX_ASCIISET,         '/',       /* Alt */
                NX_ASCIISET,        '\\',       /* Shift Alt */
                NX_ASCIISET,    CTRL('@'),      /* Ctrl Alt */
                0x0a,   CTRL('@'),      /* Shift Ctrl Alt */
        /* Key 0x64 modifier key mask bits (0x00) */
        0,
                NX_SYMBOLSET,       0xad,       /* all */
        /* Key 0x65 modifier key mask bits (0x00) */
        0,
                NX_SYMBOLSET,       0xaf,       /* all */
        /* Key 0x66 modifier key mask bits (0x00) */
        0,
                NX_SYMBOLSET,       0xac,       /* all */
        /* Key 0x67 modifier key mask bits (0x00) */
        0,
                NX_SYMBOLSET,       0xae,       /* all */
0,      /* Sequence Definitions */
9,      /* special keys */
        0x00, 0x68,     /* Sound Up */
        0x01, 0x69,     /* Sound Down */
        0x02, 0x6A,     /* Brightness Up */
        0x03, 0x6B,     /* Brightness Down */
        0x04, 0x3A,     /* Caps Lock */
	0x05, 0x3B,	/* Help Key */
        0x06, 0x47,     /* Power Key */
        0x07, 0x48,     /* Up Arrow */
        0x08, 0x50      /* Down Arrow */
};