Fix ignored gamepad button when event is not have gamepad or joystick source.
This commit is contained in:
parent
05ff89f1a3
commit
6f16759f6c
1 changed files with 19 additions and 11 deletions
|
@ -365,7 +365,9 @@ public class XashActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Engine will bind these to AUX${val} virtual keys
|
// Engine will bind these to AUX${val} virtual keys
|
||||||
if( isGamePad || isJoystick )
|
// Android may send event without source flags set to GAMEPAD or CLASS_JOYSTICK
|
||||||
|
// so check for gamepad buttons anyway
|
||||||
|
if( isGamePad || isJoystick || XashActivity.handler.isGamepadButton( keyCode ) )
|
||||||
{
|
{
|
||||||
final int id = 0;
|
final int id = 0;
|
||||||
byte val = 15;
|
byte val = 15;
|
||||||
|
@ -377,42 +379,48 @@ public class XashActivity extends Activity {
|
||||||
case KeyEvent.KEYCODE_BUTTON_B: val = 1; break;
|
case KeyEvent.KEYCODE_BUTTON_B: val = 1; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_X: val = 2; break;
|
case KeyEvent.KEYCODE_BUTTON_X: val = 2; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_Y: val = 3; break;
|
case KeyEvent.KEYCODE_BUTTON_Y: val = 3; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_L1: val = 4; break;
|
case KeyEvent.KEYCODE_BUTTON_L1: val = 4; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_R1: val = 5; break;
|
case KeyEvent.KEYCODE_BUTTON_R1: val = 5; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_SELECT: val = 6; break;
|
case KeyEvent.KEYCODE_BUTTON_SELECT: val = 6; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_MODE: val = 7; break;
|
case KeyEvent.KEYCODE_BUTTON_MODE: val = 7; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_START: val = 8; break;
|
case KeyEvent.KEYCODE_BUTTON_START: val = 8; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_THUMBL: val = 9; break;
|
case KeyEvent.KEYCODE_BUTTON_THUMBL: val = 9; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_THUMBR: val = 10; break;
|
case KeyEvent.KEYCODE_BUTTON_THUMBR: val = 10; break;
|
||||||
|
|
||||||
// other
|
// other
|
||||||
case KeyEvent.KEYCODE_BUTTON_L2: val = 13; break;
|
|
||||||
case KeyEvent.KEYCODE_BUTTON_R2: val = 14; break;
|
|
||||||
case KeyEvent.KEYCODE_BUTTON_C: val = 11; break;
|
case KeyEvent.KEYCODE_BUTTON_C: val = 11; break;
|
||||||
case KeyEvent.KEYCODE_BUTTON_Z: val = 12; break;
|
case KeyEvent.KEYCODE_BUTTON_Z: val = 12; break;
|
||||||
|
case KeyEvent.KEYCODE_BUTTON_L2: val = 13; break;
|
||||||
|
case KeyEvent.KEYCODE_BUTTON_R2: val = 14; break;
|
||||||
default:
|
default:
|
||||||
if( keyCode >= KeyEvent.KEYCODE_BUTTON_1 && keyCode <= KeyEvent.KEYCODE_BUTTON_16 )
|
if( keyCode >= KeyEvent.KEYCODE_BUTTON_1 && keyCode <= KeyEvent.KEYCODE_BUTTON_16 )
|
||||||
{
|
{
|
||||||
val = (byte)(keyCode - KeyEvent.KEYCODE_BUTTON_1 + 15);
|
val = (byte)((keyCode - KeyEvent.KEYCODE_BUTTON_1) + 15);
|
||||||
}
|
}
|
||||||
else if( XashActivity.handler.isGamepadButton(keyCode) )
|
else if( XashActivity.handler.isGamepadButton(keyCode) )
|
||||||
{
|
{
|
||||||
|
// maybe never reached, as all possible gamepad buttons are checked before
|
||||||
Log.d(TAG, "Unhandled GamePad button: " + XashActivity.handler.keyCodeToString(keyCode) );
|
Log.d(TAG, "Unhandled GamePad button: " + XashActivity.handler.keyCodeToString(keyCode) );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( performEngineKeyEvent( action, keyCode, event ) )
|
// must be never reached too
|
||||||
return true;
|
return performEngineKeyEvent( action, keyCode, event );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( event.getAction() == KeyEvent.ACTION_DOWN )
|
if( event.getAction() == KeyEvent.ACTION_DOWN )
|
||||||
|
{
|
||||||
nativeJoyButton( id, val, true );
|
nativeJoyButton( id, val, true );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if( event.getAction() == KeyEvent.ACTION_UP )
|
else if( event.getAction() == KeyEvent.ACTION_UP )
|
||||||
|
{
|
||||||
nativeJoyButton( id, val, false );
|
nativeJoyButton( id, val, false );
|
||||||
else return false;
|
return true;
|
||||||
return true;
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return performEngineKeyEvent( action, keyCode, event );
|
return performEngineKeyEvent( action, keyCode, event );
|
||||||
|
|
Loading…
Add table
Reference in a new issue