From 136d307c1bb2d83d96806f7212032ecb6a2b34f2 Mon Sep 17 00:00:00 2001 From: pelya Date: Tue, 30 Aug 2011 15:01:55 +0300 Subject: [PATCH] Added hack to enforce relative mouse movement mode, for PUAE --- ChangeAppSettings.sh | 21 ++++++++++++++++++- project/java/Globals.java | 5 +++-- .../application/puae/AndroidAppSettings.cfg | 1 + 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ChangeAppSettings.sh b/ChangeAppSettings.sh index ee8ac3b68..943e0447c 100755 --- a/ChangeAppSettings.sh +++ b/ChangeAppSettings.sh @@ -214,6 +214,16 @@ if [ -n "$var" ] ; then fi fi +if [ -z "$ForceRelativeMouseMode" -o -z "$AUTO" ]; then +echo +echo -n "Force relative (laptop) mouse movement mode, if both on-screen keyboard and mouse are needed (y) or (n) ($ForceRelativeMouseMode): " +read var +if [ -n "$var" ] ; then + ForceRelativeMouseMode="$var" + CHANGED=1 +fi +fi + if [ -z "$AppNeedsArrowKeys" -o -z "$AUTO" ]; then echo echo "Application needs arrow keys (y) or (n), if (y) the accelerometer or touchscreen keyboard" @@ -367,7 +377,7 @@ if [ -n "$var" ] ; then fi fi -FirstStartMenuOptionsDefault='(AppUsesMouse ? new Settings.DisplaySizeConfig(true) : new Settings.DummyMenu()), new Settings.OptionalDownloadConfig(true)' +FirstStartMenuOptionsDefault='(AppUsesMouse \&\& \! ForceRelativeMouseMode ? new Settings.DisplaySizeConfig(true) : new Settings.DummyMenu()), new Settings.OptionalDownloadConfig(true)' if [ -z "$AUTO" ]; then echo echo "Menu items to show at startup - this is Java code snippet, leave empty for default" @@ -526,6 +536,7 @@ echo SdlVideoResizeKeepAspect=$SdlVideoResizeKeepAspect >> AndroidAppSettings.cf echo CompatibilityHacks=$CompatibilityHacks >> AndroidAppSettings.cfg echo AppUsesMouse=$AppUsesMouse >> AndroidAppSettings.cfg echo AppNeedsTwoButtonMouse=$AppNeedsTwoButtonMouse >> AndroidAppSettings.cfg +echo ForceRelativeMouseMode=$ForceRelativeMouseMode >> AndroidAppSettings.cfg echo AppNeedsArrowKeys=$AppNeedsArrowKeys >> AndroidAppSettings.cfg echo AppNeedsTextInput=$AppNeedsTextInput >> AndroidAppSettings.cfg echo AppUsesJoystick=$AppUsesJoystick >> AndroidAppSettings.cfg @@ -630,6 +641,12 @@ else AppNeedsTwoButtonMouse=false fi +if [ "$ForceRelativeMouseMode" = "y" ] ; then + ForceRelativeMouseMode=true +else + ForceRelativeMouseMode=false +fi + if [ "$AppNeedsArrowKeys" = "y" ] ; then AppNeedsArrowKeys=true else @@ -707,6 +724,7 @@ done if [ -z "$FirstStartMenuOptions" ]; then FirstStartMenuOptions="$FirstStartMenuOptionsDefault" fi +echo FirstStartMenuOptions "$FirstStartMenuOptions" ReadmeText="`echo $ReadmeText | sed 's/\"/\\\\\\\\\"/g' | sed 's/[&%]//g'`" @@ -743,6 +761,7 @@ cat project/src/Globals.java | \ sed "s/public static boolean InhibitSuspend = .*;/public static boolean InhibitSuspend = $InhibitSuspend;/" | \ sed "s/public static boolean AppUsesMouse = .*;/public static boolean AppUsesMouse = $AppUsesMouse;/" | \ sed "s/public static boolean AppNeedsTwoButtonMouse = .*;/public static boolean AppNeedsTwoButtonMouse = $AppNeedsTwoButtonMouse;/" | \ + sed "s/public static boolean ForceRelativeMouseMode = .*;/public static boolean ForceRelativeMouseMode = $ForceRelativeMouseMode;/" | \ sed "s/public static boolean AppNeedsArrowKeys = .*;/public static boolean AppNeedsArrowKeys = $AppNeedsArrowKeys;/" | \ sed "s/public static boolean AppNeedsTextInput = .*;/public static boolean AppNeedsTextInput = $AppNeedsTextInput;/" | \ sed "s/public static boolean AppUsesJoystick = .*;/public static boolean AppUsesJoystick = $AppUsesJoystick;/" | \ diff --git a/project/java/Globals.java b/project/java/Globals.java index 533235756..4fc2b6a87 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -44,6 +44,7 @@ class Globals { public static String CommandLine = ""; public static boolean AppUsesMouse = false; public static boolean AppNeedsTwoButtonMouse = false; + public static boolean ForceRelativeMouseMode = false; // If both on-screen keyboard and mouse are needed, this will only set the default setting, user may override it later public static boolean AppNeedsArrowKeys = true; public static boolean AppNeedsTextInput = true; public static boolean AppUsesJoystick = false; @@ -54,7 +55,7 @@ class Globals { public static int AppTouchscreenKeyboardKeysAmountAutoFire = 1; public static int StartupMenuButtonTimeout = 3000; public static Settings.Menu HiddenMenuOptions [] = {}; - public static Settings.Menu FirstStartMenuOptions [] = { (AppUsesMouse ? new Settings.DisplaySizeConfig(true) : new Settings.DummyMenu()), new Settings.OptionalDownloadConfig(true) }; + public static Settings.Menu FirstStartMenuOptions [] = { (AppUsesMouse && ! ForceRelativeMouseMode ? new Settings.DisplaySizeConfig(true) : new Settings.DummyMenu()), new Settings.OptionalDownloadConfig(true) }; // Phone-specific config, modified by user in "Change phone config" startup dialog, TODO: move this to settings public static boolean DownloadToSdcard = true; @@ -81,7 +82,7 @@ class Globals { public static int MoveMouseWithJoystickSpeed = 0; public static int MoveMouseWithJoystickAccel = 0; public static boolean ClickMouseWithDpad = false; - public static boolean RelativeMouseMovement = false; // Laptop touchpad mode + public static boolean RelativeMouseMovement = ForceRelativeMouseMode; // Laptop touchpad mode public static int RelativeMouseMovementSpeed = 2; public static int RelativeMouseMovementAccel = 0; public static boolean ShowScreenUnderFinger = false; diff --git a/project/jni/application/puae/AndroidAppSettings.cfg b/project/jni/application/puae/AndroidAppSettings.cfg index 396315120..18f34f1b3 100644 --- a/project/jni/application/puae/AndroidAppSettings.cfg +++ b/project/jni/application/puae/AndroidAppSettings.cfg @@ -16,6 +16,7 @@ SdlVideoResizeKeepAspect=n CompatibilityHacks=n AppUsesMouse=y AppNeedsTwoButtonMouse=y +ForceRelativeMouseMode=y AppNeedsArrowKeys=y AppNeedsTextInput=y AppUsesJoystick=n