Total number of virtual keys has been increased to 7

This commit is contained in:
pelya
2010-08-21 14:52:09 +03:00
parent 814db2bc42
commit b0bbe3eff3
11 changed files with 171 additions and 111 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/sh
CHANGE_APP_SETTINGS_VERSION=2
CHANGE_APP_SETTINGS_VERSION=3
AUTO=
if [ "X$1" = "X-a" ]; then
@@ -88,7 +88,7 @@ if [ -n "$var" ] ; then
AppUsesMultitouch="$var"
fi
echo -n "\nRedefine common keys to SDL keysyms: TOUCHSCREEN SEARCH/CALL/DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK"
echo -n "\nRedefine common keys to SDL keysyms: TOUCHSCREEN SEARCH/CALL/DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK CAMERA ENTER DEL"
echo -n "\nMENU and BACK hardware keys and TOUCHSCREEN virtual 'key' are available on all devices, other keys may be absent"
echo -n "\nThe same key values are used if touchscreen keyboard is enabled, except for MENU and BACK\n($RedefinedKeys)\n: "
read var
@@ -96,6 +96,12 @@ if [ -n "$var" ] ; then
RedefinedKeys="$var"
fi
echo -n "\nNumber of virtual keyboard keys (currently 7 is maximum) ($AppTouchscreenKeyboardKeysAmount): "
read var
if [ -n "$var" ] ; then
AppTouchscreenKeyboardKeysAmount="$var"
fi
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
if [ -n "$var" ] ; then
@@ -171,6 +177,7 @@ echo AppNeedsArrowKeys=$AppNeedsArrowKeys >> AppSettings.cfg
echo AppUsesJoystick=$AppUsesJoystick >> AppSettings.cfg
echo AppUsesMultitouch=$AppUsesMultitouch >> AppSettings.cfg
echo RedefinedKeys=\"$RedefinedKeys\" >> AppSettings.cfg
echo AppTouchscreenKeyboardKeysAmount=$AppTouchscreenKeyboardKeysAmount >> AppSettings.cfg
echo MultiABI=$MultiABI >> AppSettings.cfg
echo AppVersionCode=$AppVersionCode >> AppSettings.cfg
echo AppVersionName=\"$AppVersionName\" >> AppSettings.cfg
@@ -277,6 +284,7 @@ cat project/src/Globals.java | \
sed "s/public static boolean AppNeedsArrowKeys = .*;/public static boolean AppNeedsArrowKeys = $AppNeedsArrowKeys;/" | \
sed "s/public static boolean AppUsesJoystick = .*;/public static boolean AppUsesJoystick = $AppUsesJoystick;/" | \
sed "s/public static boolean AppUsesMultitouch = .*;/public static boolean AppUsesMultitouch = $AppUsesMultitouch;/" | \
sed "s/public static int AppTouchscreenKeyboardKeysAmount = .*;/public static int AppTouchscreenKeyboardKeysAmount = $AppTouchscreenKeyboardKeysAmount;/" | \
sed "s%public static String ReadmeText = .*%public static String ReadmeText = \"$ReadmeText\".replace(\"^\",\"\\\n\");%" | \
sed "s/public LoadLibrary() .*/public LoadLibrary() { $LibrariesToLoad };/" > \
project/src/Globals.java.1

View File

