1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/widget/qt/nsQtKeyUtils.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,499 @@ 1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- 1.5 + * 1.6 + * This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +#include <qnamespace.h> 1.11 +#include "mozilla/ArrayUtils.h" 1.12 +#include "mozilla/TextEvents.h" 1.13 + 1.14 +#include "nsWindow.h" 1.15 +#include "nsQtKeyUtils.h" 1.16 + 1.17 +using namespace mozilla; 1.18 +using namespace mozilla::widget; 1.19 + 1.20 +struct nsKeyConverter 1.21 +{ 1.22 + int vkCode; // Platform independent key code 1.23 + int keysym; // Qt key code 1.24 +}; 1.25 + 1.26 +static struct nsKeyConverter nsKeycodes[] = 1.27 +{ 1.28 +// { NS_VK_CANCEL, Qt::Key_Cancel }, 1.29 + { NS_VK_BACK, Qt::Key_Backspace }, 1.30 + { NS_VK_TAB, Qt::Key_Tab }, 1.31 + { NS_VK_TAB, Qt::Key_Backtab }, 1.32 +// { NS_VK_CLEAR, Qt::Key_Clear }, 1.33 + { NS_VK_RETURN, Qt::Key_Return }, 1.34 + { NS_VK_RETURN, Qt::Key_Enter }, 1.35 + { NS_VK_SHIFT, Qt::Key_Shift }, 1.36 + { NS_VK_CONTROL, Qt::Key_Control }, 1.37 + { NS_VK_ALT, Qt::Key_Alt }, 1.38 + { NS_VK_PAUSE, Qt::Key_Pause }, 1.39 + { NS_VK_CAPS_LOCK, Qt::Key_CapsLock }, 1.40 + { NS_VK_ESCAPE, Qt::Key_Escape }, 1.41 + { NS_VK_SPACE, Qt::Key_Space }, 1.42 + { NS_VK_PAGE_UP, Qt::Key_PageUp }, 1.43 + { NS_VK_PAGE_DOWN, Qt::Key_PageDown }, 1.44 + { NS_VK_END, Qt::Key_End }, 1.45 + { NS_VK_HOME, Qt::Key_Home }, 1.46 + { NS_VK_LEFT, Qt::Key_Left }, 1.47 + { NS_VK_UP, Qt::Key_Up }, 1.48 + { NS_VK_RIGHT, Qt::Key_Right }, 1.49 + { NS_VK_DOWN, Qt::Key_Down }, 1.50 + { NS_VK_PRINTSCREEN, Qt::Key_Print }, 1.51 + { NS_VK_INSERT, Qt::Key_Insert }, 1.52 + { NS_VK_DELETE, Qt::Key_Delete }, 1.53 + { NS_VK_HELP, Qt::Key_Help }, 1.54 + 1.55 + { NS_VK_0, Qt::Key_0 }, 1.56 + { NS_VK_1, Qt::Key_1 }, 1.57 + { NS_VK_2, Qt::Key_2 }, 1.58 + { NS_VK_3, Qt::Key_3 }, 1.59 + { NS_VK_4, Qt::Key_4 }, 1.60 + { NS_VK_5, Qt::Key_5 }, 1.61 + { NS_VK_6, Qt::Key_6 }, 1.62 + { NS_VK_7, Qt::Key_7 }, 1.63 + { NS_VK_8, Qt::Key_8 }, 1.64 + { NS_VK_9, Qt::Key_9 }, 1.65 + 1.66 + { NS_VK_SEMICOLON, Qt::Key_Semicolon }, 1.67 + { NS_VK_EQUALS, Qt::Key_Equal }, 1.68 + 1.69 + { NS_VK_A, Qt::Key_A }, 1.70 + { NS_VK_B, Qt::Key_B }, 1.71 + { NS_VK_C, Qt::Key_C }, 1.72 + { NS_VK_D, Qt::Key_D }, 1.73 + { NS_VK_E, Qt::Key_E }, 1.74 + { NS_VK_F, Qt::Key_F }, 1.75 + { NS_VK_G, Qt::Key_G }, 1.76 + { NS_VK_H, Qt::Key_H }, 1.77 + { NS_VK_I, Qt::Key_I }, 1.78 + { NS_VK_J, Qt::Key_J }, 1.79 + { NS_VK_K, Qt::Key_K }, 1.80 + { NS_VK_L, Qt::Key_L }, 1.81 + { NS_VK_M, Qt::Key_M }, 1.82 + { NS_VK_N, Qt::Key_N }, 1.83 + { NS_VK_O, Qt::Key_O }, 1.84 + { NS_VK_P, Qt::Key_P }, 1.85 + { NS_VK_Q, Qt::Key_Q }, 1.86 + { NS_VK_R, Qt::Key_R }, 1.87 + { NS_VK_S, Qt::Key_S }, 1.88 + { NS_VK_T, Qt::Key_T }, 1.89 + { NS_VK_U, Qt::Key_U }, 1.90 + { NS_VK_V, Qt::Key_V }, 1.91 + { NS_VK_W, Qt::Key_W }, 1.92 + { NS_VK_X, Qt::Key_X }, 1.93 + { NS_VK_Y, Qt::Key_Y }, 1.94 + { NS_VK_Z, Qt::Key_Z }, 1.95 + 1.96 + { NS_VK_NUMPAD0, Qt::Key_0 }, 1.97 + { NS_VK_NUMPAD1, Qt::Key_1 }, 1.98 + { NS_VK_NUMPAD2, Qt::Key_2 }, 1.99 + { NS_VK_NUMPAD3, Qt::Key_3 }, 1.100 + { NS_VK_NUMPAD4, Qt::Key_4 }, 1.101 + { NS_VK_NUMPAD5, Qt::Key_5 }, 1.102 + { NS_VK_NUMPAD6, Qt::Key_6 }, 1.103 + { NS_VK_NUMPAD7, Qt::Key_7 }, 1.104 + { NS_VK_NUMPAD8, Qt::Key_8 }, 1.105 + { NS_VK_NUMPAD9, Qt::Key_9 }, 1.106 + { NS_VK_MULTIPLY, Qt::Key_Asterisk }, 1.107 + { NS_VK_ADD, Qt::Key_Plus }, 1.108 +// { NS_VK_SEPARATOR, Qt::Key_Separator }, 1.109 + { NS_VK_SUBTRACT, Qt::Key_Minus }, 1.110 + { NS_VK_DECIMAL, Qt::Key_Period }, 1.111 + { NS_VK_DIVIDE, Qt::Key_Slash }, 1.112 + { NS_VK_F1, Qt::Key_F1 }, 1.113 + { NS_VK_F2, Qt::Key_F2 }, 1.114 + { NS_VK_F3, Qt::Key_F3 }, 1.115 + { NS_VK_F4, Qt::Key_F4 }, 1.116 + { NS_VK_F5, Qt::Key_F5 }, 1.117 + { NS_VK_F6, Qt::Key_F6 }, 1.118 + { NS_VK_F7, Qt::Key_F7 }, 1.119 + { NS_VK_F8, Qt::Key_F8 }, 1.120 + { NS_VK_F9, Qt::Key_F9 }, 1.121 + { NS_VK_F10, Qt::Key_F10 }, 1.122 + { NS_VK_F11, Qt::Key_F11 }, 1.123 + { NS_VK_F12, Qt::Key_F12 }, 1.124 + { NS_VK_F13, Qt::Key_F13 }, 1.125 + { NS_VK_F14, Qt::Key_F14 }, 1.126 + { NS_VK_F15, Qt::Key_F15 }, 1.127 + { NS_VK_F16, Qt::Key_F16 }, 1.128 + { NS_VK_F17, Qt::Key_F17 }, 1.129 + { NS_VK_F18, Qt::Key_F18 }, 1.130 + { NS_VK_F19, Qt::Key_F19 }, 1.131 + { NS_VK_F20, Qt::Key_F20 }, 1.132 + { NS_VK_F21, Qt::Key_F21 }, 1.133 + { NS_VK_F22, Qt::Key_F22 }, 1.134 + { NS_VK_F23, Qt::Key_F23 }, 1.135 + { NS_VK_F24, Qt::Key_F24 }, 1.136 + 1.137 + { NS_VK_NUM_LOCK, Qt::Key_NumLock }, 1.138 + { NS_VK_SCROLL_LOCK, Qt::Key_ScrollLock }, 1.139 + 1.140 + { NS_VK_COMMA, Qt::Key_Comma }, 1.141 + { NS_VK_PERIOD, Qt::Key_Period }, 1.142 + { NS_VK_SLASH, Qt::Key_Slash }, 1.143 + { NS_VK_BACK_QUOTE, Qt::Key_QuoteLeft }, 1.144 + { NS_VK_OPEN_BRACKET, Qt::Key_ParenLeft }, 1.145 + { NS_VK_CLOSE_BRACKET, Qt::Key_ParenRight }, 1.146 + { NS_VK_QUOTE, Qt::Key_QuoteDbl }, 1.147 + 1.148 + { NS_VK_META, Qt::Key_Meta } 1.149 +}; 1.150 + 1.151 +int 1.152 +QtKeyCodeToDOMKeyCode(int aKeysym) 1.153 +{ 1.154 + unsigned int i; 1.155 + 1.156 + // First, try to handle alphanumeric input, not listed in nsKeycodes: 1.157 + // most likely, more letters will be getting typed in than things in 1.158 + // the key list, so we will look through these first. 1.159 + 1.160 + // since X has different key symbols for upper and lowercase letters and 1.161 + // mozilla does not, convert gdk's to mozilla's 1.162 + if (aKeysym >= Qt::Key_A && aKeysym <= Qt::Key_Z) 1.163 + return aKeysym - Qt::Key_A + NS_VK_A; 1.164 + 1.165 + // numbers 1.166 + if (aKeysym >= Qt::Key_0 && aKeysym <= Qt::Key_9) 1.167 + return aKeysym - Qt::Key_0 + NS_VK_0; 1.168 + 1.169 + // keypad numbers 1.170 +// if (aKeysym >= Qt::Key_KP_0 && aKeysym <= Qt::Key_KP_9) 1.171 +// return aKeysym - Qt::Key_KP_0 + NS_VK_NUMPAD0; 1.172 + 1.173 + // misc other things 1.174 + for (i = 0; i < ArrayLength(nsKeycodes); i++) { 1.175 + if (nsKeycodes[i].keysym == aKeysym) 1.176 + return(nsKeycodes[i].vkCode); 1.177 + } 1.178 + 1.179 + // function keys 1.180 + if (aKeysym >= Qt::Key_F1 && aKeysym <= Qt::Key_F24) 1.181 + return aKeysym - Qt::Key_F1 + NS_VK_F1; 1.182 + 1.183 + return((int)0); 1.184 +} 1.185 + 1.186 +int 1.187 +DOMKeyCodeToQtKeyCode(int aKeysym) 1.188 +{ 1.189 + unsigned int i; 1.190 + 1.191 + // First, try to handle alphanumeric input, not listed in nsKeycodes: 1.192 + // most likely, more letters will be getting typed in than things in 1.193 + // the key list, so we will look through these first. 1.194 + 1.195 + if (aKeysym >= NS_VK_A && aKeysym <= NS_VK_Z) 1.196 + // gdk and DOM both use the ASCII codes for these keys. 1.197 + return aKeysym; 1.198 + 1.199 + // numbers 1.200 + if (aKeysym >= NS_VK_0 && aKeysym <= NS_VK_9) 1.201 + // gdk and DOM both use the ASCII codes for these keys. 1.202 + return aKeysym - Qt::Key_0 + NS_VK_0; 1.203 + 1.204 + // keypad numbers 1.205 + if (aKeysym >= NS_VK_NUMPAD0 && aKeysym <= NS_VK_NUMPAD9) { 1.206 + NS_ERROR("keypad numbers conversion not implemented"); 1.207 + //return aKeysym - NS_VK_NUMPAD0 + Qt::Key_KP_0; 1.208 + return 0; 1.209 + } 1.210 + 1.211 + // misc other things 1.212 + for (i = 0; i < ArrayLength(nsKeycodes); ++i) { 1.213 + if (nsKeycodes[i].vkCode == aKeysym) { 1.214 + return nsKeycodes[i].keysym; 1.215 + } 1.216 + } 1.217 + 1.218 + // function keys 1.219 + if (aKeysym >= NS_VK_F1 && aKeysym <= NS_VK_F9) 1.220 + return aKeysym - NS_VK_F1 + Qt::Key_F1; 1.221 + 1.222 + return 0; 1.223 +} 1.224 + 1.225 +KeyNameIndex 1.226 +QtKeyCodeToDOMKeyNameIndex(int aKeysym) 1.227 +{ 1.228 + switch (aKeysym) { 1.229 + 1.230 +#define NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, aKeyNameIndex) \ 1.231 + case aNativeKey: return aKeyNameIndex; 1.232 + 1.233 +#include "NativeKeyToDOMKeyName.h" 1.234 + 1.235 +#undef NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX 1.236 + 1.237 + case Qt::Key_Exclam: 1.238 + case Qt::Key_QuoteDbl: 1.239 + case Qt::Key_NumberSign: 1.240 + case Qt::Key_Dollar: 1.241 + case Qt::Key_Percent: 1.242 + case Qt::Key_Ampersand: 1.243 + case Qt::Key_Apostrophe: 1.244 + case Qt::Key_ParenLeft: 1.245 + case Qt::Key_ParenRight: 1.246 + case Qt::Key_Asterisk: 1.247 + case Qt::Key_Plus: 1.248 + case Qt::Key_Comma: 1.249 + case Qt::Key_Minus: 1.250 + case Qt::Key_Period: 1.251 + case Qt::Key_Slash: 1.252 + case Qt::Key_0: 1.253 + case Qt::Key_1: 1.254 + case Qt::Key_2: 1.255 + case Qt::Key_3: 1.256 + case Qt::Key_4: 1.257 + case Qt::Key_5: 1.258 + case Qt::Key_6: 1.259 + case Qt::Key_7: 1.260 + case Qt::Key_8: 1.261 + case Qt::Key_9: 1.262 + case Qt::Key_Colon: 1.263 + case Qt::Key_Semicolon: 1.264 + case Qt::Key_Less: 1.265 + case Qt::Key_Equal: 1.266 + case Qt::Key_Greater: 1.267 + case Qt::Key_Question: 1.268 + case Qt::Key_At: 1.269 + case Qt::Key_A: 1.270 + case Qt::Key_B: 1.271 + case Qt::Key_C: 1.272 + case Qt::Key_D: 1.273 + case Qt::Key_E: 1.274 + case Qt::Key_F: 1.275 + case Qt::Key_G: 1.276 + case Qt::Key_H: 1.277 + case Qt::Key_I: 1.278 + case Qt::Key_J: 1.279 + case Qt::Key_K: 1.280 + case Qt::Key_L: 1.281 + case Qt::Key_M: 1.282 + case Qt::Key_N: 1.283 + case Qt::Key_O: 1.284 + case Qt::Key_P: 1.285 + case Qt::Key_Q: 1.286 + case Qt::Key_R: 1.287 + case Qt::Key_S: 1.288 + case Qt::Key_T: 1.289 + case Qt::Key_U: 1.290 + case Qt::Key_V: 1.291 + case Qt::Key_W: 1.292 + case Qt::Key_X: 1.293 + case Qt::Key_Y: 1.294 + case Qt::Key_Z: 1.295 + case Qt::Key_BracketLeft: 1.296 + case Qt::Key_Backslash: 1.297 + case Qt::Key_BracketRight: 1.298 + case Qt::Key_AsciiCircum: 1.299 + case Qt::Key_Underscore: 1.300 + case Qt::Key_QuoteLeft: 1.301 + case Qt::Key_BraceLeft: 1.302 + case Qt::Key_Bar: 1.303 + case Qt::Key_BraceRight: 1.304 + case Qt::Key_AsciiTilde: 1.305 + case Qt::Key_exclamdown: 1.306 + case Qt::Key_cent: 1.307 + case Qt::Key_sterling: 1.308 + case Qt::Key_currency: 1.309 + case Qt::Key_yen: 1.310 + case Qt::Key_brokenbar: 1.311 + case Qt::Key_section: 1.312 + case Qt::Key_diaeresis: 1.313 + case Qt::Key_copyright: 1.314 + case Qt::Key_ordfeminine: 1.315 + case Qt::Key_guillemotleft: 1.316 + case Qt::Key_notsign: 1.317 + case Qt::Key_hyphen: 1.318 + case Qt::Key_registered: 1.319 + case Qt::Key_macron: 1.320 + case Qt::Key_degree: 1.321 + case Qt::Key_plusminus: 1.322 + case Qt::Key_twosuperior: 1.323 + case Qt::Key_threesuperior: 1.324 + case Qt::Key_acute: 1.325 + case Qt::Key_mu: 1.326 + case Qt::Key_paragraph: 1.327 + case Qt::Key_periodcentered: 1.328 + case Qt::Key_cedilla: 1.329 + case Qt::Key_onesuperior: 1.330 + case Qt::Key_masculine: 1.331 + case Qt::Key_guillemotright: 1.332 + case Qt::Key_onequarter: 1.333 + case Qt::Key_onehalf: 1.334 + case Qt::Key_threequarters: 1.335 + case Qt::Key_questiondown: 1.336 + case Qt::Key_Agrave: 1.337 + case Qt::Key_Aacute: 1.338 + case Qt::Key_Acircumflex: 1.339 + case Qt::Key_Atilde: 1.340 + case Qt::Key_Adiaeresis: 1.341 + case Qt::Key_Aring: 1.342 + case Qt::Key_AE: 1.343 + case Qt::Key_Ccedilla: 1.344 + case Qt::Key_Egrave: 1.345 + case Qt::Key_Eacute: 1.346 + case Qt::Key_Ecircumflex: 1.347 + case Qt::Key_Ediaeresis: 1.348 + case Qt::Key_Igrave: 1.349 + case Qt::Key_Iacute: 1.350 + case Qt::Key_Icircumflex: 1.351 + case Qt::Key_Idiaeresis: 1.352 + case Qt::Key_ETH: 1.353 + case Qt::Key_Ntilde: 1.354 + case Qt::Key_Ograve: 1.355 + case Qt::Key_Oacute: 1.356 + case Qt::Key_Ocircumflex: 1.357 + case Qt::Key_Otilde: 1.358 + case Qt::Key_Odiaeresis: 1.359 + case Qt::Key_multiply: 1.360 + case Qt::Key_Ooblique: 1.361 + case Qt::Key_Ugrave: 1.362 + case Qt::Key_Uacute: 1.363 + case Qt::Key_Ucircumflex: 1.364 + case Qt::Key_Udiaeresis: 1.365 + case Qt::Key_Yacute: 1.366 + case Qt::Key_THORN: 1.367 + case Qt::Key_ssharp: 1.368 + case Qt::Key_division: 1.369 + case Qt::Key_ydiaeresis: 1.370 + return KEY_NAME_INDEX_PrintableKey; 1.371 + 1.372 + case Qt::Key_Backtab: 1.373 + case Qt::Key_Direction_L: 1.374 + case Qt::Key_Direction_R: 1.375 + case Qt::Key_SingleCandidate: 1.376 + case Qt::Key_Hiragana_Katakana: 1.377 + case Qt::Key_Zenkaku_Hankaku: 1.378 + case Qt::Key_Touroku: 1.379 + case Qt::Key_Massyo: 1.380 + case Qt::Key_Hangul: 1.381 + case Qt::Key_Hangul_Start: 1.382 + case Qt::Key_Hangul_End: 1.383 + case Qt::Key_Hangul_Hanja: 1.384 + case Qt::Key_Hangul_Jamo: 1.385 + case Qt::Key_Hangul_Romaja: 1.386 + case Qt::Key_Hangul_Jeonja: 1.387 + case Qt::Key_Hangul_Banja: 1.388 + case Qt::Key_Hangul_PreHanja: 1.389 + case Qt::Key_Hangul_PostHanja: 1.390 + case Qt::Key_Hangul_Special: 1.391 + case Qt::Key_Dead_Belowdot: 1.392 + case Qt::Key_Dead_Hook: 1.393 + case Qt::Key_Dead_Horn: 1.394 + case Qt::Key_TrebleUp: 1.395 + case Qt::Key_TrebleDown: 1.396 + case Qt::Key_Standby: 1.397 + case Qt::Key_OpenUrl: 1.398 + case Qt::Key_LaunchMedia: 1.399 + case Qt::Key_KeyboardLightOnOff: 1.400 + case Qt::Key_KeyboardBrightnessUp: 1.401 + case Qt::Key_KeyboardBrightnessDown: 1.402 + case Qt::Key_WakeUp: 1.403 + case Qt::Key_ScreenSaver: 1.404 + case Qt::Key_WWW: 1.405 + case Qt::Key_Memo: 1.406 + case Qt::Key_LightBulb: 1.407 + case Qt::Key_Shop: 1.408 + case Qt::Key_History: 1.409 + case Qt::Key_AddFavorite: 1.410 + case Qt::Key_HotLinks: 1.411 + case Qt::Key_Finance: 1.412 + case Qt::Key_Community: 1.413 + case Qt::Key_BackForward: 1.414 + case Qt::Key_ApplicationLeft: 1.415 + case Qt::Key_ApplicationRight: 1.416 + case Qt::Key_Book: 1.417 + case Qt::Key_CD: 1.418 + case Qt::Key_Calculator: 1.419 + case Qt::Key_ToDoList: 1.420 + case Qt::Key_ClearGrab: 1.421 + case Qt::Key_Close: 1.422 + case Qt::Key_Display: 1.423 + case Qt::Key_DOS: 1.424 + case Qt::Key_Documents: 1.425 + case Qt::Key_Excel: 1.426 + case Qt::Key_Explorer: 1.427 + case Qt::Key_Game: 1.428 + case Qt::Key_Go: 1.429 + case Qt::Key_iTouch: 1.430 + case Qt::Key_LogOff: 1.431 + case Qt::Key_Market: 1.432 + case Qt::Key_Meeting: 1.433 + case Qt::Key_MenuKB: 1.434 + case Qt::Key_MenuPB: 1.435 + case Qt::Key_MySites: 1.436 + case Qt::Key_News: 1.437 + case Qt::Key_OfficeHome: 1.438 + case Qt::Key_Option: 1.439 + case Qt::Key_Phone: 1.440 + case Qt::Key_Calendar: 1.441 + case Qt::Key_Reply: 1.442 + case Qt::Key_RotateWindows: 1.443 + case Qt::Key_RotationPB: 1.444 + case Qt::Key_RotationKB: 1.445 + case Qt::Key_Save: 1.446 + case Qt::Key_Send: 1.447 + case Qt::Key_Spell: 1.448 + case Qt::Key_SplitScreen: 1.449 + case Qt::Key_Support: 1.450 + case Qt::Key_TaskPane: 1.451 + case Qt::Key_Terminal: 1.452 + case Qt::Key_Tools: 1.453 + case Qt::Key_Travel: 1.454 + case Qt::Key_Video: 1.455 + case Qt::Key_Word: 1.456 + case Qt::Key_Xfer: 1.457 + case Qt::Key_ZoomIn: 1.458 + case Qt::Key_ZoomOut: 1.459 + case Qt::Key_Away: 1.460 + case Qt::Key_Messenger: 1.461 + case Qt::Key_WebCam: 1.462 + case Qt::Key_MailForward: 1.463 + case Qt::Key_Pictures: 1.464 + case Qt::Key_Music: 1.465 + case Qt::Key_Battery: 1.466 + case Qt::Key_Bluetooth: 1.467 + case Qt::Key_WLAN: 1.468 + case Qt::Key_UWB: 1.469 + case Qt::Key_AudioRepeat: 1.470 + case Qt::Key_AudioCycleTrack: 1.471 + case Qt::Key_Time: 1.472 + case Qt::Key_Hibernate: 1.473 + case Qt::Key_View: 1.474 + case Qt::Key_TopMenu: 1.475 + case Qt::Key_PowerDown: 1.476 + case Qt::Key_Suspend: 1.477 + case Qt::Key_ContrastAdjust: 1.478 + case Qt::Key_TouchpadToggle: 1.479 + case Qt::Key_TouchpadOn: 1.480 + case Qt::Key_TouchpadOff: 1.481 + case Qt::Key_unknown: 1.482 + case Qt::Key_Call: 1.483 + case Qt::Key_CameraFocus: 1.484 + case Qt::Key_Context1: 1.485 + case Qt::Key_Context2: 1.486 + case Qt::Key_Context3: 1.487 + case Qt::Key_Context4: 1.488 + case Qt::Key_Flip: 1.489 + case Qt::Key_Hangup: 1.490 + case Qt::Key_No: 1.491 + case Qt::Key_Select: 1.492 + case Qt::Key_Yes: 1.493 + case Qt::Key_ToggleCallHangup: 1.494 + case Qt::Key_VoiceDial: 1.495 + case Qt::Key_LastNumberRedial: 1.496 + case Qt::Key_Printer: 1.497 + case Qt::Key_Sleep: 1.498 + default: 1.499 + return KEY_NAME_INDEX_Unidentified; 1.500 + } 1.501 +} 1.502 +