From 47f467e705b9df963f4fc44b656ea9d9c90ec14b Mon Sep 17 00:00:00 2001 From: SerpentSpirale Date: Tue, 7 Sep 2021 17:00:07 +0200 Subject: [PATCH] - Add auto-correct support - Fix F25 key when setting controls. --- .../customcontrols/TouchCharInput.java | 34 +++++++------------ .../java/org/lwjgl/glfw/CallbackBridge.java | 5 +++ .../main/res/layout/main_with_customctrl.xml | 4 +-- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/TouchCharInput.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/TouchCharInput.java index f20a6d0e5..b4ef47003 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/TouchCharInput.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/TouchCharInput.java @@ -46,23 +46,19 @@ public class TouchCharInput extends androidx.appcompat.widget.AppCompatEditText @Override protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { super.onTextChanged(text, start, lengthBefore, lengthAfter); - if(isDoingInternalChanges){ - isDoingInternalChanges = false; - return; + if(isDoingInternalChanges)return; + + for(int i=0; i< lengthBefore; ++i){ + CallbackBridge.sendKeycode(LWJGLGLFWKeycode.GLFW_KEY_BACKSPACE, '\u0008', 0, 0, true); } - if(lengthAfter < lengthBefore){ - for(int i=0; i< lengthBefore-lengthAfter; ++i){ - CallbackBridge.sendKeycode(LWJGLGLFWKeycode.GLFW_KEY_BACKSPACE, '\u0008', 0, 0, true); - } - }else{ - for(int i=lengthBefore, index=lengthBefore+start; i < lengthAfter; ++i){ - //I didn't know F25 existed before that. I just need a full fat keycode for mc 1.13+ - CallbackBridge.sendKeycode(LWJGLGLFWKeycode.GLFW_KEY_F25, text.charAt(index), 0, 0, true); - index ++; - } + for(int i=start, count = 0; count < lengthAfter; ++i){ + //I didn't know F25 existed before that. I just need a full fat keycode for mc 1.13+ + CallbackBridge.sendChar(text.charAt(i), 0); + ++count; } - clear(); + //Reset the keyboard state + if(text.length() < 1) clear(); } @@ -88,10 +84,6 @@ public class TouchCharInput extends androidx.appcompat.widget.AppCompatEditText return super.onKeyPreIme(keyCode, event); } - @Override - public void setSelection(int index) { - super.setSelection(5); - } /** * Toggle on and off the soft keyboard, depending of the state @@ -125,8 +117,9 @@ public class TouchCharInput extends androidx.appcompat.widget.AppCompatEditText isDoingInternalChanges = true; //Braille space, doesn't trigger keyboard auto-complete //replacing directly the text without though setText avoids notifying changes - getText().replace(0, getText().length(),"\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800"); - setSelection(5); + setText(" "); + setSelection(getText().length()); + isDoingInternalChanges = false; } /** @@ -159,7 +152,6 @@ public class TouchCharInput extends androidx.appcompat.widget.AppCompatEditText } - /** * This function deals with anything that has to be executed when the constructor is called */ 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 fc4538fb2..7582e7468 100644 --- a/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java +++ b/app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java @@ -79,6 +79,11 @@ public class CallbackBridge { // sendData(JRE_TYPE_KEYCODE_CONTROL, keycode, Character.toString(keychar), Boolean.toString(isDown), modifiers); } + public static void sendChar(char keychar, int modifiers){ + nativeSendCharMods(keychar,modifiers); + nativeSendChar(keychar); + } + public static void sendMouseKeycode(int button, int modifiers, boolean isDown) { DEBUG_STRING.append("MouseKey=").append(button).append(", down=").append(isDown).append("\n"); // if (isGrabbing()) DEBUG_STRING.append("MouseGrabStrace: " + android.util.Log.getStackTraceString(new Throwable()) + "\n"); diff --git a/app_pojavlauncher/src/main/res/layout/main_with_customctrl.xml b/app_pojavlauncher/src/main/res/layout/main_with_customctrl.xml index 6fbbb4b10..a66d0bd91 100644 --- a/app_pojavlauncher/src/main/res/layout/main_with_customctrl.xml +++ b/app_pojavlauncher/src/main/res/layout/main_with_customctrl.xml @@ -53,8 +53,8 @@ android:layout_height="1dp" android:background="@android:color/darker_gray" android:ems="10" - android:imeOptions="flagNoFullscreen|flagNoExtractUi|flagNoPersonalizedLearning|actionSend" - android:inputType="textVisiblePassword" + android:imeOptions="flagNoFullscreen|flagNoExtractUi|flagNoPersonalizedLearning|actionDone" + android:inputType="textFilter|textImeMultiLine|textAutoComplete|textAutoCorrect" tools:ignore="TouchTargetSizeCheck" />