WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event) { if (event.type() == EventTypeNames::keydown) type = KeyDown; else if (event.type() == EventTypeNames::keyup) type = WebInputEvent::KeyUp; else if (event.type() == EventTypeNames::keypress) type = WebInputEvent::Char; else return; // Skip all other keyboard events. modifiers = getWebInputModifiers(event); if (event.location() == KeyboardEvent::DOM_KEY_LOCATION_NUMPAD) modifiers |= WebInputEvent::IsKeyPad; else if (event.location() == KeyboardEvent::DOM_KEY_LOCATION_LEFT) modifiers |= WebInputEvent::IsLeft; else if (event.location() == KeyboardEvent::DOM_KEY_LOCATION_RIGHT) modifiers |= WebInputEvent::IsRight; timeStampSeconds = event.timeStamp() / millisPerSecond; windowsKeyCode = event.keyCode(); // The platform keyevent does not exist if the event was created using // initKeyboardEvent. if (!event.keyEvent()) return; nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode(); unsigned numberOfCharacters = std::min(event.keyEvent()->text().length(), static_cast<unsigned>(textLengthCap)); for (unsigned i = 0; i < numberOfCharacters; ++i) { text[i] = event.keyEvent()->text()[i]; unmodifiedText[i] = event.keyEvent()->unmodifiedText()[i]; } memcpy(keyIdentifier, event.keyIdentifier().ascii().data(), event.keyIdentifier().length()); }
WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event) { if (event.type() == EventTypeNames::keydown) type = KeyDown; else if (event.type() == EventTypeNames::keyup) type = WebInputEvent::KeyUp; else if (event.type() == EventTypeNames::keypress) type = WebInputEvent::Char; else return; // Skip all other keyboard events. modifiers = event.modifiers(); timeStampSeconds = event.platformTimeStamp(); windowsKeyCode = event.keyCode(); // The platform keyevent does not exist if the event was created using // initKeyboardEvent. if (!event.keyEvent()) return; nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode(); domCode = Platform::current()->domEnumFromCodeString(event.keyEvent()->code()); domKey = Platform::current()->domKeyEnumFromString(event.keyEvent()->key()); unsigned numberOfCharacters = std::min(event.keyEvent()->text().length(), static_cast<unsigned>(textLengthCap)); for (unsigned i = 0; i < numberOfCharacters; ++i) { text[i] = event.keyEvent()->text()[i]; unmodifiedText[i] = event.keyEvent()->unmodifiedText()[i]; } memcpy(keyIdentifier, event.keyIdentifier().ascii().data(), event.keyIdentifier().length()); }
WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event) { if (event.type() == eventNames().keydownEvent) type = KeyDown; else if (event.type() == eventNames().keyupEvent) type = WebInputEvent::KeyUp; else if (event.type() == eventNames().keypressEvent) type = WebInputEvent::Char; else return; // Skip all other keyboard events. modifiers = getWebInputModifiers(event); timeStampSeconds = event.timeStamp() / millisPerSecond; windowsKeyCode = event.keyCode(); // The platform keyevent does not exist if the event was created using // initKeyboardEvent. if (!event.keyEvent()) return; nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode(); unsigned numberOfCharacters = std::min(event.keyEvent()->text().length(), static_cast<unsigned>(textLengthCap)); for (unsigned i = 0; i < numberOfCharacters; ++i) { text[i] = event.keyEvent()->text()[i]; unmodifiedText[i] = event.keyEvent()->unmodifiedText()[i]; } }
void MediaDocument::defaultEventHandler(Event* event) { Node* targetNode = event->target()->toNode(); if (!targetNode) return; if (event->type() == EventTypeNames::keydown && event->isKeyboardEvent()) { HTMLVideoElement* video = Traversal<HTMLVideoElement>::firstWithin(*targetNode); if (!video) return; KeyboardEvent* keyboardEvent = toKeyboardEvent(event); if (keyboardEvent->key() == " " || keyboardEvent->keyCode() == VKEY_MEDIA_PLAY_PAUSE) { // space or media key (play/pause) video->togglePlayState(); event->setDefaultHandled(); } } }