1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/widget/gonk/GonkKeyMapping.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,283 @@ 1.4 +/* Copyright 2012 Mozilla Foundation and Mozilla contributors 1.5 + * 1.6 + * Licensed under the Apache License, Version 2.0 (the "License"); 1.7 + * you may not use this file except in compliance with the License. 1.8 + * You may obtain a copy of the License at 1.9 + * 1.10 + * http://www.apache.org/licenses/LICENSE-2.0 1.11 + * 1.12 + * Unless required by applicable law or agreed to in writing, software 1.13 + * distributed under the License is distributed on an "AS IS" BASIS, 1.14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1.15 + * See the License for the specific language governing permissions and 1.16 + * limitations under the License. 1.17 + */ 1.18 + 1.19 +#ifndef GONKKEYMAPPING_H 1.20 +#define GONKKEYMAPPING_H 1.21 + 1.22 +#include "libui/android_keycodes.h" 1.23 +#include "mozilla/EventForwards.h" 1.24 + 1.25 +namespace mozilla { 1.26 +namespace widget { 1.27 + 1.28 +/* See libui/KeycodeLabels.h for the mapping */ 1.29 +static const unsigned long kKeyMapping[] = { 1.30 + 0, 1.31 + 0, // SOFT_LEFT 1.32 + 0, // SOFT_RIGHT 1.33 + NS_VK_HOME, // HOME 1.34 + 0, // BACK 1.35 + 0, // CALL 1.36 + NS_VK_SLEEP, // ENDCALL 1.37 + NS_VK_0, 1.38 + NS_VK_1, 1.39 + NS_VK_2, 1.40 + NS_VK_3, 1.41 + NS_VK_4, 1.42 + NS_VK_5, 1.43 + NS_VK_6, 1.44 + NS_VK_7, 1.45 + NS_VK_8, 1.46 + NS_VK_9, 1.47 + NS_VK_ASTERISK, 1.48 + NS_VK_HASH, 1.49 + NS_VK_UP, 1.50 + NS_VK_DOWN, 1.51 + NS_VK_LEFT, 1.52 + NS_VK_RIGHT, 1.53 + NS_VK_SELECT, 1.54 + NS_VK_PAGE_UP, // VOLUME_UP 1.55 + NS_VK_PAGE_DOWN, // VOLUME_DOWN 1.56 + NS_VK_SLEEP, // POWER 1.57 + NS_VK_PRINTSCREEN, // CAMERA 1.58 + NS_VK_CLEAR, 1.59 + NS_VK_A, 1.60 + NS_VK_B, 1.61 + NS_VK_C, 1.62 + NS_VK_D, 1.63 + NS_VK_E, 1.64 + NS_VK_F, 1.65 + NS_VK_G, 1.66 + NS_VK_H, 1.67 + NS_VK_I, 1.68 + NS_VK_J, 1.69 + NS_VK_K, 1.70 + NS_VK_L, 1.71 + NS_VK_M, 1.72 + NS_VK_N, 1.73 + NS_VK_O, 1.74 + NS_VK_P, 1.75 + NS_VK_Q, 1.76 + NS_VK_R, 1.77 + NS_VK_S, 1.78 + NS_VK_T, 1.79 + NS_VK_U, 1.80 + NS_VK_V, 1.81 + NS_VK_W, 1.82 + NS_VK_X, 1.83 + NS_VK_Y, 1.84 + NS_VK_Z, 1.85 + NS_VK_COMMA, 1.86 + NS_VK_PERIOD, 1.87 + 0, 1.88 + 0, 1.89 + 0, 1.90 + 0, 1.91 + NS_VK_TAB, 1.92 + NS_VK_SPACE, 1.93 + NS_VK_META, // SYM 1.94 + 0, // EXPLORER 1.95 + 0, // ENVELOPE 1.96 + NS_VK_RETURN, // ENTER 1.97 + NS_VK_BACK, 1.98 + NS_VK_BACK_QUOTE, // GRAVE 1.99 + NS_VK_HYPHEN_MINUS, 1.100 + NS_VK_EQUALS, 1.101 + NS_VK_OPEN_BRACKET, 1.102 + NS_VK_CLOSE_BRACKET, 1.103 + NS_VK_BACK_SLASH, 1.104 + NS_VK_SEMICOLON, 1.105 + NS_VK_QUOTE, 1.106 + NS_VK_SLASH, 1.107 + NS_VK_AT, 1.108 + 0, // NUM 1.109 + NS_VK_F1, // HEADSETHOOK 1.110 + 0, // FOCUS 1.111 + NS_VK_PLUS, 1.112 + NS_VK_CONTEXT_MENU, 1.113 + 0, // NOTIFICATION 1.114 + NS_VK_F5, // SEARCH 1.115 + 0, // MEDIA_PLAY_PAUSE 1.116 + 0, // MEDIA_STOP 1.117 + 0, // MEDIA_NEXT 1.118 + 0, // MEDIA_PREVIOUS 1.119 + 0, // MEDIA_REWIND 1.120 + 0, // MEDIA_FAST_FORWARD 1.121 + 0, // MUTE 1.122 + 0, // PAGE_UP 1.123 + 0, // PAGE_DOWN 1.124 + 0, // PICTSYMBOLS 1.125 + 0, // SWITCH_CHARSET 1.126 + 0, // BUTTON_A 1.127 + 0, // BUTTON_B 1.128 + 0, // BUTTON_C 1.129 + 0, // BUTTON_X 1.130 + 0, // BUTTON_Y 1.131 + 0, // BUTTON_Z 1.132 + 0, // BUTTON_L1 1.133 + 0, // BUTTON_R1 1.134 + 0, // BUTTON_L2 1.135 + 0, // BUTTON_R2 1.136 + 0, // BUTTON_THUMBL 1.137 + 0, // BUTTON_THUMBR 1.138 + 0, // BUTTON_START 1.139 + 0, // BUTTON_SELECT 1.140 + 0, // BUTTON_MODE 1.141 + 0, // ESCAPE 1.142 + NS_VK_DELETE, 1.143 + 0, // CTRL_LEFT 1.144 + 0, // CTRL_RIGHT 1.145 + NS_VK_CAPS_LOCK, 1.146 + NS_VK_SCROLL_LOCK, 1.147 + 0, // META_LEFT 1.148 + 0, // META_RIGHT 1.149 + 0, // FUNCTION 1.150 + 0, // SYSRQ 1.151 + 0, // BREAK 1.152 + NS_VK_HOME, // MOVE_HOME 1.153 + NS_VK_END, 1.154 + NS_VK_INSERT, 1.155 + 0, // FORWARD 1.156 + 0, // MEDIA_PLAY 1.157 + 0, // MEDIA_PAUSE 1.158 + 0, // MEDIA_CLOSE 1.159 + 0, // MEDIA_EJECT 1.160 + 0, // MEDIA_RECORD 1.161 + NS_VK_F1, 1.162 + NS_VK_F2, 1.163 + NS_VK_F3, 1.164 + NS_VK_F4, 1.165 + NS_VK_F5, 1.166 + NS_VK_F6, 1.167 + NS_VK_F7, 1.168 + NS_VK_F8, 1.169 + NS_VK_F9, 1.170 + NS_VK_F10, 1.171 + NS_VK_F11, 1.172 + NS_VK_F12, 1.173 + NS_VK_NUM_LOCK, 1.174 + NS_VK_NUMPAD0, 1.175 + NS_VK_NUMPAD1, 1.176 + NS_VK_NUMPAD2, 1.177 + NS_VK_NUMPAD3, 1.178 + NS_VK_NUMPAD4, 1.179 + NS_VK_NUMPAD5, 1.180 + NS_VK_NUMPAD6, 1.181 + NS_VK_NUMPAD7, 1.182 + NS_VK_NUMPAD8, 1.183 + NS_VK_NUMPAD9, 1.184 + NS_VK_DIVIDE, 1.185 + NS_VK_MULTIPLY, 1.186 + NS_VK_SUBTRACT, 1.187 + NS_VK_ADD, 1.188 + NS_VK_PERIOD, 1.189 + NS_VK_COMMA, 1.190 + NS_VK_RETURN, 1.191 + NS_VK_EQUALS, 1.192 + // There are more but we don't map them 1.193 +}; 1.194 + 1.195 +static KeyNameIndex GetKeyNameIndex(int aKeyCode) 1.196 +{ 1.197 + switch (aKeyCode) { 1.198 +#define NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, aKeyNameIndex) \ 1.199 + case aNativeKey: return aKeyNameIndex; 1.200 + 1.201 +#include "NativeKeyToDOMKeyName.h" 1.202 + 1.203 +#undef NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX 1.204 + 1.205 + case AKEYCODE_0: 1.206 + case AKEYCODE_1: 1.207 + case AKEYCODE_2: 1.208 + case AKEYCODE_3: 1.209 + case AKEYCODE_4: 1.210 + case AKEYCODE_5: 1.211 + case AKEYCODE_6: 1.212 + case AKEYCODE_7: 1.213 + case AKEYCODE_8: 1.214 + case AKEYCODE_9: 1.215 + case AKEYCODE_STAR: 1.216 + case AKEYCODE_POUND: 1.217 + case AKEYCODE_A: 1.218 + case AKEYCODE_B: 1.219 + case AKEYCODE_C: 1.220 + case AKEYCODE_D: 1.221 + case AKEYCODE_E: 1.222 + case AKEYCODE_F: 1.223 + case AKEYCODE_G: 1.224 + case AKEYCODE_H: 1.225 + case AKEYCODE_I: 1.226 + case AKEYCODE_J: 1.227 + case AKEYCODE_K: 1.228 + case AKEYCODE_L: 1.229 + case AKEYCODE_M: 1.230 + case AKEYCODE_N: 1.231 + case AKEYCODE_O: 1.232 + case AKEYCODE_P: 1.233 + case AKEYCODE_Q: 1.234 + case AKEYCODE_R: 1.235 + case AKEYCODE_S: 1.236 + case AKEYCODE_T: 1.237 + case AKEYCODE_U: 1.238 + case AKEYCODE_V: 1.239 + case AKEYCODE_W: 1.240 + case AKEYCODE_X: 1.241 + case AKEYCODE_Y: 1.242 + case AKEYCODE_Z: 1.243 + case AKEYCODE_COMMA: 1.244 + case AKEYCODE_PERIOD: 1.245 + case AKEYCODE_SPACE: 1.246 + case AKEYCODE_GRAVE: 1.247 + case AKEYCODE_MINUS: 1.248 + case AKEYCODE_EQUALS: 1.249 + case AKEYCODE_LEFT_BRACKET: 1.250 + case AKEYCODE_RIGHT_BRACKET: 1.251 + case AKEYCODE_BACKSLASH: 1.252 + case AKEYCODE_SEMICOLON: 1.253 + case AKEYCODE_APOSTROPHE: 1.254 + case AKEYCODE_SLASH: 1.255 + case AKEYCODE_AT: 1.256 + case AKEYCODE_PLUS: 1.257 + case AKEYCODE_NUMPAD_0: 1.258 + case AKEYCODE_NUMPAD_1: 1.259 + case AKEYCODE_NUMPAD_2: 1.260 + case AKEYCODE_NUMPAD_3: 1.261 + case AKEYCODE_NUMPAD_4: 1.262 + case AKEYCODE_NUMPAD_5: 1.263 + case AKEYCODE_NUMPAD_6: 1.264 + case AKEYCODE_NUMPAD_7: 1.265 + case AKEYCODE_NUMPAD_8: 1.266 + case AKEYCODE_NUMPAD_9: 1.267 + case AKEYCODE_NUMPAD_DIVIDE: 1.268 + case AKEYCODE_NUMPAD_MULTIPLY: 1.269 + case AKEYCODE_NUMPAD_SUBTRACT: 1.270 + case AKEYCODE_NUMPAD_ADD: 1.271 + case AKEYCODE_NUMPAD_DOT: 1.272 + case AKEYCODE_NUMPAD_COMMA: 1.273 + case AKEYCODE_NUMPAD_EQUALS: 1.274 + case AKEYCODE_NUMPAD_LEFT_PAREN: 1.275 + case AKEYCODE_NUMPAD_RIGHT_PAREN: 1.276 + return KEY_NAME_INDEX_USE_STRING; 1.277 + 1.278 + default: 1.279 + return KEY_NAME_INDEX_Unidentified; 1.280 + } 1.281 +} 1.282 + 1.283 +} // namespace widget 1.284 +} // namespace mozilla 1.285 + 1.286 +#endif /* GONKKEYMAPPING_H */