diff --git a/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java b/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java
index fd69b1bb4..4e4c13c14 100644
--- a/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java
+++ b/app/src/main/java/com/kdt/handleview/ActionPopupWindow.java
@@ -94,8 +94,6 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
@Override
public void onShow(DialogInterface dialogInterface) {
- final LinearLayout normalBtnLayout = dialog.findViewById(R.id.controlsetting_normalbtnlayout);
-
final EditText editName = dialog.findViewById(R.id.controlsetting_edit_name);
editName.setText(properties.name);
@@ -117,18 +115,6 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
} else {
spinnerKeycode.setSelection(AndroidLWJGLKeycode.getIndexByLWJGLKey(properties.keycode) + specialArr.length);
}
- spinnerKeycode.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
-
- @Override
- public void onItemSelected(AdapterView> adapter, View view, int position, long id) {
- normalBtnLayout.setVisibility(id < specialArr.length ? View.GONE : View.VISIBLE);
- }
-
- @Override
- public void onNothingSelected(AdapterView> adapter){
- // Unused
- }
- });
final CheckBox checkHidden = dialog.findViewById(R.id.controlsetting_checkbox_hidden);
checkHidden.setChecked(properties.hidden);
@@ -155,6 +141,15 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
}
});
+ final CheckBox checkHoldAlt = dialog.findViewById(R.id.controlsetting_checkbox_keycombine_alt);
+ checkHoldAlt.setChecked(properties.holdAlt);
+
+ final CheckBox checkHoldControl = dialog.findViewById(R.id.controlsetting_checkbox_keycombine_control);
+ checkHoldControl.setChecked(properties.holdCtrl);
+
+ final CheckBox checkHoldShift = dialog.findViewById(R.id.controlsetting_checkbox_keycombine_shift);
+ checkHoldShift.setChecked(properties.holdShift);
+
Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@@ -201,6 +196,10 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
properties.isDynamicBtn = checkDynamicPos.isChecked();
properties.dynamicX = editDynamicX.getText().toString();
properties.dynamicY = editDynamicY.getText().toString();
+
+ properties.holdAlt = checkHoldAlt.isChecked();
+ properties.holdCtrl = checkHoldControl.isChecked();
+ properties.holdShift = checkHoldShift.isChecked();
if (properties.dynamicX.isEmpty()) {
properties.dynamicX = Float.toString(properties.x);
@@ -219,7 +218,7 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
dialog.show();
} else if (view == mDeleteTextView) {
- alert.setMessage(R.string.global_remove + " " + mHandleView.mView.getText() + "?");
+ alert.setMessage(view.getContext().getString(R.string.global_remove) + " " + mHandleView.mView.getText() + "?");
alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){
@Override
diff --git a/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java
index 1347a041c..f2f15baff 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/CustomCtrlMainActivity.java
@@ -76,6 +76,10 @@ public class CustomCtrlMainActivity extends BaseMainActivity implements OnClickL
sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_LEFT, isDown);
break;
+ case ControlData.SPECIALBTN_MOUSEMID:
+ sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_MIDDLE, isDown);
+ break;
+
case ControlData.SPECIALBTN_MOUSESEC:
if (CallbackBridge.isGrabbing()) {
sendMouseButton(LWJGLGLFWKeycode.GLFW_MOUSE_BUTTON_RIGHT, isDown);
diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java
index b45bfab32..461caa25f 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java
@@ -52,9 +52,6 @@ public class MainActivity extends BaseMainActivity implements OnClickListener, O
this.toggleControlButton.setOnClickListener(this);
this.zoomButton.setVisibility(mVersionInfo.optifineLib == null ? View.GONE : View.VISIBLE);
- ControlData[] specialButtons = ControlData.getSpecialButtons();
- specialButtons[1].specialButtonListener = this;
-
// toggleGui(null);
onClick(toggleControlButton);
}
diff --git a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java
index 54288eea5..b7ef43908 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlButton.java
@@ -16,6 +16,8 @@ public class ControlButton extends Button implements OnLongClickListener, OnTouc
private boolean mCanModify = false;
private boolean mCanTriggerLongClick = true;
+
+ private int mMods;
public ControlButton(Context ctx, ControlData properties) {
super(ctx);
@@ -47,6 +49,14 @@ public class ControlButton extends Button implements OnLongClickListener, OnTouc
public void setProperties(ControlData properties, boolean changePos) {
mProperties = properties;
properties.update();
+
+ if (properties.holdAlt) {
+ mMods &= LWJGLGLFWKeycode.GLFW_MOD_ALT;
+ } if (properties.holdCtrl) {
+ mMods &= LWJGLGLFWKeycode.GLFW_MOD_CONTROL;
+ } if (properties.holdShift) {
+ mMods &= LWJGLGLFWKeycode.GLFW_MOD_SHIFT;
+ }
// com.android.internal.R.string.delete
// android.R.string.
@@ -131,7 +141,7 @@ public class ControlButton extends Button implements OnLongClickListener, OnTouc
default:
return false;
}
- MainActivity.sendKeyPress(mProperties.keycode, 0, isDown);
+ MainActivity.sendKeyPress(mProperties.keycode, mMods, isDown);
return true;
}
diff --git a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java
index f16233be9..7194a5ad3 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlData.java
@@ -19,6 +19,7 @@ public class ControlData implements Cloneable
public static final int SPECIALBTN_MOUSEPRI = -3;
public static final int SPECIALBTN_MOUSESEC = -4;
public static final int SPECIALBTN_VIRTUALMOUSE = -5;
+ public static final int SPECIALBTN_MOUSEMID = -6;
private static ControlData[] SPECIAL_BUTTONS;
private static String[] SPECIAL_BUTTON_NAME_ARRAY;
@@ -42,6 +43,7 @@ public class ControlData implements Cloneable
new ControlData("Keyboard", SPECIALBTN_KEYBOARD, "${margin} * 3 + ${width} * 2", "${margin}", false),
new ControlData("GUI", SPECIALBTN_TOGGLECTRL, "${margin}", "${bottom} - ${margin}"),
new ControlData("PRI", SPECIALBTN_MOUSEPRI, "${margin}", "${screen_height} - ${margin} * 3 - ${height} * 3"),
+ new ControlData("MID", SPECIALBTN_MOUSEMID, "${margin}", "${margin}"),
new ControlData("SEC", SPECIALBTN_MOUSESEC, "${margin} * 3 + ${width} * 2", "${screen_height} - ${margin} * 3 - ${height} * 3"),
new ControlData("Mouse", SPECIALBTN_VIRTUALMOUSE, "${right}", "${margin}", false)
};
diff --git a/app/src/main/res/layout/control_setting.xml b/app/src/main/res/layout/control_setting.xml
index d2cc0c7c7..2b9fb98a2 100644
--- a/app/src/main/res/layout/control_setting.xml
+++ b/app/src/main/res/layout/control_setting.xml
@@ -19,24 +19,16 @@
android:layout_width="match_parent"
android:id="@+id/controlsetting_spinner_lwjglkeycode"/>
-
+
+
-
-
-
-
-
-
+ android:singleLine="true"
+ android:id="@+id/controlsetting_edit_name"/>
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0919fafc3..201266e0d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -189,10 +189,17 @@
Keycode
Special Key
Hidden
+
Dynamic position
Dynamic X
Dynamic Y
+
+ Key combination
+ Alt
+ Control
+ Shift
Add button
+
Select default Control json