summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/iphone
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-06 11:45:16 +0100
committerSteve Block <steveblock@google.com>2011-05-12 13:44:10 +0100
commitcad810f21b803229eb11403f9209855525a25d57 (patch)
tree29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /Source/WebCore/platform/iphone
parent121b0cf4517156d0ac5111caf9830c51b69bae8f (diff)
downloadexternal_webkit-cad810f21b803229eb11403f9209855525a25d57.zip
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'Source/WebCore/platform/iphone')
-rw-r--r--Source/WebCore/platform/iphone/KeyEventCodesIPhone.h121
-rw-r--r--Source/WebCore/platform/iphone/KeyEventIPhone.mm119
2 files changed, 240 insertions, 0 deletions
diff --git a/Source/WebCore/platform/iphone/KeyEventCodesIPhone.h b/Source/WebCore/platform/iphone/KeyEventCodesIPhone.h
new file mode 100644
index 0000000..180d708
--- /dev/null
+++ b/Source/WebCore/platform/iphone/KeyEventCodesIPhone.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef KeyEventCodesIPhone_h
+#define KeyEventCodesIPhone_h
+
+// Unicodes we reserve for function keys on the keyboard,
+// OpenStep reserves the range 0xF700-0xF8FF for this purpose.
+// The availability of various keys will be system dependent.
+
+enum {
+ NSUpArrowFunctionKey = 0xF700,
+ NSDownArrowFunctionKey = 0xF701,
+ NSLeftArrowFunctionKey = 0xF702,
+ NSRightArrowFunctionKey = 0xF703,
+ NSF1FunctionKey = 0xF704,
+ NSF2FunctionKey = 0xF705,
+ NSF3FunctionKey = 0xF706,
+ NSF4FunctionKey = 0xF707,
+ NSF5FunctionKey = 0xF708,
+ NSF6FunctionKey = 0xF709,
+ NSF7FunctionKey = 0xF70A,
+ NSF8FunctionKey = 0xF70B,
+ NSF9FunctionKey = 0xF70C,
+ NSF10FunctionKey = 0xF70D,
+ NSF11FunctionKey = 0xF70E,
+ NSF12FunctionKey = 0xF70F,
+ NSF13FunctionKey = 0xF710,
+ NSF14FunctionKey = 0xF711,
+ NSF15FunctionKey = 0xF712,
+ NSF16FunctionKey = 0xF713,
+ NSF17FunctionKey = 0xF714,
+ NSF18FunctionKey = 0xF715,
+ NSF19FunctionKey = 0xF716,
+ NSF20FunctionKey = 0xF717,
+ NSF21FunctionKey = 0xF718,
+ NSF22FunctionKey = 0xF719,
+ NSF23FunctionKey = 0xF71A,
+ NSF24FunctionKey = 0xF71B,
+ NSF25FunctionKey = 0xF71C,
+ NSF26FunctionKey = 0xF71D,
+ NSF27FunctionKey = 0xF71E,
+ NSF28FunctionKey = 0xF71F,
+ NSF29FunctionKey = 0xF720,
+ NSF30FunctionKey = 0xF721,
+ NSF31FunctionKey = 0xF722,
+ NSF32FunctionKey = 0xF723,
+ NSF33FunctionKey = 0xF724,
+ NSF34FunctionKey = 0xF725,
+ NSF35FunctionKey = 0xF726,
+ NSInsertFunctionKey = 0xF727,
+ NSDeleteFunctionKey = 0xF728,
+ NSHomeFunctionKey = 0xF729,
+ NSBeginFunctionKey = 0xF72A,
+ NSEndFunctionKey = 0xF72B,
+ NSPageUpFunctionKey = 0xF72C,
+ NSPageDownFunctionKey = 0xF72D,
+ NSPrintScreenFunctionKey = 0xF72E,
+ NSScrollLockFunctionKey = 0xF72F,
+ NSPauseFunctionKey = 0xF730,
+ NSSysReqFunctionKey = 0xF731,
+ NSBreakFunctionKey = 0xF732,
+ NSResetFunctionKey = 0xF733,
+ NSStopFunctionKey = 0xF734,
+ NSMenuFunctionKey = 0xF735,
+ NSUserFunctionKey = 0xF736,
+ NSSystemFunctionKey = 0xF737,
+ NSPrintFunctionKey = 0xF738,
+ NSClearLineFunctionKey = 0xF739,
+ NSClearDisplayFunctionKey = 0xF73A,
+ NSInsertLineFunctionKey = 0xF73B,
+ NSDeleteLineFunctionKey = 0xF73C,
+ NSInsertCharFunctionKey = 0xF73D,
+ NSDeleteCharFunctionKey = 0xF73E,
+ NSPrevFunctionKey = 0xF73F,
+ NSNextFunctionKey = 0xF740,
+ NSSelectFunctionKey = 0xF741,
+ NSExecuteFunctionKey = 0xF742,
+ NSUndoFunctionKey = 0xF743,
+ NSRedoFunctionKey = 0xF744,
+ NSFindFunctionKey = 0xF745,
+ NSHelpFunctionKey = 0xF746,
+ NSModeSwitchFunctionKey = 0xF747
+};
+
+enum {
+ NSParagraphSeparatorCharacter = 0x2029,
+ NSLineSeparatorCharacter = 0x2028,
+ NSTabCharacter = 0x0009,
+ NSFormFeedCharacter = 0x000c,
+ NSNewlineCharacter = 0x000a,
+ NSCarriageReturnCharacter = 0x000d,
+ NSEnterCharacter = 0x0003,
+ NSBackspaceCharacter = 0x0008,
+ NSBackTabCharacter = 0x0019,
+ NSDeleteCharacter = 0x007f
+};
+
+#endif // KeyEventCodesIPhone_h
diff --git a/Source/WebCore/platform/iphone/KeyEventIPhone.mm b/Source/WebCore/platform/iphone/KeyEventIPhone.mm
new file mode 100644
index 0000000..7e021b5
--- /dev/null
+++ b/Source/WebCore/platform/iphone/KeyEventIPhone.mm
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "PlatformKeyboardEvent.h"
+
+#if PLATFORM(IOS)
+
+#import "KeyEventCocoa.h"
+#import "Logging.h"
+#import "WebEvent.h"
+
+using namespace WTF;
+
+namespace WebCore {
+
+static String keyIdentifierForKeyEvent(WebEvent *event)
+{
+ NSString *s = event.charactersIgnoringModifiers;
+ if ([s length] != 1) {
+ LOG(Events, "received an unexpected number of characters in key event: %u", [s length]);
+ return "Unidentified";
+ }
+
+ unichar c = CFStringGetCharacterAtIndex((CFStringRef)s, 0);
+ return keyIdentifierForCharCode(c);
+}
+
+PlatformKeyboardEvent::PlatformKeyboardEvent(WebEvent *event)
+ : m_type(event.type == WebEventKeyUp ? PlatformKeyboardEvent::KeyUp : PlatformKeyboardEvent::KeyDown)
+ , m_text(event.characters)
+ , m_unmodifiedText(event.charactersIgnoringModifiers)
+ , m_keyIdentifier(keyIdentifierForKeyEvent(event))
+ , m_autoRepeat(event.isKeyRepeating)
+ , m_windowsVirtualKeyCode(event.keyCode)
+ , m_isKeypad(false) // iPhone does not distinguish the numpad <rdar://problem/7190835>
+ , m_shiftKey(event.modifierFlags & WebEventFlagMaskShift)
+ , m_ctrlKey(event.modifierFlags & WebEventFlagMaskControl)
+ , m_altKey(event.modifierFlags & WebEventFlagMaskAlternate)
+ , m_metaKey(event.modifierFlags & WebEventFlagMaskCommand)
+ , m_Event(event)
+{
+ ASSERT(event.type == WebEventKeyDown || event.type == WebEventKeyUp);
+
+ // Always use 13 for Enter/Return -- we don't want to use AppKit's different character for Enter.
+ if (m_windowsVirtualKeyCode == '\r') {
+ m_text = "\r";
+ m_unmodifiedText = "\r";
+ }
+
+ // The adjustments below are only needed in backward compatibility mode, but we cannot tell what mode we are in from here.
+
+ // Turn 0x7F into 8, because backspace needs to always be 8.
+ if (m_text == "\x7F")
+ m_text = "\x8";
+ if (m_unmodifiedText == "\x7F")
+ m_unmodifiedText = "\x8";
+ // Always use 9 for tab -- we don't want to use AppKit's different character for shift-tab.
+ if (m_windowsVirtualKeyCode == 9) {
+ m_text = "\x9";
+ m_unmodifiedText = "\x9";
+ }
+}
+
+void PlatformKeyboardEvent::disambiguateKeyDownEvent(Type type, bool backwardCompatibilityMode)
+{
+ // Can only change type from KeyDown to RawKeyDown or Char, as we lack information for other conversions.
+ ASSERT(m_type == KeyDown);
+ ASSERT(type == RawKeyDown || type == Char);
+ m_type = type;
+ if (backwardCompatibilityMode)
+ return;
+
+ if (type == RawKeyDown) {
+ m_text = String();
+ m_unmodifiedText = String();
+ } else {
+ m_keyIdentifier = String();
+ m_windowsVirtualKeyCode = 0;
+ if (m_text.length() == 1 && (m_text[0U] >= 0xF700 && m_text[0U] <= 0xF7FF)) {
+ // According to NSEvents.h, OpenStep reserves the range 0xF700-0xF8FF for function keys. However, some actual private use characters
+ // happen to be in this range, e.g. the Apple logo (Option+Shift+K).
+ // 0xF7FF is an arbitrary cut-off.
+ m_text = String();
+ m_unmodifiedText = String();
+ }
+ }
+}
+
+bool PlatformKeyboardEvent::currentCapsLockState()
+{
+ return 0;
+}
+
+}
+
+#endif // PLATFORM(IOS)