Add virtual keyboard config option

This commit is contained in:
cryy
2025-04-22 23:03:07 +02:00
parent 70d923f959
commit 73c5fe1a82
5 changed files with 13 additions and 2 deletions

View File

@@ -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") 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.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.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 = "Controller ID") @Hidden public static Object controllerID = 0;
@Entry(category = CONTROLLER, name = "2nd Controller ID") @Hidden public static Object secondControllerID = -1; @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; @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; unfocusedInput = false;
virtualMouse = false; virtualMouse = false;
virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT; virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT;
virtualKeyboard = false;
controllerID = 0; controllerID = 0;
secondControllerID = -1; secondControllerID = -1;
controllerType = ControllerType.DEFAULT; controllerType = ControllerType.DEFAULT;

View File

@@ -64,6 +64,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
private final SpruceOption eyeTrackingAsMouseOption; private final SpruceOption eyeTrackingAsMouseOption;
private final SpruceOption eyeTrackingDeadzone; private final SpruceOption eyeTrackingDeadzone;
private final SpruceOption virtualMouseOption; private final SpruceOption virtualMouseOption;
private final SpruceOption virtualKeyboardOption;
private final SpruceOption hideCursorOption; private final SpruceOption hideCursorOption;
private final SpruceOption resetOption; private final SpruceOption resetOption;
private final SpruceOption advancedConfigOption; private final SpruceOption advancedConfigOption;
@@ -299,6 +300,8 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
value -> MidnightControlsConfig.unfocusedInput = value, Text.translatable("midnightcontrols.menu.unfocused_input.tooltip")); value -> MidnightControlsConfig.unfocusedInput = value, Text.translatable("midnightcontrols.menu.unfocused_input.tooltip"));
this.virtualMouseOption = new SpruceToggleBooleanOption("midnightcontrols.menu.virtual_mouse", () -> MidnightControlsConfig.virtualMouse, this.virtualMouseOption = new SpruceToggleBooleanOption("midnightcontrols.menu.virtual_mouse", () -> MidnightControlsConfig.virtualMouse,
value -> MidnightControlsConfig.virtualMouse = value, Text.translatable("midnightcontrols.menu.virtual_mouse.tooltip")); 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, this.hideCursorOption = new SpruceToggleBooleanOption("midnightcontrols.menu.hide_cursor", () -> MidnightControlsConfig.hideNormalMouse,
value -> MidnightControlsConfig.hideNormalMouse = value, Text.translatable("midnightcontrols.menu.hide_cursor.tooltip")); value -> MidnightControlsConfig.hideNormalMouse = value, Text.translatable("midnightcontrols.menu.hide_cursor.tooltip"));
// Touch options // Touch options
@@ -390,6 +393,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
list.addSingleOptionEntry(this.yAxisRotationSpeedOption); list.addSingleOptionEntry(this.yAxisRotationSpeedOption);
list.addSingleOptionEntry(this.mouseSpeedOption); list.addSingleOptionEntry(this.mouseSpeedOption);
list.addSingleOptionEntry(this.virtualMouseOption); list.addSingleOptionEntry(this.virtualMouseOption);
list.addSingleOptionEntry(this.virtualKeyboardOption);
list.addSingleOptionEntry(this.hideCursorOption); list.addSingleOptionEntry(this.hideCursorOption);
list.addSingleOptionEntry(this.joystickAsMouseOption); list.addSingleOptionEntry(this.joystickAsMouseOption);
list.addSingleOptionEntry(this.eyeTrackingAsMouseOption); list.addSingleOptionEntry(this.eyeTrackingAsMouseOption);

View File

@@ -220,6 +220,8 @@
"midnightcontrols.menu.virtual_mouse": "Virtual Mouse", "midnightcontrols.menu.virtual_mouse": "Virtual Mouse",
"midnightcontrols.menu.virtual_mouse.tooltip": "Enables the virtual mouse, which is useful during splitscreen.", "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_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": "Hide Normal Mouse Cursor",
"midnightcontrols.menu.hide_cursor.tooltip": "Hides the normal mouse cursor, leaving only the virtual mouse visible.", "midnightcontrols.menu.hide_cursor.tooltip": "Hides the normal mouse cursor, leaving only the virtual mouse visible.",
"midnightcontrols.narrator.unbound": "Unbound %s", "midnightcontrols.narrator.unbound": "Unbound %s",

View File

@@ -1,4 +1,5 @@
package eu.midnightdust.midnightcontrols.fabric.event; package eu.midnightdust.midnightcontrols.fabric.event;
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
import net.fabricmc.fabric.api.client.screen.v1.ScreenMouseEvents; import net.fabricmc.fabric.api.client.screen.v1.ScreenMouseEvents;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
@@ -13,7 +14,9 @@ public class MouseClickListener implements ScreenMouseEvents.AllowMouseClick {
@Override @Override
public boolean allowMouseClick(Screen screen, double mouseX, double mouseY, int button) { 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; return true;
} }

View File

@@ -96,7 +96,7 @@ public class MidnightControlsClientNeoforge {
} }
@SubscribeEvent @SubscribeEvent
public static void onMouseButtonPressed(ScreenEvent.MouseButtonPressed.Pre event) { public static void onMouseButtonPressed(ScreenEvent.MouseButtonPressed.Pre event) {
if (!event.isCanceled()) { if (MidnightControlsConfig.virtualKeyboard && !event.isCanceled()) {
Screen screen = event.getScreen(); Screen screen = event.getScreen();
double mouseX = event.getMouseX(); double mouseX = event.getMouseX();
double mouseY = event.getMouseY(); double mouseY = event.getMouseY();