345
348
InsertText(clipboard->text(mode));
348
bool MythUITextEdit::keyPressEvent(QKeyEvent *e)
351
typedef QPair<int, int> keyCombo;
352
static QMap<keyCombo, int> gDeadKeyMap;
354
static void LoadDeadKeys(QMap<QPair<int, int>, int> &map)
356
// Dead key // Key // Result
357
map[keyCombo(Qt::Key_Dead_Grave, Qt::Key_A)] = Qt::Key_Agrave;
358
map[keyCombo(Qt::Key_Dead_Acute, Qt::Key_A)] = Qt::Key_Aacute;
359
map[keyCombo(Qt::Key_Dead_Circumflex, Qt::Key_A)] = Qt::Key_Acircumflex;
360
map[keyCombo(Qt::Key_Dead_Tilde, Qt::Key_A)] = Qt::Key_Atilde;
361
map[keyCombo(Qt::Key_Dead_Diaeresis, Qt::Key_A)] = Qt::Key_Adiaeresis;
362
map[keyCombo(Qt::Key_Dead_Abovering, Qt::Key_A)] = Qt::Key_Aring;
364
map[keyCombo(Qt::Key_Dead_Cedilla, Qt::Key_C)] = Qt::Key_Ccedilla;
366
map[keyCombo(Qt::Key_Dead_Grave, Qt::Key_E)] = Qt::Key_Egrave;
367
map[keyCombo(Qt::Key_Dead_Acute, Qt::Key_E)] = Qt::Key_Eacute;
368
map[keyCombo(Qt::Key_Dead_Circumflex, Qt::Key_E)] = Qt::Key_Ecircumflex;
369
map[keyCombo(Qt::Key_Dead_Diaeresis, Qt::Key_E)] = Qt::Key_Ediaeresis;
371
map[keyCombo(Qt::Key_Dead_Grave, Qt::Key_I)] = Qt::Key_Igrave;
372
map[keyCombo(Qt::Key_Dead_Acute, Qt::Key_I)] = Qt::Key_Iacute;
373
map[keyCombo(Qt::Key_Dead_Circumflex, Qt::Key_I)] = Qt::Key_Icircumflex;
374
map[keyCombo(Qt::Key_Dead_Diaeresis, Qt::Key_I)] = Qt::Key_Idiaeresis;
376
map[keyCombo(Qt::Key_Dead_Tilde, Qt::Key_N)] = Qt::Key_Ntilde;
378
map[keyCombo(Qt::Key_Dead_Grave, Qt::Key_O)] = Qt::Key_Ograve;
379
map[keyCombo(Qt::Key_Dead_Acute, Qt::Key_O)] = Qt::Key_Oacute;
380
map[keyCombo(Qt::Key_Dead_Circumflex, Qt::Key_O)] = Qt::Key_Ocircumflex;
381
map[keyCombo(Qt::Key_Dead_Tilde, Qt::Key_O)] = Qt::Key_Otilde;
382
map[keyCombo(Qt::Key_Dead_Diaeresis, Qt::Key_O)] = Qt::Key_Odiaeresis;
384
map[keyCombo(Qt::Key_Dead_Grave, Qt::Key_U)] = Qt::Key_Ugrave;
385
map[keyCombo(Qt::Key_Dead_Acute, Qt::Key_U)] = Qt::Key_Uacute;
386
map[keyCombo(Qt::Key_Dead_Circumflex, Qt::Key_U)] = Qt::Key_Ucircumflex;
387
map[keyCombo(Qt::Key_Dead_Diaeresis, Qt::Key_U)] = Qt::Key_Udiaeresis;
389
map[keyCombo(Qt::Key_Dead_Acute, Qt::Key_Y)] = Qt::Key_Yacute;
390
map[keyCombo(Qt::Key_Dead_Diaeresis, Qt::Key_Y)] = Qt::Key_ydiaeresis;
395
bool MythUITextEdit::keyPressEvent(QKeyEvent *event)
350
397
m_lastKeyPress.restart();
352
399
QStringList actions;
353
400
bool handled = false;
355
handled = GetMythMainWindow()->TranslateKeyPress("Global", e, actions, false);
357
if (!handled && InsertCharacter(e->text()))
402
handled = GetMythMainWindow()->TranslateKeyPress("Global", event, actions,
405
Qt::KeyboardModifiers modifiers = event->modifiers();
406
int keynum = event->key();
408
if (keynum >= Qt::Key_Shift && keynum <= Qt::Key_CapsLock)
412
// Compose key handling
413
// Enter composition mode
414
if ((modifiers & Qt::GroupSwitchModifier) &&
415
(keynum >= Qt::Key_Dead_Grave) && (keynum <= Qt::Key_Dead_Horn))
417
m_composeKey = keynum;
420
else if (m_composeKey > 0) // 'Compose' the key
422
if (gDeadKeyMap.isEmpty())
423
LoadDeadKeys(gDeadKeyMap);
425
LOG(VB_GUI, LOG_DEBUG, QString("Compose key: %1 Key: %2").arg(QString::number(m_composeKey, 16)).arg(QString::number(keynum, 16)));
427
if (gDeadKeyMap.contains(keyCombo(m_composeKey, keynum)))
429
int keycode = gDeadKeyMap.value(keyCombo(m_composeKey, keynum));
431
//QKeyEvent key(QEvent::KeyPress, keycode, modifiers);
432
character = QChar(keycode);
434
if (modifiers & Qt::ShiftModifier)
435
character = character.toUpper();
437
character = character.toLower();
438
LOG(VB_GUI, LOG_DEBUG, QString("Found match for dead-key combo - %1").arg(character));
443
if (character.isEmpty())
444
character = event->text();
446
if (!handled && InsertCharacter(character))
360
449
for (int i = 0; i < actions.size() && !handled; i++)