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, bool isKeyUp) { m_text = event->text(); m_unmodifiedText = event->text(); // FIXME: not correct m_keyIdentifier = keyIdentifierForQtKeyCode(event->key()); m_isKeyUp = isKeyUp; m_autoRepeat = event->isAutoRepeat(); m_WindowsKeyCode = windowsKeyCodeForKeyEvent(event->key()); m_isKeypad = (event->modifiers() & Qt::KeypadModifier) != 0; m_shiftKey = (event->modifiers() & Qt::ShiftModifier) != 0; m_ctrlKey = (event->modifiers() & Qt::ControlModifier) != 0; m_altKey = (event->modifiers() & Qt::AltModifier) != 0; m_metaKey = (event->modifiers() & Qt::MetaModifier) != 0; }
PlatformKeyboardEvent::PlatformKeyboardEvent(QKeyEvent* event) { const int state = event->modifiers(); m_type = (event->type() == QEvent::KeyRelease) ? KeyUp : KeyDown; m_text = event->text(); m_unmodifiedText = event->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; }
WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(QKeyEvent* event) { const int state = event->modifiers(); WebEvent::Type type = webEventTypeForEvent(event); const String text = event->text(); const String unmodifiedText = event->text(); bool isAutoRepeat = event->isAutoRepeat(); bool isSystemKey = false; // FIXME: No idea what that is. bool isKeypad = (state & Qt::KeypadModifier); const String keyIdentifier = keyIdentifierForQtKeyCode(event->key()); int windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event->key(), isKeypad); int nativeVirtualKeyCode = event->nativeVirtualKey(); int macCharCode = 0; WebEvent::Modifiers modifiers = modifiersForEvent(event->modifiers()); double timestamp = currentTimeForEvent(event); return WebKeyboardEvent(type, text, unmodifiedText, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, macCharCode, isAutoRepeat, isKeypad, isSystemKey, modifiers, timestamp); }