/* * Copyright (C) 2009 Google 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: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 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. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 THE COPYRIGHT * OWNER 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. */ #include "config.h" #include "WebInputEvent.h" #include "KeyboardCodes.h" #include #include #include #include using namespace WebCore; namespace WebKit { static const char* staticKeyIdentifiers(unsigned short keyCode) { switch (keyCode) { case VKEY_MENU: return "Alt"; case VKEY_CONTROL: return "Control"; case VKEY_SHIFT: return "Shift"; case VKEY_CAPITAL: return "CapsLock"; case VKEY_LWIN: case VKEY_RWIN: return "Win"; case VKEY_CLEAR: return "Clear"; case VKEY_DOWN: return "Down"; case VKEY_END: return "End"; case VKEY_RETURN: return "Enter"; case VKEY_EXECUTE: return "Execute"; case VKEY_F1: return "F1"; case VKEY_F2: return "F2"; case VKEY_F3: return "F3"; case VKEY_F4: return "F4"; case VKEY_F5: return "F5"; case VKEY_F6: return "F6"; case VKEY_F7: return "F7"; case VKEY_F8: return "F8"; case VKEY_F9: return "F9"; case VKEY_F10: return "F10"; case VKEY_F11: return "F11"; case VKEY_F12: return "F12"; case VKEY_F13: return "F13"; case VKEY_F14: return "F14"; case VKEY_F15: return "F15"; case VKEY_F16: return "F16"; case VKEY_F17: return "F17"; case VKEY_F18: return "F18"; case VKEY_F19: return "F19"; case VKEY_F20: return "F20"; case VKEY_F21: return "F21"; case VKEY_F22: return "F22"; case VKEY_F23: return "F23"; case VKEY_F24: return "F24"; case VKEY_HELP: return "Help"; case VKEY_HOME: return "Home"; case VKEY_INSERT: return "Insert"; case VKEY_LEFT: return "Left"; case VKEY_NEXT: return "PageDown"; case VKEY_PRIOR: return "PageUp"; case VKEY_PAUSE: return "Pause"; case VKEY_SNAPSHOT: return "PrintScreen"; case VKEY_RIGHT: return "Right"; case VKEY_SCROLL: return "Scroll"; case VKEY_SELECT: return "Select"; case VKEY_UP: return "Up"; case VKEY_DELETE: return "U+007F"; // Standard says that DEL becomes U+007F. default: return 0; } } void WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode() { const char* id = staticKeyIdentifiers(windowsKeyCode); if (id) { strncpy(keyIdentifier, id, sizeof(keyIdentifier) - 1); keyIdentifier[sizeof(keyIdentifier) - 1] = '\0'; } else snprintf(keyIdentifier, sizeof(keyIdentifier), "U+%04X", toupper(windowsKeyCode)); } } // namespace WebKit