From fe8fb7bd2079d53ce9934ed4a1c98043d996bd32 Mon Sep 17 00:00:00 2001 From: artdeell Date: Wed, 12 Jul 2023 16:23:05 +0300 Subject: [PATCH] Implement AWT clipboard for copy-paste on 1.12.2 and lower --- .../cacio-androidnw-1.10-SNAPSHOT.jar | Bin 39478 -> 45072 bytes .../cacio-shared-1.10-SNAPSHOT.jar | Bin 102753 -> 102755 bytes .../assets/components/caciocavallo/version | 2 +- .../cacio-shared-1.18-SNAPSHOT.jar | Bin 101068 -> 101064 bytes .../cacio-tta-1.18-SNAPSHOT.jar | Bin 33237 -> 46605 bytes .../assets/components/caciocavallo17/version | 2 +- .../net/kdt/pojavlaunch/AWTInputBridge.java | 8 +- .../pojavlaunch/JavaGUILauncherActivity.java | 14 +++ .../net/kdt/pojavlaunch/MainActivity.java | 33 +++++++ app_pojavlauncher/src/main/jni/awt_bridge.c | 84 ++++++++++++------ .../res/layout/activity_java_gui_launcher.xml | 29 +++++- 11 files changed, 143 insertions(+), 29 deletions(-) diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-androidnw-1.10-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-androidnw-1.10-SNAPSHOT.jar index 778ad9356b006680cc4bbd67b52b52a85df8cb30..fa2db2a12125d9c031c4dc0984ae0fc217d6c199 100644 GIT binary patch delta 14495 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 diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-shared-1.10-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-shared-1.10-SNAPSHOT.jar index 9741cd0b68f394daa5b1cc5b264e9515ef5a6473..5171bec5461d9bb45e9a7c520e7d843cd9eb8fd7 100644 GIT binary patch delta 3692 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 diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo/version b/app_pojavlauncher/src/main/assets/components/caciocavallo/version index a902c66f7..7f1b85e53 100644 --- a/app_pojavlauncher/src/main/assets/components/caciocavallo/version +++ b/app_pojavlauncher/src/main/assets/components/caciocavallo/version @@ -1 +1 @@ -HEllo PeopLE \ No newline at end of file +HEllo PeopLE1 \ No newline at end of file diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-shared-1.18-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-shared-1.18-SNAPSHOT.jar index 0d4859d2d5079775008af6c791676678aa35133a..39d65c525080b3434796f0bfc8df9efdde6eb0c8 100644 GIT binary patch delta 3764 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 Rfe7;cM$pM^R$$F=zXFE<*1Z4# diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-tta-1.18-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-tta-1.18-SNAPSHOT.jar index 91bc64206f7936aa3b110131f6166398f4554244..59f113b1f8d37f57d0cad072a88edaf34a0eeed4 100644 GIT binary patch delta 17615 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 delta 4480 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 Iz&+Fd1GI!4ng9R* diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo17/version b/app_pojavlauncher/src/main/assets/components/caciocavallo17/version index 5943f2b39..b130beac0 100644 --- a/app_pojavlauncher/src/main/assets/components/caciocavallo17/version +++ b/app_pojavlauncher/src/main/assets/components/caciocavallo17/version @@ -1 +1 @@ -20230118 +20230712 diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTInputBridge.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTInputBridge.java index ec0e3d2de..f5153bad0 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTInputBridge.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTInputBridge.java @@ -8,9 +8,15 @@ public class AWTInputBridge { public static void sendKey(char keychar, int keycode) { // TODO: Android -> AWT keycode mapping + nativeSendData(EVENT_TYPE_KEY, (int) keychar, keycode, 1, 0); nativeSendData(EVENT_TYPE_KEY, (int) keychar, keycode, 0, 0); } + public static void sendKey(char keychar, int keycode, int state) { + // TODO: Android -> AWT keycode mapping + nativeSendData(EVENT_TYPE_KEY, (int) keychar, keycode, state, 0); + } + public static void sendChar(char keychar){ nativeSendData(EVENT_TYPE_CHAR, (int) keychar, 0, 0, 0); } @@ -33,6 +39,6 @@ public class AWTInputBridge { } public static native void nativeSendData(int type, int i1, int i2, int i3, int i4); - @SuppressWarnings("unused") public static native void nativePutClipboard(String data); //TODO: feed the AWT clipboard + public static native void nativeClipboardReceived(String data, String mimeTypeSub); public static native void nativeMoveWindow(int xoff, int yoff); } 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 d38b8db78..bf3c3f781 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java @@ -3,6 +3,7 @@ package net.kdt.pojavlaunch; import static net.kdt.pojavlaunch.MainActivity.fullyExit; import android.annotation.SuppressLint; +import android.content.ClipboardManager; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; @@ -64,6 +65,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTouc }catch (IOException e) { Tools.showError(this, e, true); } + MainActivity.GLOBAL_CLIPBOARD = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); mTouchCharInput = findViewById(R.id.awt_touch_char); mTouchCharInput.setCharacterSender(new AwtCharSender()); @@ -328,6 +330,18 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTouc public void toggleKeyboard(View view) { mTouchCharInput.switchKeyboardState(); } + public void performCopy(View view) { + AWTInputBridge.sendKey(' ', AWTInputEvent.VK_CONTROL, 1); + AWTInputBridge.sendKey(' ', AWTInputEvent.VK_C); + AWTInputBridge.sendKey(' ', AWTInputEvent.VK_CONTROL, 0); + } + + public void performPaste(View view) { + AWTInputBridge.sendKey(' ', AWTInputEvent.VK_CONTROL, 1); + AWTInputBridge.sendKey(' ', AWTInputEvent.VK_V); + AWTInputBridge.sendKey(' ', AWTInputEvent.VK_CONTROL, 0); + } + public int getJavaVersion(File modFile) { try (ZipFile zipFile = new ZipFile(modFile)){ ZipEntry manifest = zipFile.getEntry("META-INF/MANIFEST.MF"); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 68d8f3e83..3b6d8abff 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -11,6 +11,7 @@ import static org.lwjgl.glfw.CallbackBridge.windowWidth; import android.app.Activity; import android.app.AlertDialog; +import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; @@ -546,6 +547,38 @@ public class MainActivity extends BaseActivity implements ControlButtonMenuListe }); } + public static void querySystemClipboard() { + Tools.runOnUiThread(()->{ + ClipData clipData = GLOBAL_CLIPBOARD.getPrimaryClip(); + if(clipData == null) { + AWTInputBridge.nativeClipboardReceived(null, null); + return; + } + ClipData.Item firstClipItem = clipData.getItemAt(0); + //TODO: coerce to HTML if the clip item is styled + CharSequence clipItemText = firstClipItem.getText(); + if(clipItemText == null) { + AWTInputBridge.nativeClipboardReceived(null, null); + return; + } + AWTInputBridge.nativeClipboardReceived(clipItemText.toString(), "plain"); + }); + } + + public static void putClipboardData(String data, String mimeType) { + Tools.runOnUiThread(()-> { + ClipData clipData = null; + switch(mimeType) { + case "text/plain": + clipData = ClipData.newPlainText("AWT Paste", data); + break; + case "text/html": + clipData = ClipData.newHtmlText("AWT Paste", data, data); + } + if(clipData != null) GLOBAL_CLIPBOARD.setPrimaryClip(clipData); + }); + } + @Override public void onClickedMenu() { drawerLayout.openDrawer(navDrawer); diff --git a/app_pojavlauncher/src/main/jni/awt_bridge.c b/app_pojavlauncher/src/main/jni/awt_bridge.c index 31b0051f1..27bcc6500 100644 --- a/app_pojavlauncher/src/main/jni/awt_bridge.c +++ b/app_pojavlauncher/src/main/jni/awt_bridge.c @@ -8,7 +8,6 @@ static JavaVM* dalvikJavaVMPtr; static JavaVM* runtimeJavaVMPtr; static JNIEnv* runtimeJNIEnvPtr_GRAPHICS; static JNIEnv* runtimeJNIEnvPtr_INPUT; -static JNIEnv* runtimeJNIEnvPtr_CLIPBOARD; jclass class_CTCScreen; jmethodID method_GetRGB; @@ -18,13 +17,18 @@ jmethodID method_ReceiveInput; jclass class_MainActivity; jmethodID method_OpenLink; jmethodID method_OpenPath; +jmethodID method_QuerySystemClipboard; +jmethodID method_PutClipboardData; jclass class_Frame; jclass class_Rectangle; +jclass class_CTCClipboard = NULL; jmethodID constructor_Rectangle; jmethodID method_GetFrames; jmethodID method_GetBounds; jmethodID method_SetBounds; +jmethodID method_SystemClipboardDataReceived = NULL; + jfieldID field_x; jfieldID field_y; @@ -37,6 +41,8 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { class_MainActivity = (*env)->NewGlobalRef(env,(*env)->FindClass(env, "net/kdt/pojavlaunch/MainActivity")); method_OpenLink= (*env)->GetStaticMethodID(env, class_MainActivity, "openLink", "(Ljava/lang/String;)V"); method_OpenPath= (*env)->GetStaticMethodID(env, class_MainActivity, "openLink", "(Ljava/lang/String;)V"); + method_QuerySystemClipboard = (*env)->GetStaticMethodID(env, class_MainActivity, "querySystemClipboard", "()V"); + method_PutClipboardData = (*env)->GetStaticMethodID(env, class_MainActivity, "putClipboardData", "(Ljava/lang/String;Ljava/lang/String;)V"); } else if (dalvikJavaVMPtr != vm) { runtimeJavaVMPtr = vm; } @@ -118,33 +124,43 @@ JNIEXPORT jintArray JNICALL Java_net_kdt_pojavlaunch_utils_JREUtils_renderAWTScr return androidRgbArray; } -jobject clipboard = NULL; -jclass clipboardClass; -static jobject obtainClipboard(JNIEnv *env) { - jclass toolkitClass = (*runtimeJNIEnvPtr_CLIPBOARD)->FindClass(runtimeJNIEnvPtr_CLIPBOARD,"java/awt/Toolkit"); - jobject toolkit = (*runtimeJNIEnvPtr_CLIPBOARD)->CallStaticObjectMethod(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass,(*runtimeJNIEnvPtr_CLIPBOARD)->GetStaticMethodID(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass,"getDefaultToolkit", "()Ljava/awt/Toolkit;")); - clipboardClass = (*runtimeJNIEnvPtr_CLIPBOARD)->NewGlobalRef(runtimeJNIEnvPtr_CLIPBOARD,(*runtimeJNIEnvPtr_CLIPBOARD)->FindClass(runtimeJNIEnvPtr_CLIPBOARD,"java/awt/datatransfer/Clipboard")); - clipboard = (*runtimeJNIEnvPtr_CLIPBOARD)->NewGlobalRef(runtimeJNIEnvPtr_CLIPBOARD,(*runtimeJNIEnvPtr_CLIPBOARD)->CallObjectMethod(runtimeJNIEnvPtr_CLIPBOARD,toolkit,(*runtimeJNIEnvPtr_CLIPBOARD)->GetMethodID(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass,"getSystemClipboard", "()Ljava/awt/datatransfer/Clipboard;"))); - (*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass); - (*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,toolkit); +JNIEXPORT void JNICALL Java_net_java_openjdk_cacio_ctc_CTCClipboard_nQuerySystemClipboard(JNIEnv *env, jclass clazz) { + JNIEnv *dalvikEnv;char detachable = 0; + if((*dalvikJavaVMPtr)->GetEnv(dalvikJavaVMPtr, (void **) &dalvikEnv, JNI_VERSION_1_6) == JNI_EDETACHED) { + (*dalvikJavaVMPtr)->AttachCurrentThread(dalvikJavaVMPtr, &dalvikEnv, NULL); + detachable = 1; + } + if(method_SystemClipboardDataReceived == NULL) { + class_CTCClipboard = (*env)->NewGlobalRef(env, clazz); + method_SystemClipboardDataReceived = (*env)->GetStaticMethodID(env, clazz, "systemClipboardDataReceived", "(Ljava/lang/String;Ljava/lang/String;)V"); + } + (*dalvikEnv)->CallStaticVoidMethod(dalvikEnv, class_MainActivity, method_QuerySystemClipboard); + if(detachable) (*dalvikJavaVMPtr)->DetachCurrentThread(dalvikJavaVMPtr); } -JNIEXPORT void JNICALL -Java_net_kdt_pojavlaunch_AWTInputBridge_nativePutClipboard(JNIEnv *env, jclass clazz, - jstring data) { - if (runtimeJNIEnvPtr_CLIPBOARD == NULL) { - if (runtimeJavaVMPtr != NULL) { - (*runtimeJavaVMPtr)->AttachCurrentThread(runtimeJavaVMPtr, &runtimeJNIEnvPtr_CLIPBOARD, NULL); - }else{ - return; - } +JNIEXPORT void JNICALL Java_net_java_openjdk_cacio_ctc_CTCClipboard_nPutClipboardData(JNIEnv* env, jclass clazz, jstring clipboardData, jstring clipboardDataMime) { + JNIEnv *dalvikEnv;char detachable = 0; + if((*dalvikJavaVMPtr)->GetEnv(dalvikJavaVMPtr, (void **) &dalvikEnv, JNI_VERSION_1_6) == JNI_EDETACHED) { + (*dalvikJavaVMPtr)->AttachCurrentThread(dalvikJavaVMPtr, &dalvikEnv, NULL); + detachable = 1; } - if(clipboard == NULL) obtainClipboard(runtimeJNIEnvPtr_CLIPBOARD); - jclass stringSelection = (*runtimeJNIEnvPtr_CLIPBOARD)->FindClass(runtimeJNIEnvPtr_CLIPBOARD,"java/awt/datatransfer/StringSelection"); - jobject o_stringSelection = (*runtimeJNIEnvPtr_CLIPBOARD)->NewObject(runtimeJNIEnvPtr_CLIPBOARD,stringSelection,(*runtimeJNIEnvPtr_CLIPBOARD)->GetMethodID(runtimeJNIEnvPtr_CLIPBOARD,stringSelection,"", "(Ljava/lang/String;)V"),NULL); - (*runtimeJNIEnvPtr_CLIPBOARD)->CallVoidMethod(runtimeJNIEnvPtr_CLIPBOARD,clipboard,(*runtimeJNIEnvPtr_CLIPBOARD)->GetMethodID(env,clipboardClass,"setContents", "(Ljava/awt/datatransfer/Transferable;Ljava/awt/datatransfer/ClipboardOwner;)V"),o_stringSelection,NULL); - (*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,stringSelection); - (*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,o_stringSelection); + + const char* dataChars = (*env)->GetStringUTFChars(env, clipboardData, NULL); + const char* mimeChars = (*env)->GetStringUTFChars(env, clipboardDataMime, NULL); + (*dalvikEnv)->CallStaticVoidMethod(dalvikEnv, class_MainActivity, method_PutClipboardData, + (*dalvikEnv)->NewStringUTF(dalvikEnv, dataChars), + (*dalvikEnv)->NewStringUTF(dalvikEnv, mimeChars)); + (*env)->ReleaseStringUTFChars(env, clipboardData, dataChars); + (*env)->ReleaseStringUTFChars(env, clipboardDataMime, mimeChars); + if(detachable) (*dalvikJavaVMPtr)->DetachCurrentThread(dalvikJavaVMPtr); +} + +JNIEXPORT void JNICALL Java_com_github_caciocavallosilano_cacio_ctc_CTCClipboard_nQuerySystemClipboard(JNIEnv *env, jclass clazz) { + Java_net_java_openjdk_cacio_ctc_CTCClipboard_nQuerySystemClipboard(env, clazz); +} + +JNIEXPORT void JNICALL Java_com_github_caciocavallosilano_cacio_ctc_CTCClipboard_nPutClipboardData(JNIEnv* env, jclass clazz, jstring clipboardData, jstring clipboardDataMime) { + Java_net_java_openjdk_cacio_ctc_CTCClipboard_nPutClipboardData(env, clazz, clipboardData, clipboardDataMime); } JNIEXPORT void JNICALL Java_net_java_openjdk_cacio_ctc_CTCDesktopPeer_openFile(JNIEnv *env, jclass clazz, jstring filePath) { @@ -171,6 +187,24 @@ JNIEXPORT void JNICALL Java_net_java_openjdk_cacio_ctc_CTCDesktopPeer_openUri(JN if(detachable) (*dalvikJavaVMPtr)->DetachCurrentThread(dalvikJavaVMPtr); } +JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_AWTInputBridge_nativeClipboardReceived(JNIEnv *env, jclass clazz, jstring clipboardData, jstring clipboardDataMime) { + if(method_SystemClipboardDataReceived == NULL || class_CTCClipboard == NULL) return; + if (runtimeJNIEnvPtr_INPUT == NULL) { + if (runtimeJavaVMPtr == NULL) { + return; + } else { + (*runtimeJavaVMPtr)->AttachCurrentThread(runtimeJavaVMPtr, &runtimeJNIEnvPtr_INPUT, NULL); + } + } + const char* dataChars = clipboardData != NULL ? (*env)->GetStringUTFChars(env, clipboardData, NULL) : NULL; + const char* mimeChars = clipboardDataMime != NULL ? (*env)->GetStringUTFChars(env, clipboardDataMime, NULL) : NULL; + (*runtimeJNIEnvPtr_INPUT)->CallStaticVoidMethod(runtimeJNIEnvPtr_INPUT, class_CTCClipboard, method_SystemClipboardDataReceived, + clipboardData != NULL ? (*runtimeJNIEnvPtr_INPUT)->NewStringUTF(runtimeJNIEnvPtr_INPUT, dataChars) : NULL, + clipboardDataMime != NULL ? (*runtimeJNIEnvPtr_INPUT)->NewStringUTF(runtimeJNIEnvPtr_INPUT, mimeChars) : NULL); + if(dataChars != NULL) (*env)->ReleaseStringUTFChars(env, clipboardData, dataChars); + if(mimeChars != NULL) (*env)->ReleaseStringUTFChars(env, clipboardDataMime, mimeChars); +} + JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_AWTInputBridge_nativeMoveWindow(JNIEnv *env, jclass clazz, jint xoff, jint yoff) { if (runtimeJNIEnvPtr_INPUT == NULL) { diff --git a/app_pojavlauncher/src/main/res/layout/activity_java_gui_launcher.xml b/app_pojavlauncher/src/main/res/layout/activity_java_gui_launcher.xml index 3863b1469..d5a3fbe4c 100644 --- a/app_pojavlauncher/src/main/res/layout/activity_java_gui_launcher.xml +++ b/app_pojavlauncher/src/main/res/layout/activity_java_gui_launcher.xml @@ -86,12 +86,39 @@ app:layout_constraintTop_toBottomOf="@+id/installmod_btn3" />