From 8c7f63e62b8fe7bac067daec39f9318b02b2ecb6 Mon Sep 17 00:00:00 2001 From: pelya Date: Wed, 15 Dec 2010 17:56:20 +0000 Subject: [PATCH] Menu for editing on-screen controls, not finished yet! --- ChangeAppSettings.sh | 28 ++- project/java/Globals.java | 2 + project/java/Keycodes.java | 2 +- project/java/Settings.java | 199 +++++++++++++++++- .../java/translations/values-de/strings.xml | 6 +- .../java/translations/values-fi/strings.xml | 6 +- .../java/translations/values-fr/strings.xml | 6 +- .../java/translations/values-ru/strings.xml | 6 +- .../java/translations/values-uk/strings.xml | 6 +- project/java/translations/values/strings.xml | 15 +- .../fheroes2/AndroidAppSettings.cfg | 9 +- .../src/video/android/SDL_androidinput.h | 31 +++ .../video/android/SDL_touchscreenkeyboard.c | 15 +- .../sdl-1.3/src/video/android/javakeycodes.h | 2 +- 14 files changed, 285 insertions(+), 48 deletions(-) diff --git a/ChangeAppSettings.sh b/ChangeAppSettings.sh index 1c2ed07b5..085a27203 100755 --- a/ChangeAppSettings.sh +++ b/ChangeAppSettings.sh @@ -1,6 +1,6 @@ #!/bin/sh -CHANGE_APP_SETTINGS_VERSION=15 +CHANGE_APP_SETTINGS_VERSION=16 AUTO= if [ "X$1" = "X-a" ]; then @@ -176,10 +176,12 @@ fi fi if [ -z "$RedefinedKeys" -o -z "$AUTO" ]; then -echo -n "\nRedefine common keys to SDL keysyms: TOUCHSCREEN DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK CAMERA ENTER DEL SEARCH CALL" +echo -n "\nRedefine common keys to SDL keysyms" echo -n "\nMENU and BACK hardware keys and TOUCHSCREEN virtual 'key' are available on all devices, other keys may be absent" echo -n "\nSEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices" -echo -n "\nThe same key values are used if touchscreen keyboard is enabled, except for MENU and BACK\n($RedefinedKeys)\n: " +echo -n "\nTOUCHSCREEN DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK CAMERA ENTER DEL SEARCH CALL - Java keycodes" +echo -n "\n$RedefinedKeys - current SDL keycodes" +echo -n "\n: " read var if [ -n "$var" ] ; then RedefinedKeys="$var" @@ -202,6 +204,16 @@ if [ -n "$var" ] ; then fi fi +if [ -z "$RedefinedKeysScreenKb" -o -z "$AUTO" ]; then +echo -n "\nRedefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom and rotate)" +echo -n "\n$RedefinedKeysScreenKb - current SDL keycodes" +echo -n "\n: " +read var +if [ -n "$var" ] ; then + RedefinedKeysScreenKb="$var" +fi +fi + if [ -z "$MultiABI" -o -z "$AUTO" ]; then echo -n "\nEnable multi-ABI binary, with hardware FPU support - \nit will also work on old devices, but .apk size is 2x bigger (y) or (n) ($MultiABI): " read var @@ -331,6 +343,7 @@ echo NonBlockingSwapBuffers=$NonBlockingSwapBuffers >> AndroidAppSettings.cfg echo RedefinedKeys=\"$RedefinedKeys\" >> AndroidAppSettings.cfg echo AppTouchscreenKeyboardKeysAmount=$AppTouchscreenKeyboardKeysAmount >> AndroidAppSettings.cfg echo AppTouchscreenKeyboardKeysAmountAutoFire=$AppTouchscreenKeyboardKeysAmountAutoFire >> AndroidAppSettings.cfg +echo RedefinedKeysScreenKb=\"$RedefinedKeysScreenKb\" >> AndroidAppSettings.cfg echo MultiABI=$MultiABI >> AndroidAppSettings.cfg echo AppVersionCode=$AppVersionCode >> AndroidAppSettings.cfg echo AppVersionName=\"$AppVersionName\" >> AndroidAppSettings.cfg @@ -434,13 +447,18 @@ else NonBlockingSwapBuffers=false fi -RedefinedKeycodes="-DSDL_ANDROID_KEYCODE_MOUSE=$MouseKeycode" KEY2=0 for KEY in $RedefinedKeys; do RedefinedKeycodes="$RedefinedKeycodes -DSDL_ANDROID_KEYCODE_$KEY2=$KEY" KEY2=`expr $KEY2 '+' 1` done +KEY2=0 +for KEY in $RedefinedKeysScreenKb; do + RedefinedKeycodesScreenKb="$RedefinedKeycodesScreenKb -DSDL_ANDROID_SCREENKB_KEYCODE_$KEY2=$KEY" + KEY2=`expr $KEY2 '+' 1` +done + if [ "$MultiABI" = "y" ] ; then MultiABI="armeabi armeabi-v7a" else @@ -518,7 +536,7 @@ cat project/jni/SettingsTemplate.mk | \ sed "s^COMPILED_LIBRARIES := .*^COMPILED_LIBRARIES := $CompiledLibraries^" | \ sed "s^APPLICATION_ADDITIONAL_CFLAGS :=.*^APPLICATION_ADDITIONAL_CFLAGS := $AppCflags^" | \ sed "s^APPLICATION_ADDITIONAL_LDFLAGS :=.*^APPLICATION_ADDITIONAL_LDFLAGS := $AppLdflags^" | \ - sed "s^SDL_ADDITIONAL_CFLAGS :=.*^SDL_ADDITIONAL_CFLAGS := $RedefinedKeycodes^" | \ + sed "s^SDL_ADDITIONAL_CFLAGS :=.*^SDL_ADDITIONAL_CFLAGS := $RedefinedKeycodes $RedefinedKeycodesScreenKb^" | \ sed "s^APPLICATION_SUBDIRS_BUILD :=.*^APPLICATION_SUBDIRS_BUILD := $AppSubdirsBuild^" | \ sed "s^APPLICATION_CUSTOM_BUILD_SCRIPT :=.*^APPLICATION_CUSTOM_BUILD_SCRIPT := $CustomBuildScript^" | \ sed "s^SDL_VERSION :=.*^SDL_VERSION := $LibSdlVersion^" >> \ diff --git a/project/java/Globals.java b/project/java/Globals.java index 001e37081..90dd39e08 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -82,6 +82,8 @@ class Globals { public static int ClickScreenPressure = 0; public static int ClickScreenTouchspotSize = 0; public static int RemapHwKeycode[] = new int[SDL_Keys.JAVA_KEYCODE_LAST]; + public static int RemapScreenKbKeycode[] = new int[10]; + public static boolean ScreenKbControlsShown[] = new boolean[12]; } class LoadLibrary { diff --git a/project/java/Keycodes.java b/project/java/Keycodes.java index 398fb1835..7e4e653a0 100644 --- a/project/java/Keycodes.java +++ b/project/java/Keycodes.java @@ -496,7 +496,7 @@ class SDL_Keys public static String [] names = null; public static Integer [] values = null; - static final int JAVA_KEYCODE_LAST = android.view.KeyEvent.KEYCODE_MUTE; // = 91 + static final int JAVA_KEYCODE_LAST = 110; // Android 2.3 added several new gaming keys, it ends up at keycode 110 currently - plz keep in sync with javakeycodes.h static { diff --git a/project/java/Settings.java b/project/java/Settings.java index f033c2996..ef6926053 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -64,6 +64,17 @@ class Settings { out.writeInt(Globals.RemapHwKeycode[i]); } + out.writeInt(Globals.RemapScreenKbKeycode.length); + for( int i = 0; i < Globals.RemapScreenKbKeycode.length; i++ ) + { + out.writeInt(Globals.RemapScreenKbKeycode[i]); + } + out.writeInt(Globals.ScreenKbControlsShown.length); + for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ ) + { + out.writeBoolean(Globals.ScreenKbControlsShown[i]); + out.writeInt(Globals.RemapScreenKbKeycode[i]); + } out.close(); settingsLoaded = true; @@ -90,6 +101,23 @@ class Settings idx = ii; Globals.RemapHwKeycode[i] = idx; } + for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ ) + { + int sdlKey = nativeGetKeymapKeyScreenKb(i); + int idx = 0; + for(int ii = 0; ii < SDL_Keys.values.length; ii++) + if(SDL_Keys.values[ii] == sdlKey) + idx = ii; + Globals.RemapHwKeycode[i] = idx; + Globals.RemapScreenKbKeycode[i] = idx; + } + Globals.ScreenKbControlsShown[0] = Globals.AppNeedsArrowKeys; + for( int i = 1; i < 7; i++ ) + Globals.ScreenKbControlsShown[i] = ( i <= Globals.AppTouchscreenKeyboardKeysAmount ); + Globals.ScreenKbControlsShown[7] = Globals.AppNeedsTextInput; + for( int i = 8; i < 12; i++ ) + Globals.ScreenKbControlsShown[i] = true; + try { ObjectInputStream settingsFile = new ObjectInputStream(new FileInputStream( p.getFilesDir().getAbsolutePath() + "/" + SettingsFileName )); Globals.DownloadToSdcard = settingsFile.readBoolean(); @@ -116,12 +144,24 @@ class Settings Globals.KeepAspectRatio = settingsFile.readBoolean(); Globals.MoveMouseWithJoystickSpeed = settingsFile.readInt(); Globals.MoveMouseWithJoystickAccel = settingsFile.readInt(); - if( settingsFile.readInt() != SDL_Keys.JAVA_KEYCODE_LAST ) - throw new IOException(); - for( int i = 0; i < SDL_Keys.JAVA_KEYCODE_LAST; i++ ) + int readKeys = settingsFile.readInt(); + for( int i = 0; i < readKeys; i++ ) { Globals.RemapHwKeycode[i] = settingsFile.readInt(); } + if( settingsFile.readInt() != Globals.RemapScreenKbKeycode.length ) + throw new IOException(); + for( int i = 0; i < Globals.RemapScreenKbKeycode.length; i++ ) + { + Globals.RemapScreenKbKeycode[i] = settingsFile.readInt(); + } + if( settingsFile.readInt() != Globals.ScreenKbControlsShown.length ) + throw new IOException(); + for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ ) + { + Globals.ScreenKbControlsShown[i] = settingsFile.readBoolean(); + Globals.RemapScreenKbKeycode[i] = settingsFile.readInt(); + } settingsLoaded = true; @@ -158,6 +198,8 @@ class Settings p.setUpStatusLabel(); showConfig(p); } + + // =============================================================================================== public static void showConfig(final MainActivity p) { settingsChanged = true; @@ -203,6 +245,8 @@ class Settings items.add(p.getResources().getString(R.string.remap_hwkeys)); + items.add(p.getResources().getString(R.string.remap_screenkb)); + items.add(p.getResources().getString(R.string.ok)); AlertDialog.Builder builder = new AlertDialog.Builder(p); @@ -280,6 +324,10 @@ class Settings if( item == selected ) showRemapHwKeysConfig(p); selected++; + + if( item == selected ) + showRemapScreenKbConfig(p); + selected++; if( item == selected ) { @@ -545,20 +593,17 @@ class Settings } final CharSequence[] items = { - p.getResources().getString(R.string.controls_screenkb_by, "Ultimate Droid", "Sean Stieber"), - p.getResources().getString(R.string.controls_screenkb_by, "Ugly Arrows", "pelya") + p.getResources().getString(R.string.controls_screenkb_by, "Ugly Arrows", "pelya"), + p.getResources().getString(R.string.controls_screenkb_by, "Ultimate Droid", "Sean Stieber") }; AlertDialog.Builder builder = new AlertDialog.Builder(p); builder.setTitle(p.getResources().getString(R.string.controls_screenkb_theme)); - builder.setSingleChoiceItems(items, Globals.TouchscreenKeyboardTheme == 1 ? 0 : 1, new DialogInterface.OnClickListener() + builder.setSingleChoiceItems(items, Globals.TouchscreenKeyboardTheme, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { - if( item == 0 ) - Globals.TouchscreenKeyboardTheme = 1; - if( item == 1 ) - Globals.TouchscreenKeyboardTheme = 0; + Globals.TouchscreenKeyboardTheme = item; dialog.dismiss(); showConfigMainMenu(p); @@ -890,7 +935,132 @@ class Settings alert.show(); } } - + + static void showRemapScreenKbConfig(final MainActivity p) + { + CharSequence[] items = { + p.getResources().getString(R.string.remap_screenkb_joystick), + p.getResources().getString(R.string.remap_screenkb_button_text), + p.getResources().getString(R.string.remap_screenkb_button) + " 1", + p.getResources().getString(R.string.remap_screenkb_button) + " 2", + p.getResources().getString(R.string.remap_screenkb_button) + " 3", + p.getResources().getString(R.string.remap_screenkb_button) + " 4", + p.getResources().getString(R.string.remap_screenkb_button) + " 5", + p.getResources().getString(R.string.remap_screenkb_button) + " 6", + p.getResources().getString(R.string.remap_screenkb_button_zoomin), + p.getResources().getString(R.string.remap_screenkb_button_zoomout), + p.getResources().getString(R.string.remap_screenkb_button_rotateleft), + p.getResources().getString(R.string.remap_screenkb_button_rotateright), + }; + + boolean defaults[] = { + Globals.ScreenKbControlsShown[0], + Globals.ScreenKbControlsShown[1], + Globals.ScreenKbControlsShown[2], + Globals.ScreenKbControlsShown[3], + Globals.ScreenKbControlsShown[4], + Globals.ScreenKbControlsShown[5], + Globals.ScreenKbControlsShown[6], + Globals.ScreenKbControlsShown[7], + Globals.ScreenKbControlsShown[8], + Globals.ScreenKbControlsShown[9], + Globals.ScreenKbControlsShown[10], + Globals.ScreenKbControlsShown[11], + }; + + if( ! Globals.UseTouchscreenKeyboard ) + { + for( int i = 0; i < 8; i++ ) + Globals.ScreenKbControlsShown[i] = false; + + CharSequence[] items2 = { + p.getResources().getString(R.string.remap_screenkb_button_zoomin), + p.getResources().getString(R.string.remap_screenkb_button_zoomout), + p.getResources().getString(R.string.remap_screenkb_button_rotateleft), + p.getResources().getString(R.string.remap_screenkb_button_rotateright), + }; + + boolean defaults2[] = { + Globals.ScreenKbControlsShown[8], + Globals.ScreenKbControlsShown[9], + Globals.ScreenKbControlsShown[10], + Globals.ScreenKbControlsShown[11], + }; + + items = items2; + defaults = defaults2; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(p); + builder.setTitle(p.getResources().getString(R.string.remap_screenkb)); + builder.setMultiChoiceItems(items, defaults, new DialogInterface.OnMultiChoiceClickListener() + { + public void onClick(DialogInterface dialog, int item, boolean isChecked) + { + if( ! Globals.UseTouchscreenKeyboard ) + item += 8; + Globals.ScreenKbControlsShown[item] = isChecked; + } + }); + builder.setPositiveButton(p.getResources().getString(R.string.ok), new DialogInterface.OnClickListener() + { + public void onClick(DialogInterface dialog, int item) + { + dialog.dismiss(); + showRemapScreenKbConfig2(p, 0); + } + }); + + AlertDialog alert = builder.create(); + alert.setOwnerActivity(p); + alert.show(); + } + + static void showRemapScreenKbConfig2(final MainActivity p, final int currentButton) + { + CharSequence[] items = { + p.getResources().getString(R.string.remap_screenkb_button) + " 1", + p.getResources().getString(R.string.remap_screenkb_button) + " 2", + p.getResources().getString(R.string.remap_screenkb_button) + " 3", + p.getResources().getString(R.string.remap_screenkb_button) + " 4", + p.getResources().getString(R.string.remap_screenkb_button) + " 5", + p.getResources().getString(R.string.remap_screenkb_button) + " 6", + p.getResources().getString(R.string.remap_screenkb_button_zoomin), + p.getResources().getString(R.string.remap_screenkb_button_zoomout), + p.getResources().getString(R.string.remap_screenkb_button_rotateleft), + p.getResources().getString(R.string.remap_screenkb_button_rotateright), + }; + + if( currentButton >= Globals.RemapScreenKbKeycode.length ) + { + showConfigMainMenu(p); + return; + } + if( ! Globals.ScreenKbControlsShown[currentButton + 2] ) + { + showRemapScreenKbConfig2(p, currentButton + 1); + return; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(p); + builder.setTitle(items[currentButton]); + builder.setSingleChoiceItems(SDL_Keys.names, Globals.RemapScreenKbKeycode[currentButton], new DialogInterface.OnClickListener() + { + public void onClick(DialogInterface dialog, int item) + { + Globals.RemapScreenKbKeycode[currentButton] = item; + + dialog.dismiss(); + showRemapScreenKbConfig2(p, currentButton + 1); + } + }); + AlertDialog alert = builder.create(); + alert.setOwnerActivity(p); + alert.show(); + } + + // =============================================================================================== + static void Apply(Activity p) { nativeIsSdcardUsed( Globals.DownloadToSdcard ? 1 : 0 ); @@ -929,6 +1099,11 @@ class Settings nativeSetKeymapKey(i, SDL_Keys.values[Globals.RemapHwKeycode[i]]); } + for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ ) + { + nativeSetKeymapKeyScreenKb(i, i >= 2 ? SDL_Keys.values[Globals.RemapScreenKbKeycode[i-2]] : 0, Globals.ScreenKbControlsShown[i] ? 1 : 0); + } + String lang = new String(Locale.getDefault().getLanguage()); if( Locale.getDefault().getCountry().length() > 0 ) lang = lang + "_" + Locale.getDefault().getCountry(); @@ -981,7 +1156,9 @@ class Settings private static native void nativeSetupScreenKeyboardButtons(byte[] img); private static native void nativeInitKeymap(); private static native int nativeGetKeymapKey(int key); + private static native int nativeGetKeymapKeyScreenKb(int key); private static native void nativeSetKeymapKey(int javakey, int key); + private static native void nativeSetKeymapKeyScreenKb(int javakey, int key, int used); public static native void nativeSetEnv(final String name, final String value); } diff --git a/project/java/translations/values-de/strings.xml b/project/java/translations/values-de/strings.xml index f9860ca46..37f730d41 100644 --- a/project/java/translations/values-de/strings.xml +++ b/project/java/translations/values-de/strings.xml @@ -13,7 +13,7 @@ Lade Daten von %s Fehler beim Download von %s Fehler beim schreiben auf %s - Zu %.0f%% abgeschlossen: Datei %s + Zu %1$.0f%% abgeschlossen: Datei %2$s Abgeschlossen Interner Speicher: %d MiB frei @@ -52,7 +52,7 @@ Kleine Winzig On-Screen-Tastatur Thema -%s von %s +%1$s von %2$s Schwimmend Feste, wenn die Anwendung startet Fixiert auf Tisch Schreibtisch Orientierung @@ -74,7 +74,7 @@ Touchscreen mit Kraft Trackball klicken Select-Taste Bewegen Sie die Maus mit Joystick oder Trackball -Pressure %03d Radius %03d +Pressure %1$03d Radius %2$03d Linker Mausklick mit Trackball / Joystick Zentrum Bewegen Sie die Maus mit Joystick-Geschwindigkeit Bewegen Sie die Maus mit Joystick-Beschleunigung diff --git a/project/java/translations/values-fi/strings.xml b/project/java/translations/values-fi/strings.xml index 8a27939db..d8d1948a4 100644 --- a/project/java/translations/values-fi/strings.xml +++ b/project/java/translations/values-fi/strings.xml @@ -13,7 +13,7 @@ Ladataan kohteesta %s Virhe ladattaessa kohteesta %s Virhe kirjoittaessa %s - %.0f%% valmis: tiedosto %s + %1$.0f%% valmis: tiedosto %2$s Valmis Sisäinen muisti - %d Mt vapaana @@ -52,7 +52,7 @@ Pienet Tiny Näyttönäppäimistöllä teema -%s %s +%1$s %2$s Kelluva Kiinteät kun sovellus käynnistyy Korjattu taulukko työpöytä suuntautumiseen @@ -74,7 +74,7 @@ Kosketusnäyttö voimalla Trackball Valitse / Select-näppäintä Siirrä hiiren ohjaimella tai trackball -Paine %03d säde %03d +Paine %1$03d säde %2$03d Vasen hiiren klikkaus trackball-ohjaimella keskusta Siirrä hiiri ohjainta nopeasti Siirrä hiiri ohjainta kiihtyvyys diff --git a/project/java/translations/values-fr/strings.xml b/project/java/translations/values-fr/strings.xml index e78fd0310..a53d959e1 100644 --- a/project/java/translations/values-fr/strings.xml +++ b/project/java/translations/values-fr/strings.xml @@ -13,7 +13,7 @@ Téléchargement à partir de %s Erreur lors du téléchargement à partir de %s Erreur d\'écriture dans %s - %.0f%% fait: fichier %s + %1$.0f%% fait: fichier %2$s Fini Stockage interne - %d Mo de libre @@ -38,7 +38,7 @@ Petite Minuscule Thème du clavier à l\'écran - %s par %s + %1$s par %2$s Sans limite Rapide @@ -77,7 +77,7 @@ écran tactile avec une force Trackball cliquez / touche de sélection Déplacez la souris ou un trackball avec joystick -pression %03d rayon %03d +pression %1$03d rayon %2$03d cliquez gauche de la souris avec trackball centre du joystick / Déplacez la souris avec la vitesse joystick Déplacez la souris avec une accélération joystick diff --git a/project/java/translations/values-ru/strings.xml b/project/java/translations/values-ru/strings.xml index 2e5b5e8d4..554f7fe24 100644 --- a/project/java/translations/values-ru/strings.xml +++ b/project/java/translations/values-ru/strings.xml @@ -11,7 +11,7 @@ Загрузка данных с %s Ошибка при загрузке данных с %s Ошибка записи в %s -%.0f%% готово: файл %s +%1$.0f%% готово: файл %2$s Завершенный Внутреннее хранение - %d Мб SD карта - %d Мб @@ -32,7 +32,7 @@ Малые Крошечный Тема клавиатуры -%s от %s +%1$s от %2$s Нет Быстрое Среднее @@ -50,7 +50,7 @@ Сохранять соотношение сторон 4:3 на экране Экранная лупа Пожалуйста, проведите пальцем по экрану в течение двух секунд -Давление %03d радиус %03d +Давление %1$03d радиус %2$03d Очень мало (быстрые устройства) Малый Средний diff --git a/project/java/translations/values-uk/strings.xml b/project/java/translations/values-uk/strings.xml index 9c03b0210..d2a0e63d0 100644 --- a/project/java/translations/values-uk/strings.xml +++ b/project/java/translations/values-uk/strings.xml @@ -11,7 +11,7 @@ Завантаження даних з %s Помилка при завантаженні даних з %s Помилка запису в %s -%.0f%% готово: файл %s +%1$.0f%% готово: файл %2$s Завершений Внутрішнє зберігання - %d Мб SD карта - %d Мб @@ -32,7 +32,7 @@ Малий Дрібний Тема кнопок -%s від %s +%1$s від %2$s Немає Швидке Середнє @@ -50,7 +50,7 @@ Зберігати співвідношення сторін 4:3 на екрані Наекранна лупа Будь-ласка, проведіть пальцем по екрану на протязі двох секунд -Тиск %03d радіус %03d +Тиск %1$03d радіус %2$03d Дуже мало (швидкі пристрої) Малий Середній diff --git a/project/java/translations/values/strings.xml b/project/java/translations/values/strings.xml index 4e14f8c05..f8c159a02 100644 --- a/project/java/translations/values/strings.xml +++ b/project/java/translations/values/strings.xml @@ -16,7 +16,7 @@ Downloading data from %s Error downloading data from %s Error writing to %s - %.0f%% done: file %s + %1$.0f%% done: file %2$s Finished Internal storage - %d MB free @@ -41,7 +41,7 @@ Small Tiny On-screen keyboard theme - %s by %s + %1$s by %1$s No dampening Fast @@ -83,7 +83,7 @@ Calibrate touchscreen pressure Please slide finger across the screen for two seconds - Pressure %03d radius %03d + Pressure %1$03d radius %2$03d Very small (fast devices, less lag) Small @@ -95,4 +95,13 @@ Press any key except HOME and POWER, you may use volume keys Select SDL keycode + Remap on-screen controls + On-screen joystick + On-screen button + On-screen text input button + Zoom in two-finger gesture + Zoom out two-finger gesture + Rotate left two-finger gesture + Rotate right two-finger gesture + diff --git a/project/jni/application/fheroes2/AndroidAppSettings.cfg b/project/jni/application/fheroes2/AndroidAppSettings.cfg index 93f2a575b..c43f6d4ad 100644 --- a/project/jni/application/fheroes2/AndroidAppSettings.cfg +++ b/project/jni/application/fheroes2/AndroidAppSettings.cfg @@ -1,5 +1,5 @@ # The application settings for Android libSDL port -AppSettingVersion=15 +AppSettingVersion=16 LibSdlVersion=1.2 AppName="Free Heroes 2" AppFullName=net.sourceforge.fheroes2 @@ -17,12 +17,13 @@ AppUsesJoystick=n AppHandlesJoystickSensitivity=n AppUsesMultitouch=n NonBlockingSwapBuffers=n -RedefinedKeys="LCTRL m t h e" +RedefinedKeys="LCTRL M T H E" AppTouchscreenKeyboardKeysAmount=0 AppTouchscreenKeyboardKeysAmountAutoFire=0 +RedefinedKeysScreenKb="LCTRL M T H" MultiABI=n -AppVersionCode=212506 -AppVersionName="2125.06" +AppVersionCode=214607 +AppVersionName="2146.07" CompiledLibraries="sdl_net sdl_mixer sdl_image sdl_ttf png intl" CustomBuildScript=n AppCflags='-finline-functions -O2 -DWITH_ZLIB -DWITH_MIXER -DWITH_XML -DWITH_IMAGE -DWITH_TTF' diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h index 1b3d110d0..06fd300bb 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h @@ -151,6 +151,37 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed; #define SDL_ANDROID_KEYCODE_10 SDL_ANDROID_KEYCODE_1 #endif +// Touchscreen keyboard keys + zoom and rotate keycodes +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_0 +#define SDL_ANDROID_SCREENKB_KEYCODE_0 SDL_ANDROID_KEYCODE_0 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_1 +#define SDL_ANDROID_SCREENKB_KEYCODE_1 SDL_ANDROID_KEYCODE_1 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_2 +#define SDL_ANDROID_SCREENKB_KEYCODE_2 SDL_ANDROID_KEYCODE_2 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_3 +#define SDL_ANDROID_SCREENKB_KEYCODE_3 SDL_ANDROID_KEYCODE_3 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_4 +#define SDL_ANDROID_SCREENKB_KEYCODE_4 SDL_ANDROID_KEYCODE_6 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_5 +#define SDL_ANDROID_SCREENKB_KEYCODE_5 SDL_ANDROID_KEYCODE_7 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_6 +#define SDL_ANDROID_SCREENKB_KEYCODE_6 SDL_ANDROID_KEYCODE_4 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_7 +#define SDL_ANDROID_SCREENKB_KEYCODE_7 SDL_ANDROID_KEYCODE_5 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_8 +#define SDL_ANDROID_SCREENKB_KEYCODE_8 SDL_ANDROID_KEYCODE_8 +#endif +#ifndef SDL_ANDROID_SCREENKB_KEYCODE_9 +#define SDL_ANDROID_SCREENKB_KEYCODE_9 SDL_ANDROID_KEYCODE_9 +#endif // Queue events to main thread extern void SDL_ANDROID_MainThreadPushMouseMotion(int x, int y); diff --git a/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c b/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c index f6fbe460f..21e377998 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c @@ -65,14 +65,13 @@ static int buttonsize = 1; static SDL_Rect arrows, buttons[MAX_BUTTONS], buttonsAutoFireRect[MAX_BUTTONS_AUTOFIRE]; static SDLKey buttonKeysyms[MAX_BUTTONS] = { -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_0)), -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_1)), -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_2)), -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_3)), -// 4 and 5 are MENU and BACK, always available as HW keys -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_6)), -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_7)), -SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_8)) +SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_0)), +SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_1)), +SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_2)), +SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_3)), +SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_4)), +SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_5)), +0 }; enum { ARROW_LEFT = 1, ARROW_RIGHT = 2, ARROW_UP = 4, ARROW_DOWN = 8 }; diff --git a/project/jni/sdl-1.3/src/video/android/javakeycodes.h b/project/jni/sdl-1.3/src/video/android/javakeycodes.h index bbf8fc11b..f0c5648ec 100644 --- a/project/jni/sdl-1.3/src/video/android/javakeycodes.h +++ b/project/jni/sdl-1.3/src/video/android/javakeycodes.h @@ -97,7 +97,7 @@ KEYCODE_MEDIA_REWIND = 89, KEYCODE_MEDIA_FAST_FORWARD = 90, KEYCODE_MUTE = 91, -KEYCODE_LAST = KEYCODE_MUTE +KEYCODE_LAST = 110 // Android 2.3 added several new gaming keys, it ends up at keycode 110 currently - plz keep in sync with Keycodes.java }; #endif