From c5d17398774b90a493e77116c7bde9c0bac58ae8 Mon Sep 17 00:00:00 2001 From: artdeell Date: Fri, 27 Dec 2024 12:58:48 +0300 Subject: [PATCH] Feat[gamepad]: direct input --- .../components/lwjgl3/lwjgl-glfw-classes.jar | Bin 2938110 -> 2938541 bytes .../src/main/assets/components/lwjgl3/version | 2 +- .../kdt/pojavlaunch/MinecraftGLSurface.java | 18 +++-- .../customcontrols/gamepad/Gamepad.java | 1 - .../gamepad/direct/DirectGamepad.java | 74 ++++++++++++++++++ .../gamepad/direct/GamepadKeycodes.java | 36 +++++++++ .../prefs/LauncherPreferences.java | 2 + .../LauncherPreferenceControlFragment.java | 1 + .../java/org/lwjgl/glfw/CallbackBridge.java | 15 ++++ .../src/main/jni/environ/environ.h | 6 ++ .../src/main/jni/input_bridge_v3.c | 22 +++++- .../src/main/res/values/strings.xml | 2 + .../src/main/res/xml/pref_control.xml | 6 ++ .../java/org/lwjgl/glfw/CallbackBridge.java | 3 + .../src/main/java/org/lwjgl/glfw/GLFW.java | 52 ++++++++---- 15 files changed, 212 insertions(+), 28 deletions(-) create mode 100644 app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/DirectGamepad.java create mode 100644 app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/GamepadKeycodes.java diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar index 4141a08bb84abe8c4b97e3bf15fd2ba1bb5b0692..beb1da2cbbcb07fe42374e3a1f79338cbc91ff03 100644 GIT binary patch delta 86226 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 diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/version b/app_pojavlauncher/src/main/assets/components/lwjgl3/version index a4b0232d5..f476a7b5a 100644 --- a/app_pojavlauncher/src/main/assets/components/lwjgl3/version +++ b/app_pojavlauncher/src/main/assets/components/lwjgl3/version @@ -1 +1 @@ -1732218529630 \ No newline at end of file +1735293224932 \ No newline at end of file diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java index dd9f5f10f..415d13f26 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java @@ -29,6 +29,7 @@ import androidx.annotation.RequiresApi; import net.kdt.pojavlaunch.customcontrols.ControlLayout; import net.kdt.pojavlaunch.customcontrols.gamepad.DefaultDataProvider; import net.kdt.pojavlaunch.customcontrols.gamepad.Gamepad; +import net.kdt.pojavlaunch.customcontrols.gamepad.direct.DirectGamepad; import net.kdt.pojavlaunch.customcontrols.mouse.AbstractTouchpad; import net.kdt.pojavlaunch.customcontrols.mouse.AndroidPointerCapture; import net.kdt.pojavlaunch.customcontrols.mouse.InGUIEventProcessor; @@ -40,6 +41,7 @@ import net.kdt.pojavlaunch.utils.MCOptionUtils; import org.lwjgl.glfw.CallbackBridge; +import fr.spse.gamepad_remapper.GamepadHandler; import fr.spse.gamepad_remapper.RemapperManager; import fr.spse.gamepad_remapper.RemapperView; @@ -48,7 +50,7 @@ import fr.spse.gamepad_remapper.RemapperView; */ public class MinecraftGLSurface extends View implements GrabListener { /* Gamepad object for gamepad inputs, instantiated on need */ - private Gamepad mGamepad = null; + private GamepadHandler mGamepadHandler; /* The RemapperView.Builder object allows you to set which buttons to remap */ private final RemapperManager mInputManager = new RemapperManager(getContext(), new RemapperView.Builder(null) .remapA(true) @@ -203,7 +205,11 @@ public class MinecraftGLSurface extends View implements GrabListener { } private void createGamepad(View contextView, InputDevice inputDevice) { - mGamepad = new Gamepad(contextView, inputDevice, DefaultDataProvider.INSTANCE, true); + if(LauncherPreferences.PREF_DIRECT_CONTROLLER) { + mGamepadHandler = new DirectGamepad(); + }else { + mGamepadHandler = new Gamepad(contextView, inputDevice, DefaultDataProvider.INSTANCE, true); + } } /** @@ -215,9 +221,9 @@ public class MinecraftGLSurface extends View implements GrabListener { int mouseCursorIndex = -1; if(Gamepad.isGamepadEvent(event)){ - if(mGamepad == null) createGamepad(this, event.getDevice()); + if(mGamepadHandler == null) createGamepad(this, event.getDevice()); - mInputManager.handleMotionEventInput(getContext(), event, mGamepad); + mInputManager.handleMotionEventInput(getContext(), event, mGamepadHandler); return true; } @@ -287,9 +293,9 @@ public class MinecraftGLSurface extends View implements GrabListener { } if(Gamepad.isGamepadEvent(event)){ - if(mGamepad == null) createGamepad(this, event.getDevice()); + if(mGamepadHandler == null) createGamepad(this, event.getDevice()); - mInputManager.handleKeyEventInput(getContext(), event, mGamepad); + mInputManager.handleKeyEventInput(getContext(), event, mGamepadHandler); return true; } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java index 49fccca08..03466a3e7 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java @@ -26,7 +26,6 @@ import androidx.core.math.MathUtils; import net.kdt.pojavlaunch.GrabListener; import net.kdt.pojavlaunch.LwjglGlfwKeycode; import net.kdt.pojavlaunch.R; -import net.kdt.pojavlaunch.prefs.LauncherPreferences; import net.kdt.pojavlaunch.utils.MCOptionUtils; import org.lwjgl.glfw.CallbackBridge; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/DirectGamepad.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/DirectGamepad.java new file mode 100644 index 000000000..2d600eec2 --- /dev/null +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/DirectGamepad.java @@ -0,0 +1,74 @@ +package net.kdt.pojavlaunch.customcontrols.gamepad.direct; + +import static android.view.MotionEvent.AXIS_HAT_X; +import static android.view.MotionEvent.AXIS_HAT_Y; +import static org.lwjgl.glfw.CallbackBridge.sGamepadAxisBuffer; +import static org.lwjgl.glfw.CallbackBridge.sGamepadButtonBuffer; + +import android.util.Log; +import android.view.KeyEvent; +import android.view.MotionEvent; + +import fr.spse.gamepad_remapper.GamepadHandler; + +public class DirectGamepad implements GamepadHandler { + @Override + public void handleGamepadInput(int keycode, float value) { + int gKeycode = -1, gAxis = -1; + switch (keycode) { + case KeyEvent.KEYCODE_BUTTON_A: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_A; break; + case KeyEvent.KEYCODE_BUTTON_B: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_B; break; + case KeyEvent.KEYCODE_BUTTON_X: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_X; break; + case KeyEvent.KEYCODE_BUTTON_Y: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_Y; break; + case KeyEvent.KEYCODE_BUTTON_L1: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_LEFT_BUMPER; break; + case KeyEvent.KEYCODE_BUTTON_R1: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER; break; + case KeyEvent.KEYCODE_BUTTON_L2: + case MotionEvent.AXIS_LTRIGGER: + gAxis = GamepadKeycodes.GLFW_GAMEPAD_AXIS_LEFT_TRIGGER; + break; + case KeyEvent.KEYCODE_BUTTON_R2: + case MotionEvent.AXIS_RTRIGGER: + gAxis = GamepadKeycodes.GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER; + break; + case KeyEvent.KEYCODE_BUTTON_THUMBL: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_LEFT_THUMB; break; + case KeyEvent.KEYCODE_BUTTON_THUMBR: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_RIGHT_THUMB; break; + case KeyEvent.KEYCODE_BUTTON_START: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_START; break; + case KeyEvent.KEYCODE_BUTTON_SELECT: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_BACK; break; + case KeyEvent.KEYCODE_DPAD_UP: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_UP; break; + case KeyEvent.KEYCODE_DPAD_DOWN: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_DOWN; break; + case KeyEvent.KEYCODE_DPAD_LEFT: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_LEFT; break; + case KeyEvent.KEYCODE_DPAD_RIGHT: gKeycode = GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_RIGHT; break; + case KeyEvent.KEYCODE_DPAD_CENTER: break; // TODO + case MotionEvent.AXIS_X: gAxis = GamepadKeycodes.GLFW_GAMEPAD_AXIS_LEFT_X; break; + case MotionEvent.AXIS_Y: gAxis = GamepadKeycodes.GLFW_GAMEPAD_AXIS_LEFT_Y; break; + case MotionEvent.AXIS_Z: gAxis = GamepadKeycodes.GLFW_GAMEPAD_AXIS_RIGHT_X; break; + case MotionEvent.AXIS_RZ: gAxis = GamepadKeycodes.GLFW_GAMEPAD_AXIS_RIGHT_Y; break; + case AXIS_HAT_X: + sGamepadButtonBuffer.put( + GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_LEFT, + value < -0.85 ? GamepadKeycodes.GLFW_PRESS : GamepadKeycodes.GLFW_RELEASE + ); + sGamepadButtonBuffer.put( + GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_RIGHT, + value > 0.85 ? GamepadKeycodes.GLFW_PRESS : GamepadKeycodes.GLFW_RELEASE + ); + return; + case AXIS_HAT_Y: + sGamepadButtonBuffer.put( + GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_UP, + value < -0.85 ? GamepadKeycodes.GLFW_PRESS : GamepadKeycodes.GLFW_RELEASE + ); + sGamepadButtonBuffer.put( + GamepadKeycodes.GLFW_GAMEPAD_BUTTON_DPAD_DOWN, + value > 0.85 ? GamepadKeycodes.GLFW_PRESS : GamepadKeycodes.GLFW_RELEASE + ); + return; + } + if(gKeycode != -1) { + sGamepadButtonBuffer.put(gKeycode, value > 0.85 ? GamepadKeycodes.GLFW_PRESS : GamepadKeycodes.GLFW_RELEASE); + } + if(gAxis != -1) { + sGamepadAxisBuffer.put(gAxis, value); + } + } +} diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/GamepadKeycodes.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/GamepadKeycodes.java new file mode 100644 index 000000000..b175e3d66 --- /dev/null +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/direct/GamepadKeycodes.java @@ -0,0 +1,36 @@ +package net.kdt.pojavlaunch.customcontrols.gamepad.direct; + +public class GamepadKeycodes { + public static final byte GLFW_RELEASE = 0; + public static final byte GLFW_PRESS = 1; + public static int NUM_KEYCODES = 0; + + public static final short GLFW_GAMEPAD_BUTTON_A = 0; + public static final short GLFW_GAMEPAD_BUTTON_B = 1; + public static final short GLFW_GAMEPAD_BUTTON_X = 2; + public static final short GLFW_GAMEPAD_BUTTON_Y = 3; + public static final short GLFW_GAMEPAD_BUTTON_LEFT_BUMPER = 4; + public static final short GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER = 5; + public static final short GLFW_GAMEPAD_BUTTON_BACK = 6; + public static final short GLFW_GAMEPAD_BUTTON_START = 7; + public static final short GLFW_GAMEPAD_BUTTON_GUIDE = 8; + public static final short GLFW_GAMEPAD_BUTTON_LEFT_THUMB = 9; + public static final short GLFW_GAMEPAD_BUTTON_RIGHT_THUMB = 10; + public static final short GLFW_GAMEPAD_BUTTON_DPAD_UP = 11; + public static final short GLFW_GAMEPAD_BUTTON_DPAD_RIGHT = 12; + public static final short GLFW_GAMEPAD_BUTTON_DPAD_DOWN = 13; + public static final short GLFW_GAMEPAD_BUTTON_DPAD_LEFT = 14; + public static final short GLFW_GAMEPAD_BUTTON_LAST = GLFW_GAMEPAD_BUTTON_DPAD_LEFT; + public static final short GLFW_GAMEPAD_BUTTON_CROSS = GLFW_GAMEPAD_BUTTON_A; + public static final short GLFW_GAMEPAD_BUTTON_CIRCLE = GLFW_GAMEPAD_BUTTON_B; + public static final short GLFW_GAMEPAD_BUTTON_SQUARE = GLFW_GAMEPAD_BUTTON_X; + public static final short GLFW_GAMEPAD_BUTTON_TRIANGLE = GLFW_GAMEPAD_BUTTON_Y; + + public static final short GLFW_GAMEPAD_AXIS_LEFT_X = 0; + public static final short GLFW_GAMEPAD_AXIS_LEFT_Y = 1; + public static final short GLFW_GAMEPAD_AXIS_RIGHT_X = 2; + public static final short GLFW_GAMEPAD_AXIS_RIGHT_Y = 3; + public static final short GLFW_GAMEPAD_AXIS_LEFT_TRIGGER = 4; + public static final short GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER = 5; + public static final short GLFW_GAMEPAD_AXIS_LAST = GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER; +} diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java index b5480596f..fa2b25461 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java @@ -67,6 +67,7 @@ public class LauncherPreferences { public static String PREF_DOWNLOAD_SOURCE = "default"; public static boolean PREF_SKIP_NOTIFICATION_PERMISSION_CHECK = false; public static boolean PREF_VSYNC_IN_ZINK = true; + public static boolean PREF_DIRECT_CONTROLLER = false; public static void loadPreferences(Context ctx) { @@ -109,6 +110,7 @@ public class LauncherPreferences { PREF_VERIFY_MANIFEST = DEFAULT_PREF.getBoolean("verifyManifest", true); PREF_SKIP_NOTIFICATION_PERMISSION_CHECK = DEFAULT_PREF.getBoolean(PREF_KEY_SKIP_NOTIFICATION_CHECK, false); PREF_VSYNC_IN_ZINK = DEFAULT_PREF.getBoolean("vsync_in_zink", true); + PREF_DIRECT_CONTROLLER = DEFAULT_PREF.getBoolean("directController", false); String argLwjglLibname = "-Dorg.lwjgl.opengl.libname="; for (String arg : JREUtils.parseJavaArguments(PREF_CUSTOM_JAVA_ARGS)) { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceControlFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceControlFragment.java index 11f34e5dc..b9ae1e60e 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceControlFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceControlFragment.java @@ -89,6 +89,7 @@ public class LauncherPreferenceControlFragment extends LauncherPreferenceFragmen requirePreference("gyroInvertX").setVisible(LauncherPreferences.PREF_ENABLE_GYRO); requirePreference("gyroInvertY").setVisible(LauncherPreferences.PREF_ENABLE_GYRO); requirePreference("gyroSmoothing").setVisible(LauncherPreferences.PREF_ENABLE_GYRO); + requirePreference("_frag_changeKeyBindings").setVisible(!LauncherPreferences.PREF_DIRECT_CONTROLLER); } } diff --git a/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java b/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java index 6a2697c74..a41b5e228 100644 --- a/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java +++ b/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java @@ -8,6 +8,9 @@ import android.view.Choreographer; import androidx.annotation.Keep; import androidx.annotation.Nullable; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; import java.util.ArrayList; import dalvik.annotation.optimization.CriticalNative; @@ -27,6 +30,9 @@ public class CallbackBridge { public volatile static boolean holdingAlt, holdingCapslock, holdingCtrl, holdingNumlock, holdingShift; + public static final ByteBuffer sGamepadButtonBuffer; + public static final FloatBuffer sGamepadAxisBuffer; + public static void putMouseEventWithCoords(int button, float x, float y) { putMouseEventWithCoords(button, true, x, y); sChoreographer.postFrameCallbackDelayed(l -> putMouseEventWithCoords(button, false, x, y), 33); @@ -193,6 +199,11 @@ public class CallbackBridge { grabListeners.remove(listener); } } + public static FloatBuffer createGamepadAxisBuffer() { + ByteBuffer axisByteBuffer = nativeCreateGamepadAxisBuffer(); + // NOTE: hardcoded order (also in jre_lwjgl3glfw CallbackBridge) + return axisByteBuffer.order(ByteOrder.LITTLE_ENDIAN).asFloatBuffer(); + } @Keep @CriticalNative public static native void nativeSetUseInputStackQueue(boolean useInputStackQueue); @@ -206,8 +217,12 @@ public class CallbackBridge { @Keep @CriticalNative private static native void nativeSendScroll(double xoffset, double yoffset); @Keep @CriticalNative private static native void nativeSendScreenSize(int width, int height); public static native void nativeSetWindowAttrib(int attrib, int value); + private static native ByteBuffer nativeCreateGamepadButtonBuffer(); + private static native ByteBuffer nativeCreateGamepadAxisBuffer(); static { System.loadLibrary("pojavexec"); + sGamepadButtonBuffer = nativeCreateGamepadButtonBuffer(); + sGamepadAxisBuffer = createGamepadAxisBuffer(); } } diff --git a/app_pojavlauncher/src/main/jni/environ/environ.h b/app_pojavlauncher/src/main/jni/environ/environ.h index fbfdb1b09..62ec4a45d 100644 --- a/app_pojavlauncher/src/main/jni/environ/environ.h +++ b/app_pojavlauncher/src/main/jni/environ/environ.h @@ -28,6 +28,11 @@ typedef void GLFW_invoke_Key_func(void* window, int key, int scancode, int actio typedef void GLFW_invoke_MouseButton_func(void* window, int button, int action, int mods); typedef void GLFW_invoke_Scroll_func(void* window, double xoffset, double yoffset); +typedef struct { + unsigned char buttons [15]; + float axes[6]; +} GLFWgamepadstate; + struct pojav_environ_s { struct ANativeWindow* pojavWindow; basic_render_window_t* mainWindowBundle; @@ -58,6 +63,7 @@ struct pojav_environ_s { bool isInputReady, isCursorEntered, isUseStackQueueCall, shouldUpdateMouse; bool shouldUpdateMonitorSize, monitorSizeConsumed; int savedWidth, savedHeight; + GLFWgamepadstate gamepadState; #define ADD_CALLBACK_WWIN(NAME) \ GLFW_invoke_##NAME##_func* GLFW_invoke_##NAME; ADD_CALLBACK_WWIN(Char); diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c index 03bb79f62..3bfac1f07 100644 --- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c +++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c @@ -40,9 +40,10 @@ jint JNI_OnLoad(JavaVM* vm, __attribute__((unused)) void* reserved) { //Save dalvik global JavaVM pointer pojav_environ->dalvikJavaVMPtr = vm; (*vm)->GetEnv(vm, (void**) &pojav_environ->dalvikJNIEnvPtr_ANDROID, JNI_VERSION_1_4); - pojav_environ->bridgeClazz = (*pojav_environ->dalvikJNIEnvPtr_ANDROID)->NewGlobalRef(pojav_environ->dalvikJNIEnvPtr_ANDROID,(*pojav_environ->dalvikJNIEnvPtr_ANDROID) ->FindClass(pojav_environ->dalvikJNIEnvPtr_ANDROID,"org/lwjgl/glfw/CallbackBridge")); - pojav_environ->method_accessAndroidClipboard = (*pojav_environ->dalvikJNIEnvPtr_ANDROID)->GetStaticMethodID(pojav_environ->dalvikJNIEnvPtr_ANDROID, pojav_environ->bridgeClazz, "accessAndroidClipboard", "(ILjava/lang/String;)Ljava/lang/String;"); - pojav_environ->method_onGrabStateChanged = (*pojav_environ->dalvikJNIEnvPtr_ANDROID)->GetStaticMethodID(pojav_environ->dalvikJNIEnvPtr_ANDROID, pojav_environ->bridgeClazz, "onGrabStateChanged", "(Z)V"); + JNIEnv *env = pojav_environ->dalvikJNIEnvPtr_ANDROID; + pojav_environ->bridgeClazz = (*env)->NewGlobalRef(env,(*env) ->FindClass(env,"org/lwjgl/glfw/CallbackBridge")); + pojav_environ->method_accessAndroidClipboard = (*env)->GetStaticMethodID(env, pojav_environ->bridgeClazz, "accessAndroidClipboard", "(ILjava/lang/String;)Ljava/lang/String;"); + pojav_environ->method_onGrabStateChanged = (*env)->GetStaticMethodID(env, pojav_environ->bridgeClazz, "onGrabStateChanged", "(Z)V"); pojav_environ->isUseStackQueueCall = JNI_FALSE; } else if (pojav_environ->dalvikJavaVMPtr != vm) { __android_log_print(ANDROID_LOG_INFO, "Native", "Saving JVM environ..."); @@ -644,3 +645,18 @@ static void registerFunctions(JNIEnv *env) { use_critical_cc ? critical_fcns : noncritical_fcns, sizeof(critical_fcns)/sizeof(critical_fcns[0])); } + +JNIEXPORT jlong JNICALL +Java_org_lwjgl_glfw_GLFW_internalGetGamepadDataPointer(JNIEnv *env, jclass clazz) { + return (jlong) &pojav_environ->gamepadState; +} + +JNIEXPORT jobject JNICALL +Java_org_lwjgl_glfw_CallbackBridge_nativeCreateGamepadButtonBuffer(JNIEnv *env, jclass clazz) { + return (*env)->NewDirectByteBuffer(env, &pojav_environ->gamepadState.buttons, sizeof(pojav_environ->gamepadState.buttons)); +} + +JNIEXPORT jobject JNICALL +Java_org_lwjgl_glfw_CallbackBridge_nativeCreateGamepadAxisBuffer(JNIEnv *env, jclass clazz) { + return (*env)->NewDirectByteBuffer(env, &pojav_environ->gamepadState.axes, sizeof(pojav_environ->gamepadState.axes)); +} \ No newline at end of file diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 91104432d..2aff163bf 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -422,4 +422,6 @@ Unsuitable username The username must be between 3–16 characters long, and must only contain latin letters, arabic numerals and underscores. Quick settings + Use direct controller input + Disables keyboard/mouse emulation and lets the game use gamepad inputs directly. diff --git a/app_pojavlauncher/src/main/res/xml/pref_control.xml b/app_pojavlauncher/src/main/res/xml/pref_control.xml index 0d2778e17..cd0093bce 100644 --- a/app_pojavlauncher/src/main/res/xml/pref_control.xml +++ b/app_pojavlauncher/src/main/res/xml/pref_control.xml @@ -144,7 +144,13 @@ + diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/CallbackBridge.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/CallbackBridge.java index 74b923867..17d25e203 100644 --- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/CallbackBridge.java +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/CallbackBridge.java @@ -1,4 +1,5 @@ package org.lwjgl.glfw; +import java.nio.ByteBuffer; import java.util.*; public class CallbackBridge { @@ -47,5 +48,7 @@ public class CallbackBridge { public static native boolean nativeSetInputReady(boolean ready); public static native String nativeClipboard(int action, byte[] copy); public static native void nativeSetGrabbing(boolean grab); + public static native ByteBuffer nativeCreateGamepadButtonBuffer(); + public static native ByteBuffer nativeCreateGamepadAxisBuffer(); } diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java index 53ea33596..b878cb149 100644 --- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java @@ -13,6 +13,7 @@ import javax.annotation.*; import org.lwjgl.*; import org.lwjgl.system.*; +import org.lwjgl.system.MemoryUtil; import static org.lwjgl.opengl.GL20.*; import static org.lwjgl.system.APIUtil.*; @@ -24,8 +25,9 @@ import java.util.*; public class GLFW { - static FloatBuffer joystickData = (FloatBuffer)FloatBuffer.allocate(8).flip(); - static ByteBuffer buttonData = (ByteBuffer)ByteBuffer.allocate(8).flip(); + static FloatBuffer joystickAxisData; + static ByteBuffer joystickButtonData; + static ByteBuffer empty = (ByteBuffer)ByteBuffer.allocate(0); /** The major version number of the GLFW library. This is incremented when the API is changed in non-compatible ways. */ public static final int GLFW_VERSION_MAJOR = 3; @@ -515,6 +517,7 @@ public class GLFW private static final String PROP_WINDOW_WIDTH = "glfwstub.windowWidth"; private static final String PROP_WINDOW_HEIGHT= "glfwstub.windowHeight"; public static long mainContext = 0; + private static long gamepadDataPointer; static { try { @@ -636,6 +639,8 @@ public class GLFW return win; } + private static native long internalGetGamepadDataPointer(); + // Generated stub callback methods public static GLFWCharCallback glfwSetCharCallback(@NativeType("GLFWwindow *") long window, @Nullable @NativeType("GLFWcharfun") GLFWCharCallbackI cbfun) { GLFWCharCallback lastCallback = mGLFWCharCallback; @@ -805,6 +810,10 @@ public class GLFW mGLFWInitialTime = (double) System.nanoTime(); long __functionAddress = Functions.Init; isGLFWReady = invokeI(__functionAddress) != 0; + gamepadDataPointer = internalGetGamepadDataPointer(); + // NOTE: hardcoded order (also in android CallbackBridge) + joystickAxisData = CallbackBridge.nativeCreateGamepadAxisBuffer().order(ByteOrder.LITTLE_ENDIAN).asFloatBuffer(); + joystickButtonData = CallbackBridge.nativeCreateGamepadButtonBuffer(); } return isGLFWReady; } @@ -1201,50 +1210,59 @@ public class GLFW } public static boolean glfwJoystickPresent(int jid) { - if(jid == 0) { + if(jid == GLFW_JOYSTICK_1) { return true; }else return false; } public static String glfwGetJoystickName(int jid) { - if(jid == 0) { - return "AIC event bus controller"; + if(jid == GLFW_JOYSTICK_1) { + return "Pojav XBOX 360 compatible gamepad"; }else return null; } public static FloatBuffer glfwGetJoystickAxes(int jid) { - if(jid == 0) { - return joystickData; + if(jid == GLFW_JOYSTICK_1) { + return joystickAxisData; }else return null; } public static ByteBuffer glfwGetJoystickButtons(int jid) { - if(jid == 0) { - return buttonData; + if(jid == GLFW_JOYSTICK_1) { + return joystickButtonData; }else return null; } - public static ByteBuffer glfwGetjoystickHats(int jid) { - return null; + public static ByteBuffer glfwGetJoystickHats(int jid) { + if(jid == GLFW_JOYSTICK_1) { + return empty; // Maybe implement this later? + }else return null; } public static boolean glfwJoystickIsGamepad(int jid) { - if(jid == 0) return true; + if(jid == GLFW_JOYSTICK_1) return true; else return false; } public static String glfwGetJoystickGUID(int jid) { - if(jid == 0) return "aio0"; + // 16 8-bit characters to be compatible with SDL_GUID + if(jid == GLFW_JOYSTICK_1) return "AAAAAAAAAAAAAAAA"; else return null; } + + private static long mUserPointer; + public static long glfwGetJoystickUserPointer(int jid) { - return 0; + return mUserPointer; } public static void glfwSetJoystickUserPointer(int jid, long pointer) { - + mUserPointer = pointer; } public static boolean glfwUpdateGamepadMappings(ByteBuffer string) { return false; } public static String glfwGetGamepadName(int jid) { - return null; + if(jid == GLFW_JOYSTICK_1) return "Pojav XBOX 360 compatible gamepad"; + else return null; } public static boolean glfwGetGamepadState(int jid, GLFWGamepadState state) { - return false; + if(jid != 0) return false; + MemoryUtil.memCopy(gamepadDataPointer, state.address(), state.sizeof()); + return true; } /** Array version of: {@link #glfwGetVersion GetVersion} */