#include "AndroidKeys.hpp" #include #include namespace tp::android { namespace { const std::unordered_map& keyCodes() { static const std::unordered_map keys = { { AKEYCODE_SPACE, InputID::SPACE }, { AKEYCODE_APOSTROPHE, InputID::APOSTROPHE }, { AKEYCODE_COMMA, InputID::COMMA }, { AKEYCODE_MINUS, InputID::MINUS }, { AKEYCODE_PERIOD, InputID::PERIOD }, { AKEYCODE_SLASH, InputID::SLASH }, { AKEYCODE_0, InputID::N0 }, { AKEYCODE_1, InputID::N1 }, { AKEYCODE_2, InputID::N2 }, { AKEYCODE_3, InputID::N3 }, { AKEYCODE_4, InputID::N4 }, { AKEYCODE_5, InputID::N5 }, { AKEYCODE_6, InputID::N6 }, { AKEYCODE_7, InputID::N7 }, { AKEYCODE_8, InputID::N8 }, { AKEYCODE_9, InputID::N9 }, { AKEYCODE_SEMICOLON, InputID::SEMICOLON }, { AKEYCODE_EQUALS, InputID::EQUAL }, { AKEYCODE_A, InputID::A }, { AKEYCODE_B, InputID::B }, { AKEYCODE_C, InputID::C }, { AKEYCODE_D, InputID::D }, { AKEYCODE_E, InputID::E }, { AKEYCODE_F, InputID::F }, { AKEYCODE_G, InputID::G }, { AKEYCODE_H, InputID::H }, { AKEYCODE_I, InputID::I }, { AKEYCODE_J, InputID::J }, { AKEYCODE_K, InputID::K }, { AKEYCODE_L, InputID::L }, { AKEYCODE_M, InputID::M }, { AKEYCODE_N, InputID::N }, { AKEYCODE_O, InputID::O }, { AKEYCODE_P, InputID::P }, { AKEYCODE_Q, InputID::Q }, { AKEYCODE_R, InputID::R }, { AKEYCODE_S, InputID::S }, { AKEYCODE_T, InputID::T }, { AKEYCODE_U, InputID::U }, { AKEYCODE_V, InputID::V }, { AKEYCODE_W, InputID::W }, { AKEYCODE_X, InputID::X }, { AKEYCODE_Y, InputID::Y }, { AKEYCODE_Z, InputID::Z }, { AKEYCODE_LEFT_BRACKET, InputID::LEFT_BRACKET }, { AKEYCODE_BACKSLASH, InputID::BACKSLASH }, { AKEYCODE_RIGHT_BRACKET, InputID::RIGHT_BRACKET }, { AKEYCODE_GRAVE, InputID::GRAVE_ACCENT }, { AKEYCODE_ESCAPE, InputID::ESCAPE }, { AKEYCODE_ENTER, InputID::ENTER }, { AKEYCODE_TAB, InputID::TAB }, { AKEYCODE_DEL, InputID::BACKSPACE }, { AKEYCODE_INSERT, InputID::INSERT }, { AKEYCODE_FORWARD_DEL, InputID::DELETE_KEY }, { AKEYCODE_DPAD_RIGHT, InputID::RIGHT }, { AKEYCODE_DPAD_LEFT, InputID::LEFT }, { AKEYCODE_DPAD_DOWN, InputID::DOWN }, { AKEYCODE_DPAD_UP, InputID::UP }, { AKEYCODE_PAGE_UP, InputID::PAGE_UP }, { AKEYCODE_PAGE_DOWN, InputID::PAGE_DOWN }, { AKEYCODE_MOVE_HOME, InputID::HOME }, { AKEYCODE_MOVE_END, InputID::END }, { AKEYCODE_CAPS_LOCK, InputID::CAPS_LOCK }, { AKEYCODE_SCROLL_LOCK, InputID::SCROLL_LOCK }, { AKEYCODE_NUM_LOCK, InputID::NUM_LOCK }, { AKEYCODE_SYSRQ, InputID::PRINT_SCREEN }, { AKEYCODE_BREAK, InputID::PAUSE }, { AKEYCODE_F1, InputID::F1 }, { AKEYCODE_F2, InputID::F2 }, { AKEYCODE_F3, InputID::F3 }, { AKEYCODE_F4, InputID::F4 }, { AKEYCODE_F5, InputID::F5 }, { AKEYCODE_F6, InputID::F6 }, { AKEYCODE_F7, InputID::F7 }, { AKEYCODE_F8, InputID::F8 }, { AKEYCODE_F9, InputID::F9 }, { AKEYCODE_F10, InputID::F10 }, { AKEYCODE_F11, InputID::F11 }, { AKEYCODE_F12, InputID::F12 }, { AKEYCODE_NUMPAD_0, InputID::KP_0 }, { AKEYCODE_NUMPAD_1, InputID::KP_1 }, { AKEYCODE_NUMPAD_2, InputID::KP_2 }, { AKEYCODE_NUMPAD_3, InputID::KP_3 }, { AKEYCODE_NUMPAD_4, InputID::KP_4 }, { AKEYCODE_NUMPAD_5, InputID::KP_5 }, { AKEYCODE_NUMPAD_6, InputID::KP_6 }, { AKEYCODE_NUMPAD_7, InputID::KP_7 }, { AKEYCODE_NUMPAD_8, InputID::KP_8 }, { AKEYCODE_NUMPAD_9, InputID::KP_9 }, { AKEYCODE_NUMPAD_DOT, InputID::KP_DECIMAL }, { AKEYCODE_NUMPAD_DIVIDE, InputID::KP_DIVIDE }, { AKEYCODE_NUMPAD_MULTIPLY, InputID::KP_MULTIPLY }, { AKEYCODE_NUMPAD_SUBTRACT, InputID::KP_SUBTRACT }, { AKEYCODE_NUMPAD_ADD, InputID::KP_ADD }, { AKEYCODE_NUMPAD_ENTER, InputID::KP_ENTER }, { AKEYCODE_NUMPAD_EQUALS, InputID::KP_EQUAL }, { AKEYCODE_SHIFT_LEFT, InputID::LEFT_SHIFT }, { AKEYCODE_CTRL_LEFT, InputID::LEFT_CONTROL }, { AKEYCODE_ALT_LEFT, InputID::LEFT_ALT }, { AKEYCODE_META_LEFT, InputID::LEFT_SUPER }, { AKEYCODE_SHIFT_RIGHT, InputID::RIGHT_SHIFT }, { AKEYCODE_CTRL_RIGHT, InputID::RIGHT_CONTROL }, { AKEYCODE_ALT_RIGHT, InputID::RIGHT_ALT }, { AKEYCODE_META_RIGHT, InputID::RIGHT_SUPER }, { AKEYCODE_MENU, InputID::MENU }, }; return keys; } } std::optional inputFromKeyCode(int32_t keyCode) { const auto& keys = keyCodes(); const auto found = keys.find(keyCode); if (found == keys.end()) return std::nullopt; return found->second; } }