KeyboardEvent::KeyboardEvent(const PlatformKeyboardEvent& key, AbstractView* view) : UIEventWithKeyState(eventTypeForKeyboardEventType(key.type()), true, true, view, 0, key.ctrlKey(), key.altKey(), key.shiftKey(), key.metaKey()) , m_keyEvent(adoptPtr(new PlatformKeyboardEvent(key))) , m_keyIdentifier(key.keyIdentifier()) , m_keyLocation(key.isKeypad() ? DOM_KEY_LOCATION_NUMPAD : DOM_KEY_LOCATION_STANDARD) // FIXME: differentiate right/left, too , m_altGraphKey(false) { }
static inline KeyboardEvent::KeyLocationCode keyLocationCode(const PlatformKeyboardEvent& key) { if (key.isKeypad()) return KeyboardEvent::DOM_KEY_LOCATION_NUMPAD; if (key.modifiers() & PlatformEvent::IsLeft) return KeyboardEvent::DOM_KEY_LOCATION_LEFT; if (key.modifiers() & PlatformEvent::IsRight) return KeyboardEvent::DOM_KEY_LOCATION_RIGHT; return KeyboardEvent::DOM_KEY_LOCATION_STANDARD; }
static inline KeyboardEvent::KeyLocationCode keyLocationCode(const PlatformKeyboardEvent& key) { if (key.isKeypad()) return KeyboardEvent::DOM_KEY_LOCATION_NUMPAD; switch (key.windowsVirtualKeyCode()) { case VK_LCONTROL: case VK_LSHIFT: case VK_LMENU: case VK_LWIN: return KeyboardEvent::DOM_KEY_LOCATION_LEFT; case VK_RCONTROL: case VK_RSHIFT: case VK_RMENU: case VK_RWIN: return KeyboardEvent::DOM_KEY_LOCATION_RIGHT; default: return KeyboardEvent::DOM_KEY_LOCATION_STANDARD; } }