32 using AKeyCodeToKeySymbolMap = std::map<uint32_t, vsg::KeySymbol>;
34 bool getKeySymbol(uint32_t keycode, uint32_t metastate, vsg::KeySymbol& keySymbol, vsg::KeySymbol& modifiedKeySymbol, vsg::KeyModifier& keyModifier)
36 auto itr = _keycodeMap.find(keycode);
37 if (itr == _keycodeMap.end())
return false;
39 keySymbol = itr->second;
40 modifiedKeySymbol = keySymbol;
42 uint16_t modifierMask = 0;
44 if (metastate & AMETA_ALT_ON) modifierMask |= vsg::KeyModifier::MODKEY_Alt;
45 if (metastate & AMETA_CTRL_ON) modifierMask |= vsg::KeyModifier::MODKEY_Control;
46 if (metastate & AMETA_SHIFT_ON) modifierMask |= vsg::KeyModifier::MODKEY_Shift;
47 if (metastate & AMETA_CAPS_LOCK_ON) modifierMask |= vsg::KeyModifier::MODKEY_CapsLock;
48 if (metastate & AMETA_NUM_LOCK_ON) modifierMask |= vsg::KeyModifier::MODKEY_NumLock;
50 keyModifier = (vsg::KeyModifier)modifierMask;
58 AKeyCodeToKeySymbolMap _keycodeMap;
77 class Android_Window :
public vsg::Inherit<vsg::Window, Android_Window>
81 Android_Window() =
delete;
82 Android_Window(
const Android_Window&) =
delete;
83 Android_Window operator=(
const Android_Window&) =
delete;
85 const char* instanceExtensionSurfaceName()
const override {
return "VK_KHR_android_surface"; }
87 bool valid()
const override {
return _window; }
91 void resize()
override;
93 bool handleAndroidInputEvent(AInputEvent* anEvent);
96 virtual ~Android_Window();
98 void _initSurface()
override;
100 ANativeWindow* _window;
102 int64_t _first_android_timestamp = 0;
103 vsg::clock::time_point _first_android_time_point;