18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Collabora, Ltd. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PlatformKeyboardEvent_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PlatformKeyboardEvent_h 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PlatformString.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RetainPtr.h> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __OBJC__ 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSEvent; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSEvent; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WIN) 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct HWND__ *HWND; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef unsigned WPARAM; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef long LPARAM; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(GTK) 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct _GdkEventKey GdkEventKey; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(QT) 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQT_BEGIN_NAMESPACE 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QKeyEvent; 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQT_END_NAMESPACE 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WX) 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass wxKeyEvent; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if PLATFORM(HAIKU) 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass BMessage; 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if PLATFORM(EFL) 6606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsentypedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; 6706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsentypedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; 68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 70692e5dbf12901edacf14812a6fae25462920af42Steve Block#if PLATFORM(BREWMP) 71692e5dbf12901edacf14812a6fae25462920af42Steve Blocktypedef unsigned short uint16; 72692e5dbf12901edacf14812a6fae25462920af42Steve Blocktypedef unsigned long int uint32; 73692e5dbf12901edacf14812a6fae25462920af42Steve Block#define AEEEvent uint16 74692e5dbf12901edacf14812a6fae25462920af42Steve Block#endif 75692e5dbf12901edacf14812a6fae25462920af42Steve Block 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 78ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch class PlatformKeyboardEvent { 79ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_FAST_ALLOCATED; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project enum Type { 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // KeyDown is sent by platforms such as Mac OS X, gtk and Qt, and has information about both physical pressed key, and its translation. 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // For DOM processing, it needs to be disambiguated as RawKeyDown or Char event. 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KeyDown, 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // KeyUp is sent by all platforms. 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KeyUp, 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // These events are sent by platforms such as Windows and wxWidgets. RawKeyDown only has information about a physical key, and Char 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // only has information about a character it was translated into. 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RawKeyDown, 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Char 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project enum ModifierKey { 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AltKey = 1 << 0, 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CtrlKey = 1 << 1, 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MetaKey = 1 << 2, 992bde8e466a4451c7319e3a072d118917957d6554Steve Block ShiftKey = 1 << 3 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block PlatformKeyboardEvent() 103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block : m_type(KeyDown) 104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_autoRepeat(false) 105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_windowsVirtualKeyCode(0) 106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_nativeVirtualKeyCode(0) 107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_isKeypad(false) 108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_shiftKey(false) 109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_ctrlKey(false) 110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_altKey(false) 111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_metaKey(false) 112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if PLATFORM(WIN) || PLATFORM(CHROMIUM) 113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_isSystemKey(false) 114dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if PLATFORM(GTK) 116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_gdkEventKey(0) 117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if PLATFORM(QT) 119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block , m_qtEvent(0) 120dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block { 122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Type type() const { return m_type; } 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void disambiguateKeyDownEvent(Type, bool backwardCompatibilityMode = false); // Only used on platforms that need it, i.e. those that generate KeyDown events. 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Text as as generated by processing a virtual key code with a keyboard layout 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // (in most cases, just a character code, but the layout can emit several 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // characters in a single keypress event on some platforms). 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // This may bear no resemblance to the ultimately inserted text if an input method 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // processes the input. 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Will be null for KeyUp and RawKeyDown events. 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String text() const { return m_text; } 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Text that would have been generated by the keyboard if no modifiers were pressed 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // (except for Shift); useful for shortcut (accelerator) key handling. 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Otherwise, same as text(). 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String unmodifiedText() const { return m_unmodifiedText; } 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Most compatible Windows virtual key code associated with the event. 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Zero for Char events. 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int windowsVirtualKeyCode() const { return m_windowsVirtualKeyCode; } 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setWindowsVirtualKeyCode(int code) { m_windowsVirtualKeyCode = code; } 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int nativeVirtualKeyCode() const { return m_nativeVirtualKeyCode; } 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setNativeVirtualKeyCode(int code) { m_nativeVirtualKeyCode = code; } 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String keyIdentifier() const { return m_keyIdentifier; } 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isAutoRepeat() const { return m_autoRepeat; } 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setIsAutoRepeat(bool in) { m_autoRepeat = in; } 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isKeypad() const { return m_isKeypad; } 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool shiftKey() const { return m_shiftKey; } 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool ctrlKey() const { return m_ctrlKey; } 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool altKey() const { return m_altKey; } 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool metaKey() const { return m_metaKey; } 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned modifiers() const { 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return (altKey() ? AltKey : 0) 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | (ctrlKey() ? CtrlKey : 0) 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | (metaKey() ? MetaKey : 0) 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | (shiftKey() ? ShiftKey : 0); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool currentCapsLockState(); 164dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static void getCurrentModifierState(bool& shiftKey, bool& ctrlKey, bool& altKey, bool& metaKey); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PlatformKeyboardEvent(NSEvent*); 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSEvent* macEvent() const { return m_macEvent.get(); } 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WIN) 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PlatformKeyboardEvent(HWND, WPARAM, LPARAM, Type, bool); 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(GTK) 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PlatformKeyboardEvent(GdkEventKey*); 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GdkEventKey* gdkEventKey() const; 17881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 17981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Used by WebKit2 18081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static String keyIdentifierForGdkKeyCode(unsigned); 18181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static int windowsKeyCodeForGdkKeyCode(unsigned); 18281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static String singleCharacterString(unsigned); 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(ANDROID) 186b98c772f6b9ef7a1eef75d3e678de67edfdde463Andrei Popescu PlatformKeyboardEvent(int keyCode, UChar32 unichar, int repeatCount, 187b98c772f6b9ef7a1eef75d3e678de67edfdde463Andrei Popescu bool down, bool cap, bool alt, bool sym); 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UChar32 unichar() const { return m_unichar; } 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int repeatCount() const { return m_repeatCount; } 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(QT) 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PlatformKeyboardEvent(QKeyEvent*); 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QKeyEvent* qtEvent() const { return m_qtEvent; } 195a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch uint32_t nativeModifiers() const; 196a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch uint32_t nativeScanCode() const; 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WX) 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PlatformKeyboardEvent(wxKeyEvent&); 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 203231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if PLATFORM(HAIKU) 204231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block PlatformKeyboardEvent(BMessage*); 205231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 206231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 207692e5dbf12901edacf14812a6fae25462920af42Steve Block#if PLATFORM(BREWMP) 208692e5dbf12901edacf14812a6fae25462920af42Steve Block PlatformKeyboardEvent(AEEEvent, uint16, uint32, Type); 209692e5dbf12901edacf14812a6fae25462920af42Steve Block#endif 210692e5dbf12901edacf14812a6fae25462920af42Steve Block 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WIN) || PLATFORM(CHROMIUM) 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isSystemKey() const { return m_isSystemKey; } 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 215dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if PLATFORM(EFL) 216dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block PlatformKeyboardEvent(const Evas_Event_Key_Down*); 217dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block PlatformKeyboardEvent(const Evas_Event_Key_Up*); 218dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 219dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project protected: 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Type m_type; 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_text; 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_unmodifiedText; 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_keyIdentifier; 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_autoRepeat; 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_windowsVirtualKeyCode; 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_nativeVirtualKeyCode; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_isKeypad; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_shiftKey; 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_ctrlKey; 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_altKey; 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_metaKey; 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(ANDROID) 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* the actual repeatCount (as opposed to just a bool m_autoRepeat) 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0 for initial down and up 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_repeatCount; 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* The originall unichar value. Sometimes the m_text/m_unmodifiedText 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project fields are stripped (e.g. for RawKeyDown), so we record it also here 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project in case someone (e.g. plugins) want to sniff it w/o waiting for a 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Char event type. 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UChar32 m_unichar; 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RetainPtr<NSEvent> m_macEvent; 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(WIN) || PLATFORM(CHROMIUM) 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_isSystemKey; 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(GTK) 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GdkEventKey* m_gdkEventKey; 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(QT) 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QKeyEvent* m_qtEvent; 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 260e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 261e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#if PLATFORM(QT) 262e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke// Used by WebKit2. 263e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeString keyIdentifierForQtKeyCode(int keyCode); 264e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeint windowsKeyCodeForKeyEvent(unsigned int keycode, bool isKeypad = false); 265e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#endif 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // PlatformKeyboardEvent_h 270