PlatformKeyboardEvent::PlatformKeyboardEvent(QKeyEvent* event) { const int state = event->modifiers(); m_type = (event->type() == QEvent::KeyRelease) ? PlatformEvent::KeyUp : PlatformEvent::KeyDown; m_modifiers = 0; if ((state & Qt::ShiftModifier) || event->key() == Qt::Key_Backtab) // Simulate Shift+Tab with Key_Backtab m_modifiers |= ShiftKey; if (state & Qt::ControlModifier) m_modifiers |= CtrlKey; if (state & Qt::AltModifier) m_modifiers |= AltKey; if (state & Qt::MetaModifier) m_modifiers |= MetaKey; m_text = keyTextForKeyEvent(event); m_unmodifiedText = m_text; // FIXME: not correct m_keyIdentifier = keyIdentifierForQtKeyCode(event->key()); m_autoRepeat = event->isAutoRepeat(); m_isKeypad = (state & Qt::KeypadModifier); m_isSystemKey = false; m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event->key(), m_isKeypad); m_nativeVirtualKeyCode = event->nativeVirtualKey(); m_macCharCode = 0; m_qtEvent = event; m_timestamp = WTF::currentTime(); }
PlatformKeyboardEvent::PlatformKeyboardEvent(QKeyEvent* event, bool useNativeVirtualKeyAsDOMKey) { const int state = event->modifiers(); m_type = (event->type() == QEvent::KeyRelease) ? PlatformEvent::KeyUp : PlatformEvent::KeyDown; m_modifiers = 0; if ((state & Qt::ShiftModifier) || event->key() == Qt::Key_Backtab) // Simulate Shift+Tab with Key_Backtab m_modifiers |= ShiftKey; if (state & Qt::ControlModifier) m_modifiers |= CtrlKey; if (state & Qt::AltModifier) m_modifiers |= AltKey; if (state & Qt::MetaModifier) m_modifiers |= MetaKey; m_useNativeVirtualKeyAsDOMKey = useNativeVirtualKeyAsDOMKey; m_text = keyTextForKeyEvent(event); m_unmodifiedText = m_text; // FIXME: not correct m_keyIdentifier = keyIdentifierForQtKeyCode(event->key()); m_autoRepeat = event->isAutoRepeat(); m_isKeypad = (state & Qt::KeypadModifier); m_isSystemKey = false; m_nativeVirtualKeyCode = event->nativeVirtualKey(); // If QKeyEvent::nativeVirtualKey() is valid (!=0) and useNativeVirtualKeyAsDOMKey is set, // then it is a special case desired by QtWebKit embedder to send domain specific keys // to Web Applications intented for platforms like HbbTV,CE-HTML,OIPF,..etc. if (useNativeVirtualKeyAsDOMKey && m_nativeVirtualKeyCode) m_windowsVirtualKeyCode = m_nativeVirtualKeyCode; else m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event->key(), m_isKeypad); m_macCharCode = 0; m_qtEvent = event; m_timestamp = WTF::currentTime(); }
PlatformKeyboardEvent::PlatformKeyboardEvent(QKeyEvent* event) { const int state = event->modifiers(); m_type = (event->type() == QEvent::KeyRelease) ? KeyUp : KeyDown; m_text = keyTextForKeyEvent(event); m_unmodifiedText = m_text; // FIXME: not correct m_keyIdentifier = keyIdentifierForQtKeyCode(event->key()); m_autoRepeat = event->isAutoRepeat(); m_ctrlKey = (state & Qt::ControlModifier); m_altKey = (state & Qt::AltModifier); m_metaKey = (state & Qt::MetaModifier); m_isKeypad = (state & Qt::KeypadModifier); m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event->key(), m_isKeypad); m_nativeVirtualKeyCode = event->nativeVirtualKey(); m_shiftKey = (state & Qt::ShiftModifier) || event->key() == Qt::Key_Backtab; // Simulate Shift+Tab with Key_Backtab m_qtEvent = event; }