diff options
| -rw-r--r-- | platform/android/java/src/org/godotengine/godot/input/GodotInputHandler.java | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotInputHandler.java b/platform/android/java/src/org/godotengine/godot/input/GodotInputHandler.java index d01f958123..a443a0ad90 100644 --- a/platform/android/java/src/org/godotengine/godot/input/GodotInputHandler.java +++ b/platform/android/java/src/org/godotengine/godot/input/GodotInputHandler.java @@ -65,6 +65,14 @@ public class GodotInputHandler implements InputDeviceListener {  		godotView.queueEvent(task);  	} +	private boolean isKeyEvent_GameDevice(int source) { +		// Note that keyboards are often (SOURCE_KEYBOARD | SOURCE_DPAD) +		if (source == (InputDevice.SOURCE_KEYBOARD | InputDevice.SOURCE_DPAD)) +			return false; + +		return (source & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK || (source & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD || (source & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD; +	} +  	public boolean onKeyUp(final int keyCode, KeyEvent event) {  		if (keyCode == KeyEvent.KEYCODE_BACK) {  			return true; @@ -75,7 +83,7 @@ public class GodotInputHandler implements InputDeviceListener {  		};  		int source = event.getSource(); -		if ((source & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK || (source & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD || (source & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) { +		if (isKeyEvent_GameDevice(source)) {  			final int button = getGodotButton(keyCode);  			final int device_id = findJoystickDevice(event.getDeviceId()); @@ -118,7 +126,7 @@ public class GodotInputHandler implements InputDeviceListener {  		int source = event.getSource();  		//Log.e(TAG, String.format("Key down! source %d, device %d, joystick %d, %d, %d", event.getDeviceId(), source, (source & InputDevice.SOURCE_JOYSTICK), (source & InputDevice.SOURCE_DPAD), (source & InputDevice.SOURCE_GAMEPAD))); -		if ((source & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK || (source & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD || (source & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) { +		if (isKeyEvent_GameDevice(source)) {  			if (event.getRepeatCount() > 0) // ignore key echo  				return true; |