@@ -4,7 +4,7 @@
#include <SDL_types.h>
typedef struct font_line_t { Uint8 x1, y1, x2, y2; } font_line_t;
enum { FONT_MAX_LINES_PER_CHAR = 5 };
font_line_t font[8][FONT_MAX_LINES_PER_CHAR] = {
static font_line_t font[11][FONT_MAX_LINES_PER_CHAR] = {
{
{ 27, 136, 182, 136 },
{ 27, 136, 94, 104 },
@@ -60,6 +60,27 @@ font_line_t font[8][FONT_MAX_LINES_PER_CHAR] = {
{ 189, 74, 189, 180 },
{ 189, 180, 74, 190 },
{ 0, 0, 0, 0 }
},
{
{ 127, 56, 127, 116 },
{ 69, 119, 186, 115 },
{ 94, 140, 161, 138 },
{ 114, 162, 138, 161 },
{ 0, 0, 0, 0 }
},
{
{ 121, 77, 81, 126 },
{ 81, 126, 119, 178 },
{ 119, 178, 160, 127 },
{ 160, 127, 121, 77 },
{ 0, 0, 0, 0 }
},
{
{ 185, 81, 75, 81 },
{ 75, 81, 124, 158 },
{ 124, 158, 185, 81 },
{ 180, 158, 74, 158 },
{ 0, 0, 0, 0 }
}
};
#endif

View File

@@ -0,0 +1 @@
../../../../sdl-1.3/src/video/android/javakeycodes.h

View File

@@ -208,9 +208,7 @@ void ANDROID_InitOSKeymap()
keymap[KEYCODE_HOME] = SDL_KEY(HOME); // Cannot be used in application
keymap[KEYCODE_ENDCALL] = SDL_KEY(LSHIFT);
keymap[KEYCODE_CAMERA] = SDL_KEY(RSHIFT);
keymap[KEYCODE_POWER] = SDL_KEY(RALT);
keymap[KEYCODE_CAMERA] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_6));
keymap[KEYCODE_0] = SDL_KEY(0);
keymap[KEYCODE_1] = SDL_KEY(1);
@@ -266,7 +264,7 @@ void ANDROID_InitOSKeymap()
keymap[KEYCODE_PERIOD] = SDL_KEY(PERIOD);
keymap[KEYCODE_TAB] = SDL_KEY(TAB);
keymap[KEYCODE_SPACE] = SDL_KEY(SPACE);
keymap[KEYCODE_DEL] = SDL_KEY(DELETE);
keymap[KEYCODE_DEL] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_8));
keymap[KEYCODE_GRAVE] = SDL_KEY(GRAVE);
keymap[KEYCODE_MINUS] = SDL_KEY(KP_MINUS);
keymap[KEYCODE_PLUS] = SDL_KEY(KP_PLUS);
@@ -303,6 +301,10 @@ void ANDROID_InitOSKeymap()
keymap[KEYCODE_FOCUS] = SDL_KEY(F6);
keymap[KEYCODE_NOTIFICATION] = SDL_KEY(F7);
// Cannot be received by application, OS internal
keymap[KEYCODE_ENDCALL] = SDL_KEY(LSHIFT);
keymap[KEYCODE_POWER] = SDL_KEY(RALT);
}
static float dx = 0.04, dy = 0.1, dz = 0.1; // For accelerometer

View File

