Patch to make volume keys change volume instead of in-game action, by lmak

This commit is contained in:
pelya
2011-05-26 11:27:50 +03:00
parent ebd3757b91
commit 3409066830
5 changed files with 645 additions and 527 deletions

View File

@@ -224,6 +224,7 @@ echo
echo "Redefine common keys to SDL keysyms"
echo "MENU and BACK hardware keys and TOUCHSCREEN virtual 'key' are available on all devices, other keys may be absent"
echo "SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices"
echo "Use word NO_REMAP if you want to preserve native functionality for certain key "
echo "TOUCHSCREEN DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK CAMERA ENTER DEL SEARCH CALL - Java keycodes"
echo "$RedefinedKeys - current SDL keycodes"
echo -n ": "
@@ -512,8 +513,47 @@ else
fi
KEY2=0
NoRemapMask=""
for KEY in $RedefinedKeys; do
RedefinedKeycodes="$RedefinedKeycodes -DSDL_ANDROID_KEYCODE_$KEY2=$KEY"
if [ "$KEY" = "NO_REMAP" ] ; then
case $KEY2 in
0)
#not used at the moment
;;
1)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_DPAD_CENTER"
;;
2)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_VOLUME_UP"
;;
3)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_VOLUME_DOWN"
;;
4)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_MENU"
;;
5)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_BACK"
;;
6)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_CAMERA"
;;
7)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_ENTER"
;;
8)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_DEL"
;;
9)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_SEARCH"
;;
10)
NoRemapMask="$NoRemapMask|KeyEvent.KEYCODE_CALL"
;;
esac
else
RedefinedKeycodes="$RedefinedKeycodes -DSDL_ANDROID_KEYCODE_$KEY2=$KEY"
fi
KEY2=`expr $KEY2 '+' 1`
done
@@ -585,7 +625,8 @@ cat project/src/Globals.java | \
sed "s/public static int AppTouchscreenKeyboardKeysAmountAutoFire = .*;/public static int AppTouchscreenKeyboardKeysAmountAutoFire = $AppTouchscreenKeyboardKeysAmountAutoFire;/" | \
sed "s%public static String ReadmeText = .*%public static String ReadmeText = \"$ReadmeText\".replace(\"^\",\"\\\n\");%" | \
sed "s%public static String CommandLine = .*%public static String CommandLine = \"$AppCmdline\";%" | \
sed "s/public static String AppLibraries.*/public static String AppLibraries[] = { $LibrariesToLoad };/" > \
sed "s/public static String AppLibraries.*/public static String AppLibraries[] = { $LibrariesToLoad };/" | \
sed "s/public static int RemapKeymask = .*;/public static int RemapKeymask = 0$NoRemapMask;/" > \
project/src/Globals.java.1
mv -f project/src/Globals.java.1 project/src/Globals.java

View File

@@ -103,4 +103,5 @@ class Globals {
public static String DataDir = new String("");
public static boolean SmoothVideo = false;
public static boolean MultiThreadedVideo = false;
public static int RemapKeymask = 0;
}

View File

@@ -325,10 +325,13 @@ public class MainActivity extends Activity {
_screenKeyboard.onKeyDown(keyCode, event);
else
if( mGLView != null )
mGLView.nativeKey( keyCode, 1 );
{
if( !mGLView.callNativeKey( keyCode, 1 ) )
return super.onKeyDown(keyCode, event);
}
else
if( keyCode == KeyEvent.KEYCODE_BACK && downloader != null )
{
{
if( downloader.DownloadFailed )
System.exit(1);
if( !downloader.DownloadComplete )
@@ -349,7 +352,10 @@ public class MainActivity extends Activity {
_screenKeyboard.onKeyUp(keyCode, event);
else
if( mGLView != null )
mGLView.nativeKey( keyCode, 0 );
{
if( !mGLView.callNativeKey( keyCode, 0 ) )
return super.onKeyUp(keyCode, event);
}
return true;
}

File diff suppressed because it is too large Load Diff

View File

@@ -401,16 +401,28 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
@Override
public boolean onKeyDown(int keyCode, final KeyEvent event) {
nativeKey( keyCode, 1 );
return true;
if( !callNativeKey( keyCode, 1 ) )
return super.onKeyDown(keyCode, event);
return true;
}
@Override
public boolean onKeyUp(int keyCode, final KeyEvent event) {
nativeKey( keyCode, 0 );
return true;
if( !callNativeKey( keyCode, 0 ) )
return super.onKeyUp(keyCode, event);
return true;
}
public boolean callNativeKey(int keyCode, int down) {
if( (Globals.RemapKeymask & keyCode ) == keyCode )
{
// no remap made for the key
return false;
}
nativeKey( keyCode, down );
return true;
}
DemoRenderer mRenderer;
MainActivity mParent;
DifferentTouchInput touchInput = null;