32 using AKeyCodeToKeySymbolMap = std::unordered_map<uint32_t, vsg::KeySymbol>;
40 static int32_t getUnicodeChar(int32_t keyCode, int32_t metaState);
42 bool getKeySymbol(int32_t keyCode, int32_t metaState, vsg::KeySymbol& keySymbol, vsg::KeySymbol& modifiedKeySymbol, vsg::KeyModifier& keyModifier)
const
44 auto itr = _keycodeMap.find(keyCode);
45 if (itr == _keycodeMap.end())
return false;
47 keySymbol = itr->second;
49 uint16_t modifierMask = 0;
51 if (metaState & AMETA_ALT_ON) modifierMask |= vsg::KeyModifier::MODKEY_Alt;
52 if (metaState & AMETA_CTRL_ON) modifierMask |= vsg::KeyModifier::MODKEY_Control;
53 if (metaState & AMETA_SHIFT_ON) modifierMask |= vsg::KeyModifier::MODKEY_Shift;
54 if (metaState & AMETA_CAPS_LOCK_ON) modifierMask |= vsg::KeyModifier::MODKEY_CapsLock;
55 if (metaState & AMETA_NUM_LOCK_ON) modifierMask |= vsg::KeyModifier::MODKEY_NumLock;
57 keyModifier = (vsg::KeyModifier)modifierMask;
58 modifiedKeySymbol =
static_cast<vsg::KeySymbol
>(getUnicodeChar(keyCode, metaState));
64 AKeyCodeToKeySymbolMap _keycodeMap;
83 class Android_Window :
public vsg::Inherit<vsg::Window, Android_Window>
87 Android_Window() =
delete;
88 Android_Window(
const Android_Window&) =
delete;
89 Android_Window operator=(
const Android_Window&) =
delete;
91 const char* instanceExtensionSurfaceName()
const override {
return "VK_KHR_android_surface"; }
93 bool valid()
const override {
return _window; }
97 void resize()
override;
99 bool handleAndroidInputEvent(AInputEvent* anEvent);
102 virtual ~Android_Window();
104 void _initSurface()
override;
106 ANativeWindow* _window;
108 int64_t _uptimeMs = 0;
109 vsg::clock::time_point _first_android_time_point;