1/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/.
5 */
6
7// http://www.w3.org/TR/1999/WD-DOM-Level-2-19990923/events.html#Events-KeyEvent
8[Exposed=Window]
9interface KeyEvent
10{
11  // It's all mixed in.
12};
13KeyEvent includes KeyEventMixin;
14
15interface mixin KeyEventMixin {
16  const unsigned long DOM_VK_CANCEL         = 0x03;
17  const unsigned long DOM_VK_HELP           = 0x06;
18  const unsigned long DOM_VK_BACK_SPACE     = 0x08;
19  const unsigned long DOM_VK_TAB            = 0x09;
20  const unsigned long DOM_VK_CLEAR          = 0x0C;
21  const unsigned long DOM_VK_RETURN         = 0x0D;
22  // DOM_VK_ENTER has been never used for representing native key events.
23  // Therefore, it's removed for preventing developers being confused.
24  // const unsigned long DOM_VK_ENTER          = 0x0E;
25  const unsigned long DOM_VK_SHIFT          = 0x10;
26  const unsigned long DOM_VK_CONTROL        = 0x11;
27  const unsigned long DOM_VK_ALT            = 0x12;
28  const unsigned long DOM_VK_PAUSE          = 0x13;
29  const unsigned long DOM_VK_CAPS_LOCK      = 0x14;
30  const unsigned long DOM_VK_KANA           = 0x15;
31  const unsigned long DOM_VK_HANGUL         = 0x15;
32  const unsigned long DOM_VK_EISU           = 0x16; // Japanese Mac keyboard only
33  const unsigned long DOM_VK_JUNJA          = 0x17;
34  const unsigned long DOM_VK_FINAL          = 0x18;
35  const unsigned long DOM_VK_HANJA          = 0x19;
36  const unsigned long DOM_VK_KANJI          = 0x19;
37  const unsigned long DOM_VK_ESCAPE         = 0x1B;
38  const unsigned long DOM_VK_CONVERT        = 0x1C;
39  const unsigned long DOM_VK_NONCONVERT     = 0x1D;
40  const unsigned long DOM_VK_ACCEPT         = 0x1E;
41  const unsigned long DOM_VK_MODECHANGE     = 0x1F;
42  const unsigned long DOM_VK_SPACE          = 0x20;
43  const unsigned long DOM_VK_PAGE_UP        = 0x21;
44  const unsigned long DOM_VK_PAGE_DOWN      = 0x22;
45  const unsigned long DOM_VK_END            = 0x23;
46  const unsigned long DOM_VK_HOME           = 0x24;
47  const unsigned long DOM_VK_LEFT           = 0x25;
48  const unsigned long DOM_VK_UP             = 0x26;
49  const unsigned long DOM_VK_RIGHT          = 0x27;
50  const unsigned long DOM_VK_DOWN           = 0x28;
51  const unsigned long DOM_VK_SELECT         = 0x29;
52  const unsigned long DOM_VK_PRINT          = 0x2A;
53  const unsigned long DOM_VK_EXECUTE        = 0x2B;
54  const unsigned long DOM_VK_PRINTSCREEN    = 0x2C;
55  const unsigned long DOM_VK_INSERT         = 0x2D;
56  const unsigned long DOM_VK_DELETE         = 0x2E;
57
58  // DOM_VK_0 - DOM_VK_9 match their ascii values
59  const unsigned long DOM_VK_0              = 0x30;
60  const unsigned long DOM_VK_1              = 0x31;
61  const unsigned long DOM_VK_2              = 0x32;
62  const unsigned long DOM_VK_3              = 0x33;
63  const unsigned long DOM_VK_4              = 0x34;
64  const unsigned long DOM_VK_5              = 0x35;
65  const unsigned long DOM_VK_6              = 0x36;
66  const unsigned long DOM_VK_7              = 0x37;
67  const unsigned long DOM_VK_8              = 0x38;
68  const unsigned long DOM_VK_9              = 0x39;
69
70  const unsigned long DOM_VK_COLON          = 0x3A;
71  const unsigned long DOM_VK_SEMICOLON      = 0x3B;
72  const unsigned long DOM_VK_LESS_THAN      = 0x3C;
73  const unsigned long DOM_VK_EQUALS         = 0x3D;
74  const unsigned long DOM_VK_GREATER_THAN   = 0x3E;
75  const unsigned long DOM_VK_QUESTION_MARK  = 0x3F;
76  const unsigned long DOM_VK_AT             = 0x40;
77
78  // DOM_VK_A - DOM_VK_Z match their ascii values
79  const unsigned long DOM_VK_A              = 0x41;
80  const unsigned long DOM_VK_B              = 0x42;
81  const unsigned long DOM_VK_C              = 0x43;
82  const unsigned long DOM_VK_D              = 0x44;
83  const unsigned long DOM_VK_E              = 0x45;
84  const unsigned long DOM_VK_F              = 0x46;
85  const unsigned long DOM_VK_G              = 0x47;
86  const unsigned long DOM_VK_H              = 0x48;
87  const unsigned long DOM_VK_I              = 0x49;
88  const unsigned long DOM_VK_J              = 0x4A;
89  const unsigned long DOM_VK_K              = 0x4B;
90  const unsigned long DOM_VK_L              = 0x4C;
91  const unsigned long DOM_VK_M              = 0x4D;
92  const unsigned long DOM_VK_N              = 0x4E;
93  const unsigned long DOM_VK_O              = 0x4F;
94  const unsigned long DOM_VK_P              = 0x50;
95  const unsigned long DOM_VK_Q              = 0x51;
96  const unsigned long DOM_VK_R              = 0x52;
97  const unsigned long DOM_VK_S              = 0x53;
98  const unsigned long DOM_VK_T              = 0x54;
99  const unsigned long DOM_VK_U              = 0x55;
100  const unsigned long DOM_VK_V              = 0x56;
101  const unsigned long DOM_VK_W              = 0x57;
102  const unsigned long DOM_VK_X              = 0x58;
103  const unsigned long DOM_VK_Y              = 0x59;
104  const unsigned long DOM_VK_Z              = 0x5A;
105
106  const unsigned long DOM_VK_WIN            = 0x5B;
107  const unsigned long DOM_VK_CONTEXT_MENU   = 0x5D;
108  const unsigned long DOM_VK_SLEEP          = 0x5F;
109
110  // Numpad keys
111  const unsigned long DOM_VK_NUMPAD0        = 0x60;
112  const unsigned long DOM_VK_NUMPAD1        = 0x61;
113  const unsigned long DOM_VK_NUMPAD2        = 0x62;
114  const unsigned long DOM_VK_NUMPAD3        = 0x63;
115  const unsigned long DOM_VK_NUMPAD4        = 0x64;
116  const unsigned long DOM_VK_NUMPAD5        = 0x65;
117  const unsigned long DOM_VK_NUMPAD6        = 0x66;
118  const unsigned long DOM_VK_NUMPAD7        = 0x67;
119  const unsigned long DOM_VK_NUMPAD8        = 0x68;
120  const unsigned long DOM_VK_NUMPAD9        = 0x69;
121  const unsigned long DOM_VK_MULTIPLY       = 0x6A;
122  const unsigned long DOM_VK_ADD            = 0x6B;
123  const unsigned long DOM_VK_SEPARATOR      = 0x6C;
124  const unsigned long DOM_VK_SUBTRACT       = 0x6D;
125  const unsigned long DOM_VK_DECIMAL        = 0x6E;
126  const unsigned long DOM_VK_DIVIDE         = 0x6F;
127
128  const unsigned long DOM_VK_F1             = 0x70;
129  const unsigned long DOM_VK_F2             = 0x71;
130  const unsigned long DOM_VK_F3             = 0x72;
131  const unsigned long DOM_VK_F4             = 0x73;
132  const unsigned long DOM_VK_F5             = 0x74;
133  const unsigned long DOM_VK_F6             = 0x75;
134  const unsigned long DOM_VK_F7             = 0x76;
135  const unsigned long DOM_VK_F8             = 0x77;
136  const unsigned long DOM_VK_F9             = 0x78;
137  const unsigned long DOM_VK_F10            = 0x79;
138  const unsigned long DOM_VK_F11            = 0x7A;
139  const unsigned long DOM_VK_F12            = 0x7B;
140  const unsigned long DOM_VK_F13            = 0x7C;
141  const unsigned long DOM_VK_F14            = 0x7D;
142  const unsigned long DOM_VK_F15            = 0x7E;
143  const unsigned long DOM_VK_F16            = 0x7F;
144  const unsigned long DOM_VK_F17            = 0x80;
145  const unsigned long DOM_VK_F18            = 0x81;
146  const unsigned long DOM_VK_F19            = 0x82;
147  const unsigned long DOM_VK_F20            = 0x83;
148  const unsigned long DOM_VK_F21            = 0x84;
149  const unsigned long DOM_VK_F22            = 0x85;
150  const unsigned long DOM_VK_F23            = 0x86;
151  const unsigned long DOM_VK_F24            = 0x87;
152
153  const unsigned long DOM_VK_NUM_LOCK       = 0x90;
154  const unsigned long DOM_VK_SCROLL_LOCK    = 0x91;
155
156  // OEM specific virtual keyCode of Windows should pass through DOM keyCode
157  // for compatibility with the other web browsers on Windows.
158  const unsigned long DOM_VK_WIN_OEM_FJ_JISHO   = 0x92;
159  const unsigned long DOM_VK_WIN_OEM_FJ_MASSHOU = 0x93;
160  const unsigned long DOM_VK_WIN_OEM_FJ_TOUROKU = 0x94;
161  const unsigned long DOM_VK_WIN_OEM_FJ_LOYA    = 0x95;
162  const unsigned long DOM_VK_WIN_OEM_FJ_ROYA    = 0x96;
163
164  const unsigned long DOM_VK_CIRCUMFLEX     = 0xA0;
165  const unsigned long DOM_VK_EXCLAMATION    = 0xA1;
166  const unsigned long DOM_VK_DOUBLE_QUOTE   = 0xA2;
167  const unsigned long DOM_VK_HASH           = 0xA3;
168  const unsigned long DOM_VK_DOLLAR         = 0xA4;
169  const unsigned long DOM_VK_PERCENT        = 0xA5;
170  const unsigned long DOM_VK_AMPERSAND      = 0xA6;
171  const unsigned long DOM_VK_UNDERSCORE     = 0xA7;
172  const unsigned long DOM_VK_OPEN_PAREN     = 0xA8;
173  const unsigned long DOM_VK_CLOSE_PAREN    = 0xA9;
174  const unsigned long DOM_VK_ASTERISK       = 0xAA;
175  const unsigned long DOM_VK_PLUS           = 0xAB;
176  const unsigned long DOM_VK_PIPE           = 0xAC;
177  const unsigned long DOM_VK_HYPHEN_MINUS   = 0xAD;
178
179  const unsigned long DOM_VK_OPEN_CURLY_BRACKET  = 0xAE;
180  const unsigned long DOM_VK_CLOSE_CURLY_BRACKET = 0xAF;
181
182  const unsigned long DOM_VK_TILDE          = 0xB0;
183
184  const unsigned long DOM_VK_VOLUME_MUTE    = 0xB5;
185  const unsigned long DOM_VK_VOLUME_DOWN    = 0xB6;
186  const unsigned long DOM_VK_VOLUME_UP      = 0xB7;
187
188  const unsigned long DOM_VK_COMMA          = 0xBC;
189  const unsigned long DOM_VK_PERIOD         = 0xBE;
190  const unsigned long DOM_VK_SLASH          = 0xBF;
191  const unsigned long DOM_VK_BACK_QUOTE     = 0xC0;
192  const unsigned long DOM_VK_OPEN_BRACKET   = 0xDB; // square bracket
193  const unsigned long DOM_VK_BACK_SLASH     = 0xDC;
194  const unsigned long DOM_VK_CLOSE_BRACKET  = 0xDD; // square bracket
195  const unsigned long DOM_VK_QUOTE          = 0xDE; // Apostrophe
196
197  const unsigned long DOM_VK_META           = 0xE0;
198  const unsigned long DOM_VK_ALTGR          = 0xE1;
199
200  // OEM specific virtual keyCode of Windows should pass through DOM keyCode
201  // for compatibility with the other web browsers on Windows.
202  const unsigned long DOM_VK_WIN_ICO_HELP    = 0xE3;
203  const unsigned long DOM_VK_WIN_ICO_00      = 0xE4;
204
205  // IME processed key.
206  const unsigned long DOM_VK_PROCESSKEY      = 0xE5;
207
208  // OEM specific virtual keyCode of Windows should pass through DOM keyCode
209  // for compatibility with the other web browsers on Windows.
210  const unsigned long DOM_VK_WIN_ICO_CLEAR   = 0xE6;
211  const unsigned long DOM_VK_WIN_OEM_RESET   = 0xE9;
212  const unsigned long DOM_VK_WIN_OEM_JUMP    = 0xEA;
213  const unsigned long DOM_VK_WIN_OEM_PA1     = 0xEB;
214  const unsigned long DOM_VK_WIN_OEM_PA2     = 0xEC;
215  const unsigned long DOM_VK_WIN_OEM_PA3     = 0xED;
216  const unsigned long DOM_VK_WIN_OEM_WSCTRL  = 0xEE;
217  const unsigned long DOM_VK_WIN_OEM_CUSEL   = 0xEF;
218  const unsigned long DOM_VK_WIN_OEM_ATTN    = 0xF0;
219  const unsigned long DOM_VK_WIN_OEM_FINISH  = 0xF1;
220  const unsigned long DOM_VK_WIN_OEM_COPY    = 0xF2;
221  const unsigned long DOM_VK_WIN_OEM_AUTO    = 0xF3;
222  const unsigned long DOM_VK_WIN_OEM_ENLW    = 0xF4;
223  const unsigned long DOM_VK_WIN_OEM_BACKTAB = 0xF5;
224
225  // Following keys are not used on most keyboards.  However, for compatibility
226  // with other browsers on Windows, we should define them.
227  const unsigned long DOM_VK_ATTN           = 0xF6;
228  const unsigned long DOM_VK_CRSEL          = 0xF7;
229  const unsigned long DOM_VK_EXSEL          = 0xF8;
230  const unsigned long DOM_VK_EREOF          = 0xF9;
231  const unsigned long DOM_VK_PLAY           = 0xFA;
232  const unsigned long DOM_VK_ZOOM           = 0xFB;
233  const unsigned long DOM_VK_PA1            = 0xFD;
234
235  // OEM specific virtual keyCode of Windows should pass through DOM keyCode
236  // for compatibility with the other web browsers on Windows.
237  const unsigned long DOM_VK_WIN_OEM_CLEAR  = 0xFE;
238
239  [BinaryName="initKeyEventJS"]
240  void initKeyEvent(DOMString type,
241                    optional boolean canBubble = false,
242                    optional boolean cancelable = false,
243                    optional Window? view = null,
244                    optional boolean ctrlKey = false,
245                    optional boolean altKey = false,
246                    optional boolean shiftKey = false,
247                    optional boolean metaKey = false,
248                    optional unsigned long keyCode = 0,
249                    optional unsigned long charCode = 0);
250};
251