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