diff --git a/project/java/Settings.java b/project/java/Settings.java
index 605e36004..2f043c738 100644
--- a/project/java/Settings.java
+++ b/project/java/Settings.java
@@ -104,6 +104,10 @@ class Settings
out.writeInt(Globals.CommandLine.length());
for( int i = 0; i < Globals.CommandLine.length(); i++ )
out.writeChar(Globals.CommandLine.charAt(i));
+ out.writeInt(Globals.ScreenKbControlsLayout.length);
+ for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ )
+ for( int ii = 0; ii < 4; ii++ )
+ out.writeInt(Globals.ScreenKbControlsLayout[i][ii]);
out.close();
settingsLoaded = true;
@@ -220,6 +224,12 @@ class Settings
for( int i = 0; i < len; i++ )
b.append( settingsFile.readChar() );
Globals.CommandLine = b.toString();
+
+ if( settingsFile.readInt() != Globals.ScreenKbControlsLayout.length )
+ throw new IOException();
+ for( int i = 0; i < Globals.ScreenKbControlsLayout.length; i++ )
+ for( int ii = 0; ii < 4; ii++ )
+ Globals.ScreenKbControlsLayout[i][ii] = settingsFile.readInt();
settingsLoaded = true;
@@ -470,6 +480,8 @@ class Settings
items.add(p.getResources().getString(R.string.remap_screenkb));
+ items.add(p.getResources().getString(R.string.screenkb_custom_layout));
+
items.add(p.getResources().getString(R.string.ok));
AlertDialog.Builder builder = new AlertDialog.Builder(p);
@@ -497,6 +509,10 @@ class Settings
if( item == selected )
showRemapScreenKbConfig(p);
selected++;
+
+ if( item == selected )
+ showCustomizeScreenKbLayout(p);
+ selected++;
if( item == selected )
showConfigMainMenu(p);
@@ -753,6 +769,10 @@ class Settings
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;
+
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()
@@ -1390,7 +1410,7 @@ class Settings
p.keyListener = tool;
}
- public static class ScreenEdgesCalibrationTool implements TouchEventsListener, KeyEventsListener
+ static class ScreenEdgesCalibrationTool implements TouchEventsListener, KeyEventsListener
{
MainActivity p;
ImageView img;
@@ -1449,6 +1469,119 @@ class Settings
}
}
+ static void showCustomizeScreenKbLayout(final MainActivity p)
+ {
+ p.setText(p.getResources().getString(R.string.screenkb_custom_layout_help));
+ CustomizeScreenKbLayoutTool tool = new CustomizeScreenKbLayoutTool(p);
+ p.touchListener = tool;
+ p.keyListener = tool;
+ };
+
+ static class CustomizeScreenKbLayoutTool implements TouchEventsListener, KeyEventsListener
+ {
+ MainActivity p;
+ FrameLayout layout = null;
+ ImageView imgs[] = new ImageView[Globals.ScreenKbControlsLayout.length];
+ Bitmap bmps[] = new Bitmap[Globals.ScreenKbControlsLayout.length];
+ int currentButton = 0;
+ int buttons[] = {
+ R.drawable.dpad,
+ R.drawable.keyboard,
+ R.drawable.b1,
+ R.drawable.b2,
+ R.drawable.b3,
+ R.drawable.b4,
+ R.drawable.b5,
+ R.drawable.b6
+ };
+
+ public CustomizeScreenKbLayoutTool(MainActivity _p)
+ {
+ p = _p;
+ layout = new FrameLayout(p);
+ p.getVideoLayout().addView(layout);
+ currentButton = 0;
+ setupButton(true);
+ }
+
+ void setupButton(boolean undo)
+ {
+ do {
+ currentButton += undo ? -1 : 1;
+ if(currentButton >= Globals.ScreenKbControlsLayout.length)
+ {
+ p.getVideoLayout().removeView(layout);
+ layout = null;
+ p.touchListener = null;
+ p.keyListener = null;
+ showScreenKeyboardConfigMainMenu(p);
+ return;
+ }
+ if(currentButton < 0)
+ {
+ currentButton = 0;
+ undo = false;
+ }
+ } while( ! Globals.ScreenKbControlsShown[currentButton] );
+
+ if( imgs[currentButton] == null )
+ {
+ imgs[currentButton] = new ImageView(p);
+ imgs[currentButton].setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
+ imgs[currentButton].setScaleType(ImageView.ScaleType.MATRIX);
+ bmps[currentButton] = BitmapFactory.decodeResource( p.getResources(), buttons[currentButton] );
+ imgs[currentButton].setImageBitmap(bmps[currentButton]);
+ layout.addView(imgs[currentButton]);
+ }
+ Matrix m = new Matrix();
+ RectF src = new RectF(0, 0, bmps[currentButton].getWidth(), bmps[currentButton].getHeight());
+ RectF dst = new RectF(Globals.ScreenKbControlsLayout[currentButton][0], Globals.ScreenKbControlsLayout[currentButton][1],
+ Globals.ScreenKbControlsLayout[currentButton][2], Globals.ScreenKbControlsLayout[currentButton][3]);
+ m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
+ imgs[currentButton].setImageMatrix(m);
+ }
+
+ public void onTouchEvent(final MotionEvent ev)
+ {
+ if( ev.getAction() == MotionEvent.ACTION_DOWN )
+ {
+ Globals.ScreenKbControlsLayout[currentButton][0] = (int)ev.getX();
+ Globals.ScreenKbControlsLayout[currentButton][1] = (int)ev.getY();
+ Globals.ScreenKbControlsLayout[currentButton][2] = (int)ev.getX();
+ Globals.ScreenKbControlsLayout[currentButton][3] = (int)ev.getY();
+ }
+ if( ev.getAction() == MotionEvent.ACTION_MOVE )
+ {
+ if( Globals.ScreenKbControlsLayout[currentButton][0] > (int)ev.getX() )
+ Globals.ScreenKbControlsLayout[currentButton][0] = (int)ev.getX();
+ if( Globals.ScreenKbControlsLayout[currentButton][1] > (int)ev.getY() )
+ Globals.ScreenKbControlsLayout[currentButton][1] = (int)ev.getY();
+ if( Globals.ScreenKbControlsLayout[currentButton][2] < (int)ev.getX() )
+ Globals.ScreenKbControlsLayout[currentButton][2] = (int)ev.getX();
+ if( Globals.ScreenKbControlsLayout[currentButton][3] < (int)ev.getY() )
+ Globals.ScreenKbControlsLayout[currentButton][3] = (int)ev.getY();
+ }
+
+ Matrix m = new Matrix();
+ RectF src = new RectF(0, 0, bmps[currentButton].getWidth(), bmps[currentButton].getHeight());
+ RectF dst = new RectF(Globals.ScreenKbControlsLayout[currentButton][0], Globals.ScreenKbControlsLayout[currentButton][1],
+ Globals.ScreenKbControlsLayout[currentButton][2], Globals.ScreenKbControlsLayout[currentButton][3]);
+ m.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
+ imgs[currentButton].setImageMatrix(m);
+
+ if( ev.getAction() == MotionEvent.ACTION_UP )
+ setupButton(false);
+ }
+
+ public void onKeyEvent(final int keyCode)
+ {
+ if( layout != null && imgs[currentButton] != null )
+ layout.removeView(imgs[currentButton]);
+ imgs[currentButton] = null;
+ setupButton(true);
+ }
+ }
+
// ===============================================================================================
static void Apply(Activity p)
@@ -1487,11 +1620,16 @@ class Settings
nativeSetScreenKbKeyUsed(i, Globals.ScreenKbControlsShown[i] ? 1 : 0);
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]);
for( int i = 0; i < Globals.RemapMultitouchGestureKeycode.length; i++ )
nativeSetKeymapKeyMultitouchGesture(i, Globals.MultitouchGesturesUsed[i] ? SDL_Keys.values[Globals.RemapMultitouchGestureKeycode[i]] : 0);
nativeSetMultitouchGestureSensitivity(Globals.MultitouchGestureSensitivity);
if( Globals.TouchscreenCalibration[2] > Globals.TouchscreenCalibration[0] )
- nativeSetTouchscreenCalibration(Globals.TouchscreenCalibration[0], Globals.TouchscreenCalibration[1], Globals.TouchscreenCalibration[2], Globals.TouchscreenCalibration[3]);
+ nativeSetTouchscreenCalibration(Globals.TouchscreenCalibration[0], Globals.TouchscreenCalibration[1],
+ Globals.TouchscreenCalibration[2], Globals.TouchscreenCalibration[3]);
String lang = new String(Locale.getDefault().getLanguage());
if( Locale.getDefault().getCountry().length() > 0 )
@@ -1552,6 +1690,7 @@ class Settings
private static native int nativeGetKeymapKeyScreenKb(int keynum);
private static native void nativeSetKeymapKeyScreenKb(int keynum, int key);
private static native void nativeSetScreenKbKeyUsed(int keynum, int used);
+ private static native void nativeSetScreenKbKeyLayout(int keynum, int x1, int y1, int x2, int y2);
private static native int nativeGetKeymapKeyMultitouchGesture(int keynum);
private static native void nativeSetKeymapKeyMultitouchGesture(int keynum, int key);
private static native void nativeSetMultitouchGestureSensitivity(int sensitivity);
diff --git a/project/java/translations/values-de/strings.xml b/project/java/translations/values-de/strings.xml
index 60c966f2d..7b4552086 100644
--- a/project/java/translations/values-de/strings.xml
+++ b/project/java/translations/values-de/strings.xml
@@ -104,5 +104,5 @@
Geben Sie direkt
Geben Kommandozeilenparameter
Kalibrieren Touchscreen
-Touch allen vier Rändern des Bildschirms, wenn Sie fertig sind, drücken Sie Zurück
+Touch allen vier Rändern des Bildschirms, drücken Sie Menü, wenn Sie fertig
diff --git a/project/java/translations/values-fi/strings.xml b/project/java/translations/values-fi/strings.xml
index 5443781e4..941e4656a 100644
--- a/project/java/translations/values-fi/strings.xml
+++ b/project/java/translations/values-fi/strings.xml
@@ -104,5 +104,5 @@
Määritä hakemisto
Määritä komentoriviparametrit
Kalibroi kosketusnäyttö
-Touch kaikki neljä reunaa näytön, paina Takaisin, kun olet valmis
+Touch kaikki neljä reunaa näytön, paina Valikko, kun olet valmis
diff --git a/project/java/translations/values-fr/strings.xml b/project/java/translations/values-fr/strings.xml
index 9e1930dac..a99a18edd 100644
--- a/project/java/translations/values-fr/strings.xml
+++ b/project/java/translations/values-fr/strings.xml
@@ -107,5 +107,5 @@
Spécifiez le répertoire
Spécifier les paramètres de ligne de commande
Calibrer écran tactile
-Touchez les quatre bords de l\u0026#39;écran, appuyez sur Retour lorsque vous avez terminé
+Touchez les quatre bords de l\u0026#39;écran, appuyez sur MENU lorsque vous avez terminé
diff --git a/project/java/translations/values-ru/strings.xml b/project/java/translations/values-ru/strings.xml
index d227a93a0..347409752 100644
--- a/project/java/translations/values-ru/strings.xml
+++ b/project/java/translations/values-ru/strings.xml
@@ -97,5 +97,5 @@
Укажите каталог
Укажите параметры командной строки
Калибровка сенсорного экрана
-Дотроньтесь до всех четырех краев экрана, потом нажмите Назад
+Дотроньтесь до всех четырех краев экрана, потом нажмите MENU
diff --git a/project/java/translations/values-uk/strings.xml b/project/java/translations/values-uk/strings.xml
index ad164d362..2e348ae00 100644
--- a/project/java/translations/values-uk/strings.xml
+++ b/project/java/translations/values-uk/strings.xml
@@ -97,5 +97,5 @@
Вкажіть каталог
Вкажіть параметри командного рядка
Калібрування сенсорного екрану
-Доторкнiться до всіх чотирьох країв екрану, потiм натисніть Назад
+Доторкнiться до всіх чотирьох країв екрану, потiм натисніть MENU
diff --git a/project/java/translations/values/strings.xml b/project/java/translations/values/strings.xml
index 9961e711f..b562223ec 100644
--- a/project/java/translations/values/strings.xml
+++ b/project/java/translations/values/strings.xml
@@ -116,7 +116,10 @@
Rotate left two-finger gesture
Rotate right two-finger gesture
+ Customize on-screen keyboard layout
+ Slide screen to add button, press Menu to undo last button
+
Calibrate touchscreen
- Touch all four edges of the screen, press Back when done
+ Touch all four edges of the screen, press Menu when done
diff --git a/project/jni/application/src b/project/jni/application/src
index 4de17cd97..104f796a6 120000
--- a/project/jni/application/src
+++ b/project/jni/application/src
@@ -1 +1 @@
-alienblaster
\ No newline at end of file
+ballfield
\ No newline at end of file
diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c
index d046f125c..75439199c 100644
--- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c
+++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c
@@ -1416,7 +1416,7 @@ void ANDROID_InitOSKeymap()
}
JNIEXPORT jint JNICALL
-JAVA_EXPORT_NAME(Settings_nativeGetKeymapKey) ( JNIEnv* env, jobject thiz, jint code)
+JAVA_EXPORT_NAME(Settings_nativeGetKeymapKey) (JNIEnv* env, jobject thiz, jint code)
{
if( code < 0 || code > KEYCODE_LAST )
return SDL_KEY(UNKNOWN);
@@ -1424,7 +1424,7 @@ JAVA_EXPORT_NAME(Settings_nativeGetKeymapKey) ( JNIEnv* env, jobject thiz, jint
}
JNIEXPORT void JNICALL
-JAVA_EXPORT_NAME(Settings_nativeSetKeymapKey) ( JNIEnv* env, jobject thiz, jint javakey, jint key)
+JAVA_EXPORT_NAME(Settings_nativeSetKeymapKey) (JNIEnv* env, jobject thiz, jint javakey, jint key)
{
if( javakey < 0 || javakey > KEYCODE_LAST )
return;
@@ -1432,7 +1432,7 @@ JAVA_EXPORT_NAME(Settings_nativeSetKeymapKey) ( JNIEnv* env, jobject thiz, jint
}
JNIEXPORT jint JNICALL
-JAVA_EXPORT_NAME(Settings_nativeGetKeymapKeyScreenKb) ( JNIEnv* env, jobject thiz, jint keynum)
+JAVA_EXPORT_NAME(Settings_nativeGetKeymapKeyScreenKb) (JNIEnv* env, jobject thiz, jint keynum)
{
if( keynum < 0 || keynum > SDL_ANDROID_SCREENKEYBOARD_BUTTON_5 - SDL_ANDROID_SCREENKEYBOARD_BUTTON_0 + 4 )
return SDL_KEY(UNKNOWN);
@@ -1444,7 +1444,7 @@ JAVA_EXPORT_NAME(Settings_nativeGetKeymapKeyScreenKb) ( JNIEnv* env, jobject th
}
JNIEXPORT void JNICALL
-JAVA_EXPORT_NAME(Settings_nativeSetKeymapKeyScreenKb) ( JNIEnv* env, jobject thiz, jint keynum, jint key)
+JAVA_EXPORT_NAME(Settings_nativeSetKeymapKeyScreenKb) (JNIEnv* env, jobject thiz, jint keynum, jint key)
{
if( keynum < 0 || keynum > SDL_ANDROID_SCREENKEYBOARD_BUTTON_5 - SDL_ANDROID_SCREENKEYBOARD_BUTTON_0 + 4 )
return;
@@ -1454,7 +1454,7 @@ JAVA_EXPORT_NAME(Settings_nativeSetKeymapKeyScreenKb) ( JNIEnv* env, jobject th
}
JNIEXPORT void JNICALL
-JAVA_EXPORT_NAME(Settings_nativeSetScreenKbKeyUsed) ( JNIEnv* env, jobject thiz, jint keynum, jint used)
+JAVA_EXPORT_NAME(Settings_nativeSetScreenKbKeyUsed) (JNIEnv* env, jobject thiz, jint keynum, jint used)
{
SDL_Rect rect = {0, 0, 0, 0};
int key = -1;
@@ -1470,7 +1470,7 @@ JAVA_EXPORT_NAME(Settings_nativeSetScreenKbKeyUsed) ( JNIEnv* env, jobject thiz
}
JNIEXPORT jint JNICALL
-JAVA_EXPORT_NAME(Settings_nativeGetKeymapKeyMultitouchGesture) ( JNIEnv* env, jobject thiz, jint keynum)
+JAVA_EXPORT_NAME(Settings_nativeGetKeymapKeyMultitouchGesture) (JNIEnv* env, jobject thiz, jint keynum)
{
if( keynum < 0 || keynum >= MAX_MULTITOUCH_GESTURES )
return SDL_KEY(UNKNOWN);
@@ -1478,21 +1478,21 @@ JAVA_EXPORT_NAME(Settings_nativeGetKeymapKeyMultitouchGesture) ( JNIEnv* env, j
}
JNIEXPORT void JNICALL
-JAVA_EXPORT_NAME(Settings_nativeSetKeymapKeyMultitouchGesture) ( JNIEnv* env, jobject thiz, jint keynum, jint keycode)
+JAVA_EXPORT_NAME(Settings_nativeSetKeymapKeyMultitouchGesture) (JNIEnv* env, jobject thiz, jint keynum, jint keycode)
{
if( keynum < 0 || keynum >= MAX_MULTITOUCH_GESTURES )
- return SDL_KEY(UNKNOWN);
+ return;
multitouchGestureKeycode[keynum] = keycode;
}
JNIEXPORT void JNICALL
-JAVA_EXPORT_NAME(Settings_nativeSetMultitouchGestureSensitivity) ( JNIEnv* env, jobject thiz, jint sensitivity)
+JAVA_EXPORT_NAME(Settings_nativeSetMultitouchGestureSensitivity) (JNIEnv* env, jobject thiz, jint sensitivity)
{
multitouchGestureSensitivity = sensitivity;
}
JNIEXPORT void JNICALL
-JAVA_EXPORT_NAME(Settings_nativeSetTouchscreenCalibration) (JNIEnv* env, jobject thiz, jint x1, jint y1, jint x2, jint y2)
+JAVA_EXPORT_NAME(Settings_nativeSetTouchscreenCalibration) (JNIEnv* env, jobject thiz, jint x1, jint y1, jint x2, jint y2)
{
SDL_ANDROID_TouchscreenCalibrationX = x1;
SDL_ANDROID_TouchscreenCalibrationY = y1;
@@ -1500,6 +1500,25 @@ JAVA_EXPORT_NAME(Settings_nativeSetTouchscreenCalibration) (JNIEnv* env, jobjec
SDL_ANDROID_TouchscreenCalibrationHeight = y2 - y1;
}
+
+JNIEXPORT void JNICALL
+JAVA_EXPORT_NAME(Settings_nativeSetScreenKbKeyLayout) (JNIEnv* env, jobject thiz, jint keynum, jint x1, jint y1, jint x2, jint y2)
+{
+ SDL_Rect rect = {x1, y1, x2-x1, y2-y1};
+ int key = -1;
+ __android_log_print(ANDROID_LOG_INFO, "libSDL", "nativeSetScreenKbKeyLayout: %d %d %d %d", (int)rect.x, (int)rect.y, (int)rect.w, (int)rect.h);
+ if( keynum == 0 )
+ key = SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD;
+ if( keynum == 1 )
+ key = SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT;
+ if( keynum - 2 >= 0 && keynum - 2 <= SDL_ANDROID_SCREENKEYBOARD_BUTTON_5 - SDL_ANDROID_SCREENKEYBOARD_BUTTON_0 )
+ key = keynum - 2 + SDL_ANDROID_SCREENKEYBOARD_BUTTON_0;
+
+ if( key >= 0 )
+ SDL_ANDROID_SetScreenKeyboardButtonPos(key, &rect);
+}
+
+
JNIEXPORT void JNICALL
JAVA_EXPORT_NAME(Settings_nativeInitKeymap) ( JNIEnv* env, jobject thiz )
{
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 6079f9405..564930ff1 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
@@ -860,12 +860,19 @@ int SDL_ANDROID_SetScreenKeyboardButtonPos(int buttonId, SDL_Rect * pos)
}
else
{
- buttons[buttonId - SDL_ANDROID_SCREENKEYBOARD_BUTTON_0] = *pos;
+ int i = buttonId - SDL_ANDROID_SCREENKEYBOARD_BUTTON_0;
+ buttons[i] = *pos;
if(touchscreenKeyboardTheme == 0)
{
- int i = buttonId - SDL_ANDROID_SCREENKEYBOARD_BUTTON_0;
prepareFontCharWireframe(FONT_BTN1 + i, MIN(buttons[i].h, buttons[i].w), MIN(buttons[i].h, buttons[i].w));
}
+ if( i < AutoFireButtonsNum )
+ {
+ buttonsAutoFireRect[i].w = buttons[i].w * 2;
+ buttonsAutoFireRect[i].h = buttons[i].h * 2;
+ buttonsAutoFireRect[i].x = buttons[i].x - buttons[i].w / 2;
+ buttonsAutoFireRect[i].y = buttons[i].y - buttons[i].h / 2;
+ }
}
return 1;
};
diff --git a/project/res/drawable/b1.png b/project/res/drawable/b1.png
new file mode 100644
index 000000000..6a6babc51
Binary files /dev/null and b/project/res/drawable/b1.png differ
diff --git a/project/res/drawable/b2.png b/project/res/drawable/b2.png
new file mode 100644
index 000000000..cb5f2e6cd
Binary files /dev/null and b/project/res/drawable/b2.png differ
diff --git a/project/res/drawable/b3.png b/project/res/drawable/b3.png
new file mode 100644
index 000000000..cb1cacbdb
Binary files /dev/null and b/project/res/drawable/b3.png differ
diff --git a/project/res/drawable/b4.png b/project/res/drawable/b4.png
new file mode 100644
index 000000000..cc202ae13
Binary files /dev/null and b/project/res/drawable/b4.png differ
diff --git a/project/res/drawable/b5.png b/project/res/drawable/b5.png
new file mode 100644
index 000000000..1c6802113
Binary files /dev/null and b/project/res/drawable/b5.png differ
diff --git a/project/res/drawable/b6.png b/project/res/drawable/b6.png
new file mode 100644
index 000000000..83902c210
Binary files /dev/null and b/project/res/drawable/b6.png differ
diff --git a/project/res/drawable/dpad.png b/project/res/drawable/dpad.png
new file mode 100644
index 000000000..38f369f55
Binary files /dev/null and b/project/res/drawable/dpad.png differ
diff --git a/project/res/drawable/keyboard.png b/project/res/drawable/keyboard.png
new file mode 100644
index 000000000..62d2358c3
Binary files /dev/null and b/project/res/drawable/keyboard.png differ