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) != 0;
    m_altKey = (state & Qt::AltModifier) != 0;
    m_metaKey = (state & Qt::MetaModifier) != 0;
    m_isKeypad = (state & Qt::KeypadModifier) != 0;
    m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event->key(), m_isKeypad);
    m_nativeVirtualKeyCode = event->nativeVirtualKey();
    m_shiftKey = (state & Qt::ShiftModifier) != 0 || event->key() == Qt::Key_Backtab; // Simulate Shift+Tab with Key_Backtab
    m_qtEvent = event;
}
示例#2
0
WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(const NIXKeyEvent& event)
{
    WebEvent::Type type = convertToWebEventType(event.type);
    const WTF::String text = keyTextForNixKeyEvent(event);
    const WTF::String unmodifiedText = text;
    bool isAutoRepeat = false;
    bool isSystemKey = false;
    bool isKeypad = event.isKeypad;
    const WTF::String keyIdentifier = keyIdentifierForNixKeyCode(event.key);
    int windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event.key, isKeypad);
    int nativeVirtualKeyCode = 0;
    int macCharCode = 0;
    WebEvent::Modifiers modifiers = convertToWebEventModifiers(event.modifiers);
    double timestamp = event.timestamp;

    return WebKeyboardEvent(type, text, unmodifiedText, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, macCharCode, isAutoRepeat, isKeypad, isSystemKey, modifiers, timestamp);
}
示例#3
0
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);
}
示例#4
0
PlatformKeyboardEvent::PlatformKeyboardEvent(wxKeyEvent& event)
{
    if (event.GetEventType() == wxEVT_KEY_UP)
        m_type = PlatformEvent::KeyUp;
    else if (event.GetEventType() == wxEVT_KEY_DOWN)
        m_type = PlatformEvent::KeyDown;
    else if (event.GetEventType() == wxEVT_CHAR)
        m_type = PlatformEvent::Char;
    else
        ASSERT_NOT_REACHED();
    if (m_type != PlatformEvent::Char)
        m_keyIdentifier = keyIdentifierForWxKeyCode(event.GetKeyCode());
    else {
        //ENTER is an editing command processed as a char (only Enter and Tab are)
        //unfortunately the unicode key for numpad_enter (370) is NOT what we want here (13)
        //The unicode values for normal enter and tab are the same as the ASCII values, thus ok
        //Note that I think this a wx bug, as the Character Code is actually 13 when
        //numpad_enter is a CHAR event.
        if (event.GetKeyCode() == 13 && event.GetUnicodeKey() == wxChar(370))
            m_text = "\r";
        else
            m_text = wxString(event.GetUnicodeKey());
        m_unmodifiedText = m_text;
    }
    m_autoRepeat = false; // FIXME: not correct.
    m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event.GetKeyCode());
    m_nativeVirtualKeyCode = event.GetKeyCode();
    m_isKeypad = (event.GetKeyCode() >= WXK_NUMPAD_SPACE) && (event.GetKeyCode() <= WXK_NUMPAD_DIVIDE);
    
    m_modifiers = 0;
    if (event.ShiftDown())
        m_modifiers |= ShiftKey;
    
    if (event.CmdDown())
        m_modifiers |= CtrlKey;
    
    if (event.AltDown())
        m_modifiers |= AltKey;
    
    if (event.MetaDown())
        m_modifiers |= MetaKey;
    
    m_timestamp = WTF::currentTime();
}
示例#5
0
PlatformKeyboardEvent::PlatformKeyboardEvent(GdkEvent* event)
{
    m_isKeyUp = event->type == GDK_KEY_RELEASE;
    m_shiftKey = event->key.state & GDK_SHIFT_MASK != 0;
    m_ctrlKey = event->key.state & GDK_CONTROL_MASK != 0;
    m_altKey = event->key.state & GDK_MOD1_MASK != 0;
    m_metaKey = event->key.state & GDK_MOD2_MASK != 0;
    m_text = event->key.string;
    m_unmodifiedText = event->key.string;
    m_keyIdentifier = keyIdentifierForGdkKeyCode(event->key.keyval);
    m_WindowsKeyCode = windowsKeyCodeForKeyEvent(event->key.keyval);
    m_autoRepeat = false;
    m_isKeypad = false;

    if (!m_shiftKey) {
        UChar character = tolower(m_text[0]);
        m_text = String(&character, 1);
    }
}
示例#6
0
// Keep this in sync with the other platform event constructors
// TODO: m_gdkEventKey should be refcounted
PlatformKeyboardEvent::PlatformKeyboardEvent(GdkEventKey* event)
    : m_type((event->type == GDK_KEY_RELEASE) ? KeyUp : KeyDown)
    , m_text(singleCharacterString(event->keyval))
    , m_unmodifiedText(singleCharacterString(event->keyval))
    , m_keyIdentifier(keyIdentifierForGdkKeyCode(event->keyval))
    , m_autoRepeat(false)
    , m_windowsVirtualKeyCode(windowsKeyCodeForKeyEvent(event->keyval))
    , m_isKeypad(event->keyval >= GDK_KP_Space && event->keyval <= GDK_KP_9)
    , m_shiftKey((event->state & GDK_SHIFT_MASK) || (event->keyval == GDK_3270_BackTab))
    , m_ctrlKey(event->state & GDK_CONTROL_MASK)
    , m_altKey(event->state & GDK_MOD1_MASK)
#if GTK_CHECK_VERSION(2,10,0)
    , m_metaKey(event->state & GDK_META_MASK)
#else
    // GDK_MOD2_MASK doesn't always mean meta so we can't use it
    , m_metaKey(false)
#endif
    , m_gdkEventKey(event)
{
}