From 71b7c9696d52fa564329ef66ac7a49452e9b1b58 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh <40482367+khanhduytran0@users.noreply.github.com> Date: Fri, 5 Nov 2021 05:14:29 +0700 Subject: [PATCH] Impl: toggle virtual mouse button for mod installer --- .../pojavlaunch/JavaGUILauncherActivity.java | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java index 7d9e48ee3..451c65ea4 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java @@ -35,7 +35,7 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On private final Object mDialogLock = new Object(); - private boolean isLogAllow, mSkipDetectMod; + private boolean isLogAllow, mSkipDetectMod, isVirtualMouseEnabled; private boolean rightOverride = false; private int scaleFactor; @@ -79,6 +79,7 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On this.touchPad = findViewById(R.id.main_touchpad); touchPad.setFocusable(false); + touchPad.setVisibility(View.GONE); this.mousePointer = findViewById(R.id.main_mouse_pointer); this.mousePointer.post(() -> { @@ -87,7 +88,6 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On params.height = (int) (54 / 100f * LauncherPreferences.PREF_MOUSESCALE); }); - touchPad.setOnTouchListener(new OnTouchListener(){ private float prevX, prevY; @Override @@ -174,6 +174,27 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On final String javaArgs = getIntent().getExtras().getString("javaArgs"); mTextureView = findViewById(R.id.installmod_surfaceview); + mTextureView.setOnTouchListener(new OnTouchListener(){ + @Override + public boolean onTouch(View v, MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + if (gestureDetector.onTouchEvent(event)) { + sendScaledMousePosition(x, y); + AWTInputBridge.sendMousePress(rightOverride ? AWTInputEvent.BUTTON3_DOWN_MASK : AWTInputEvent.BUTTON1_DOWN_MASK); + } else { + switch (action) { + case MotionEvent.ACTION_UP: // 1 + case MotionEvent.ACTION_CANCEL: // 3 + case MotionEvent.ACTION_POINTER_UP: // 6 + break; + case MotionEvent.ACTION_MOVE: // 2 + sendScaledMousePosition(x, y); + break; + } + } + } + }); mSkipDetectMod = getIntent().getExtras().getBoolean("skipDetectMod", false); if (mSkipDetectMod) { @@ -274,6 +295,14 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On forceClose(null); } } + + public void toggleVirtualMouse(View v) { + isVirtualMouseEnabled = !isVirtualMouseEnabled; + touchPad.setVisibility(isVirtualMouseEnabled ? View.VISIBLE : View.GONE); + Toast.makeText(ctx, + isVirtualMouseEnabled ? R.string.control_mouseon : R.string.control_mouseoff, + Toast.LENGTH_SHORT).show(); + } private int doCustomInstall(File modFile, String javaArgs) throws IOException { isLogAllow = true;