
#if defined(ENABLE_CEHTML) && ENABLE_CEHTML

    // Introduced in DOM Level 2:
	[
		DoNotCheckConstants
    ] interface KeyEvent : UIEvent {

        // VirtualKeyCode as of WD-DOM-Level-2-19990923
        const unsigned long       CHAR_UNDEFINED                 = 0x0FFFF;
        const unsigned long       DOM_VK_0                       = 0x30;
        const unsigned long       DOM_VK_1                       = 0x31;
        const unsigned long       DOM_VK_2                       = 0x32;
        const unsigned long       DOM_VK_3                       = 0x33;
        const unsigned long       DOM_VK_4                       = 0x34;
        const unsigned long       DOM_VK_5                       = 0x35;
        const unsigned long       DOM_VK_6                       = 0x36;
        const unsigned long       DOM_VK_7                       = 0x37;
        const unsigned long       DOM_VK_8                       = 0x38;
        const unsigned long       DOM_VK_9                       = 0x39;
        const unsigned long       DOM_VK_A                       = 0x41;
        const unsigned long       DOM_VK_ACCEPT                  = 0x1E;
        const unsigned long       DOM_VK_ADD                     = 0x6B;
        const unsigned long       DOM_VK_AGAIN                   = 0xFFC9;
        const unsigned long       DOM_VK_ALL_CANDIDATES          = 0x0100;
        const unsigned long       DOM_VK_ALPHANUMERIC            = 0x00F0;
        const unsigned long       DOM_VK_ALT                     = 0x12;
        const unsigned long       DOM_VK_ALT_GRAPH               = 0xFF7E;
        const unsigned long       DOM_VK_AMPERSAND               = 0x96;
        const unsigned long       DOM_VK_ASTERISK                = 0x97;
        const unsigned long       DOM_VK_AT                      = 0x0200;
        const unsigned long       DOM_VK_B                       = 0x42;
        const unsigned long       DOM_VK_BACK_QUOTE              = 0xC0;
        const unsigned long       DOM_VK_BACK_SLASH              = 0x5C;
        const unsigned long       DOM_VK_BACK_SPACE              = 0x08;
        const unsigned long       DOM_VK_BRACELEFT               = 0xA1;
        const unsigned long       DOM_VK_BRACERIGHT              = 0xA2;
        const unsigned long       DOM_VK_C                       = 0x43;
        const unsigned long       DOM_VK_CANCEL                  = 0x03;
        const unsigned long       DOM_VK_CAPS_LOCK               = 0x14;
        const unsigned long       DOM_VK_CIRCUMFLEX              = 0x0202;
        const unsigned long       DOM_VK_CLEAR                   = 0x0C;
        const unsigned long       DOM_VK_CLOSE_BRACKET           = 0x5D;
        const unsigned long       DOM_VK_CODE_INPUT              = 0x0102;
        const unsigned long       DOM_VK_COLON                   = 0x0201;
        const unsigned long       DOM_VK_COMMA                   = 0x2C;
        const unsigned long       DOM_VK_COMPOSE                 = 0xFF20;
        const unsigned long       DOM_VK_CONTROL                 = 0x11;
        const unsigned long       DOM_VK_CONVERT                 = 0x1C;
        const unsigned long       DOM_VK_COPY                    = 0xFFCD;
        const unsigned long       DOM_VK_CUT                     = 0xFFD1;
        const unsigned long       DOM_VK_D                       = 0x44;
        const unsigned long       DOM_VK_DEAD_ABOVEDOT           = 0x86;
        const unsigned long       DOM_VK_DEAD_ABOVERING          = 0x88;
        const unsigned long       DOM_VK_DEAD_ACUTE              = 0x81;
        const unsigned long       DOM_VK_DEAD_BREVE              = 0x85;
        const unsigned long       DOM_VK_DEAD_CARON              = 0x8A;
        const unsigned long       DOM_VK_DEAD_CEDILLA            = 0x8B;
        const unsigned long       DOM_VK_DEAD_CIRCUMFLEX         = 0x82;
        const unsigned long       DOM_VK_DEAD_DIAERESIS          = 0x87;
        const unsigned long       DOM_VK_DEAD_DOUBLEACUTE        = 0x89;
        const unsigned long       DOM_VK_DEAD_GRAVE              = 0x80;
        const unsigned long       DOM_VK_DEAD_IOTA               = 0x8D;
        const unsigned long       DOM_VK_DEAD_MACRON             = 0x84;
        const unsigned long       DOM_VK_DEAD_OGONEK             = 0x8C;
        const unsigned long       DOM_VK_DEAD_SEMIVOICED_SOUND   = 0x8F;
        const unsigned long       DOM_VK_DEAD_TILDE              = 0x83;
        const unsigned long       DOM_VK_DEAD_VOICED_SOUND       = 0x8E;
        const unsigned long       DOM_VK_DECIMAL                 = 0x6E;
        const unsigned long       DOM_VK_DELETE                  = 0x7F;
        const unsigned long       DOM_VK_DIVIDE                  = 0x6F;
        const unsigned long       DOM_VK_DOLLAR                  = 0x0203;
        const unsigned long       DOM_VK_DOWN                    = 0x28;
        const unsigned long       DOM_VK_E                       = 0x45;
        const unsigned long       DOM_VK_END                     = 0x23;
        const unsigned long       DOM_VK_ENTER                   = 0x0D;
        const unsigned long       DOM_VK_EQUALS                  = 0x3D;
        const unsigned long       DOM_VK_ESCAPE                  = 0x1B;
        const unsigned long       DOM_VK_EURO_SIGN               = 0x0204;
        const unsigned long       DOM_VK_EXCLAMATION_MARK        = 0x0205;
        const unsigned long       DOM_VK_F                       = 0x46;
        const unsigned long       DOM_VK_F1                      = 0x70;
        const unsigned long       DOM_VK_F10                     = 0x79;
        const unsigned long       DOM_VK_F11                     = 0x7A;
        const unsigned long       DOM_VK_F12                     = 0x7B;
        const unsigned long       DOM_VK_F13                     = 0xF000;
        const unsigned long       DOM_VK_F14                     = 0xF001;
        const unsigned long       DOM_VK_F15                     = 0xF002;
        const unsigned long       DOM_VK_F16                     = 0xF003;
        const unsigned long       DOM_VK_F17                     = 0xF004;
        const unsigned long       DOM_VK_F18                     = 0xF005;
        const unsigned long       DOM_VK_F19                     = 0xF006;
        const unsigned long       DOM_VK_F2                      = 0x71;
        const unsigned long       DOM_VK_F20                     = 0xF007;
        const unsigned long       DOM_VK_F21                     = 0xF008;
        const unsigned long       DOM_VK_F22                     = 0xF009;
        const unsigned long       DOM_VK_F23                     = 0xF00A;
        const unsigned long       DOM_VK_F24                     = 0xF00B;
        const unsigned long       DOM_VK_F3                      = 0x72;
        const unsigned long       DOM_VK_F4                      = 0x73;
        const unsigned long       DOM_VK_F5                      = 0x74;
        const unsigned long       DOM_VK_F6                      = 0x75;
        const unsigned long       DOM_VK_F7                      = 0x76;
        const unsigned long       DOM_VK_F8                      = 0x77;
        const unsigned long       DOM_VK_F9                      = 0x78;
        const unsigned long       DOM_VK_FINAL                   = 0x18;
        const unsigned long       DOM_VK_FIND                    = 0xFFD0;
        const unsigned long       DOM_VK_FULL_WIDTH              = 0x00F3;
        const unsigned long       DOM_VK_G                       = 0x47;
        const unsigned long       DOM_VK_GREATER                 = 0xA0;
        const unsigned long       DOM_VK_H                       = 0x48;
        const unsigned long       DOM_VK_HALF_WIDTH              = 0x00F4;
        const unsigned long       DOM_VK_HELP                    = 0x9C;
        const unsigned long       DOM_VK_HIRAGANA                = 0x00F2;
        const unsigned long       DOM_VK_HOME                    = 0x24;
        const unsigned long       DOM_VK_I                       = 0x49;
        const unsigned long       DOM_VK_INSERT                  = 0x9B;
        const unsigned long       DOM_VK_INVERTED_EXCLAMATION_MARK = 0x0206;
        const unsigned long       DOM_VK_J                       = 0x4A;
        const unsigned long       DOM_VK_JAPANESE_HIRAGANA       = 0x0104;
        const unsigned long       DOM_VK_JAPANESE_KATAKANA       = 0x0103;
        const unsigned long       DOM_VK_JAPANESE_ROMAN          = 0x0105;
        const unsigned long       DOM_VK_K                       = 0x4B;
        const unsigned long       DOM_VK_KANA                    = 0x15;
        const unsigned long       DOM_VK_KANJI                   = 0x19;
        const unsigned long       DOM_VK_KATAKANA                = 0x00F1;
        const unsigned long       DOM_VK_KP_DOWN                 = 0xE1;
        const unsigned long       DOM_VK_KP_LEFT                 = 0xE2;
        const unsigned long       DOM_VK_KP_RIGHT                = 0xE3;
        const unsigned long       DOM_VK_KP_UP                   = 0xE0;
        const unsigned long       DOM_VK_L                       = 0x4C;
        const unsigned long       DOM_VK_LEFT                    = 0x25;
        const unsigned long       DOM_VK_LEFT_PARENTHESIS        = 0x0207;
        const unsigned long       DOM_VK_LESS                    = 0x99;
        const unsigned long       DOM_VK_M                       = 0x4D;
        const unsigned long       DOM_VK_META                    = 0x9D;
        const unsigned long       DOM_VK_MINUS                   = 0x2D;
        const unsigned long       DOM_VK_MODECHANGE              = 0x1F;
        const unsigned long       DOM_VK_MULTIPLY                = 0x6A;
        const unsigned long       DOM_VK_N                       = 0x4E;
        const unsigned long       DOM_VK_NONCONVERT              = 0x1D;
        const unsigned long       DOM_VK_NUM_LOCK                = 0x90;
        const unsigned long       DOM_VK_NUMBER_SIGN             = 0x0208;
        const unsigned long       DOM_VK_NUMPAD0                 = 0x60;
        const unsigned long       DOM_VK_NUMPAD1                 = 0x61;
        const unsigned long       DOM_VK_NUMPAD2                 = 0x62;
        const unsigned long       DOM_VK_NUMPAD3                 = 0x63;
        const unsigned long       DOM_VK_NUMPAD4                 = 0x64;
        const unsigned long       DOM_VK_NUMPAD5                 = 0x65;
        const unsigned long       DOM_VK_NUMPAD6                 = 0x66;
        const unsigned long       DOM_VK_NUMPAD7                 = 0x67;
        const unsigned long       DOM_VK_NUMPAD8                 = 0x68;
        const unsigned long       DOM_VK_NUMPAD9                 = 0x69;
        const unsigned long       DOM_VK_O                       = 0x4F;
        const unsigned long       DOM_VK_OPEN_BRACKET            = 0x5B;
        const unsigned long       DOM_VK_P                       = 0x50;
        const unsigned long       DOM_VK_PAGE_DOWN               = 0x22;
        const unsigned long       DOM_VK_PAGE_UP                 = 0x21;
        const unsigned long       DOM_VK_PASTE                   = 0xFFCF;
        const unsigned long       DOM_VK_PAUSE                   = 0x13;
        const unsigned long       DOM_VK_PERIOD                  = 0x2E;
        const unsigned long       DOM_VK_PLUS                    = 0x0209;
        const unsigned long       DOM_VK_PREVIOUS_CANDIDATE      = 0x0101;
        const unsigned long       DOM_VK_PRINTSCREEN             = 0x9A;
        const unsigned long       DOM_VK_PROPS                   = 0xFFCA;
        const unsigned long       DOM_VK_Q                       = 0x51;
        const unsigned long       DOM_VK_QUOTE                   = 0xDE;
        const unsigned long       DOM_VK_QUOTEDBL                = 0x98;
        const unsigned long       DOM_VK_R                       = 0x52;
        const unsigned long       DOM_VK_RIGHT                   = 0x27;
        const unsigned long       DOM_VK_RIGHT_PARENTHESIS       = 0x020A;
        const unsigned long       DOM_VK_ROMAN_CHARACTERS        = 0x00F5;
        const unsigned long       DOM_VK_S                       = 0x53;
        const unsigned long       DOM_VK_SCROLL_LOCK             = 0x91;
        const unsigned long       DOM_VK_SEMICOLON               = 0x3B;
        const unsigned long       DOM_VK_SEPARATER               = 0x6C;
        const unsigned long       DOM_VK_SHIFT                   = 0x10;
        const unsigned long       DOM_VK_SLASH                   = 0x2F;
        const unsigned long       DOM_VK_SPACE                   = 0x20;
        const unsigned long       DOM_VK_STOP                    = 0xFFC8;
        const unsigned long       DOM_VK_SUBTRACT                = 0x6D;
        const unsigned long       DOM_VK_T                       = 0x54;
        const unsigned long       DOM_VK_TAB                     = 0x09;
        const unsigned long       DOM_VK_U                       = 0x55;
        const unsigned long       DOM_VK_UNDEFINED               = 0x0;
        const unsigned long       DOM_VK_UNDERSCORE              = 0x020B;
        const unsigned long       DOM_VK_UNDO                    = 0xFFCB;
        const unsigned long       DOM_VK_UP                      = 0x26;
        const unsigned long       DOM_VK_V                       = 0x56;
        const unsigned long       DOM_VK_W                       = 0x57;
        const unsigned long       DOM_VK_X                       = 0x58;
        const unsigned long       DOM_VK_Y                       = 0x59;
        const unsigned long       DOM_VK_Z                       = 0x5A;

// CE-HTML specific key codes that SHALL be used for "keydown" and "keyup"-type events.

        const unsigned long VK_UNDEFINED = 0;
        const unsigned long VK_CANCEL = 3;
        const unsigned long VK_BACK_SPACE = 8;
        const unsigned long VK_TAB = 9;
        const unsigned long VK_CLEAR = 12;
        const unsigned long VK_ENTER = 13;
        const unsigned long VK_SHIFT = 16;
        const unsigned long VK_CONTROL = 17;
        const unsigned long VK_ALT = 18;
        const unsigned long VK_PAUSE = 19;
        const unsigned long VK_CAPS_LOCK = 20;
        const unsigned long VK_KANA = 21;
        const unsigned long VK_FINAL = 24;
        const unsigned long VK_KANJI = 25;
        const unsigned long VK_ESCAPE = 27;
        const unsigned long VK_CONVERT = 28;
        const unsigned long VK_NONCONVERT = 29;
        const unsigned long VK_ACCEPT = 30;
        const unsigned long VK_MODECHANGE = 31;
        const unsigned long VK_SPACE = 32;
        const unsigned long VK_PAGE_UP = 33;
        const unsigned long VK_PAGE_DOWN = 34;
        const unsigned long VK_END = 35;
        const unsigned long VK_HOME = 36;
        const unsigned long VK_LEFT = 37;
        const unsigned long VK_UP = 38;
        const unsigned long VK_RIGHT = 39;
        const unsigned long VK_DOWN = 40;
        const unsigned long VK_COMMA = 44;
        const unsigned long VK_PERIOD = 46;
        const unsigned long VK_SLASH = 47;
        const unsigned long VK_0 = 48;
        const unsigned long VK_1 = 49;
        const unsigned long VK_2 = 50;
        const unsigned long VK_3 = 51;
        const unsigned long VK_4 = 52;
        const unsigned long VK_5 = 53;
        const unsigned long VK_6 = 54;
        const unsigned long VK_7 = 55;
        const unsigned long VK_8 = 56;
        const unsigned long VK_9 = 57;
        const unsigned long VK_SEMICOLON = 59;
        const unsigned long VK_EQUALS = 61;
        const unsigned long VK_A = 65;
        const unsigned long VK_B = 66;
        const unsigned long VK_C = 67;
        const unsigned long VK_D = 68;
        const unsigned long VK_E = 69;
        const unsigned long VK_F = 70;
        const unsigned long VK_G = 71;
        const unsigned long VK_H = 72;
        const unsigned long VK_I = 73;
        const unsigned long VK_J = 74;
        const unsigned long VK_K = 75;
        const unsigned long VK_L = 76;
        const unsigned long VK_M = 77;
        const unsigned long VK_N = 78;
        const unsigned long VK_O = 79;
        const unsigned long VK_P = 80;
        const unsigned long VK_Q = 81;
        const unsigned long VK_R = 82;
        const unsigned long VK_S = 83;
        const unsigned long VK_T = 84;
        const unsigned long VK_U = 85;
        const unsigned long VK_V = 86;
        const unsigned long VK_W = 87;
        const unsigned long VK_X = 88;
        const unsigned long VK_Y = 89;
        const unsigned long VK_Z = 90;
        const unsigned long VK_OPEN_BRACKET = 91;
        const unsigned long VK_BACK_SLASH = 92;
        const unsigned long VK_CLOSE_BRACKET = 93;
        const unsigned long VK_NUMPAD0 = 96;
        const unsigned long VK_NUMPAD1 = 97;
        const unsigned long VK_NUMPAD2 = 98;
        const unsigned long VK_NUMPAD3 = 99;
        const unsigned long VK_NUMPAD4 = 100;
        const unsigned long VK_NUMPAD5 = 101;
        const unsigned long VK_NUMPAD6 = 102;
        const unsigned long VK_NUMPAD7 = 103;
        const unsigned long VK_NUMPAD8 = 104;
        const unsigned long VK_NUMPAD9 = 105;
        const unsigned long VK_MULTIPLY = 106;
        const unsigned long VK_ADD = 107;
        const unsigned long VK_SEPARATER = 108;
        const unsigned long VK_SUBTRACT = 109;
        const unsigned long VK_DECIMAL = 110;
        const unsigned long VK_DIVIDE = 111;
        const unsigned long VK_F1 = 112;
        const unsigned long VK_F2 = 113;
        const unsigned long VK_F3 = 114;
        const unsigned long VK_F4 = 115;
        const unsigned long VK_F5 = 116;
        const unsigned long VK_F6 = 117;
        const unsigned long VK_F7 = 118;
        const unsigned long VK_F8 = 119;
        const unsigned long VK_F9 = 120;
        const unsigned long VK_F10 = 121;
        const unsigned long VK_F11 = 122;
        const unsigned long VK_F12 = 123;
        const unsigned long VK_DELETE = 127;
        const unsigned long VK_NUM_LOCK = 144;
        const unsigned long VK_SCROLL_LOCK = 145;
        const unsigned long VK_PRINTSCREEN = 154;
        const unsigned long VK_INSERT = 155;
        const unsigned long VK_HELP = 156;
        const unsigned long VK_META = 157;
        const unsigned long VK_BACK_QUOTE = 192;
        const unsigned long VK_QUOTE = 222;
        const unsigned long VK_RED = 403;
        const unsigned long VK_GREEN = 404;
        const unsigned long VK_YELLOW = 405;
        const unsigned long VK_BLUE = 406;
        const unsigned long VK_GREY = 407;
        const unsigned long VK_BROWN = 408;
        const unsigned long VK_POWER = 409;
        const unsigned long VK_DIMMER = 410;
        const unsigned long VK_WINK = 411;
        const unsigned long VK_REWIND = 412;
        const unsigned long VK_STOP = 413;
        const unsigned long VK_EJECT_TOGGLE = 414;
        const unsigned long VK_PLAY = 415;
        const unsigned long VK_RECORD = 416;
        const unsigned long VK_FAST_FWD = 417;
        const unsigned long VK_PLAY_SPEED_UP = 418;
        const unsigned long VK_PLAY_SPEED_DOWN = 419;
        const unsigned long VK_PLAY_SPEED_RESET = 420;
        const unsigned long VK_RECORD_SPEED_NEXT = 421;
        const unsigned long VK_GO_TO_START = 422;
        const unsigned long VK_GO_TO_END = 423;
        const unsigned long VK_TRACK_PREV = 424;
        const unsigned long VK_TRACK_NEXT = 425;
        const unsigned long VK_RANDOM_TOGGLE = 426;
        const unsigned long VK_CHANNEL_UP = 427;
        const unsigned long VK_CHANNEL_DOWN = 428;
        const unsigned long VK_STORE_FAVORITE_0 = 429;
        const unsigned long VK_STORE_FAVORITE_1 = 430;
        const unsigned long VK_STORE_FAVORITE_2 = 431;
        const unsigned long VK_STORE_FAVORITE_3 = 432;
        const unsigned long VK_RECALL_FAVORITE_0 = 433;
        const unsigned long VK_RECALL_FAVORITE_1 = 434;
        const unsigned long VK_RECALL_FAVORITE_2 = 435;
        const unsigned long VK_RECALL_FAVORITE_3 = 436;
        const unsigned long VK_CLEAR_FAVORITE_0 = 437;
        const unsigned long VK_CLEAR_FAVORITE_1 = 438;
        const unsigned long VK_CLEAR_FAVORITE_2 = 439;
        const unsigned long VK_CLEAR_FAVORITE_3 = 440;
        const unsigned long VK_SCAN_CHANNELS_TOGGLE = 441;
        const unsigned long VK_PINP_TOGGLE = 442;
        const unsigned long VK_SPLIT_SCREEN_TOGGLE = 443;
        const unsigned long VK_DISPLAY_SWAP = 444;
        const unsigned long VK_SCREEN_MODE_NEXT = 445;
        const unsigned long VK_VIDEO_MODE_NEXT = 446;
        const unsigned long VK_VOLUME_UP = 447;
        const unsigned long VK_VOLUME_DOWN = 448;
        const unsigned long VK_MUTE = 449;
        const unsigned long VK_SURROUND_MODE_NEXT = 450;
        const unsigned long VK_BALANCE_RIGHT = 451;
        const unsigned long VK_BALANCE_LEFT = 452;
        const unsigned long VK_FADER_FRONT = 453;
        const unsigned long VK_FADER_REAR = 454;
        const unsigned long VK_BASS_BOOST_UP = 455;
        const unsigned long VK_BASS_BOOST_DOWN = 456;
        const unsigned long VK_INFO = 457;
        const unsigned long VK_GUIDE = 458;
        const unsigned long VK_TELETEXT = 459;
        const unsigned long VK_SUBTITLE = 460;
        const unsigned long VK_BACK = 461;
        const unsigned long VK_MENU = 462;

        readonly attribute boolean          ctrlKey;
        readonly attribute boolean          shiftKey;
        readonly attribute boolean          altKey;
        readonly attribute boolean          metaKey;
        readonly attribute unsigned long    keyCode;
        readonly attribute unsigned long    charCode;

        void initKeyEvent(in optional DOMString typeArg, 
                          in optional boolean canBubbleArg, 
                          in optional boolean cancelableArg, 
                          in optional boolean ctrlKeyArg, 
                          in optional boolean altKeyArg, 
                          in optional boolean shiftKeyArg, 
                          in optional boolean metaKeyArg, 
                          in optional unsigned long keyCodeArg, 
                          in optional unsigned long charCodeArg, 
                          in optional DOMWindow viewArg);
    };


#endif // defined(ENABLE_CEHTML) && ENABLE_CEHTML
