160 lines
4.2 KiB
C++
160 lines
4.2 KiB
C++
/*
|
|
* Copyright (C) 2020 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include "host/frontend/webrtc/lib/keyboard.h"
|
|
|
|
#include <linux/input.h>
|
|
|
|
#include <map>
|
|
|
|
static const std::map<std::string, uint16_t> kDomToLinuxMapping = {
|
|
{"Backquote", KEY_GRAVE},
|
|
{"Backslash", KEY_BACKSLASH},
|
|
{"Backspace", KEY_BACKSPACE},
|
|
{"BracketLeft", KEY_LEFTBRACE},
|
|
{"BracketRight", KEY_RIGHTBRACE},
|
|
{"Comma", KEY_COMMA},
|
|
{"Digit0", KEY_0},
|
|
{"Digit1", KEY_1},
|
|
{"Digit2", KEY_2},
|
|
{"Digit3", KEY_3},
|
|
{"Digit4", KEY_4},
|
|
{"Digit5", KEY_5},
|
|
{"Digit6", KEY_6},
|
|
{"Digit7", KEY_7},
|
|
{"Digit8", KEY_8},
|
|
{"Digit9", KEY_9},
|
|
{"Equal", KEY_EQUAL},
|
|
{"IntlBackslash", KEY_BACKSLASH},
|
|
{"IntlRo", KEY_RO},
|
|
{"IntlYen", KEY_BACKSLASH},
|
|
{"KeyA", KEY_A},
|
|
{"KeyB", KEY_B},
|
|
{"KeyC", KEY_C},
|
|
{"KeyD", KEY_D},
|
|
{"KeyE", KEY_E},
|
|
{"KeyF", KEY_F},
|
|
{"KeyG", KEY_G},
|
|
{"KeyH", KEY_H},
|
|
{"KeyI", KEY_I},
|
|
{"KeyJ", KEY_J},
|
|
{"KeyK", KEY_K},
|
|
{"KeyL", KEY_L},
|
|
{"KeyM", KEY_M},
|
|
{"KeyN", KEY_N},
|
|
{"KeyO", KEY_O},
|
|
{"KeyP", KEY_P},
|
|
{"KeyQ", KEY_Q},
|
|
{"KeyR", KEY_R},
|
|
{"KeyS", KEY_S},
|
|
{"KeyT", KEY_T},
|
|
{"KeyU", KEY_U},
|
|
{"KeyV", KEY_V},
|
|
{"KeyW", KEY_W},
|
|
{"KeyX", KEY_X},
|
|
{"KeyY", KEY_Y},
|
|
{"KeyZ", KEY_Z},
|
|
{"Minus", KEY_MINUS},
|
|
{"Period", KEY_DOT},
|
|
{"Quote", KEY_APOSTROPHE},
|
|
{"Semicolon", KEY_SEMICOLON},
|
|
{"Slash", KEY_SLASH},
|
|
{"AltLeft", KEY_LEFTALT},
|
|
{"AltRight", KEY_RIGHTALT},
|
|
{"CapsLock", KEY_CAPSLOCK},
|
|
{"ContextMenu", KEY_CONTEXT_MENU},
|
|
{"ControlLeft", KEY_LEFTCTRL},
|
|
{"ControlRight", KEY_RIGHTCTRL},
|
|
{"Enter", KEY_ENTER},
|
|
{"MetaLeft", KEY_LEFTMETA},
|
|
{"MetaRight", KEY_RIGHTMETA},
|
|
{"ShiftLeft", KEY_LEFTSHIFT},
|
|
{"ShiftRight", KEY_RIGHTSHIFT},
|
|
{"Space", KEY_SPACE},
|
|
{"Tab", KEY_TAB},
|
|
{"Delete", KEY_DELETE},
|
|
{"End", KEY_END},
|
|
{"Help", KEY_HELP},
|
|
{"Home", KEY_HOME},
|
|
{"Insert", KEY_INSERT},
|
|
{"PageDown", KEY_PAGEDOWN},
|
|
{"PageUp", KEY_PAGEUP},
|
|
{"ArrowDown", KEY_DOWN},
|
|
{"ArrowLeft", KEY_LEFT},
|
|
{"ArrowRight", KEY_RIGHT},
|
|
{"ArrowUp", KEY_UP},
|
|
|
|
{"NumLock", KEY_NUMLOCK},
|
|
{"Numpad0", KEY_KP0},
|
|
{"Numpad1", KEY_KP1},
|
|
{"Numpad2", KEY_KP2},
|
|
{"Numpad3", KEY_KP3},
|
|
{"Numpad4", KEY_KP4},
|
|
{"Numpad5", KEY_KP5},
|
|
{"Numpad6", KEY_KP6},
|
|
{"Numpad7", KEY_KP7},
|
|
{"Numpad8", KEY_KP8},
|
|
{"Numpad9", KEY_KP9},
|
|
{"NumpadAdd", KEY_KPPLUS},
|
|
{"NumpadBackspace", KEY_BACKSPACE},
|
|
{"NumpadClear", KEY_CLEAR},
|
|
{"NumpadComma", KEY_KPCOMMA},
|
|
{"NumpadDecimal", KEY_KPDOT},
|
|
{"NumpadDivide", KEY_KPSLASH},
|
|
{"NumpadEnter", KEY_KPENTER},
|
|
{"NumpadEqual", KEY_KPEQUAL},
|
|
/*
|
|
{"NumpadClearEntry", },
|
|
{"NumpadHash", },
|
|
{"NumpadMemoryAdd", },
|
|
{"NumpadMemoryClear", },
|
|
{"NumpadMemoryRecall", },
|
|
{"NumpadMemoryStore", },
|
|
{"NumpadMemorySubtract", },
|
|
*/
|
|
{"NumpadMultiply", KEY_KPASTERISK},
|
|
{"NumpadParenLeft", KEY_KPLEFTPAREN},
|
|
{"NumpadParenRight", KEY_KPRIGHTPAREN},
|
|
{"NumpadStar", KEY_KPASTERISK},
|
|
{"NumpadSubtract", KEY_KPMINUS},
|
|
|
|
{"Escape", KEY_ESC},
|
|
{"F1", KEY_F1},
|
|
{"F2", KEY_F2},
|
|
{"F3", KEY_F3},
|
|
{"F4", KEY_F4},
|
|
{"F5", KEY_F5},
|
|
{"F6", KEY_F6},
|
|
{"F7", KEY_F7},
|
|
{"F8", KEY_F8},
|
|
{"F9", KEY_F9},
|
|
{"F10", KEY_F10},
|
|
{"F11", KEY_F11},
|
|
{"F12", KEY_F12},
|
|
{"Fn", KEY_FN},
|
|
/*{"FnLock", },*/
|
|
{"PrintScreen", KEY_SYSRQ},
|
|
{"ScrollLock", KEY_SCROLLLOCK},
|
|
{"Pause", KEY_PAUSE}};
|
|
|
|
uint16_t DomKeyCodeToLinux(const std::string& dom_KEY_code) {
|
|
const auto it = kDomToLinuxMapping.find(dom_KEY_code);
|
|
if (it == kDomToLinuxMapping.end()) {
|
|
return 0;
|
|
}
|
|
return it->second;
|
|
}
|