Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / platform / KeyCodeConversionAndroid.cpp
1 /*
2  * Copyright 2007, The Android Open Source Project
3  * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
4  * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
5  * Copyright (C) 2007 Holger Hans Peter Freyther
6  * Copyright (C) 2008 Collabora, Ltd.  All rights reserved.
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *  * Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  *  * Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32 #include "platform/KeyCodeConversion.h"
33
34 #include "platform/KeyboardCodes.h"
35
36 #include <android/keycodes.h>
37
38 namespace WebCore {
39
40 // The Android NDK does not provide values for these yet:
41 enum {
42     AKEYCODE_ESCAPE          = 111,
43     AKEYCODE_FORWARD_DEL     = 112,
44     AKEYCODE_CTRL_LEFT       = 113,
45     AKEYCODE_CTRL_RIGHT      = 114,
46     AKEYCODE_CAPS_LOCK       = 115,
47     AKEYCODE_SCROLL_LOCK     = 116,
48     AKEYCODE_META_LEFT       = 117,
49     AKEYCODE_META_RIGHT      = 118,
50     AKEYCODE_BREAK           = 121,
51     AKEYCODE_INSERT          = 124,
52     AKEYCODE_MEDIA_PLAY      = 126,
53     AKEYCODE_MEDIA_PAUSE     = 127,
54     AKEYCODE_F1              = 131,
55     AKEYCODE_F2              = 132,
56     AKEYCODE_F3              = 133,
57     AKEYCODE_F4              = 134,
58     AKEYCODE_F5              = 135,
59     AKEYCODE_F6              = 136,
60     AKEYCODE_F7              = 137,
61     AKEYCODE_F8              = 138,
62     AKEYCODE_F9              = 139,
63     AKEYCODE_F10             = 140,
64     AKEYCODE_F11             = 141,
65     AKEYCODE_F12             = 142,
66     AKEYCODE_NUM_LOCK        = 143,
67     AKEYCODE_NUMPAD_0        = 144,
68     AKEYCODE_NUMPAD_1        = 145,
69     AKEYCODE_NUMPAD_2        = 146,
70     AKEYCODE_NUMPAD_3        = 147,
71     AKEYCODE_NUMPAD_4        = 148,
72     AKEYCODE_NUMPAD_5        = 149,
73     AKEYCODE_NUMPAD_6        = 150,
74     AKEYCODE_NUMPAD_7        = 151,
75     AKEYCODE_NUMPAD_8        = 152,
76     AKEYCODE_NUMPAD_9        = 153,
77     AKEYCODE_NUMPAD_DIVIDE   = 154,
78     AKEYCODE_NUMPAD_MULTIPLY = 155,
79     AKEYCODE_NUMPAD_SUBTRACT = 156,
80     AKEYCODE_NUMPAD_ADD      = 157,
81     AKEYCODE_NUMPAD_DOT      = 158,
82     AKEYCODE_VOLUME_MUTE     = 164,
83     AKEYCODE_CHANNEL_UP      = 166,
84     AKEYCODE_CHANNEL_DOWN    = 167,
85 };
86
87 int windowsKeyCodeForKeyEvent(unsigned keyCode)
88 {
89     // Does not provide all key codes, and does not handle all keys.
90     switch (keyCode) {
91     case AKEYCODE_DEL:
92         return VKEY_BACK;
93     case AKEYCODE_TAB:
94         return VKEY_TAB;
95     case AKEYCODE_CLEAR:
96         return VKEY_CLEAR;
97     case AKEYCODE_DPAD_CENTER:
98     case AKEYCODE_ENTER:
99         return VKEY_RETURN;
100     case AKEYCODE_SHIFT_LEFT:
101         return VKEY_LSHIFT;
102     case AKEYCODE_SHIFT_RIGHT:
103         return VKEY_RSHIFT;
104     // Back will serve as escape, although we may not have access to it.
105     case AKEYCODE_BACK:
106         return VKEY_ESCAPE;
107     case AKEYCODE_SPACE:
108         return VKEY_SPACE;
109     case AKEYCODE_HOME:
110         return VKEY_HOME;
111     case AKEYCODE_DPAD_LEFT:
112         return VKEY_LEFT;
113     case AKEYCODE_DPAD_UP:
114         return VKEY_UP;
115     case AKEYCODE_DPAD_RIGHT:
116         return VKEY_RIGHT;
117     case AKEYCODE_DPAD_DOWN:
118         return VKEY_DOWN;
119     case AKEYCODE_0:
120         return VKEY_0;
121     case AKEYCODE_1:
122         return VKEY_1;
123     case AKEYCODE_2:
124         return VKEY_2;
125     case AKEYCODE_3:
126         return VKEY_3;
127     case AKEYCODE_4:
128         return VKEY_4;
129     case AKEYCODE_5:
130         return VKEY_5;
131     case AKEYCODE_6:
132         return VKEY_6;
133     case AKEYCODE_7:
134         return VKEY_7;
135     case AKEYCODE_8:
136         return VKEY_8;
137     case AKEYCODE_9:
138         return VKEY_9;
139     case AKEYCODE_A:
140         return VKEY_A;
141     case AKEYCODE_B:
142         return VKEY_B;
143     case AKEYCODE_C:
144         return VKEY_C;
145     case AKEYCODE_D:
146         return VKEY_D;
147     case AKEYCODE_E:
148         return VKEY_E;
149     case AKEYCODE_F:
150         return VKEY_F;
151     case AKEYCODE_G:
152         return VKEY_G;
153     case AKEYCODE_H:
154         return VKEY_H;
155     case AKEYCODE_I:
156         return VKEY_I;
157     case AKEYCODE_J:
158         return VKEY_J;
159     case AKEYCODE_K:
160         return VKEY_K;
161     case AKEYCODE_L:
162         return VKEY_L;
163     case AKEYCODE_M:
164         return VKEY_M;
165     case AKEYCODE_N:
166         return VKEY_N;
167     case AKEYCODE_O:
168         return VKEY_O;
169     case AKEYCODE_P:
170         return VKEY_P;
171     case AKEYCODE_Q:
172         return VKEY_Q;
173     case AKEYCODE_R:
174         return VKEY_R;
175     case AKEYCODE_S:
176         return VKEY_S;
177     case AKEYCODE_T:
178         return VKEY_T;
179     case AKEYCODE_U:
180         return VKEY_U;
181     case AKEYCODE_V:
182         return VKEY_V;
183     case AKEYCODE_W:
184         return VKEY_W;
185     case AKEYCODE_X:
186         return VKEY_X;
187     case AKEYCODE_Y:
188         return VKEY_Y;
189     case AKEYCODE_Z:
190         return VKEY_Z;
191     case AKEYCODE_VOLUME_DOWN:
192         return VKEY_VOLUME_DOWN;
193     case AKEYCODE_VOLUME_UP:
194         return VKEY_VOLUME_UP;
195     case AKEYCODE_MEDIA_NEXT:
196         return VKEY_MEDIA_NEXT_TRACK;
197     case AKEYCODE_MEDIA_PREVIOUS:
198         return VKEY_MEDIA_PREV_TRACK;
199     case AKEYCODE_MEDIA_STOP:
200         return VKEY_MEDIA_STOP;
201     case AKEYCODE_MEDIA_PAUSE:
202         return VKEY_MEDIA_PLAY_PAUSE;
203     // Colon key.
204     case AKEYCODE_SEMICOLON:
205         return VKEY_OEM_1;
206     case AKEYCODE_COMMA:
207         return VKEY_OEM_COMMA;
208     case AKEYCODE_MINUS:
209         return VKEY_OEM_MINUS;
210     case AKEYCODE_EQUALS:
211         return VKEY_OEM_PLUS;
212     case AKEYCODE_PERIOD:
213         return VKEY_OEM_PERIOD;
214     case AKEYCODE_SLASH:
215         return VKEY_OEM_2;
216     case AKEYCODE_LEFT_BRACKET:
217         return VKEY_OEM_4;
218     case AKEYCODE_BACKSLASH:
219         return VKEY_OEM_5;
220     case AKEYCODE_RIGHT_BRACKET:
221         return VKEY_OEM_6;
222     case AKEYCODE_MUTE:
223     case AKEYCODE_VOLUME_MUTE:
224         return VKEY_VOLUME_MUTE;
225     case AKEYCODE_ESCAPE:
226         return VKEY_ESCAPE;
227     case AKEYCODE_MEDIA_PLAY:
228     case AKEYCODE_MEDIA_PLAY_PAUSE:
229         return VKEY_MEDIA_PLAY_PAUSE;
230     case AKEYCODE_CALL:
231         return VKEY_END;
232     case AKEYCODE_ALT_LEFT:
233         return VKEY_LMENU;
234     case AKEYCODE_ALT_RIGHT:
235         return VKEY_RMENU;
236     case AKEYCODE_GRAVE:
237         return VKEY_OEM_3;
238     case AKEYCODE_APOSTROPHE:
239         return VKEY_OEM_3;
240     case AKEYCODE_MEDIA_REWIND:
241         return VKEY_OEM_103;
242     case AKEYCODE_MEDIA_FAST_FORWARD:
243         return VKEY_OEM_104;
244     case AKEYCODE_PAGE_UP:
245         return VKEY_PRIOR;
246     case AKEYCODE_PAGE_DOWN:
247         return VKEY_NEXT;
248     case AKEYCODE_FORWARD_DEL:
249         return VKEY_DELETE;
250     case AKEYCODE_CTRL_LEFT:
251         return VKEY_LCONTROL;
252     case AKEYCODE_CTRL_RIGHT:
253         return VKEY_RCONTROL;
254     case AKEYCODE_CAPS_LOCK:
255         return VKEY_CAPITAL;
256     case AKEYCODE_SCROLL_LOCK:
257         return VKEY_SCROLL;
258     case AKEYCODE_META_LEFT:
259         return VKEY_LWIN;
260     case AKEYCODE_META_RIGHT:
261         return VKEY_RWIN;
262     case AKEYCODE_BREAK:
263         return VKEY_PAUSE;
264     case AKEYCODE_INSERT:
265         return VKEY_INSERT;
266     case AKEYCODE_F1:
267         return VKEY_F1;
268     case AKEYCODE_F2:
269         return VKEY_F2;
270     case AKEYCODE_F3:
271         return VKEY_F3;
272     case AKEYCODE_F4:
273         return VKEY_F4;
274     case AKEYCODE_F5:
275         return VKEY_F5;
276     case AKEYCODE_F6:
277         return VKEY_F6;
278     case AKEYCODE_F7:
279         return VKEY_F7;
280     case AKEYCODE_F8:
281         return VKEY_F8;
282     case AKEYCODE_F9:
283         return VKEY_F9;
284     case AKEYCODE_F10:
285         return VKEY_F10;
286     case AKEYCODE_F11:
287         return VKEY_F11;
288     case AKEYCODE_F12:
289         return VKEY_F12;
290     case AKEYCODE_NUM_LOCK:
291         return VKEY_NUMLOCK;
292     case AKEYCODE_NUMPAD_0:
293         return VKEY_NUMPAD0;
294     case AKEYCODE_NUMPAD_1:
295         return VKEY_NUMPAD1;
296     case AKEYCODE_NUMPAD_2:
297         return VKEY_NUMPAD2;
298     case AKEYCODE_NUMPAD_3:
299         return VKEY_NUMPAD3;
300     case AKEYCODE_NUMPAD_4:
301         return VKEY_NUMPAD4;
302     case AKEYCODE_NUMPAD_5:
303         return VKEY_NUMPAD5;
304     case AKEYCODE_NUMPAD_6:
305         return VKEY_NUMPAD6;
306     case AKEYCODE_NUMPAD_7:
307         return VKEY_NUMPAD7;
308     case AKEYCODE_NUMPAD_8:
309         return VKEY_NUMPAD8;
310     case AKEYCODE_NUMPAD_9:
311         return VKEY_NUMPAD9;
312     case AKEYCODE_NUMPAD_DIVIDE:
313         return VKEY_DIVIDE;
314     case AKEYCODE_NUMPAD_MULTIPLY:
315         return VKEY_MULTIPLY;
316     case AKEYCODE_NUMPAD_SUBTRACT:
317         return VKEY_SUBTRACT;
318     case AKEYCODE_NUMPAD_ADD:
319         return VKEY_ADD;
320     case AKEYCODE_NUMPAD_DOT:
321         return VKEY_DECIMAL;
322     case AKEYCODE_CHANNEL_UP:
323         return VKEY_PRIOR;
324     case AKEYCODE_CHANNEL_DOWN:
325         return VKEY_NEXT;
326     default:
327         return 0;
328     }
329 }
330
331 } // namespace WebCore