168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file.
468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Source of data in this file:
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)//  1. ui/events/keycodes/dom4/keycode_converter_data.h
768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//  2. ui/events/keycodes/keyboard_codes.h
868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//  3. third_party/WebKit/Source/core/platform/chromium/KeyboardCodes.h
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef CHROME_TEST_REMOTING_KEY_CODE_MAP_H_
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define CHROME_TEST_REMOTING_KEY_CODE_MAP_H_
1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/basictypes.h"
1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h"
1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace remoting {
1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)typedef struct {
1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // The character typed as a result of the key press without shift.
1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  char lower_char;
2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // The character typed as a result of the key press with shift.
2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  char upper_char;
2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // The UIEvents (aka: DOM4Events) |code| value as defined in:
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // https://dvcs.w3.org/hg/d4e/raw-file/tip/source_respec.htm
2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  const char* code;
2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // The (Windows) virtual keyboard code.
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ui::KeyboardCode vkey_code;
3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} KeyCodeMap;
3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// The mapping between the native scan codes and the characters are based
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// on US keyboard layout.
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)const KeyCodeMap key_code_map[] = {
3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//lower UPPER Code  KeyboardCode
3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'a', 'A', "KeyA", ui::VKEY_A},  // aA
3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'b', 'B', "KeyB", ui::VKEY_B},  // bB
3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'c', 'C', "KeyC", ui::VKEY_C},  // cC
4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'d', 'D', "KeyD", ui::VKEY_D},  // dD
4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'e', 'E', "KeyE", ui::VKEY_E},  // eE
4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'f', 'F', "KeyF", ui::VKEY_F},  // fF
4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'g', 'G', "KeyG", ui::VKEY_G},  // gG
4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'h', 'H', "KeyH", ui::VKEY_H},  // hH
4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'i', 'I', "KeyI", ui::VKEY_I},  // iI
4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'j', 'J', "KeyJ", ui::VKEY_J},  // jJ
4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'k', 'K', "KeyK", ui::VKEY_K},  // kK
4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'l', 'L', "KeyL", ui::VKEY_L},  // lL
4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'m', 'M', "KeyM", ui::VKEY_M},  // mM
5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'n', 'N', "KeyN", ui::VKEY_N},  // nN
5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'o', 'O', "KeyO", ui::VKEY_O},  // oO
5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'p', 'P', "KeyP", ui::VKEY_P},  // pP
5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'q', 'Q', "KeyQ", ui::VKEY_Q},  // qQ
5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'r', 'R', "KeyR", ui::VKEY_R},  // rR
5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'s', 'S', "KeyS", ui::VKEY_S},  // sS
5668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'t', 'T', "KeyT", ui::VKEY_T},  // tT
5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'u', 'U', "KeyU", ui::VKEY_U},  // uU
5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'v', 'V', "KeyV", ui::VKEY_V},  // vV
5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'w', 'W', "KeyW", ui::VKEY_W},  // wW
6068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'x', 'X', "KeyX", ui::VKEY_X},  // xX
6168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'y', 'Y', "KeyY", ui::VKEY_Y},  // yY
6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'z', 'Z', "KeyZ", ui::VKEY_Z},  // zZ
6368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'1', '1', "Digit1", ui::VKEY_0},  // 1!
6468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'2', '2', "Digit2", ui::VKEY_1},  // 2@
6568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'3', '3', "Digit3", ui::VKEY_2},  // 3#
6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'4', '4', "Digit4", ui::VKEY_3},  // 4$
6768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'5', '5', "Digit5", ui::VKEY_4},  // 5%
6868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'6', '6', "Digit6", ui::VKEY_5},  // 6^
6968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'7', '7', "Digit7", ui::VKEY_6},  // 7&
7068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'8', '8', "Digit8", ui::VKEY_7},  // 8*
7168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'9', '9', "Digit9", ui::VKEY_8},  // 9(
7268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'0', '0', "Digit0", ui::VKEY_9},  // 0)
7368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
7468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'\n', '\n', "Enter", ui::VKEY_RETURN},  // Return
7568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  { 0 ,  0 , "Escape", ui::VKEY_UNKNOWN},  // Escape
7668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'\b', '\b', "Backspace", ui::VKEY_BACK},  // Backspace
7768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'\t', '\t', "Tab", ui::VKEY_TAB},  // Tab
7868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {' ', ' ', "Space", ui::VKEY_SPACE},  // Spacebar
7968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'-', '_', "Minus", ui::VKEY_OEM_MINUS},  // -_
8068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'=', '+', "Equal", ui::VKEY_OEM_PLUS},  // =+
8168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'[', '{', "BracketLeft", ui::VKEY_OEM_4},  // [{
8268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {']', '}', "BracketRight", ui::VKEY_OEM_6},  // ]}
8368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'\\', '|', "Backslash", ui::VKEY_OEM_5},  // \| (US keyboard only)
8468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {';', ':', "Semicolon", ui::VKEY_OEM_1},  // ;:
8568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'\'', '\"', "Quote", ui::VKEY_OEM_7},  // '"
8668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'`', '~', "Backquote", ui::VKEY_OEM_3},  // `~
8768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {',', '<', "Comma", ui::VKEY_OEM_COMMA},  // ,<
8868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'.', '>', "Period", ui::VKEY_OEM_PERIOD},  // .>
8968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  {'/', '?', "Slash", ui::VKEY_OEM_2},  // /?
9068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)};
9168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
9268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}  // namespace remoting
9368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif  // CHROME_TEST_REMOTING_KEY_CODE_MAP_H_
95