diff --git a/project/java/Globals.java b/project/java/Globals.java index 373621782..686db0324 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -77,6 +77,7 @@ class Globals public static boolean UseAccelerometerAsArrowKeys = false; public static boolean UseTouchscreenKeyboard = true; public static int TouchscreenKeyboardSize = 1; + public static final int TOUCHSCREEN_KEYBOARD_CUSTOM = 4; public static int TouchscreenKeyboardDrawSize = 1; public static int TouchscreenKeyboardTheme = 2; public static int TouchscreenKeyboardTransparency = 2; diff --git a/project/java/Settings.java b/project/java/Settings.java index 8e8d0e951..a2d3710d7 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -233,6 +233,10 @@ class Settings Globals.ScreenKbControlsLayout[i][2] *= (float)displayX / 800.0f; Globals.ScreenKbControlsLayout[i][1] *= (float)displayY / 480.0f; Globals.ScreenKbControlsLayout[i][3] *= (float)displayY / 480.0f; + // Make them square + int wh = Math.min( Globals.ScreenKbControlsLayout[i][2] - Globals.ScreenKbControlsLayout[i][0], Globals.ScreenKbControlsLayout[i][3] - Globals.ScreenKbControlsLayout[i][1] ); + Globals.ScreenKbControlsLayout[i][2] = Globals.ScreenKbControlsLayout[i][0] + wh; + Globals.ScreenKbControlsLayout[i][3] = Globals.ScreenKbControlsLayout[i][1] + wh; } System.out.println("android.os.Build.MODEL: " + android.os.Build.MODEL); @@ -860,22 +864,21 @@ class Settings final CharSequence[] items = { p.getResources().getString(R.string.controls_screenkb_large), p.getResources().getString(R.string.controls_screenkb_medium), p.getResources().getString(R.string.controls_screenkb_small), - p.getResources().getString(R.string.controls_screenkb_tiny) }; - - for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ ) - for( int ii = 0; ii < 4; ii++ ) - Globals.ScreenKbControlsLayout[i][ii] = 0; + p.getResources().getString(R.string.controls_screenkb_tiny), + p.getResources().getString(R.string.controls_screenkb_custom) }; AlertDialog.Builder builder = new AlertDialog.Builder(p); builder.setTitle(p.getResources().getString(R.string.controls_screenkb_size)); builder.setSingleChoiceItems(items, Globals.TouchscreenKeyboardSize, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) + public void onClick(DialogInterface dialog, int item) { Globals.TouchscreenKeyboardSize = item; - dialog.dismiss(); - goBack(p); + if( Globals.TouchscreenKeyboardSize == Globals.TOUCHSCREEN_KEYBOARD_CUSTOM ) + new CustomizeScreenKbLayout().run(p); + else + goBack(p); } }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() @@ -2028,6 +2031,7 @@ class Settings CustomizeScreenKbLayoutTool tool = new CustomizeScreenKbLayoutTool(p); p.touchListener = tool; p.keyListener = tool; + Globals.TouchscreenKeyboardSize = Globals.TOUCHSCREEN_KEYBOARD_CUSTOM; } static class CustomizeScreenKbLayoutTool implements TouchEventsListener, KeyEventsListener @@ -2093,32 +2097,37 @@ class Settings continue; if( currentButton == -1 ) currentButton = i; - + System.out.println("Screen kb button " + i + " coords " + Globals.ScreenKbControlsLayout[i][0] + ":" + Globals.ScreenKbControlsLayout[i][1] + ":" + Globals.ScreenKbControlsLayout[i][2] + ":" + Globals.ScreenKbControlsLayout[i][3] ); // Check if the button is off screen edge or shrunk to zero - if( Globals.ScreenKbControlsLayout[i][0] > Globals.ScreenKbControlsLayout[i][2] - displayX/15 ) - Globals.ScreenKbControlsLayout[i][0] = Globals.ScreenKbControlsLayout[i][2] - displayX/15; - if( Globals.ScreenKbControlsLayout[i][1] > Globals.ScreenKbControlsLayout[i][3] - displayY/15 ) - Globals.ScreenKbControlsLayout[i][1] = Globals.ScreenKbControlsLayout[i][3] - displayY/15; + if( Globals.ScreenKbControlsLayout[i][0] > Globals.ScreenKbControlsLayout[i][2] - displayY/12 ) + Globals.ScreenKbControlsLayout[i][0] = Globals.ScreenKbControlsLayout[i][2] - displayY/12; + if( Globals.ScreenKbControlsLayout[i][1] > Globals.ScreenKbControlsLayout[i][3] - displayY/12 ) + Globals.ScreenKbControlsLayout[i][1] = Globals.ScreenKbControlsLayout[i][3] - displayY/12; + if( Globals.ScreenKbControlsLayout[i][0] < Globals.ScreenKbControlsLayout[i][2] - displayY*2/3 ) + Globals.ScreenKbControlsLayout[i][0] = Globals.ScreenKbControlsLayout[i][2] - displayY*2/3; + if( Globals.ScreenKbControlsLayout[i][1] < Globals.ScreenKbControlsLayout[i][3] - displayY*2/3 ) + Globals.ScreenKbControlsLayout[i][1] = Globals.ScreenKbControlsLayout[i][3] - displayY*2/3; if( Globals.ScreenKbControlsLayout[i][0] < 0 ) { - Globals.ScreenKbControlsLayout[i][2] = -Globals.ScreenKbControlsLayout[i][0]; + Globals.ScreenKbControlsLayout[i][2] += -Globals.ScreenKbControlsLayout[i][0]; Globals.ScreenKbControlsLayout[i][0] = 0; } if( Globals.ScreenKbControlsLayout[i][2] > displayX ) { - Globals.ScreenKbControlsLayout[i][0] = Globals.ScreenKbControlsLayout[i][2] - displayX; + Globals.ScreenKbControlsLayout[i][0] -= Globals.ScreenKbControlsLayout[i][2] - displayX; Globals.ScreenKbControlsLayout[i][2] = displayX; } if( Globals.ScreenKbControlsLayout[i][1] < 0 ) { - Globals.ScreenKbControlsLayout[i][3] = -Globals.ScreenKbControlsLayout[i][0]; + Globals.ScreenKbControlsLayout[i][3] += -Globals.ScreenKbControlsLayout[i][1]; Globals.ScreenKbControlsLayout[i][1] = 0; } if( Globals.ScreenKbControlsLayout[i][3] > displayY ) { - Globals.ScreenKbControlsLayout[i][1] = Globals.ScreenKbControlsLayout[i][2] - displayY; + Globals.ScreenKbControlsLayout[i][1] -= Globals.ScreenKbControlsLayout[i][3] - displayY; Globals.ScreenKbControlsLayout[i][3] = displayY; } + System.out.println("After bounds check coords " + Globals.ScreenKbControlsLayout[i][0] + ":" + Globals.ScreenKbControlsLayout[i][1] + ":" + Globals.ScreenKbControlsLayout[i][2] + ":" + Globals.ScreenKbControlsLayout[i][3] ); imgs[i] = new ImageView(p); imgs[i].setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); @@ -2191,10 +2200,16 @@ class Settings // Resize slowly, with 1/3 of movement speed dx /= 6; dy /= 6; - Globals.ScreenKbControlsLayout[currentButton][0] -= dx; - Globals.ScreenKbControlsLayout[currentButton][2] += dx; - Globals.ScreenKbControlsLayout[currentButton][1] += dy; - Globals.ScreenKbControlsLayout[currentButton][3] -= dy; + if( Globals.ScreenKbControlsLayout[currentButton][0] <= Globals.ScreenKbControlsLayout[currentButton][2] + dx*2 ) + { + Globals.ScreenKbControlsLayout[currentButton][0] -= dx; + Globals.ScreenKbControlsLayout[currentButton][2] += dx; + } + if( Globals.ScreenKbControlsLayout[currentButton][1] <= Globals.ScreenKbControlsLayout[currentButton][3] + dy*2 ) + { + Globals.ScreenKbControlsLayout[currentButton][1] += dy; + Globals.ScreenKbControlsLayout[currentButton][3] -= dy; + } dx *= 6; dy *= 6; } @@ -2673,10 +2688,13 @@ class Settings SetupTouchscreenKeyboardGraphics(p); for( int i = 0; i < Globals.RemapScreenKbKeycode.length; i++ ) nativeSetKeymapKeyScreenKb(i, SDL_Keys.values[Globals.RemapScreenKbKeycode[i]]); - for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ ) - if( Globals.ScreenKbControlsLayout[i][0] < Globals.ScreenKbControlsLayout[i][2] ) - nativeSetScreenKbKeyLayout( i, Globals.ScreenKbControlsLayout[i][0], Globals.ScreenKbControlsLayout[i][1], - Globals.ScreenKbControlsLayout[i][2], Globals.ScreenKbControlsLayout[i][3]); + if( Globals.TouchscreenKeyboardSize == Globals.TOUCHSCREEN_KEYBOARD_CUSTOM ) + { + for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ ) + if( Globals.ScreenKbControlsLayout[i][0] < Globals.ScreenKbControlsLayout[i][2] ) + nativeSetScreenKbKeyLayout( i, Globals.ScreenKbControlsLayout[i][0], Globals.ScreenKbControlsLayout[i][1], + Globals.ScreenKbControlsLayout[i][2], Globals.ScreenKbControlsLayout[i][3]); + } for( int i = 0; i < Globals.ScreenKbControlsShown.length; i++ ) nativeSetScreenKbKeyUsed(i, Globals.ScreenKbControlsShown[i] ? 1 : 0); } diff --git a/project/java/translations/values-fr/strings.xml b/project/java/translations/values-fr/strings.xml index 33f606fc2..abc5c397c 100644 --- a/project/java/translations/values-fr/strings.xml +++ b/project/java/translations/values-fr/strings.xml @@ -172,4 +172,5 @@ Yes No Press BACK when done. Resize buttons by sliding on empty space. +Custom diff --git a/project/java/translations/values-ru/strings.xml b/project/java/translations/values-ru/strings.xml index b81408e8b..4c615c60c 100644 --- a/project/java/translations/values-ru/strings.xml +++ b/project/java/translations/values-ru/strings.xml @@ -26,10 +26,10 @@ Дополнительные элементы управления Экранная клавиатура Акселерометр -Экранная клавиатура размером +Размер экранной клавиатуры Большой Средний -Малые +Маленький Крошечный Тема клавиатуры %1$s от %2$s @@ -87,10 +87,10 @@ Экранный джойстик Экранные кнопки Экранная кнопка ввода текста -Увеличить двумя пальцами жест -Уменьшить двумя пальцами жест -Повернуть налево двумя пальцами жест -Повернуть вправо двумя пальцами жест +Увеличить двумя пальцами +Уменьшить двумя пальцами +Повернуть налево двумя пальцами +Повернуть вправо двумя пальцами Жест двумя пальцами по экрану Очень быстро Чувствительность жеста двумя пальцами по экрану @@ -145,4 +145,5 @@ Загрузка может быть продолжена позднее. Да Нет +Пользовательские настройки diff --git a/project/java/translations/values-uk/strings.xml b/project/java/translations/values-uk/strings.xml index d9573df4a..746d6aac2 100644 --- a/project/java/translations/values-uk/strings.xml +++ b/project/java/translations/values-uk/strings.xml @@ -87,10 +87,10 @@ Наекранний джойстік Наекранні кнопки Наекранна кнопка вводу тексту -Збільшити двома пальцями жест -Зменшити двома пальцями жест -Повернути наліво двома пальцями жест -Повернути праворуч двома пальцями жест +Збільшити двома пальцями +Зменшити двома пальцями +Повернути наліво двома пальцями +Повернути праворуч двома пальцями Жест двома пальцями по екрану Дуже швидко Чутливість жесту двома пальцями по екрану @@ -144,4 +144,5 @@ Завантаження може бути відновлено пізніше. Так Ні +Налаштування користувача diff --git a/project/java/translations/values/strings.xml b/project/java/translations/values/strings.xml index f232b23d4..e790a9d46 100644 --- a/project/java/translations/values/strings.xml +++ b/project/java/translations/values/strings.xml @@ -45,6 +45,7 @@ Medium Small Tiny + Custom On-screen keyboard theme %1$s by %2$s On-screen keyboard transparency