More fixes to on-screen keyboard

This commit is contained in:
pelya
2013-05-04 20:06:16 +00:00
parent dedefbf9a9
commit 9cb04ba9d9
6 changed files with 58 additions and 35 deletions

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -172,4 +172,5 @@
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="screenkb_custom_layout_help">Press BACK when done. Resize buttons by sliding on empty space.</string>
<string name="controls_screenkb_custom">Custom</string>
</resources>

View File

@@ -26,10 +26,10 @@
<string name="controls_additional">Дополнительные элементы управления</string>
<string name="controls_screenkb">Экранная клавиатура</string>
<string name="controls_accelnav">Акселерометр</string>
<string name="controls_screenkb_size">Экранная клавиатура размером</string>
<string name="controls_screenkb_size">Размер экранной клавиатуры</string>
<string name="controls_screenkb_large">Большой</string>
<string name="controls_screenkb_medium">Средний</string>
<string name="controls_screenkb_small">Малые</string>
<string name="controls_screenkb_small">Маленький</string>
<string name="controls_screenkb_tiny">Крошечный</string>
<string name="controls_screenkb_theme">Тема клавиатуры</string>
<string name="controls_screenkb_by">%1$s от %2$s</string>
@@ -87,10 +87,10 @@
<string name="remap_screenkb_joystick">Экранный джойстик</string>
<string name="remap_screenkb_button">Экранные кнопки</string>
<string name="remap_screenkb_button_text">Экранная кнопка ввода текста</string>
<string name="remap_screenkb_button_zoomin">Увеличить двумя пальцами жест</string>
<string name="remap_screenkb_button_zoomout">Уменьшить двумя пальцами жест</string>
<string name="remap_screenkb_button_rotateleft">Повернуть налево двумя пальцами жест</string>
<string name="remap_screenkb_button_rotateright">Повернуть вправо двумя пальцами жест</string>
<string name="remap_screenkb_button_zoomin">Увеличить двумя пальцами</string>
<string name="remap_screenkb_button_zoomout">Уменьшить двумя пальцами</string>
<string name="remap_screenkb_button_rotateleft">Повернуть налево двумя пальцами</string>
<string name="remap_screenkb_button_rotateright">Повернуть вправо двумя пальцами</string>
<string name="remap_screenkb_button_gestures">Жест двумя пальцами по экрану</string>
<string name="accel_veryfast">Очень быстро</string>
<string name="remap_screenkb_button_gestures_sensitivity">Чувствительность жеста двумя пальцами по экрану</string>
@@ -145,4 +145,5 @@
<string name="cancel_download_resume">Загрузка может быть продолжена позднее.</string>
<string name="yes">Да</string>
<string name="no">Нет</string>
<string name="controls_screenkb_custom">Пользовательские настройки</string>
</resources>

View File

@@ -87,10 +87,10 @@
<string name="remap_screenkb_joystick">Наекранний джойстік</string>
<string name="remap_screenkb_button">Наекранні кнопки</string>
<string name="remap_screenkb_button_text">Наекранна кнопка вводу тексту</string>
<string name="remap_screenkb_button_zoomin">Збільшити двома пальцями жест</string>
<string name="remap_screenkb_button_zoomout">Зменшити двома пальцями жест</string>
<string name="remap_screenkb_button_rotateleft">Повернути наліво двома пальцями жест</string>
<string name="remap_screenkb_button_rotateright">Повернути праворуч двома пальцями жест</string>
<string name="remap_screenkb_button_zoomin">Збільшити двома пальцями</string>
<string name="remap_screenkb_button_zoomout">Зменшити двома пальцями</string>
<string name="remap_screenkb_button_rotateleft">Повернути наліво двома пальцями</string>
<string name="remap_screenkb_button_rotateright">Повернути праворуч двома пальцями</string>
<string name="remap_screenkb_button_gestures">Жест двома пальцями по екрану</string>
<string name="accel_veryfast">Дуже швидко</string>
<string name="remap_screenkb_button_gestures_sensitivity">Чутливість жесту двома пальцями по екрану</string>
@@ -144,4 +144,5 @@
<string name="cancel_download_resume">Завантаження може бути відновлено пізніше.</string>
<string name="yes">Так</string>
<string name="no">Ні</string>
<string name="controls_screenkb_custom">Налаштування користувача</string>
</resources>

View File

@@ -45,6 +45,7 @@
<string name="controls_screenkb_medium">Medium</string>
<string name="controls_screenkb_small">Small</string>
<string name="controls_screenkb_tiny">Tiny</string>
<string name="controls_screenkb_custom">Custom</string>
<string name="controls_screenkb_theme">On-screen keyboard theme</string>
<string name="controls_screenkb_by">%1$s by %2$s</string>
<string name="controls_screenkb_transparency">On-screen keyboard transparency</string>