summaryrefslogtreecommitdiffstats
path: root/WebCore/dom/KeyboardEvent.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:30:52 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:30:52 -0800
commit8e35f3cfc7fba1d1c829dc557ebad6409cbe16a2 (patch)
tree11425ea0b299d6fb89c6d3618a22d97d5bf68d0f /WebCore/dom/KeyboardEvent.h
parent648161bb0edfc3d43db63caed5cc5213bc6cb78f (diff)
downloadexternal_webkit-8e35f3cfc7fba1d1c829dc557ebad6409cbe16a2.zip
external_webkit-8e35f3cfc7fba1d1c829dc557ebad6409cbe16a2.tar.gz
external_webkit-8e35f3cfc7fba1d1c829dc557ebad6409cbe16a2.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'WebCore/dom/KeyboardEvent.h')
-rw-r--r--WebCore/dom/KeyboardEvent.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/WebCore/dom/KeyboardEvent.h b/WebCore/dom/KeyboardEvent.h
new file mode 100644
index 0000000..2b0a131
--- /dev/null
+++ b/WebCore/dom/KeyboardEvent.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2001 Peter Kelly (pmk@post.com)
+ * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de)
+ * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef KeyboardEvent_h
+#define KeyboardEvent_h
+
+#include "UIEventWithKeyState.h"
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+ class PlatformKeyboardEvent;
+
+#if PLATFORM(MAC)
+ struct KeypressCommand {
+ KeypressCommand(const String& commandName) : commandName(commandName) {}
+ KeypressCommand(const String& commandName, const String& text) : commandName(commandName), text(text) { ASSERT(commandName == "insertText:"); }
+
+ String commandName;
+ String text;
+ };
+#endif
+
+ // Introduced in DOM Level 3
+ class KeyboardEvent : public UIEventWithKeyState {
+ public:
+ enum KeyLocationCode {
+ DOM_KEY_LOCATION_STANDARD = 0x00,
+ DOM_KEY_LOCATION_LEFT = 0x01,
+ DOM_KEY_LOCATION_RIGHT = 0x02,
+ DOM_KEY_LOCATION_NUMPAD = 0x03
+ };
+
+ static PassRefPtr<KeyboardEvent> create()
+ {
+ return adoptRef(new KeyboardEvent);
+ }
+ static PassRefPtr<KeyboardEvent> create(const PlatformKeyboardEvent& platformEvent, AbstractView* view)
+ {
+ return adoptRef(new KeyboardEvent(platformEvent, view));
+ }
+ static PassRefPtr<KeyboardEvent> create(const AtomicString& type, bool canBubble, bool cancelable, AbstractView* view,
+ const String& keyIdentifier, unsigned keyLocation,
+ bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool altGraphKey)
+ {
+ return adoptRef(new KeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, keyLocation,
+ ctrlKey, altKey, shiftKey, metaKey, altGraphKey));
+ }
+ virtual ~KeyboardEvent();
+
+ void initKeyboardEvent(const AtomicString& type, bool canBubble, bool cancelable, AbstractView*,
+ const String& keyIdentifier, unsigned keyLocation,
+ bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool altGraphKey = false);
+
+ String keyIdentifier() const { return m_keyIdentifier; }
+ unsigned keyLocation() const { return m_keyLocation; }
+
+ bool getModifierState(const String& keyIdentifier) const;
+
+ bool altGraphKey() const { return m_altGraphKey; }
+
+ const PlatformKeyboardEvent* keyEvent() const { return m_keyEvent; }
+
+ int keyCode() const; // key code for keydown and keyup, character for keypress
+ int charCode() const; // character code for keypress, 0 for keydown and keyup
+
+ virtual bool isKeyboardEvent() const;
+ virtual int which() const;
+
+#if PLATFORM(MAC)
+ // We only have this need to store keypress command info on the Mac.
+ Vector<KeypressCommand>& keypressCommands() { return m_keypressCommands; }
+#endif
+
+ private:
+ KeyboardEvent();
+ KeyboardEvent(const PlatformKeyboardEvent&, AbstractView*);
+ KeyboardEvent(const AtomicString& type, bool canBubble, bool cancelable, AbstractView*,
+ const String& keyIdentifier, unsigned keyLocation,
+ bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool altGraphKey);
+
+ PlatformKeyboardEvent* m_keyEvent;
+ String m_keyIdentifier;
+ unsigned m_keyLocation;
+ bool m_altGraphKey : 1;
+
+#if PLATFORM(MAC)
+ Vector<KeypressCommand> m_keypressCommands;
+#endif
+ };
+
+ KeyboardEvent* findKeyboardEvent(Event*);
+
+} // namespace WebCore
+
+#endif // KeyboardEvent_h