/* * 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/libdevice/keyboard.h" #include #include static const std::map 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; }