@@ -48,7 +48,7 @@
#include "../SDL_sysvideo.h"
#include "SDL_androidvideo.h"
#include "javakeycodes.h"
extern SDLKey SDL_android_keymap[KEYCODE_LAST+1];
@@ -192,5 +192,14 @@ extern int SDL_android_processTouchscreenKeyboard(int x, int y, int action, int
#ifndef SDL_ANDROID_KEYCODE_5
#define SDL_ANDROID_KEYCODE_5 ESCAPE
#endif
#ifndef SDL_ANDROID_KEYCODE_6
#define SDL_ANDROID_KEYCODE_6 RSHIFT
#endif
#ifndef SDL_ANDROID_KEYCODE_7
#define SDL_ANDROID_KEYCODE_7 RETURN
#endif
#ifndef SDL_ANDROID_KEYCODE_8
#define SDL_ANDROID_KEYCODE_8 DELETE
#endif
#endif

View File

@@ -36,103 +36,5 @@ extern int SDL_ANDROID_drawTouchscreenKeyboard();
extern void SDL_ANDROID_processAndroidTrackballDampening();
extern SDL_VideoDevice *ANDROID_CreateDevice_1_3(int devindex);
// Keycodes ripped from Java SDK
enum KEYCODES_ANDROID
{
KEYCODE_UNKNOWN = 0,
KEYCODE_SOFT_LEFT = 1,
KEYCODE_SOFT_RIGHT = 2,
KEYCODE_HOME = 3,
KEYCODE_BACK = 4,
KEYCODE_CALL = 5,
KEYCODE_ENDCALL = 6,
KEYCODE_0 = 7,
KEYCODE_1 = 8,
KEYCODE_2 = 9,
KEYCODE_3 = 10,
KEYCODE_4 = 11,
KEYCODE_5 = 12,
KEYCODE_6 = 13,
KEYCODE_7 = 14,
KEYCODE_8 = 15,
KEYCODE_9 = 16,
KEYCODE_STAR = 17,
KEYCODE_POUND = 18,
KEYCODE_DPAD_UP = 19,
KEYCODE_DPAD_DOWN = 20,
KEYCODE_DPAD_LEFT = 21,
KEYCODE_DPAD_RIGHT = 22,
KEYCODE_DPAD_CENTER = 23,
KEYCODE_VOLUME_UP = 24,
KEYCODE_VOLUME_DOWN = 25,
KEYCODE_POWER = 26,
KEYCODE_CAMERA = 27,
KEYCODE_CLEAR = 28,
KEYCODE_A = 29,
KEYCODE_B = 30,
KEYCODE_C = 31,
KEYCODE_D = 32,
KEYCODE_E = 33,
KEYCODE_F = 34,
KEYCODE_G = 35,
KEYCODE_H = 36,
KEYCODE_I = 37,
KEYCODE_J = 38,
KEYCODE_K = 39,
KEYCODE_L = 40,
KEYCODE_M = 41,
KEYCODE_N = 42,
KEYCODE_O = 43,
KEYCODE_P = 44,
KEYCODE_Q = 45,
KEYCODE_R = 46,
KEYCODE_S = 47,
KEYCODE_T = 48,
KEYCODE_U = 49,
KEYCODE_V = 50,
KEYCODE_W = 51,
KEYCODE_X = 52,
KEYCODE_Y = 53,
KEYCODE_Z = 54,
KEYCODE_COMMA = 55,
KEYCODE_PERIOD = 56,
KEYCODE_ALT_LEFT = 57,
KEYCODE_ALT_RIGHT = 58,
KEYCODE_SHIFT_LEFT = 59,
KEYCODE_SHIFT_RIGHT = 60,
KEYCODE_TAB = 61,
KEYCODE_SPACE = 62,
KEYCODE_SYM = 63,
KEYCODE_EXPLORER = 64,
KEYCODE_ENVELOPE = 65,
KEYCODE_ENTER = 66,
KEYCODE_DEL = 67,
KEYCODE_GRAVE = 68,
KEYCODE_MINUS = 69,
KEYCODE_EQUALS = 70,
KEYCODE_LEFT_BRACKET = 71,
KEYCODE_RIGHT_BRACKET = 72,
KEYCODE_BACKSLASH = 73,
KEYCODE_SEMICOLON = 74,
KEYCODE_APOSTROPHE = 75,
KEYCODE_SLASH = 76,
KEYCODE_AT = 77,
KEYCODE_NUM = 78,
KEYCODE_HEADSETHOOK = 79,
KEYCODE_FOCUS = 80,
KEYCODE_PLUS = 81,
KEYCODE_MENU = 82,
KEYCODE_NOTIFICATION = 83,
KEYCODE_SEARCH = 84,
KEYCODE_MEDIA_PLAY_PAUSE= 85,
KEYCODE_MEDIA_STOP = 86,
KEYCODE_MEDIA_NEXT = 87,
KEYCODE_MEDIA_PREVIOUS = 88,
KEYCODE_MEDIA_REWIND = 89,
KEYCODE_MEDIA_FAST_FORWARD = 90,
KEYCODE_MUTE = 91,
KEYCODE_LAST = KEYCODE_MUTE
};
#endif /* _SDL_androidvideo_h */

View File

@@ -49,7 +49,7 @@ FONT_LEFT = 0, FONT_RIGHT = 1, FONT_UP = 2, FONT_DOWN = 3,
FONT_BTN1 = 4, FONT_BTN2 = 5, FONT_BTN3 = 6, FONT_BTN4 = 7
};
enum { MAX_BUTTONS = 4 } ; // Max amount of custom buttons
enum { MAX_BUTTONS = 7 } ; // Max amount of custom buttons
static GLshort fontGL[sizeof(font)/sizeof(font[0])][FONT_MAX_LINES_PER_CHAR * 4 + 1];
enum { FONT_CHAR_LINES_COUNT = FONT_MAX_LINES_PER_CHAR * 4 };
@@ -60,7 +60,11 @@ 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))
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))
};
enum { ARROW_LEFT = 1, ARROW_RIGHT = 2, ARROW_UP = 4, ARROW_DOWN = 8 };
@@ -332,13 +336,22 @@ JAVA_EXPORT_NAME(Settings_nativeSetupScreenKeyboard) ( JNIEnv* env, jobject thi
buttons[0].y = SDL_ANDROID_sWindowHeight - buttons[0].h;
// Row of secondary buttons to the upper-right
for( i = 1; i < nbuttons; i++ )
for( i = 1; i < MIN(nbuttons, 4); i++ )
{
buttons[i].w = SDL_ANDROID_sWindowWidth / (nbuttons - 1) / (size + 2);
buttons[i].h = SDL_ANDROID_sWindowHeight / (size + 2);
buttons[i].x = SDL_ANDROID_sWindowWidth - buttons[i].w * (nbuttons - i);
buttons[i].y = 0;
}
// Row of secondary buttons to the upper-left above arrows
for( i = 4; i < MIN(nbuttons, 7); i++ )
{
buttons[i].w = SDL_ANDROID_sWindowWidth / (nbuttons - 1) / (size + 2);
buttons[i].h = (SDL_ANDROID_sWindowHeight - SDL_ANDROID_sWindowWidth / 2) * 2 / (size + 2);
buttons[i].x = buttons[i].w * (nbuttons - i);
buttons[i].y = 0;
}
// Resize char images
prepareFontChar(FONT_LEFT, arrows.w / 2, arrows.h / 2);

View File

@@ -0,0 +1,103 @@
#ifndef _JAVA_KEY_CODES_H_
#define _JAVA_KEY_CODES_H_
// Keycodes ripped from Java SDK
enum KEYCODES_ANDROID
{
KEYCODE_UNKNOWN = 0,
KEYCODE_SOFT_LEFT = 1,
KEYCODE_SOFT_RIGHT = 2,
KEYCODE_HOME = 3,
KEYCODE_BACK = 4,
KEYCODE_CALL = 5,
KEYCODE_ENDCALL = 6,
KEYCODE_0 = 7,
KEYCODE_1 = 8,
KEYCODE_2 = 9,
KEYCODE_3 = 10,
KEYCODE_4 = 11,
KEYCODE_5 = 12,
KEYCODE_6 = 13,
KEYCODE_7 = 14,
KEYCODE_8 = 15,
KEYCODE_9 = 16,
KEYCODE_STAR = 17,
KEYCODE_POUND = 18,
KEYCODE_DPAD_UP = 19,
KEYCODE_DPAD_DOWN = 20,
KEYCODE_DPAD_LEFT = 21,
KEYCODE_DPAD_RIGHT = 22,
KEYCODE_DPAD_CENTER = 23,
KEYCODE_VOLUME_UP = 24,
KEYCODE_VOLUME_DOWN = 25,
KEYCODE_POWER = 26,
KEYCODE_CAMERA = 27,
KEYCODE_CLEAR = 28,
KEYCODE_A = 29,
KEYCODE_B = 30,
KEYCODE_C = 31,
KEYCODE_D = 32,
KEYCODE_E = 33,
KEYCODE_F = 34,
KEYCODE_G = 35,
KEYCODE_H = 36,
KEYCODE_I = 37,
KEYCODE_J = 38,
KEYCODE_K = 39,
KEYCODE_L = 40,
KEYCODE_M = 41,
KEYCODE_N = 42,
KEYCODE_O = 43,
KEYCODE_P = 44,
KEYCODE_Q = 45,
KEYCODE_R = 46,
KEYCODE_S = 47,
KEYCODE_T = 48,
KEYCODE_U = 49,
KEYCODE_V = 50,
KEYCODE_W = 51,
KEYCODE_X = 52,
KEYCODE_Y = 53,
KEYCODE_Z = 54,
KEYCODE_COMMA = 55,
KEYCODE_PERIOD = 56,
KEYCODE_ALT_LEFT = 57,
KEYCODE_ALT_RIGHT = 58,
KEYCODE_SHIFT_LEFT = 59,
KEYCODE_SHIFT_RIGHT = 60,
KEYCODE_TAB = 61,
KEYCODE_SPACE = 62,
KEYCODE_SYM = 63,
KEYCODE_EXPLORER = 64,
KEYCODE_ENVELOPE = 65,
KEYCODE_ENTER = 66,
KEYCODE_DEL = 67,
KEYCODE_GRAVE = 68,
KEYCODE_MINUS = 69,
KEYCODE_EQUALS = 70,
KEYCODE_LEFT_BRACKET = 71,
KEYCODE_RIGHT_BRACKET = 72,
KEYCODE_BACKSLASH = 73,
KEYCODE_SEMICOLON = 74,
KEYCODE_APOSTROPHE = 75,
KEYCODE_SLASH = 76,
KEYCODE_AT = 77,
KEYCODE_NUM = 78,
KEYCODE_HEADSETHOOK = 79,
KEYCODE_FOCUS = 80,
KEYCODE_PLUS = 81,
KEYCODE_MENU = 82,
KEYCODE_NOTIFICATION = 83,
KEYCODE_SEARCH = 84,
KEYCODE_MEDIA_PLAY_PAUSE= 85,
KEYCODE_MEDIA_STOP = 86,
KEYCODE_MEDIA_NEXT = 87,
KEYCODE_MEDIA_PREVIOUS = 88,
KEYCODE_MEDIA_REWIND = 89,
KEYCODE_MEDIA_FAST_FORWARD = 90,
KEYCODE_MUTE = 91,
KEYCODE_LAST = KEYCODE_MUTE
};
#endif

View File

@@ -27,6 +27,8 @@ class Globals {
public static boolean AppUsesMultitouch = false;
public static int AppTouchscreenKeyboardKeysAmount = 4;
// Phone-specific config
// It will download app data to /sdcard/alienblaster if set to true,
// otherwise it will download it to /data/data/de.schwardtnet.alienblaster/files

View File

@@ -27,7 +27,6 @@ public class MainActivity extends Activity {
setContentView(_tv);
mLoadLibraryStub = new LoadLibrary();
mAudioThread = new AudioThread(this);
Settings.Load(this);
}

View File

@@ -346,7 +346,7 @@ class Settings
if( Globals.UseTouchscreenKeyboard )
{
nativeSetTouchscreenKeyboardUsed();
nativeSetupScreenKeyboard(Globals.TouchscreenKeyboardSize, 4);
nativeSetupScreenKeyboard(Globals.TouchscreenKeyboardSize, Globals.AppTouchscreenKeyboardKeysAmount);
}
nativeSetAccelerometerSensitivity(Globals.AccelerometerSensitivity);
nativeSetTrackballDampening(Globals.TrackballDampening);