1 #include "shortcutmanager.hpp" 2 3 #include <algorithm> 4 5 #include <QApplication> 6 #include <QStringList> 7 8 #include "shortcut.hpp" 9 #include "shortcuteventhandler.hpp" 10 11 namespace CSMPrefs 12 { ShortcutManager()13 ShortcutManager::ShortcutManager() 14 { 15 createLookupTables(); 16 mEventHandler = new ShortcutEventHandler(this); 17 } 18 addShortcut(Shortcut * shortcut)19 void ShortcutManager::addShortcut(Shortcut* shortcut) 20 { 21 mShortcuts.insert(std::make_pair(shortcut->getName(), shortcut)); 22 mShortcuts.insert(std::make_pair(shortcut->getModifierName(), shortcut)); 23 mEventHandler->addShortcut(shortcut); 24 } 25 removeShortcut(Shortcut * shortcut)26 void ShortcutManager::removeShortcut(Shortcut* shortcut) 27 { 28 std::pair<ShortcutMap::iterator, ShortcutMap::iterator> range = mShortcuts.equal_range(shortcut->getName()); 29 30 for (ShortcutMap::iterator it = range.first; it != range.second;) 31 { 32 if (it->second == shortcut) 33 { 34 mShortcuts.erase(it++); 35 } 36 else 37 { 38 ++it; 39 } 40 } 41 42 mEventHandler->removeShortcut(shortcut); 43 } 44 getSequence(const std::string & name,QKeySequence & sequence) const45 bool ShortcutManager::getSequence(const std::string& name, QKeySequence& sequence) const 46 { 47 SequenceMap::const_iterator item = mSequences.find(name); 48 if (item != mSequences.end()) 49 { 50 sequence = item->second; 51 52 return true; 53 } 54 else 55 return false; 56 } 57 setSequence(const std::string & name,const QKeySequence & sequence)58 void ShortcutManager::setSequence(const std::string& name, const QKeySequence& sequence) 59 { 60 // Add to map/modify 61 SequenceMap::iterator item = mSequences.find(name); 62 if (item != mSequences.end()) 63 { 64 item->second = sequence; 65 } 66 else 67 { 68 mSequences.insert(std::make_pair(name, sequence)); 69 } 70 71 // Change active shortcuts 72 std::pair<ShortcutMap::iterator, ShortcutMap::iterator> rangeS = mShortcuts.equal_range(name); 73 74 for (ShortcutMap::iterator it = rangeS.first; it != rangeS.second; ++it) 75 { 76 it->second->setSequence(sequence); 77 } 78 } 79 getModifier(const std::string & name,int & modifier) const80 bool ShortcutManager::getModifier(const std::string& name, int& modifier) const 81 { 82 ModifierMap::const_iterator item = mModifiers.find(name); 83 if (item != mModifiers.end()) 84 { 85 modifier = item->second; 86 87 return true; 88 } 89 else 90 return false; 91 } 92 setModifier(const std::string & name,int modifier)93 void ShortcutManager::setModifier(const std::string& name, int modifier) 94 { 95 // Add to map/modify 96 ModifierMap::iterator item = mModifiers.find(name); 97 if (item != mModifiers.end()) 98 { 99 item->second = modifier; 100 } 101 else 102 { 103 mModifiers.insert(std::make_pair(name, modifier)); 104 } 105 106 // Change active shortcuts 107 std::pair<ShortcutMap::iterator, ShortcutMap::iterator> rangeS = mShortcuts.equal_range(name); 108 109 for (ShortcutMap::iterator it = rangeS.first; it != rangeS.second; ++it) 110 { 111 it->second->setModifier(modifier); 112 } 113 } 114 convertToString(const QKeySequence & sequence) const115 std::string ShortcutManager::convertToString(const QKeySequence& sequence) const 116 { 117 const int MouseKeyMask = 0x01FFFFFF; 118 const int ModMask = 0x7E000000; 119 120 std::string result; 121 122 for (int i = 0; i < (int)sequence.count(); ++i) 123 { 124 int mods = sequence[i] & ModMask; 125 int key = sequence[i] & MouseKeyMask; 126 127 if (key) 128 { 129 NameMap::const_iterator searchResult = mNames.find(key); 130 if (searchResult != mNames.end()) 131 { 132 if (mods && i == 0) 133 { 134 if (mods & Qt::ControlModifier) 135 result.append("Ctrl+"); 136 if (mods & Qt::ShiftModifier) 137 result.append("Shift+"); 138 if (mods & Qt::AltModifier) 139 result.append("Alt+"); 140 if (mods & Qt::MetaModifier) 141 result.append("Meta+"); 142 if (mods & Qt::KeypadModifier) 143 result.append("Keypad+"); 144 if (mods & Qt::GroupSwitchModifier) 145 result.append("GroupSwitch+"); 146 } 147 else if (i > 0) 148 { 149 result.append("+"); 150 } 151 152 result.append(searchResult->second); 153 } 154 } 155 } 156 157 return result; 158 } 159 convertToString(int modifier) const160 std::string ShortcutManager::convertToString(int modifier) const 161 { 162 NameMap::const_iterator searchResult = mNames.find(modifier); 163 if (searchResult != mNames.end()) 164 { 165 return searchResult->second; 166 } 167 else 168 return ""; 169 } 170 convertToString(const QKeySequence & sequence,int modifier) const171 std::string ShortcutManager::convertToString(const QKeySequence& sequence, int modifier) const 172 { 173 std::string concat = convertToString(sequence) + ";" + convertToString(modifier); 174 return concat; 175 } 176 convertFromString(const std::string & data,QKeySequence & sequence) const177 void ShortcutManager::convertFromString(const std::string& data, QKeySequence& sequence) const 178 { 179 const int MaxKeys = 4; // A limitation of QKeySequence 180 181 size_t end = data.find(';'); 182 size_t size = std::min(end, data.size()); 183 184 std::string value = data.substr(0, size); 185 size_t start = 0; 186 187 int keyPos = 0; 188 int mods = 0; 189 190 int keys[MaxKeys] = {}; 191 192 while (start < value.size()) 193 { 194 end = data.find('+', start); 195 end = std::min(end, value.size()); 196 197 std::string name = value.substr(start, end - start); 198 199 if (name == "Ctrl") 200 { 201 mods |= Qt::ControlModifier; 202 } 203 else if (name == "Shift") 204 { 205 mods |= Qt::ShiftModifier; 206 } 207 else if (name == "Alt") 208 { 209 mods |= Qt::AltModifier; 210 } 211 else if (name == "Meta") 212 { 213 mods |= Qt::MetaModifier; 214 } 215 else if (name == "Keypad") 216 { 217 mods |= Qt::KeypadModifier; 218 } 219 else if (name == "GroupSwitch") 220 { 221 mods |= Qt::GroupSwitchModifier; 222 } 223 else 224 { 225 KeyMap::const_iterator searchResult = mKeys.find(name); 226 if (searchResult != mKeys.end()) 227 { 228 keys[keyPos] = mods | searchResult->second; 229 230 mods = 0; 231 keyPos += 1; 232 233 if (keyPos >= MaxKeys) 234 break; 235 } 236 } 237 238 start = end + 1; 239 } 240 241 sequence = QKeySequence(keys[0], keys[1], keys[2], keys[3]); 242 } 243 convertFromString(const std::string & data,int & modifier) const244 void ShortcutManager::convertFromString(const std::string& data, int& modifier) const 245 { 246 size_t start = data.find(';') + 1; 247 start = std::min(start, data.size()); 248 249 std::string name = data.substr(start); 250 KeyMap::const_iterator searchResult = mKeys.find(name); 251 if (searchResult != mKeys.end()) 252 { 253 modifier = searchResult->second; 254 } 255 else 256 { 257 modifier = 0; 258 } 259 } 260 convertFromString(const std::string & data,QKeySequence & sequence,int & modifier) const261 void ShortcutManager::convertFromString(const std::string& data, QKeySequence& sequence, int& modifier) const 262 { 263 convertFromString(data, sequence); 264 convertFromString(data, modifier); 265 } 266 createLookupTables()267 void ShortcutManager::createLookupTables() 268 { 269 // Mouse buttons 270 mNames.insert(std::make_pair(Qt::LeftButton, "LMB")); 271 mNames.insert(std::make_pair(Qt::RightButton, "RMB")); 272 mNames.insert(std::make_pair(Qt::MiddleButton, "MMB")); 273 mNames.insert(std::make_pair(Qt::XButton1, "Mouse4")); 274 mNames.insert(std::make_pair(Qt::XButton2, "Mouse5")); 275 276 // Keyboard buttons 277 for (size_t i = 0; QtKeys[i].first != 0; ++i) 278 { 279 mNames.insert(QtKeys[i]); 280 } 281 282 // Generate inverse map 283 for (NameMap::const_iterator it = mNames.begin(); it != mNames.end(); ++it) 284 { 285 mKeys.insert(std::make_pair(it->second, it->first)); 286 } 287 } 288 processToolTip(const QString & toolTip) const289 QString ShortcutManager::processToolTip(const QString& toolTip) const 290 { 291 const QChar SequenceStart = '{'; 292 const QChar SequenceEnd = '}'; 293 294 QStringList substrings; 295 296 int prevIndex = 0; 297 int startIndex = toolTip.indexOf(SequenceStart); 298 int endIndex = (startIndex != -1) ? toolTip.indexOf(SequenceEnd, startIndex) : -1; 299 300 // Process every valid shortcut escape sequence 301 while (startIndex != -1 && endIndex != -1) 302 { 303 int count = startIndex - prevIndex; 304 if (count > 0) 305 { 306 substrings.push_back(toolTip.mid(prevIndex, count)); 307 } 308 309 // Find sequence name 310 startIndex += 1; // '{' character 311 count = endIndex - startIndex; 312 if (count > 0) 313 { 314 QString settingName = toolTip.mid(startIndex, count); 315 316 QKeySequence sequence; 317 int modifier; 318 319 if (getSequence(settingName.toUtf8().data(), sequence)) 320 { 321 QString value = QString::fromUtf8(convertToString(sequence).c_str()); 322 substrings.push_back(value); 323 } 324 else if (getModifier(settingName.toUtf8().data(), modifier)) 325 { 326 QString value = QString::fromUtf8(convertToString(modifier).c_str()); 327 substrings.push_back(value); 328 } 329 330 prevIndex = endIndex + 1; // '}' character 331 } 332 333 startIndex = toolTip.indexOf(SequenceStart, endIndex); 334 endIndex = (startIndex != -1) ? toolTip.indexOf(SequenceEnd, startIndex) : -1; 335 } 336 337 if (prevIndex < toolTip.size()) 338 { 339 substrings.push_back(toolTip.mid(prevIndex)); 340 } 341 342 return substrings.join(""); 343 } 344 345 const std::pair<int, const char*> ShortcutManager::QtKeys[] = 346 { 347 std::make_pair((int)Qt::Key_Space , "Space"), 348 std::make_pair((int)Qt::Key_Exclam , "Exclam"), 349 std::make_pair((int)Qt::Key_QuoteDbl , "QuoteDbl"), 350 std::make_pair((int)Qt::Key_NumberSign , "NumberSign"), 351 std::make_pair((int)Qt::Key_Dollar , "Dollar"), 352 std::make_pair((int)Qt::Key_Percent , "Percent"), 353 std::make_pair((int)Qt::Key_Ampersand , "Ampersand"), 354 std::make_pair((int)Qt::Key_Apostrophe , "Apostrophe"), 355 std::make_pair((int)Qt::Key_ParenLeft , "ParenLeft"), 356 std::make_pair((int)Qt::Key_ParenRight , "ParenRight"), 357 std::make_pair((int)Qt::Key_Asterisk , "Asterisk"), 358 std::make_pair((int)Qt::Key_Plus , "Plus"), 359 std::make_pair((int)Qt::Key_Comma , "Comma"), 360 std::make_pair((int)Qt::Key_Minus , "Minus"), 361 std::make_pair((int)Qt::Key_Period , "Period"), 362 std::make_pair((int)Qt::Key_Slash , "Slash"), 363 std::make_pair((int)Qt::Key_0 , "0"), 364 std::make_pair((int)Qt::Key_1 , "1"), 365 std::make_pair((int)Qt::Key_2 , "2"), 366 std::make_pair((int)Qt::Key_3 , "3"), 367 std::make_pair((int)Qt::Key_4 , "4"), 368 std::make_pair((int)Qt::Key_5 , "5"), 369 std::make_pair((int)Qt::Key_6 , "6"), 370 std::make_pair((int)Qt::Key_7 , "7"), 371 std::make_pair((int)Qt::Key_8 , "8"), 372 std::make_pair((int)Qt::Key_9 , "9"), 373 std::make_pair((int)Qt::Key_Colon , "Colon"), 374 std::make_pair((int)Qt::Key_Semicolon , "Semicolon"), 375 std::make_pair((int)Qt::Key_Less , "Less"), 376 std::make_pair((int)Qt::Key_Equal , "Equal"), 377 std::make_pair((int)Qt::Key_Greater , "Greater"), 378 std::make_pair((int)Qt::Key_Question , "Question"), 379 std::make_pair((int)Qt::Key_At , "At"), 380 std::make_pair((int)Qt::Key_A , "A"), 381 std::make_pair((int)Qt::Key_B , "B"), 382 std::make_pair((int)Qt::Key_C , "C"), 383 std::make_pair((int)Qt::Key_D , "D"), 384 std::make_pair((int)Qt::Key_E , "E"), 385 std::make_pair((int)Qt::Key_F , "F"), 386 std::make_pair((int)Qt::Key_G , "G"), 387 std::make_pair((int)Qt::Key_H , "H"), 388 std::make_pair((int)Qt::Key_I , "I"), 389 std::make_pair((int)Qt::Key_J , "J"), 390 std::make_pair((int)Qt::Key_K , "K"), 391 std::make_pair((int)Qt::Key_L , "L"), 392 std::make_pair((int)Qt::Key_M , "M"), 393 std::make_pair((int)Qt::Key_N , "N"), 394 std::make_pair((int)Qt::Key_O , "O"), 395 std::make_pair((int)Qt::Key_P , "P"), 396 std::make_pair((int)Qt::Key_Q , "Q"), 397 std::make_pair((int)Qt::Key_R , "R"), 398 std::make_pair((int)Qt::Key_S , "S"), 399 std::make_pair((int)Qt::Key_T , "T"), 400 std::make_pair((int)Qt::Key_U , "U"), 401 std::make_pair((int)Qt::Key_V , "V"), 402 std::make_pair((int)Qt::Key_W , "W"), 403 std::make_pair((int)Qt::Key_X , "X"), 404 std::make_pair((int)Qt::Key_Y , "Y"), 405 std::make_pair((int)Qt::Key_Z , "Z"), 406 std::make_pair((int)Qt::Key_BracketLeft , "BracketLeft"), 407 std::make_pair((int)Qt::Key_Backslash , "Backslash"), 408 std::make_pair((int)Qt::Key_BracketRight , "BracketRight"), 409 std::make_pair((int)Qt::Key_AsciiCircum , "AsciiCircum"), 410 std::make_pair((int)Qt::Key_Underscore , "Underscore"), 411 std::make_pair((int)Qt::Key_QuoteLeft , "QuoteLeft"), 412 std::make_pair((int)Qt::Key_BraceLeft , "BraceLeft"), 413 std::make_pair((int)Qt::Key_Bar , "Bar"), 414 std::make_pair((int)Qt::Key_BraceRight , "BraceRight"), 415 std::make_pair((int)Qt::Key_AsciiTilde , "AsciiTilde"), 416 std::make_pair((int)Qt::Key_nobreakspace , "nobreakspace"), 417 std::make_pair((int)Qt::Key_exclamdown , "exclamdown"), 418 std::make_pair((int)Qt::Key_cent , "cent"), 419 std::make_pair((int)Qt::Key_sterling , "sterling"), 420 std::make_pair((int)Qt::Key_currency , "currency"), 421 std::make_pair((int)Qt::Key_yen , "yen"), 422 std::make_pair((int)Qt::Key_brokenbar , "brokenbar"), 423 std::make_pair((int)Qt::Key_section , "section"), 424 std::make_pair((int)Qt::Key_diaeresis , "diaeresis"), 425 std::make_pair((int)Qt::Key_copyright , "copyright"), 426 std::make_pair((int)Qt::Key_ordfeminine , "ordfeminine"), 427 std::make_pair((int)Qt::Key_guillemotleft , "guillemotleft"), 428 std::make_pair((int)Qt::Key_notsign , "notsign"), 429 std::make_pair((int)Qt::Key_hyphen , "hyphen"), 430 std::make_pair((int)Qt::Key_registered , "registered"), 431 std::make_pair((int)Qt::Key_macron , "macron"), 432 std::make_pair((int)Qt::Key_degree , "degree"), 433 std::make_pair((int)Qt::Key_plusminus , "plusminus"), 434 std::make_pair((int)Qt::Key_twosuperior , "twosuperior"), 435 std::make_pair((int)Qt::Key_threesuperior , "threesuperior"), 436 std::make_pair((int)Qt::Key_acute , "acute"), 437 std::make_pair((int)Qt::Key_mu , "mu"), 438 std::make_pair((int)Qt::Key_paragraph , "paragraph"), 439 std::make_pair((int)Qt::Key_periodcentered , "periodcentered"), 440 std::make_pair((int)Qt::Key_cedilla , "cedilla"), 441 std::make_pair((int)Qt::Key_onesuperior , "onesuperior"), 442 std::make_pair((int)Qt::Key_masculine , "masculine"), 443 std::make_pair((int)Qt::Key_guillemotright , "guillemotright"), 444 std::make_pair((int)Qt::Key_onequarter , "onequarter"), 445 std::make_pair((int)Qt::Key_onehalf , "onehalf"), 446 std::make_pair((int)Qt::Key_threequarters , "threequarters"), 447 std::make_pair((int)Qt::Key_questiondown , "questiondown"), 448 std::make_pair((int)Qt::Key_Agrave , "Agrave"), 449 std::make_pair((int)Qt::Key_Aacute , "Aacute"), 450 std::make_pair((int)Qt::Key_Acircumflex , "Acircumflex"), 451 std::make_pair((int)Qt::Key_Atilde , "Atilde"), 452 std::make_pair((int)Qt::Key_Adiaeresis , "Adiaeresis"), 453 std::make_pair((int)Qt::Key_Aring , "Aring"), 454 std::make_pair((int)Qt::Key_AE , "AE"), 455 std::make_pair((int)Qt::Key_Ccedilla , "Ccedilla"), 456 std::make_pair((int)Qt::Key_Egrave , "Egrave"), 457 std::make_pair((int)Qt::Key_Eacute , "Eacute"), 458 std::make_pair((int)Qt::Key_Ecircumflex , "Ecircumflex"), 459 std::make_pair((int)Qt::Key_Ediaeresis , "Ediaeresis"), 460 std::make_pair((int)Qt::Key_Igrave , "Igrave"), 461 std::make_pair((int)Qt::Key_Iacute , "Iacute"), 462 std::make_pair((int)Qt::Key_Icircumflex , "Icircumflex"), 463 std::make_pair((int)Qt::Key_Idiaeresis , "Idiaeresis"), 464 std::make_pair((int)Qt::Key_ETH , "ETH"), 465 std::make_pair((int)Qt::Key_Ntilde , "Ntilde"), 466 std::make_pair((int)Qt::Key_Ograve , "Ograve"), 467 std::make_pair((int)Qt::Key_Oacute , "Oacute"), 468 std::make_pair((int)Qt::Key_Ocircumflex , "Ocircumflex"), 469 std::make_pair((int)Qt::Key_Otilde , "Otilde"), 470 std::make_pair((int)Qt::Key_Odiaeresis , "Odiaeresis"), 471 std::make_pair((int)Qt::Key_multiply , "multiply"), 472 std::make_pair((int)Qt::Key_Ooblique , "Ooblique"), 473 std::make_pair((int)Qt::Key_Ugrave , "Ugrave"), 474 std::make_pair((int)Qt::Key_Uacute , "Uacute"), 475 std::make_pair((int)Qt::Key_Ucircumflex , "Ucircumflex"), 476 std::make_pair((int)Qt::Key_Udiaeresis , "Udiaeresis"), 477 std::make_pair((int)Qt::Key_Yacute , "Yacute"), 478 std::make_pair((int)Qt::Key_THORN , "THORN"), 479 std::make_pair((int)Qt::Key_ssharp , "ssharp"), 480 std::make_pair((int)Qt::Key_division , "division"), 481 std::make_pair((int)Qt::Key_ydiaeresis , "ydiaeresis"), 482 std::make_pair((int)Qt::Key_Escape , "Escape"), 483 std::make_pair((int)Qt::Key_Tab , "Tab"), 484 std::make_pair((int)Qt::Key_Backtab , "Backtab"), 485 std::make_pair((int)Qt::Key_Backspace , "Backspace"), 486 std::make_pair((int)Qt::Key_Return , "Return"), 487 std::make_pair((int)Qt::Key_Enter , "Enter"), 488 std::make_pair((int)Qt::Key_Insert , "Insert"), 489 std::make_pair((int)Qt::Key_Delete , "Delete"), 490 std::make_pair((int)Qt::Key_Pause , "Pause"), 491 std::make_pair((int)Qt::Key_Print , "Print"), 492 std::make_pair((int)Qt::Key_SysReq , "SysReq"), 493 std::make_pair((int)Qt::Key_Clear , "Clear"), 494 std::make_pair((int)Qt::Key_Home , "Home"), 495 std::make_pair((int)Qt::Key_End , "End"), 496 std::make_pair((int)Qt::Key_Left , "Left"), 497 std::make_pair((int)Qt::Key_Up , "Up"), 498 std::make_pair((int)Qt::Key_Right , "Right"), 499 std::make_pair((int)Qt::Key_Down , "Down"), 500 std::make_pair((int)Qt::Key_PageUp , "PageUp"), 501 std::make_pair((int)Qt::Key_PageDown , "PageDown"), 502 std::make_pair((int)Qt::Key_Shift , "Shift"), 503 std::make_pair((int)Qt::Key_Control , "Control"), 504 std::make_pair((int)Qt::Key_Meta , "Meta"), 505 std::make_pair((int)Qt::Key_Alt , "Alt"), 506 std::make_pair((int)Qt::Key_CapsLock , "CapsLock"), 507 std::make_pair((int)Qt::Key_NumLock , "NumLock"), 508 std::make_pair((int)Qt::Key_ScrollLock , "ScrollLock"), 509 std::make_pair((int)Qt::Key_F1 , "F1"), 510 std::make_pair((int)Qt::Key_F2 , "F2"), 511 std::make_pair((int)Qt::Key_F3 , "F3"), 512 std::make_pair((int)Qt::Key_F4 , "F4"), 513 std::make_pair((int)Qt::Key_F5 , "F5"), 514 std::make_pair((int)Qt::Key_F6 , "F6"), 515 std::make_pair((int)Qt::Key_F7 , "F7"), 516 std::make_pair((int)Qt::Key_F8 , "F8"), 517 std::make_pair((int)Qt::Key_F9 , "F9"), 518 std::make_pair((int)Qt::Key_F10 , "F10"), 519 std::make_pair((int)Qt::Key_F11 , "F11"), 520 std::make_pair((int)Qt::Key_F12 , "F12"), 521 std::make_pair((int)Qt::Key_F13 , "F13"), 522 std::make_pair((int)Qt::Key_F14 , "F14"), 523 std::make_pair((int)Qt::Key_F15 , "F15"), 524 std::make_pair((int)Qt::Key_F16 , "F16"), 525 std::make_pair((int)Qt::Key_F17 , "F17"), 526 std::make_pair((int)Qt::Key_F18 , "F18"), 527 std::make_pair((int)Qt::Key_F19 , "F19"), 528 std::make_pair((int)Qt::Key_F20 , "F20"), 529 std::make_pair((int)Qt::Key_F21 , "F21"), 530 std::make_pair((int)Qt::Key_F22 , "F22"), 531 std::make_pair((int)Qt::Key_F23 , "F23"), 532 std::make_pair((int)Qt::Key_F24 , "F24"), 533 std::make_pair((int)Qt::Key_F25 , "F25"), 534 std::make_pair((int)Qt::Key_F26 , "F26"), 535 std::make_pair((int)Qt::Key_F27 , "F27"), 536 std::make_pair((int)Qt::Key_F28 , "F28"), 537 std::make_pair((int)Qt::Key_F29 , "F29"), 538 std::make_pair((int)Qt::Key_F30 , "F30"), 539 std::make_pair((int)Qt::Key_F31 , "F31"), 540 std::make_pair((int)Qt::Key_F32 , "F32"), 541 std::make_pair((int)Qt::Key_F33 , "F33"), 542 std::make_pair((int)Qt::Key_F34 , "F34"), 543 std::make_pair((int)Qt::Key_F35 , "F35"), 544 std::make_pair((int)Qt::Key_Super_L , "Super_L"), 545 std::make_pair((int)Qt::Key_Super_R , "Super_R"), 546 std::make_pair((int)Qt::Key_Menu , "Menu"), 547 std::make_pair((int)Qt::Key_Hyper_L , "Hyper_L"), 548 std::make_pair((int)Qt::Key_Hyper_R , "Hyper_R"), 549 std::make_pair((int)Qt::Key_Help , "Help"), 550 std::make_pair((int)Qt::Key_Direction_L , "Direction_L"), 551 std::make_pair((int)Qt::Key_Direction_R , "Direction_R"), 552 std::make_pair((int)Qt::Key_Back , "Back"), 553 std::make_pair((int)Qt::Key_Forward , "Forward"), 554 std::make_pair((int)Qt::Key_Stop , "Stop"), 555 std::make_pair((int)Qt::Key_Refresh , "Refresh"), 556 std::make_pair((int)Qt::Key_VolumeDown , "VolumeDown"), 557 std::make_pair((int)Qt::Key_VolumeMute , "VolumeMute"), 558 std::make_pair((int)Qt::Key_VolumeUp , "VolumeUp"), 559 std::make_pair((int)Qt::Key_BassBoost , "BassBoost"), 560 std::make_pair((int)Qt::Key_BassUp , "BassUp"), 561 std::make_pair((int)Qt::Key_BassDown , "BassDown"), 562 std::make_pair((int)Qt::Key_TrebleUp , "TrebleUp"), 563 std::make_pair((int)Qt::Key_TrebleDown , "TrebleDown"), 564 std::make_pair((int)Qt::Key_MediaPlay , "MediaPlay"), 565 std::make_pair((int)Qt::Key_MediaStop , "MediaStop"), 566 std::make_pair((int)Qt::Key_MediaPrevious , "MediaPrevious"), 567 std::make_pair((int)Qt::Key_MediaNext , "MediaNext"), 568 std::make_pair((int)Qt::Key_MediaRecord , "MediaRecord"), 569 std::make_pair((int)Qt::Key_MediaPause , "MediaPause"), 570 std::make_pair((int)Qt::Key_MediaTogglePlayPause , "MediaTogglePlayPause"), 571 std::make_pair((int)Qt::Key_HomePage , "HomePage"), 572 std::make_pair((int)Qt::Key_Favorites , "Favorites"), 573 std::make_pair((int)Qt::Key_Search , "Search"), 574 std::make_pair((int)Qt::Key_Standby , "Standby"), 575 std::make_pair((int)Qt::Key_OpenUrl , "OpenUrl"), 576 std::make_pair((int)Qt::Key_LaunchMail , "LaunchMail"), 577 std::make_pair((int)Qt::Key_LaunchMedia , "LaunchMedia"), 578 std::make_pair((int)Qt::Key_Launch0 , "Launch0"), 579 std::make_pair((int)Qt::Key_Launch1 , "Launch1"), 580 std::make_pair((int)Qt::Key_Launch2 , "Launch2"), 581 std::make_pair((int)Qt::Key_Launch3 , "Launch3"), 582 std::make_pair((int)Qt::Key_Launch4 , "Launch4"), 583 std::make_pair((int)Qt::Key_Launch5 , "Launch5"), 584 std::make_pair((int)Qt::Key_Launch6 , "Launch6"), 585 std::make_pair((int)Qt::Key_Launch7 , "Launch7"), 586 std::make_pair((int)Qt::Key_Launch8 , "Launch8"), 587 std::make_pair((int)Qt::Key_Launch9 , "Launch9"), 588 std::make_pair((int)Qt::Key_LaunchA , "LaunchA"), 589 std::make_pair((int)Qt::Key_LaunchB , "LaunchB"), 590 std::make_pair((int)Qt::Key_LaunchC , "LaunchC"), 591 std::make_pair((int)Qt::Key_LaunchD , "LaunchD"), 592 std::make_pair((int)Qt::Key_LaunchE , "LaunchE"), 593 std::make_pair((int)Qt::Key_LaunchF , "LaunchF"), 594 std::make_pair((int)Qt::Key_MonBrightnessUp , "MonBrightnessUp"), 595 std::make_pair((int)Qt::Key_MonBrightnessDown , "MonBrightnessDown"), 596 std::make_pair((int)Qt::Key_KeyboardLightOnOff , "KeyboardLightOnOff"), 597 std::make_pair((int)Qt::Key_KeyboardBrightnessUp , "KeyboardBrightnessUp"), 598 std::make_pair((int)Qt::Key_KeyboardBrightnessDown , "KeyboardBrightnessDown"), 599 std::make_pair((int)Qt::Key_PowerOff , "PowerOff"), 600 std::make_pair((int)Qt::Key_WakeUp , "WakeUp"), 601 std::make_pair((int)Qt::Key_Eject , "Eject"), 602 std::make_pair((int)Qt::Key_ScreenSaver , "ScreenSaver"), 603 std::make_pair((int)Qt::Key_WWW , "WWW"), 604 std::make_pair((int)Qt::Key_Memo , "Memo"), 605 std::make_pair((int)Qt::Key_LightBulb , "LightBulb"), 606 std::make_pair((int)Qt::Key_Shop , "Shop"), 607 std::make_pair((int)Qt::Key_History , "History"), 608 std::make_pair((int)Qt::Key_AddFavorite , "AddFavorite"), 609 std::make_pair((int)Qt::Key_HotLinks , "HotLinks"), 610 std::make_pair((int)Qt::Key_BrightnessAdjust , "BrightnessAdjust"), 611 std::make_pair((int)Qt::Key_Finance , "Finance"), 612 std::make_pair((int)Qt::Key_Community , "Community"), 613 std::make_pair((int)Qt::Key_AudioRewind , "AudioRewind"), 614 std::make_pair((int)Qt::Key_BackForward , "BackForward"), 615 std::make_pair((int)Qt::Key_ApplicationLeft , "ApplicationLeft"), 616 std::make_pair((int)Qt::Key_ApplicationRight , "ApplicationRight"), 617 std::make_pair((int)Qt::Key_Book , "Book"), 618 std::make_pair((int)Qt::Key_CD , "CD"), 619 std::make_pair((int)Qt::Key_Calculator , "Calculator"), 620 std::make_pair((int)Qt::Key_ToDoList , "ToDoList"), 621 std::make_pair((int)Qt::Key_ClearGrab , "ClearGrab"), 622 std::make_pair((int)Qt::Key_Close , "Close"), 623 std::make_pair((int)Qt::Key_Copy , "Copy"), 624 std::make_pair((int)Qt::Key_Cut , "Cut"), 625 std::make_pair((int)Qt::Key_Display , "Display"), 626 std::make_pair((int)Qt::Key_DOS , "DOS"), 627 std::make_pair((int)Qt::Key_Documents , "Documents"), 628 std::make_pair((int)Qt::Key_Excel , "Excel"), 629 std::make_pair((int)Qt::Key_Explorer , "Explorer"), 630 std::make_pair((int)Qt::Key_Game , "Game"), 631 std::make_pair((int)Qt::Key_Go , "Go"), 632 std::make_pair((int)Qt::Key_iTouch , "iTouch"), 633 std::make_pair((int)Qt::Key_LogOff , "LogOff"), 634 std::make_pair((int)Qt::Key_Market , "Market"), 635 std::make_pair((int)Qt::Key_Meeting , "Meeting"), 636 std::make_pair((int)Qt::Key_MenuKB , "MenuKB"), 637 std::make_pair((int)Qt::Key_MenuPB , "MenuPB"), 638 std::make_pair((int)Qt::Key_MySites , "MySites"), 639 std::make_pair((int)Qt::Key_News , "News"), 640 std::make_pair((int)Qt::Key_OfficeHome , "OfficeHome"), 641 std::make_pair((int)Qt::Key_Option , "Option"), 642 std::make_pair((int)Qt::Key_Paste , "Paste"), 643 std::make_pair((int)Qt::Key_Phone , "Phone"), 644 std::make_pair((int)Qt::Key_Calendar , "Calendar"), 645 std::make_pair((int)Qt::Key_Reply , "Reply"), 646 std::make_pair((int)Qt::Key_Reload , "Reload"), 647 std::make_pair((int)Qt::Key_RotateWindows , "RotateWindows"), 648 std::make_pair((int)Qt::Key_RotationPB , "RotationPB"), 649 std::make_pair((int)Qt::Key_RotationKB , "RotationKB"), 650 std::make_pair((int)Qt::Key_Save , "Save"), 651 std::make_pair((int)Qt::Key_Send , "Send"), 652 std::make_pair((int)Qt::Key_Spell , "Spell"), 653 std::make_pair((int)Qt::Key_SplitScreen , "SplitScreen"), 654 std::make_pair((int)Qt::Key_Support , "Support"), 655 std::make_pair((int)Qt::Key_TaskPane , "TaskPane"), 656 std::make_pair((int)Qt::Key_Terminal , "Terminal"), 657 std::make_pair((int)Qt::Key_Tools , "Tools"), 658 std::make_pair((int)Qt::Key_Travel , "Travel"), 659 std::make_pair((int)Qt::Key_Video , "Video"), 660 std::make_pair((int)Qt::Key_Word , "Word"), 661 std::make_pair((int)Qt::Key_Xfer , "Xfer"), 662 std::make_pair((int)Qt::Key_ZoomIn , "ZoomIn"), 663 std::make_pair((int)Qt::Key_ZoomOut , "ZoomOut"), 664 std::make_pair((int)Qt::Key_Away , "Away"), 665 std::make_pair((int)Qt::Key_Messenger , "Messenger"), 666 std::make_pair((int)Qt::Key_WebCam , "WebCam"), 667 std::make_pair((int)Qt::Key_MailForward , "MailForward"), 668 std::make_pair((int)Qt::Key_Pictures , "Pictures"), 669 std::make_pair((int)Qt::Key_Music , "Music"), 670 std::make_pair((int)Qt::Key_Battery , "Battery"), 671 std::make_pair((int)Qt::Key_Bluetooth , "Bluetooth"), 672 std::make_pair((int)Qt::Key_WLAN , "WLAN"), 673 std::make_pair((int)Qt::Key_UWB , "UWB"), 674 std::make_pair((int)Qt::Key_AudioForward , "AudioForward"), 675 std::make_pair((int)Qt::Key_AudioRepeat , "AudioRepeat"), 676 std::make_pair((int)Qt::Key_AudioRandomPlay , "AudioRandomPlay"), 677 std::make_pair((int)Qt::Key_Subtitle , "Subtitle"), 678 std::make_pair((int)Qt::Key_AudioCycleTrack , "AudioCycleTrack"), 679 std::make_pair((int)Qt::Key_Time , "Time"), 680 std::make_pair((int)Qt::Key_Hibernate , "Hibernate"), 681 std::make_pair((int)Qt::Key_View , "View"), 682 std::make_pair((int)Qt::Key_TopMenu , "TopMenu"), 683 std::make_pair((int)Qt::Key_PowerDown , "PowerDown"), 684 std::make_pair((int)Qt::Key_Suspend , "Suspend"), 685 std::make_pair((int)Qt::Key_ContrastAdjust , "ContrastAdjust"), 686 std::make_pair((int)Qt::Key_LaunchG , "LaunchG"), 687 std::make_pair((int)Qt::Key_LaunchH , "LaunchH"), 688 std::make_pair((int)Qt::Key_TouchpadToggle , "TouchpadToggle"), 689 std::make_pair((int)Qt::Key_TouchpadOn , "TouchpadOn"), 690 std::make_pair((int)Qt::Key_TouchpadOff , "TouchpadOff"), 691 std::make_pair((int)Qt::Key_MicMute , "MicMute"), 692 std::make_pair((int)Qt::Key_Red , "Red"), 693 std::make_pair((int)Qt::Key_Green , "Green"), 694 std::make_pair((int)Qt::Key_Yellow , "Yellow"), 695 std::make_pair((int)Qt::Key_Blue , "Blue"), 696 std::make_pair((int)Qt::Key_ChannelUp , "ChannelUp"), 697 std::make_pair((int)Qt::Key_ChannelDown , "ChannelDown"), 698 std::make_pair((int)Qt::Key_Guide , "Guide"), 699 std::make_pair((int)Qt::Key_Info , "Info"), 700 std::make_pair((int)Qt::Key_Settings , "Settings"), 701 std::make_pair((int)Qt::Key_MicVolumeUp , "MicVolumeUp"), 702 std::make_pair((int)Qt::Key_MicVolumeDown , "MicVolumeDown"), 703 std::make_pair((int)Qt::Key_New , "New"), 704 std::make_pair((int)Qt::Key_Open , "Open"), 705 std::make_pair((int)Qt::Key_Find , "Find"), 706 std::make_pair((int)Qt::Key_Undo , "Undo"), 707 std::make_pair((int)Qt::Key_Redo , "Redo"), 708 std::make_pair((int)Qt::Key_AltGr , "AltGr"), 709 std::make_pair((int)Qt::Key_Multi_key , "Multi_key"), 710 std::make_pair((int)Qt::Key_Kanji , "Kanji"), 711 std::make_pair((int)Qt::Key_Muhenkan , "Muhenkan"), 712 std::make_pair((int)Qt::Key_Henkan , "Henkan"), 713 std::make_pair((int)Qt::Key_Romaji , "Romaji"), 714 std::make_pair((int)Qt::Key_Hiragana , "Hiragana"), 715 std::make_pair((int)Qt::Key_Katakana , "Katakana"), 716 std::make_pair((int)Qt::Key_Hiragana_Katakana , "Hiragana_Katakana"), 717 std::make_pair((int)Qt::Key_Zenkaku , "Zenkaku"), 718 std::make_pair((int)Qt::Key_Hankaku , "Hankaku"), 719 std::make_pair((int)Qt::Key_Zenkaku_Hankaku , "Zenkaku_Hankaku"), 720 std::make_pair((int)Qt::Key_Touroku , "Touroku"), 721 std::make_pair((int)Qt::Key_Massyo , "Massyo"), 722 std::make_pair((int)Qt::Key_Kana_Lock , "Kana_Lock"), 723 std::make_pair((int)Qt::Key_Kana_Shift , "Kana_Shift"), 724 std::make_pair((int)Qt::Key_Eisu_Shift , "Eisu_Shift"), 725 std::make_pair((int)Qt::Key_Eisu_toggle , "Eisu_toggle"), 726 std::make_pair((int)Qt::Key_Hangul , "Hangul"), 727 std::make_pair((int)Qt::Key_Hangul_Start , "Hangul_Start"), 728 std::make_pair((int)Qt::Key_Hangul_End , "Hangul_End"), 729 std::make_pair((int)Qt::Key_Hangul_Hanja , "Hangul_Hanja"), 730 std::make_pair((int)Qt::Key_Hangul_Jamo , "Hangul_Jamo"), 731 std::make_pair((int)Qt::Key_Hangul_Romaja , "Hangul_Romaja"), 732 std::make_pair((int)Qt::Key_Codeinput , "Codeinput"), 733 std::make_pair((int)Qt::Key_Hangul_Jeonja , "Hangul_Jeonja"), 734 std::make_pair((int)Qt::Key_Hangul_Banja , "Hangul_Banja"), 735 std::make_pair((int)Qt::Key_Hangul_PreHanja , "Hangul_PreHanja"), 736 std::make_pair((int)Qt::Key_Hangul_PostHanja , "Hangul_PostHanja"), 737 std::make_pair((int)Qt::Key_SingleCandidate , "SingleCandidate"), 738 std::make_pair((int)Qt::Key_MultipleCandidate , "MultipleCandidate"), 739 std::make_pair((int)Qt::Key_PreviousCandidate , "PreviousCandidate"), 740 std::make_pair((int)Qt::Key_Hangul_Special , "Hangul_Special"), 741 std::make_pair((int)Qt::Key_Mode_switch , "Mode_switch"), 742 std::make_pair((int)Qt::Key_Dead_Grave , "Dead_Grave"), 743 std::make_pair((int)Qt::Key_Dead_Acute , "Dead_Acute"), 744 std::make_pair((int)Qt::Key_Dead_Circumflex , "Dead_Circumflex"), 745 std::make_pair((int)Qt::Key_Dead_Tilde , "Dead_Tilde"), 746 std::make_pair((int)Qt::Key_Dead_Macron , "Dead_Macron"), 747 std::make_pair((int)Qt::Key_Dead_Breve , "Dead_Breve"), 748 std::make_pair((int)Qt::Key_Dead_Abovedot , "Dead_Abovedot"), 749 std::make_pair((int)Qt::Key_Dead_Diaeresis , "Dead_Diaeresis"), 750 std::make_pair((int)Qt::Key_Dead_Abovering , "Dead_Abovering"), 751 std::make_pair((int)Qt::Key_Dead_Doubleacute , "Dead_Doubleacute"), 752 std::make_pair((int)Qt::Key_Dead_Caron , "Dead_Caron"), 753 std::make_pair((int)Qt::Key_Dead_Cedilla , "Dead_Cedilla"), 754 std::make_pair((int)Qt::Key_Dead_Ogonek , "Dead_Ogonek"), 755 std::make_pair((int)Qt::Key_Dead_Iota , "Dead_Iota"), 756 std::make_pair((int)Qt::Key_Dead_Voiced_Sound , "Dead_Voiced_Sound"), 757 std::make_pair((int)Qt::Key_Dead_Semivoiced_Sound , "Dead_Semivoiced_Sound"), 758 std::make_pair((int)Qt::Key_Dead_Belowdot , "Dead_Belowdot"), 759 std::make_pair((int)Qt::Key_Dead_Hook , "Dead_Hook"), 760 std::make_pair((int)Qt::Key_Dead_Horn , "Dead_Horn"), 761 std::make_pair((int)Qt::Key_MediaLast , "MediaLast"), 762 std::make_pair((int)Qt::Key_Select , "Select"), 763 std::make_pair((int)Qt::Key_Yes , "Yes"), 764 std::make_pair((int)Qt::Key_No , "No"), 765 std::make_pair((int)Qt::Key_Cancel , "Cancel"), 766 std::make_pair((int)Qt::Key_Printer , "Printer"), 767 std::make_pair((int)Qt::Key_Execute , "Execute"), 768 std::make_pair((int)Qt::Key_Sleep , "Sleep"), 769 std::make_pair((int)Qt::Key_Play , "Play"), 770 std::make_pair((int)Qt::Key_Zoom , "Zoom"), 771 std::make_pair((int)Qt::Key_Exit , "Exit"), 772 std::make_pair((int)Qt::Key_Context1 , "Context1"), 773 std::make_pair((int)Qt::Key_Context2 , "Context2"), 774 std::make_pair((int)Qt::Key_Context3 , "Context3"), 775 std::make_pair((int)Qt::Key_Context4 , "Context4"), 776 std::make_pair((int)Qt::Key_Call , "Call"), 777 std::make_pair((int)Qt::Key_Hangup , "Hangup"), 778 std::make_pair((int)Qt::Key_Flip , "Flip"), 779 std::make_pair((int)Qt::Key_ToggleCallHangup , "ToggleCallHangup"), 780 std::make_pair((int)Qt::Key_VoiceDial , "VoiceDial"), 781 std::make_pair((int)Qt::Key_LastNumberRedial , "LastNumberRedial"), 782 std::make_pair((int)Qt::Key_Camera , "Camera"), 783 std::make_pair((int)Qt::Key_CameraFocus , "CameraFocus"), 784 std::make_pair(0 , (const char*) nullptr) 785 }; 786 787 } 788