diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java index 894cff2..b693621 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java @@ -88,6 +88,7 @@ public class MidnightControlsConfig extends MidnightConfig { @Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_mouse") public static boolean virtualMouse = false; @Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_mouse.skin") public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT; @Entry(category = SCREENS, name = "midnightcontrols.menu.hide_cursor") public static boolean hideNormalMouse = false; + @Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_keyboard") public static boolean virtualKeyboard = false; @Entry(category = CONTROLLER, name = "Controller ID") @Hidden public static Object controllerID = 0; @Entry(category = CONTROLLER, name = "2nd Controller ID") @Hidden public static Object secondControllerID = -1; @Entry(category = VISUAL, name = "midnightcontrols.menu.controller_type") public static ControllerType controllerType = ControllerType.DEFAULT; @@ -374,6 +375,7 @@ public class MidnightControlsConfig extends MidnightConfig { unfocusedInput = false; virtualMouse = false; virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT; + virtualKeyboard = false; controllerID = 0; secondControllerID = -1; controllerType = ControllerType.DEFAULT; diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java index 3df0cff..0701104 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java @@ -64,6 +64,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { private final SpruceOption eyeTrackingAsMouseOption; private final SpruceOption eyeTrackingDeadzone; private final SpruceOption virtualMouseOption; + private final SpruceOption virtualKeyboardOption; private final SpruceOption hideCursorOption; private final SpruceOption resetOption; private final SpruceOption advancedConfigOption; @@ -299,6 +300,8 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { value -> MidnightControlsConfig.unfocusedInput = value, Text.translatable("midnightcontrols.menu.unfocused_input.tooltip")); this.virtualMouseOption = new SpruceToggleBooleanOption("midnightcontrols.menu.virtual_mouse", () -> MidnightControlsConfig.virtualMouse, value -> MidnightControlsConfig.virtualMouse = value, Text.translatable("midnightcontrols.menu.virtual_mouse.tooltip")); + this.virtualKeyboardOption = new SpruceToggleBooleanOption("midnightcontrols.menu.virtual_keyboard", () -> MidnightControlsConfig.virtualMouse, + value -> MidnightControlsConfig.virtualMouse = value, Text.translatable("midnightcontrols.menu.virtual_keyboard.tooltip")); this.hideCursorOption = new SpruceToggleBooleanOption("midnightcontrols.menu.hide_cursor", () -> MidnightControlsConfig.hideNormalMouse, value -> MidnightControlsConfig.hideNormalMouse = value, Text.translatable("midnightcontrols.menu.hide_cursor.tooltip")); // Touch options @@ -390,6 +393,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { list.addSingleOptionEntry(this.yAxisRotationSpeedOption); list.addSingleOptionEntry(this.mouseSpeedOption); list.addSingleOptionEntry(this.virtualMouseOption); + list.addSingleOptionEntry(this.virtualKeyboardOption); list.addSingleOptionEntry(this.hideCursorOption); list.addSingleOptionEntry(this.joystickAsMouseOption); list.addSingleOptionEntry(this.eyeTrackingAsMouseOption); diff --git a/common/src/main/resources/assets/midnightcontrols/lang/en_us.json b/common/src/main/resources/assets/midnightcontrols/lang/en_us.json index 99ff087..e1b4f00 100644 --- a/common/src/main/resources/assets/midnightcontrols/lang/en_us.json +++ b/common/src/main/resources/assets/midnightcontrols/lang/en_us.json @@ -220,6 +220,8 @@ "midnightcontrols.menu.virtual_mouse": "Virtual Mouse", "midnightcontrols.menu.virtual_mouse.tooltip": "Enables the virtual mouse, which is useful during splitscreen.", "midnightcontrols.menu.virtual_mouse.skin": "Virtual Mouse Skin", + "midnightcontrols.menu.virtual_keyboard": "Virtual Keyboard", + "midnightcontrols.menu.virtual_keyboard_tooltip": "Enables a virtual on-screen keyboard", "midnightcontrols.menu.hide_cursor": "Hide Normal Mouse Cursor", "midnightcontrols.menu.hide_cursor.tooltip": "Hides the normal mouse cursor, leaving only the virtual mouse visible.", "midnightcontrols.narrator.unbound": "Unbound %s", diff --git a/fabric/src/main/java/eu/midnightdust/midnightcontrols/fabric/event/MouseClickListener.java b/fabric/src/main/java/eu/midnightdust/midnightcontrols/fabric/event/MouseClickListener.java index 53b03a9..d1e22e8 100644 --- a/fabric/src/main/java/eu/midnightdust/midnightcontrols/fabric/event/MouseClickListener.java +++ b/fabric/src/main/java/eu/midnightdust/midnightcontrols/fabric/event/MouseClickListener.java @@ -1,4 +1,5 @@ package eu.midnightdust.midnightcontrols.fabric.event; +import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import net.fabricmc.fabric.api.client.screen.v1.ScreenMouseEvents; import net.minecraft.client.gui.screen.Screen; @@ -13,7 +14,9 @@ public class MouseClickListener implements ScreenMouseEvents.AllowMouseClick { @Override public boolean allowMouseClick(Screen screen, double mouseX, double mouseY, int button) { - clickInterceptor.intercept(screen, mouseX, mouseY); + if(MidnightControlsConfig.virtualKeyboard) { + clickInterceptor.intercept(screen, mouseX, mouseY); + } return true; } diff --git a/neoforge/src/main/java/eu/midnightdust/midnightcontrols/neoforge/MidnightControlsClientNeoforge.java b/neoforge/src/main/java/eu/midnightdust/midnightcontrols/neoforge/MidnightControlsClientNeoforge.java index 581e2a6..b98e286 100644 --- a/neoforge/src/main/java/eu/midnightdust/midnightcontrols/neoforge/MidnightControlsClientNeoforge.java +++ b/neoforge/src/main/java/eu/midnightdust/midnightcontrols/neoforge/MidnightControlsClientNeoforge.java @@ -96,7 +96,7 @@ public class MidnightControlsClientNeoforge { } @SubscribeEvent public static void onMouseButtonPressed(ScreenEvent.MouseButtonPressed.Pre event) { - if (!event.isCanceled()) { + if (MidnightControlsConfig.virtualKeyboard && !event.isCanceled()) { Screen screen = event.getScreen(); double mouseX = event.getMouseX(); double mouseY = event.getMouseY();