blob: e3c28990ffddd53dff4e20fedaf0af341df51a81 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/renderer_host/input/web_input_event_util.h"
#include "base/strings/string_util.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
namespace {
const char* GetKeyIdentifier(ui::KeyboardCode key_code) {
switch (key_code) {
case ui::VKEY_MENU:
return "Alt";
case ui::VKEY_CONTROL:
return "Control";
case ui::VKEY_SHIFT:
return "Shift";
case ui::VKEY_CAPITAL:
return "CapsLock";
case ui::VKEY_LWIN:
case ui::VKEY_RWIN:
return "Win";
case ui::VKEY_CLEAR:
return "Clear";
case ui::VKEY_DOWN:
return "Down";
case ui::VKEY_END:
return "End";
case ui::VKEY_RETURN:
return "Enter";
case ui::VKEY_EXECUTE:
return "Execute";
case ui::VKEY_F1:
return "F1";
case ui::VKEY_F2:
return "F2";
case ui::VKEY_F3:
return "F3";
case ui::VKEY_F4:
return "F4";
case ui::VKEY_F5:
return "F5";
case ui::VKEY_F6:
return "F6";
case ui::VKEY_F7:
return "F7";
case ui::VKEY_F8:
return "F8";
case ui::VKEY_F9:
return "F9";
case ui::VKEY_F10:
return "F10";
case ui::VKEY_F11:
return "F11";
case ui::VKEY_F12:
return "F12";
case ui::VKEY_F13:
return "F13";
case ui::VKEY_F14:
return "F14";
case ui::VKEY_F15:
return "F15";
case ui::VKEY_F16:
return "F16";
case ui::VKEY_F17:
return "F17";
case ui::VKEY_F18:
return "F18";
case ui::VKEY_F19:
return "F19";
case ui::VKEY_F20:
return "F20";
case ui::VKEY_F21:
return "F21";
case ui::VKEY_F22:
return "F22";
case ui::VKEY_F23:
return "F23";
case ui::VKEY_F24:
return "F24";
case ui::VKEY_HELP:
return "Help";
case ui::VKEY_HOME:
return "Home";
case ui::VKEY_INSERT:
return "Insert";
case ui::VKEY_LEFT:
return "Left";
case ui::VKEY_NEXT:
return "PageDown";
case ui::VKEY_PRIOR:
return "PageUp";
case ui::VKEY_PAUSE:
return "Pause";
case ui::VKEY_SNAPSHOT:
return "PrintScreen";
case ui::VKEY_RIGHT:
return "Right";
case ui::VKEY_SCROLL:
return "Scroll";
case ui::VKEY_SELECT:
return "Select";
case ui::VKEY_UP:
return "Up";
case ui::VKEY_DELETE:
return "U+007F"; // Standard says that DEL becomes U+007F.
case ui::VKEY_MEDIA_NEXT_TRACK:
return "MediaNextTrack";
case ui::VKEY_MEDIA_PREV_TRACK:
return "MediaPreviousTrack";
case ui::VKEY_MEDIA_STOP:
return "MediaStop";
case ui::VKEY_MEDIA_PLAY_PAUSE:
return "MediaPlayPause";
case ui::VKEY_VOLUME_MUTE:
return "VolumeMute";
case ui::VKEY_VOLUME_DOWN:
return "VolumeDown";
case ui::VKEY_VOLUME_UP:
return "VolumeUp";
default:
return NULL;
};
}
} // namespace
namespace content {
void UpdateWindowsKeyCodeAndKeyIdentifier(WebKit::WebKeyboardEvent* event,
ui::KeyboardCode windows_key_code) {
event->windowsKeyCode = windows_key_code;
const char* id = GetKeyIdentifier(windows_key_code);
if (id) {
base::strlcpy(event->keyIdentifier, id, sizeof(event->keyIdentifier) - 1);
} else {
base::snprintf(event->keyIdentifier, sizeof(event->keyIdentifier), "U+%04X",
base::ToUpperASCII(static_cast<int>(windows_key_code)));
}
}
} // namespace content