Buggy code:
public class CameraInputController extends GestureDetector { public int rotateButton = Buttons . LEFT ; public float rotateAngle = 360.0F ; public int translateButton = Buttons . RIGHT ; public float translateUnits = 10.0F ; public int forwardButton = Buttons . MIDDLE ; public int activateKey = 0 ; protected boolean activatePressed ; public boolean alwaysScroll = true ; public float scrollFactor = - 0.1F ; public float pinchZoomFactor = 10.0F ; public boolean autoUpdate = true ; public Vector3 target = new Vector3 ( ) ; public boolean translateTarget = true ; public boolean forwardTarget = true ; public boolean scrollTarget = false ; public int forwardKey = Keys . W ; protected boolean forwardPressed ; public int backwardKey = Keys . S ; protected boolean backwardPressed ; public int rotateRightKey = Keys . A ; protected boolean rotateRightPressed ; public int rotateLeftKey = Keys . D ; protected boolean rotateLeftPressed ; public Camera camera ; protected int button = - 1 ; private float startX ; private float startY ; private final Vector3 tmpV1 = new Vector3 ( ) ; private final Vector3 tmpV2 = new Vector3 ( ) ; protected static class CameraGestureListener extends GestureAdapter { public CameraInputController controller ; private float previousZoom ; @ Override public boolean touchDown ( float x , float y , int pointer , int button ) { } @ Override public boolean tap ( float x , float y , int count , int button ) { } @ Override public boolean longPress ( float x , float y ) { } @ Override public boolean fling ( float velocityX , float velocityY , int button ) { } @ Override public boolean pan ( float x , float y , float deltaX , float deltaY ) { } @ Override public boolean zoom ( float initialDistance , float distance ) { } @ Override public boolean pinch ( Vector2 initialPointer1 , Vector2 initialPointer2 , Vector2 pointer1 , Vector2 pointer2 ) { } } protected final CameraInputController . CameraGestureListener gestureListener ; protected CameraInputController ( final CameraInputController . CameraGestureListener gestureListener , final Camera camera ) { } public CameraInputController ( final Camera camera ) { } public void update ( ) { } private int touched ; private boolean multiTouch ; @ Override public boolean touchDown ( int screenX , int screenY , int pointer , int button ) { touched |= 1 << pointer ; multiTouch = ! ( MathUtils . isPowerOfTwo ( touched ) ) ; if ( multiTouch ) this . button = - 1 ; else if ( ( ( this . button ) < 0 ) && ( ( ( activateKey ) == 0 ) || ( activatePressed ) ) ) { startX = screenX ; startY = screenY ; this . button = button ; } <START_BUG> return ( super . touchDown ( screenX , screenY , pointer , button ) ) || ( activatePressed ) ; <END_BUG> } @ Override public boolean touchUp ( int screenX , int screenY , int pointer , int button ) { } protected boolean process ( float deltaX , float deltaY , int button ) { } @ Override public boolean touchDragged ( int screenX , int screenY , int pointer ) { } @ Override public boolean scrolled ( int amount ) { } public boolean zoom ( float amount ) { } protected boolean pinchZoom ( float amount ) { } @ Override public boolean keyDown ( int keycode ) { } @ Override public boolean keyUp ( int keycode ) { } }

Fix:
return ( super . touchDown ( screenX , screenY , pointer , button ) ) || ( ( ( activateKey ) == 0 ) || ( activatePressed ) ) ;