Exemplo n.º 1
0
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;
}