diff --git a/include/glfm.h b/include/glfm.h index ceace39..cf7ee70 100644 --- a/include/glfm.h +++ b/include/glfm.h @@ -272,6 +272,8 @@ typedef enum { GLFMKeyCodePrintScreen = 0x9B, ///< Print Screen or System Request key. GLFMKeyCodeScrollLock = 0x9C, GLFMKeyCodePause = 0x9D, ///< Pause/Break key. + GLFMKeyCodeVolumeUp = 0x9E, + GLFMKeyCodeVolumeDown = 0x9F, GLFMKeyCodeNumLock = 0xA0, ///< NumLock key ("clear" on Apple platforms). GLFMKeyCodeNumpadDecimal = 0xA1, @@ -890,7 +892,7 @@ ANativeActivity *glfmAndroidGetActivity(void) GLFM_DEPRECATED("Use glfmGetAndroi /// The returned `ANativeActivity` may be invalidated when the surface is destroyed. If a reference to the /// `ANativeActivity` is kept, call this function again to get an updated reference in ``GLFMSurfaceCreatedFunc`` or /// ``GLFMAppFocusFunc``. -void *glfmGetAndroidActivity(const GLFMDisplay *display); +void *glfmGetAndroidActivity(const GLFMDisplay *display, void **jni); #endif // GLFM_EXPOSE_NATIVE_ANDROID diff --git a/src/glfm_android.c b/src/glfm_android.c index 12f3c63..6f77d0a 100644 --- a/src/glfm_android.c +++ b/src/glfm_android.c @@ -1117,6 +1117,8 @@ static bool glfm__onKeyEvent(GLFMPlatformData *platformData, AInputEvent *event) [AKEYCODE_DPAD_RIGHT] = GLFMKeyCodeArrowRight, [AKEYCODE_POWER] = GLFMKeyCodePower, + [AKEYCODE_VOLUME_UP] = GLFMKeyCodeVolumeUp, + [AKEYCODE_VOLUME_DOWN] = GLFMKeyCodeVolumeDown, [AKEYCODE_A] = GLFMKeyCodeA, [AKEYCODE_B] = GLFMKeyCodeB, @@ -1215,6 +1217,9 @@ static bool glfm__onKeyEvent(GLFMPlatformData *platformData, AInputEvent *event) [AKEYCODE_NUMPAD_DOT] = GLFMKeyCodeNumpadDecimal, [AKEYCODE_NUMPAD_ENTER] = GLFMKeyCodeNumpadEnter, [AKEYCODE_NUMPAD_EQUALS] = GLFMKeyCodeNumpadEqual, + + [AKEYCODE_DPAD_CENTER] = GLFMKeyCodeMediaSelect, + [AKEYCODE_MEDIA_PLAY_PAUSE] = GLFMKeyCodeMediaPlayPause }; GLFMKeyCode keyCode = GLFMKeyCodeUnknown; @@ -2794,11 +2799,12 @@ ANativeActivity *glfmAndroidGetActivity(void) { return platformDataGlobal->activity; } -void *glfmGetAndroidActivity(const GLFMDisplay *display) { +void *glfmGetAndroidActivity(const GLFMDisplay *display, void **jni) { if (!display || !display->platformData) { return NULL; } GLFMPlatformData *platformData = display->platformData; + *jni = platformData->jniEnv; return platformData->activity; }