File indexing completed on 2024-04-28 04:32:01
0001 /* 0002 * Copyright (C) 2009-2015 by Stephen Allewell 0003 * steve.allewell@gmail.com 0004 * 0005 * This program is free software; you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation; either version 2 of the License, or 0008 * (at your option) any later version. 0009 */ 0010 0011 #include "KeycodeLineEdit.h" 0012 0013 #include <QKeyEvent> 0014 0015 const struct KEYCODE { 0016 int qtKey; 0017 QString qtText; 0018 } keyCodes[] = { 0019 {Qt::Key_Escape, QStringLiteral("Escape")}, 0020 {Qt::Key_Tab, QStringLiteral("Tab")}, 0021 {Qt::Key_Backtab, QStringLiteral("Backtab")}, 0022 // { Qt::Key_Backspace, "Backspace" }, 0023 // { Qt::Key_Return, "Return" }, 0024 // { Qt::Key_Enter, "Enter" }, 0025 {Qt::Key_Insert, QStringLiteral("Insert")}, 0026 // { Qt::Key_Delete, "Delete" }, 0027 {Qt::Key_Pause, QStringLiteral("Pause")}, 0028 {Qt::Key_Print, QStringLiteral("Print")}, 0029 {Qt::Key_SysReq, QStringLiteral("SysReq")}, 0030 {Qt::Key_Clear, QStringLiteral("Clear")}, 0031 {Qt::Key_Home, QStringLiteral("Home")}, 0032 {Qt::Key_End, QStringLiteral("End")}, 0033 {Qt::Key_Left, QStringLiteral("Left")}, 0034 {Qt::Key_Up, QStringLiteral("Up")}, 0035 {Qt::Key_Right, QStringLiteral("Right")}, 0036 {Qt::Key_Down, QStringLiteral("Down")}, 0037 {Qt::Key_PageUp, QStringLiteral("PageUp")}, 0038 {Qt::Key_PageDown, QStringLiteral("PageDown")}, 0039 {Qt::Key_Shift, QStringLiteral("Shift")}, 0040 {Qt::Key_Control, QStringLiteral("Control")}, 0041 {Qt::Key_Meta, QStringLiteral("Meta")}, 0042 {Qt::Key_Alt, QStringLiteral("Alt")}, 0043 // { Qt::Key_AltGr, "AltGr" }, 0044 // { Qt::Key_CapsLock, "CapsLock" }, 0045 // { Qt::Key_NumLock, "NumLock" }, 0046 // { Qt::Key_ScrollLock, "ScrollLock" }, 0047 {Qt::Key_F1, QStringLiteral("F1")}, 0048 {Qt::Key_F2, QStringLiteral("F2")}, 0049 {Qt::Key_F3, QStringLiteral("F3")}, 0050 {Qt::Key_F4, QStringLiteral("F4")}, 0051 {Qt::Key_F5, QStringLiteral("F5")}, 0052 {Qt::Key_F6, QStringLiteral("F6")}, 0053 {Qt::Key_F7, QStringLiteral("F7")}, 0054 {Qt::Key_F8, QStringLiteral("F8")}, 0055 {Qt::Key_F9, QStringLiteral("F9")}, 0056 {Qt::Key_F10, QStringLiteral("F10")}, 0057 {Qt::Key_F11, QStringLiteral("F11")}, 0058 {Qt::Key_F12, QStringLiteral("F12")}, 0059 {Qt::Key_F13, QStringLiteral("F13")}, 0060 {Qt::Key_F14, QStringLiteral("F14")}, 0061 {Qt::Key_F15, QStringLiteral("F15")}, 0062 {Qt::Key_F16, QStringLiteral("F16")}, 0063 {Qt::Key_F17, QStringLiteral("F17")}, 0064 {Qt::Key_F18, QStringLiteral("F18")}, 0065 {Qt::Key_F19, QStringLiteral("F19")}, 0066 {Qt::Key_F20, QStringLiteral("F20")}, 0067 {Qt::Key_F21, QStringLiteral("F21")}, 0068 {Qt::Key_F22, QStringLiteral("F22")}, 0069 {Qt::Key_F23, QStringLiteral("F23")}, 0070 {Qt::Key_F24, QStringLiteral("F24")}, 0071 {Qt::Key_F25, QStringLiteral("F25")}, 0072 {Qt::Key_F26, QStringLiteral("F26")}, 0073 {Qt::Key_F27, QStringLiteral("F27")}, 0074 {Qt::Key_F28, QStringLiteral("F28")}, 0075 {Qt::Key_F29, QStringLiteral("F29")}, 0076 {Qt::Key_F30, QStringLiteral("F30")}, 0077 {Qt::Key_F31, QStringLiteral("F31")}, 0078 {Qt::Key_F32, QStringLiteral("F32")}, 0079 {Qt::Key_F33, QStringLiteral("F33")}, 0080 {Qt::Key_F34, QStringLiteral("F34")}, 0081 {Qt::Key_F35, QStringLiteral("F35")}, 0082 {Qt::Key_Super_L, QStringLiteral("Super_L")}, 0083 {Qt::Key_Super_R, QStringLiteral("Super_R")}, 0084 {Qt::Key_Menu, QStringLiteral("Menu")}, 0085 {Qt::Key_Hyper_L, QStringLiteral("Hyper_L")}, 0086 {Qt::Key_Hyper_R, QStringLiteral("Hyper_R")}, 0087 {Qt::Key_Help, QStringLiteral("Help")}, 0088 {Qt::Key_Direction_L, QStringLiteral("Direction_L")}, 0089 {Qt::Key_Direction_R, QStringLiteral("Direction_R")}, 0090 {Qt::Key_Space, QStringLiteral("Space")}, 0091 {Qt::Key_Any, QStringLiteral("Any")}, 0092 {Qt::Key_Exclam, QStringLiteral("Exclam")}, 0093 {Qt::Key_QuoteDbl, QStringLiteral("QuoteDbl")}, 0094 {Qt::Key_NumberSign, QStringLiteral("NumberSign")}, 0095 {Qt::Key_Dollar, QStringLiteral("Dollar")}, 0096 {Qt::Key_Percent, QStringLiteral("Percent")}, 0097 {Qt::Key_Ampersand, QStringLiteral("Ampersand")}, 0098 {Qt::Key_Apostrophe, QStringLiteral("Apostrophe")}, 0099 {Qt::Key_ParenLeft, QStringLiteral("ParenLeft")}, 0100 {Qt::Key_ParenRight, QStringLiteral("ParenRight")}, 0101 {Qt::Key_Asterisk, QStringLiteral("Asterisk")}, 0102 {Qt::Key_Plus, QStringLiteral("Plus")}, 0103 {Qt::Key_Comma, QStringLiteral("Comma")}, 0104 {Qt::Key_Minus, QStringLiteral("Minus")}, 0105 {Qt::Key_Period, QStringLiteral("Period")}, 0106 {Qt::Key_Slash, QStringLiteral("Slash")}, 0107 {Qt::Key_0, QStringLiteral("0")}, 0108 {Qt::Key_1, QStringLiteral("1")}, 0109 {Qt::Key_2, QStringLiteral("2")}, 0110 {Qt::Key_3, QStringLiteral("3")}, 0111 {Qt::Key_4, QStringLiteral("4")}, 0112 {Qt::Key_5, QStringLiteral("5")}, 0113 {Qt::Key_6, QStringLiteral("6")}, 0114 {Qt::Key_7, QStringLiteral("7")}, 0115 {Qt::Key_8, QStringLiteral("8")}, 0116 {Qt::Key_9, QStringLiteral("9")}, 0117 {Qt::Key_Colon, QStringLiteral("Colon")}, 0118 {Qt::Key_Semicolon, QStringLiteral("Semicolon")}, 0119 {Qt::Key_Less, QStringLiteral("Less")}, 0120 {Qt::Key_Equal, QStringLiteral("Equal")}, 0121 {Qt::Key_Greater, QStringLiteral("Greater")}, 0122 {Qt::Key_Question, QStringLiteral("Question")}, 0123 {Qt::Key_At, QStringLiteral("At")}, 0124 {Qt::Key_A, QStringLiteral("A")}, 0125 {Qt::Key_B, QStringLiteral("B")}, 0126 {Qt::Key_C, QStringLiteral("C")}, 0127 {Qt::Key_D, QStringLiteral("D")}, 0128 {Qt::Key_E, QStringLiteral("E")}, 0129 {Qt::Key_F, QStringLiteral("F")}, 0130 {Qt::Key_G, QStringLiteral("G")}, 0131 {Qt::Key_H, QStringLiteral("H")}, 0132 {Qt::Key_I, QStringLiteral("I")}, 0133 {Qt::Key_J, QStringLiteral("J")}, 0134 {Qt::Key_K, QStringLiteral("K")}, 0135 {Qt::Key_L, QStringLiteral("L")}, 0136 {Qt::Key_M, QStringLiteral("M")}, 0137 {Qt::Key_N, QStringLiteral("N")}, 0138 {Qt::Key_O, QStringLiteral("O")}, 0139 {Qt::Key_P, QStringLiteral("P")}, 0140 {Qt::Key_Q, QStringLiteral("Q")}, 0141 {Qt::Key_R, QStringLiteral("R")}, 0142 {Qt::Key_S, QStringLiteral("S")}, 0143 {Qt::Key_T, QStringLiteral("T")}, 0144 {Qt::Key_U, QStringLiteral("U")}, 0145 {Qt::Key_V, QStringLiteral("V")}, 0146 {Qt::Key_W, QStringLiteral("W")}, 0147 {Qt::Key_X, QStringLiteral("X")}, 0148 {Qt::Key_Y, QStringLiteral("Y")}, 0149 {Qt::Key_Z, QStringLiteral("Z")}, 0150 {Qt::Key_BracketLeft, QStringLiteral("BracketLeft")}, 0151 {Qt::Key_Backslash, QStringLiteral("Backslash")}, 0152 {Qt::Key_BracketRight, QStringLiteral("BracketRight")}, 0153 {Qt::Key_AsciiCircum, QStringLiteral("AsciiCircum")}, 0154 {Qt::Key_Underscore, QStringLiteral("Underscore")}, 0155 {Qt::Key_QuoteLeft, QStringLiteral("QuoteLeft")}, 0156 {Qt::Key_BraceLeft, QStringLiteral("BraceLeft")}, 0157 {Qt::Key_Bar, QStringLiteral("Bar")}, 0158 {Qt::Key_BraceRight, QStringLiteral("BraceRight")}, 0159 {Qt::Key_AsciiTilde, QStringLiteral("AsciiTilde")}, 0160 {Qt::Key_nobreakspace, QStringLiteral("nobreakspace")}, 0161 {Qt::Key_exclamdown, QStringLiteral("exclamdown")}, 0162 {Qt::Key_cent, QStringLiteral("cent")}, 0163 {Qt::Key_sterling, QStringLiteral("sterling")}, 0164 {Qt::Key_currency, QStringLiteral("currency")}, 0165 {Qt::Key_yen, QStringLiteral("yen")}, 0166 {Qt::Key_brokenbar, QStringLiteral("brokenbar")}, 0167 {Qt::Key_section, QStringLiteral("section")}, 0168 {Qt::Key_diaeresis, QStringLiteral("diaeresis")}, 0169 {Qt::Key_copyright, QStringLiteral("copyright")}, 0170 {Qt::Key_ordfeminine, QStringLiteral("ordfeminine")}, 0171 {Qt::Key_guillemotleft, QStringLiteral("guillemotleft")}, 0172 {Qt::Key_notsign, QStringLiteral("notsign")}, 0173 {Qt::Key_hyphen, QStringLiteral("hyphen")}, 0174 {Qt::Key_registered, QStringLiteral("registered")}, 0175 {Qt::Key_macron, QStringLiteral("macron")}, 0176 {Qt::Key_degree, QStringLiteral("degree")}, 0177 {Qt::Key_plusminus, QStringLiteral("plusminus")}, 0178 {Qt::Key_twosuperior, QStringLiteral("twosuperior")}, 0179 {Qt::Key_threesuperior, QStringLiteral("threesuperior")}, 0180 {Qt::Key_acute, QStringLiteral("acute")}, 0181 {Qt::Key_mu, QStringLiteral("mu")}, 0182 {Qt::Key_paragraph, QStringLiteral("paragraph")}, 0183 {Qt::Key_periodcentered, QStringLiteral("periodcentered")}, 0184 {Qt::Key_cedilla, QStringLiteral("cedilla")}, 0185 {Qt::Key_onesuperior, QStringLiteral("onesuperior")}, 0186 {Qt::Key_masculine, QStringLiteral("masculine")}, 0187 {Qt::Key_guillemotright, QStringLiteral("guillemotright")}, 0188 {Qt::Key_onequarter, QStringLiteral("onequarter")}, 0189 {Qt::Key_onehalf, QStringLiteral("onehalf")}, 0190 {Qt::Key_threequarters, QStringLiteral("threequarters")}, 0191 {Qt::Key_questiondown, QStringLiteral("questiondown")}, 0192 {Qt::Key_Agrave, QStringLiteral("Agrave")}, 0193 {Qt::Key_Aacute, QStringLiteral("Aacute")}, 0194 {Qt::Key_Acircumflex, QStringLiteral("Acircumflex")}, 0195 {Qt::Key_Atilde, QStringLiteral("Atilde")}, 0196 {Qt::Key_Adiaeresis, QStringLiteral("Adiaeresis")}, 0197 {Qt::Key_Aring, QStringLiteral("Aring")}, 0198 {Qt::Key_AE, QStringLiteral("AE")}, 0199 {Qt::Key_Ccedilla, QStringLiteral("Ccedilla")}, 0200 {Qt::Key_Egrave, QStringLiteral("Egrave")}, 0201 {Qt::Key_Eacute, QStringLiteral("Eacute")}, 0202 {Qt::Key_Ecircumflex, QStringLiteral("Ecircumflex")}, 0203 {Qt::Key_Ediaeresis, QStringLiteral("Ediaeresis")}, 0204 {Qt::Key_Igrave, QStringLiteral("Igrave")}, 0205 {Qt::Key_Iacute, QStringLiteral("Iacute")}, 0206 {Qt::Key_Icircumflex, QStringLiteral("Icircumflex")}, 0207 {Qt::Key_Idiaeresis, QStringLiteral("Idiaeresis")}, 0208 {Qt::Key_ETH, QStringLiteral("ETH")}, 0209 {Qt::Key_Ntilde, QStringLiteral("Ntilde")}, 0210 {Qt::Key_Ograve, QStringLiteral("Ograve")}, 0211 {Qt::Key_Oacute, QStringLiteral("Oacute")}, 0212 {Qt::Key_Ocircumflex, QStringLiteral("Ocircumflex")}, 0213 {Qt::Key_Otilde, QStringLiteral("Otilde")}, 0214 {Qt::Key_Odiaeresis, QStringLiteral("Odiaeresis")}, 0215 {Qt::Key_multiply, QStringLiteral("multiply")}, 0216 {Qt::Key_Ooblique, QStringLiteral("Ooblique")}, 0217 {Qt::Key_Ugrave, QStringLiteral("Ugrave")}, 0218 {Qt::Key_Uacute, QStringLiteral("Uacute")}, 0219 {Qt::Key_Ucircumflex, QStringLiteral("Ucircumflex")}, 0220 {Qt::Key_Udiaeresis, QStringLiteral("Udiaeresis")}, 0221 {Qt::Key_Yacute, QStringLiteral("Yacute")}, 0222 {Qt::Key_THORN, QStringLiteral("THORN")}, 0223 {Qt::Key_ssharp, QStringLiteral("ssharp")}, 0224 {Qt::Key_division, QStringLiteral("division")}, 0225 {Qt::Key_ydiaeresis, QStringLiteral("ydiaeresis")}, 0226 // { Qt::Key_Multi_key, "Multi_key" }, 0227 // { Qt::Key_Codeinput, "Codeinput" }, 0228 // { Qt::Key_SingleCandidate, "SingleCandidate" }, 0229 // { Qt::Key_MultipleCandidate, "MultipleCandidate" }, 0230 // { Qt::Key_PreviousCandidate, "PreviousCandidate" }, 0231 // { Qt::Key_Mode_switch, "Mode_switch" }, 0232 // { Qt::Key_Kanji, "Kanji" }, 0233 // { Qt::Key_Muhenkan, "Muhenkan" }, 0234 // { Qt::Key_Henkan, "Henkan" }, 0235 // { Qt::Key_Romaji, "Romaji" }, 0236 // { Qt::Key_Hiragana, "Hiragana" }, 0237 // { Qt::Key_Katakana, "Katakana" }, 0238 // { Qt::Key_Hiragana_Katakana, "Hiragana_Katakana" }, 0239 // { Qt::Key_Zenkaku, "Zenkaku" }, 0240 // { Qt::Key_Hankaku, "Hankaku" }, 0241 // { Qt::Key_Zenkaku_Hankaku, "Zenkaku_Hankaku" }, 0242 // { Qt::Key_Touroku, "Touroku" }, 0243 // { Qt::Key_Massyo, "Massyo" }, 0244 // { Qt::Key_Kana_Lock, "Kana_Lock" }, 0245 // { Qt::Key_Kana_Shift, "Kana_Shift" }, 0246 // { Qt::Key_Eisu_Shift, "Eisu_Shift" }, 0247 // { Qt::Key_Eisu_toggle, "Eisu_toggle" }, 0248 // { Qt::Key_Hangul, "Hangul" }, 0249 // { Qt::Key_Hangul_Start, "Hangul_Start" }, 0250 // { Qt::Key_Hangul_End, "Hangul_End" }, 0251 // { Qt::Key_Hangul_Hanja, "Hangul_Hanja" }, 0252 // { Qt::Key_Hangul_Jamo, "Hangul_Jamo" }, 0253 // { Qt::Key_Hangul_Romaja, "Hangul_Romaja" }, 0254 // { Qt::Key_Hangul_Jeonja, "Hangul_Jeonja" }, 0255 // { Qt::Key_Hangul_Banja, "Hangul_Banja" }, 0256 // { Qt::Key_Hangul_PreHanja, "Hangul_PreHanja" }, 0257 // { Qt::Key_Hangul_PostHanja, "Hangul_PostHanja" }, 0258 // { Qt::Key_Hangul_Special, "Hangul_Special" }, 0259 // { Qt::Key_Dead_Grave, "Dead_Grave" }, 0260 // { Qt::Key_Dead_Acute, "Dead_Acute" }, 0261 // { Qt::Key_Dead_Circumflex, "Dead_Circumflex" }, 0262 // { Qt::Key_Dead_Tilde, "Dead_Tilde" }, 0263 // { Qt::Key_Dead_Macron, "Dead_Macron" }, 0264 // { Qt::Key_Dead_Breve, "Dead_Breve" }, 0265 // { Qt::Key_Dead_Abovedot, "Dead_Abovedot" }, 0266 // { Qt::Key_Dead_Diaeresis, "Dead_Diaeresis" }, 0267 // { Qt::Key_Dead_Abovering, "Dead_Abovering" }, 0268 // { Qt::Key_Dead_Doubleacute, "Dead_Doubleacute" }, 0269 // { Qt::Key_Dead_Caron, "Dead_Caron" }, 0270 // { Qt::Key_Dead_Cedilla, "Dead_Cedilla" }, 0271 // { Qt::Key_Dead_Ogonek, "Dead_Ogonek" }, 0272 // { Qt::Key_Dead_Iota, "Dead_Iota" }, 0273 // { Qt::Key_Dead_Voiced_Sound, "Dead_Voiced_Sound" }, 0274 // { Qt::Key_Dead_Semivoiced_Sound, "Dead_Semivoiced_Sound" }, 0275 // { Qt::Key_Dead_Belowdot, "Dead_Belowdot" }, 0276 // { Qt::Key_Dead_Hook, "Dead_Hook" }, 0277 // { Qt::Key_Dead_Horn, "Dead_Horn" }, 0278 {Qt::Key_Back, QStringLiteral("Back")}, 0279 {Qt::Key_Forward, QStringLiteral("Forward")}, 0280 {Qt::Key_Stop, QStringLiteral("Stop")}, 0281 {Qt::Key_Refresh, QStringLiteral("Refresh")}, 0282 {Qt::Key_VolumeDown, QStringLiteral("VolumeDown")}, 0283 {Qt::Key_VolumeMute, QStringLiteral("VolumeMute")}, 0284 {Qt::Key_VolumeUp, QStringLiteral("VolumeUp")}, 0285 {Qt::Key_BassBoost, QStringLiteral("BassBoost")}, 0286 {Qt::Key_BassUp, QStringLiteral("BassUp")}, 0287 {Qt::Key_BassDown, QStringLiteral("BassDown")}, 0288 {Qt::Key_TrebleUp, QStringLiteral("TrebleUp")}, 0289 {Qt::Key_TrebleDown, QStringLiteral("TrebleDown")}, 0290 {Qt::Key_MediaPlay, QStringLiteral("MediaPlay")}, 0291 {Qt::Key_MediaStop, QStringLiteral("MediaStop")}, 0292 // { Qt::Key_MediaPrev, "MediaPrev" }, 0293 {Qt::Key_MediaNext, QStringLiteral("MediaNext")}, 0294 {Qt::Key_MediaRecord, QStringLiteral("MediaRecord")}, 0295 {Qt::Key_HomePage, QStringLiteral("HomePage")}, 0296 {Qt::Key_Favorites, QStringLiteral("Favorites")}, 0297 {Qt::Key_Search, QStringLiteral("Search")}, 0298 {Qt::Key_Standby, QStringLiteral("Standby")}, 0299 {Qt::Key_OpenUrl, QStringLiteral("OpenUrl")}, 0300 {Qt::Key_LaunchMail, QStringLiteral("LaunchMail")}, 0301 {Qt::Key_LaunchMedia, QStringLiteral("LaunchMedia")}, 0302 {Qt::Key_Launch0, QStringLiteral("Launch0")}, 0303 {Qt::Key_Launch1, QStringLiteral("Launch1")}, 0304 {Qt::Key_Launch2, QStringLiteral("Launch2")}, 0305 {Qt::Key_Launch3, QStringLiteral("Launch3")}, 0306 {Qt::Key_Launch4, QStringLiteral("Launch4")}, 0307 {Qt::Key_Launch5, QStringLiteral("Launch5")}, 0308 {Qt::Key_Launch6, QStringLiteral("Launch6")}, 0309 {Qt::Key_Launch7, QStringLiteral("Launch7")}, 0310 {Qt::Key_Launch8, QStringLiteral("Launch8")}, 0311 {Qt::Key_Launch9, QStringLiteral("Launch9")}, 0312 {Qt::Key_LaunchA, QStringLiteral("LaunchA")}, 0313 {Qt::Key_LaunchB, QStringLiteral("LaunchB")}, 0314 {Qt::Key_LaunchC, QStringLiteral("LaunchC")}, 0315 {Qt::Key_LaunchD, QStringLiteral("LaunchD")}, 0316 {Qt::Key_LaunchE, QStringLiteral("LaunchE")}, 0317 {Qt::Key_LaunchF, QStringLiteral("LaunchF")}, 0318 {Qt::Key_MediaLast, QStringLiteral("MediaLast")}, 0319 {Qt::Key_unknown, QStringLiteral("unknown")} 0320 // { Qt::Key_Call, "Call" }, 0321 // { Qt::Key_Context1, "Context1" }, 0322 // { Qt::Key_Context2, "Context2" }, 0323 // { Qt::Key_Context3, "Context3" }, 0324 // { Qt::Key_Context4, "Context4" }, 0325 // { Qt::Key_Flip, "Flip" }, 0326 // { Qt::Key_Hangup, "Hangup" }, 0327 // { Qt::Key_No, "No" }, 0328 // { Qt::Key_Select, "Select" }, 0329 // { Qt::Key_Yes, "Yes" }, 0330 // { Qt::Key_Execute, "Execute" }, 0331 // { Qt::Key_Printer, "Printer" }, 0332 // { Qt::Key_Play, "Play" }, 0333 // { Qt::Key_Sleep, "Sleep" }, 0334 // { Qt::Key_Zoom, "Zoom" }, 0335 // { Qt::Key_Cancel, "Cancel"} 0336 }; 0337 0338 KeycodeLineEdit::KeycodeLineEdit(QWidget *parent) 0339 : KLineEdit(parent) 0340 { 0341 } 0342 0343 int KeycodeLineEdit::key() 0344 { 0345 return m_key; 0346 } 0347 0348 Qt::KeyboardModifiers KeycodeLineEdit::modifiers() 0349 { 0350 return m_modifiers; 0351 } 0352 0353 void KeycodeLineEdit::setKeyModifiers(int key, Qt::KeyboardModifiers modifiers) 0354 { 0355 m_key = key; 0356 m_modifiers = modifiers; 0357 0358 if (m_key) { 0359 setText(keyString(m_key, m_modifiers)); 0360 } else { 0361 clear(); 0362 } 0363 } 0364 0365 void KeycodeLineEdit::keyPressEvent(QKeyEvent *e) 0366 { 0367 if (e->key() == Qt::Key_Backspace || e->key() == Qt::Key_Delete) { 0368 setKeyModifiers(0, Qt::NoModifier); 0369 e->accept(); 0370 } else if (!findQtText(e->key()).isEmpty()) { 0371 setKeyModifiers(e->key(), e->modifiers()); 0372 e->accept(); 0373 } else { 0374 e->ignore(); 0375 } 0376 } 0377 0378 QString KeycodeLineEdit::findQtText(int qtKey) 0379 { 0380 QString string; 0381 0382 for (unsigned i = 0; i < sizeof(keyCodes) / sizeof(struct KEYCODE); ++i) { 0383 if (keyCodes[i].qtKey == qtKey) { 0384 string = keyCodes[i].qtText; 0385 break; 0386 } 0387 } 0388 0389 return string; 0390 } 0391 0392 QString KeycodeLineEdit::keyString(int qtKey, Qt::KeyboardModifiers modifiers) 0393 { 0394 QString string; 0395 0396 if (modifiers & Qt::ShiftModifier) { 0397 string += QLatin1String("SHIFT+"); 0398 } 0399 0400 if (modifiers & Qt::ControlModifier) { 0401 string += QStringLiteral("CTRL+"); 0402 } 0403 0404 if (modifiers & Qt::AltModifier) { 0405 string += QStringLiteral("ALT+"); 0406 } 0407 0408 if (modifiers & Qt::MetaModifier) { 0409 string += QStringLiteral("META+"); 0410 } 0411 0412 return string += findQtText(qtKey); 0413 } 0414 0415 #include "moc_KeycodeLineEdit.cpp"