Index: content/public/android/java/src/org/chromium/content/browser/input/GamepadMappings.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/GamepadMappings.java b/content/public/android/java/src/org/chromium/content/browser/input/GamepadMappings.java |
deleted file mode 100644 |
index 1ded67f0bddd1465d72c7892f92614398ec34f68..0000000000000000000000000000000000000000 |
--- a/content/public/android/java/src/org/chromium/content/browser/input/GamepadMappings.java |
+++ /dev/null |
@@ -1,254 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.content.browser.input; |
- |
-import android.view.KeyEvent; |
-import android.view.MotionEvent; |
- |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.base.annotations.JNINamespace; |
- |
-/** |
- * Class to manage mapping information related to each supported gamepad controller device. |
- */ |
-@JNINamespace("content") |
-class GamepadMappings { |
- @VisibleForTesting |
- static final String NVIDIA_SHIELD_DEVICE_NAME_PREFIX = "NVIDIA Corporation NVIDIA Controller"; |
- @VisibleForTesting |
- static final String MICROSOFT_XBOX_PAD_DEVICE_NAME = "Microsoft X-Box 360 pad"; |
- @VisibleForTesting |
- static final String PS3_SIXAXIS_DEVICE_NAME = "Sony PLAYSTATION(R)3 Controller"; |
- @VisibleForTesting |
- static final String SAMSUNG_EI_GP20_DEVICE_NAME = "Samsung Game Pad EI-GP20"; |
- @VisibleForTesting |
- static final String AMAZON_FIRE_DEVICE_NAME = "Amazon Fire Game Controller"; |
- |
- public static boolean mapToStandardGamepad(float[] mappedAxes, float[] mappedButtons, |
- float[] rawAxes, float[] rawButtons, String deviceName) { |
- if (deviceName.startsWith(NVIDIA_SHIELD_DEVICE_NAME_PREFIX)) { |
- mapShieldGamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- return true; |
- } else if (deviceName.equals(MICROSOFT_XBOX_PAD_DEVICE_NAME)) { |
- mapXBox360Gamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- return true; |
- } else if (deviceName.equals(PS3_SIXAXIS_DEVICE_NAME)) { |
- mapPS3SixAxisGamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- return true; |
- } else if (deviceName.equals(SAMSUNG_EI_GP20_DEVICE_NAME)) { |
- mapSamsungEIGP20Gamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- return true; |
- } else if (deviceName.equals(AMAZON_FIRE_DEVICE_NAME)) { |
- mapAmazonFireGamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- return true; |
- } |
- |
- mapUnknownGamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- return false; |
- } |
- |
- private static void mapCommonXYABButtons(float[] mappedButtons, float[] rawButtons) { |
- float a = rawButtons[KeyEvent.KEYCODE_BUTTON_A]; |
- float b = rawButtons[KeyEvent.KEYCODE_BUTTON_B]; |
- float x = rawButtons[KeyEvent.KEYCODE_BUTTON_X]; |
- float y = rawButtons[KeyEvent.KEYCODE_BUTTON_Y]; |
- mappedButtons[CanonicalButtonIndex.PRIMARY] = a; |
- mappedButtons[CanonicalButtonIndex.SECONDARY] = b; |
- mappedButtons[CanonicalButtonIndex.TERTIARY] = x; |
- mappedButtons[CanonicalButtonIndex.QUATERNARY] = y; |
- } |
- |
- private static void mapCommonStartSelectMetaButtons( |
- float[] mappedButtons, float[] rawButtons) { |
- float start = rawButtons[KeyEvent.KEYCODE_BUTTON_START]; |
- float select = rawButtons[KeyEvent.KEYCODE_BUTTON_SELECT]; |
- float mode = rawButtons[KeyEvent.KEYCODE_BUTTON_MODE]; |
- mappedButtons[CanonicalButtonIndex.START] = start; |
- mappedButtons[CanonicalButtonIndex.BACK_SELECT] = select; |
- mappedButtons[CanonicalButtonIndex.META] = mode; |
- } |
- |
- private static void mapCommonThumbstickButtons(float[] mappedButtons, float[] rawButtons) { |
- float thumbL = rawButtons[KeyEvent.KEYCODE_BUTTON_THUMBL]; |
- float thumbR = rawButtons[KeyEvent.KEYCODE_BUTTON_THUMBR]; |
- mappedButtons[CanonicalButtonIndex.LEFT_THUMBSTICK] = thumbL; |
- mappedButtons[CanonicalButtonIndex.RIGHT_THUMBSTICK] = thumbR; |
- } |
- |
- private static void mapCommonTriggerButtons(float[] mappedButtons, float[] rawButtons) { |
- float l1 = rawButtons[KeyEvent.KEYCODE_BUTTON_L1]; |
- float r1 = rawButtons[KeyEvent.KEYCODE_BUTTON_R1]; |
- mappedButtons[CanonicalButtonIndex.LEFT_TRIGGER] = l1; |
- mappedButtons[CanonicalButtonIndex.RIGHT_TRIGGER] = r1; |
- } |
- |
- private static void mapTriggerButtonsToTopShoulder(float[] mappedButtons, float[] rawButtons) { |
- float l1 = rawButtons[KeyEvent.KEYCODE_BUTTON_L1]; |
- float r1 = rawButtons[KeyEvent.KEYCODE_BUTTON_R1]; |
- mappedButtons[CanonicalButtonIndex.LEFT_SHOULDER] = l1; |
- mappedButtons[CanonicalButtonIndex.RIGHT_SHOULDER] = r1; |
- } |
- |
- private static void mapCommonDpadButtons(float[] mappedButtons, float[] rawButtons) { |
- float dpadDown = rawButtons[KeyEvent.KEYCODE_DPAD_DOWN]; |
- float dpadUp = rawButtons[KeyEvent.KEYCODE_DPAD_UP]; |
- float dpadLeft = rawButtons[KeyEvent.KEYCODE_DPAD_LEFT]; |
- float dpadRight = rawButtons[KeyEvent.KEYCODE_DPAD_RIGHT]; |
- mappedButtons[CanonicalButtonIndex.DPAD_DOWN] = dpadDown; |
- mappedButtons[CanonicalButtonIndex.DPAD_UP] = dpadUp; |
- mappedButtons[CanonicalButtonIndex.DPAD_LEFT] = dpadLeft; |
- mappedButtons[CanonicalButtonIndex.DPAD_RIGHT] = dpadRight; |
- } |
- |
- private static void mapXYAxes(float[] mappedAxes, float[] rawAxes) { |
- mappedAxes[CanonicalAxisIndex.LEFT_STICK_X] = rawAxes[MotionEvent.AXIS_X]; |
- mappedAxes[CanonicalAxisIndex.LEFT_STICK_Y] = rawAxes[MotionEvent.AXIS_Y]; |
- } |
- |
- private static void mapRXAndRYAxesToRightStick(float[] mappedAxes, float[] rawAxes) { |
- mappedAxes[CanonicalAxisIndex.RIGHT_STICK_X] = rawAxes[MotionEvent.AXIS_RX]; |
- mappedAxes[CanonicalAxisIndex.RIGHT_STICK_Y] = rawAxes[MotionEvent.AXIS_RY]; |
- } |
- |
- private static void mapZAndRZAxesToRightStick(float[] mappedAxes, float[] rawAxes) { |
- mappedAxes[CanonicalAxisIndex.RIGHT_STICK_X] = rawAxes[MotionEvent.AXIS_Z]; |
- mappedAxes[CanonicalAxisIndex.RIGHT_STICK_Y] = rawAxes[MotionEvent.AXIS_RZ]; |
- } |
- |
- private static void mapTriggerAxexToShoulderButtons(float[] mappedButtons, float[] rawAxes) { |
- float lTrigger = rawAxes[MotionEvent.AXIS_LTRIGGER]; |
- float rTrigger = rawAxes[MotionEvent.AXIS_RTRIGGER]; |
- mappedButtons[CanonicalButtonIndex.LEFT_SHOULDER] = lTrigger; |
- mappedButtons[CanonicalButtonIndex.RIGHT_SHOULDER] = rTrigger; |
- } |
- |
- private static void mapPedalAxesToBottomShoulder(float[] mappedButtons, float[] rawAxes) { |
- float lTrigger = rawAxes[MotionEvent.AXIS_BRAKE]; |
- float rTrigger = rawAxes[MotionEvent.AXIS_GAS]; |
- mappedButtons[CanonicalButtonIndex.LEFT_TRIGGER] = lTrigger; |
- mappedButtons[CanonicalButtonIndex.RIGHT_TRIGGER] = rTrigger; |
- } |
- |
- private static void mapTriggerAxesToBottomShoulder(float[] mappedButtons, float[] rawAxes) { |
- float lTrigger = rawAxes[MotionEvent.AXIS_LTRIGGER]; |
- float rTrigger = rawAxes[MotionEvent.AXIS_RTRIGGER]; |
- mappedButtons[CanonicalButtonIndex.LEFT_TRIGGER] = lTrigger; |
- mappedButtons[CanonicalButtonIndex.RIGHT_TRIGGER] = rTrigger; |
- } |
- |
- @VisibleForTesting |
- static float negativeAxisValueAsButton(float input) { |
- return (input < -0.5f) ? 1.f : 0.f; |
- } |
- |
- @VisibleForTesting |
- static float positiveAxisValueAsButton(float input) { |
- return (input > 0.5f) ? 1.f : 0.f; |
- } |
- |
- private static void mapHatAxisToDpadButtons(float[] mappedButtons, float[] rawAxes) { |
- float hatX = rawAxes[MotionEvent.AXIS_HAT_X]; |
- float hatY = rawAxes[MotionEvent.AXIS_HAT_Y]; |
- mappedButtons[CanonicalButtonIndex.DPAD_LEFT] = negativeAxisValueAsButton(hatX); |
- mappedButtons[CanonicalButtonIndex.DPAD_RIGHT] = positiveAxisValueAsButton(hatX); |
- mappedButtons[CanonicalButtonIndex.DPAD_UP] = negativeAxisValueAsButton(hatY); |
- mappedButtons[CanonicalButtonIndex.DPAD_DOWN] = positiveAxisValueAsButton(hatY); |
- } |
- |
- /** |
- * Method for mapping Amazon Fire gamepad axis and button values |
- * to standard gamepad button and axes values. |
- */ |
- private static void mapAmazonFireGamepad( |
- float[] mappedButtons, float[] rawButtons, float[] mappedAxes, float[] rawAxes) { |
- mapCommonXYABButtons(mappedButtons, rawButtons); |
- mapTriggerButtonsToTopShoulder(mappedButtons, rawButtons); |
- mapCommonThumbstickButtons(mappedButtons, rawButtons); |
- mapCommonStartSelectMetaButtons(mappedButtons, rawButtons); |
- mapPedalAxesToBottomShoulder(mappedButtons, rawAxes); |
- mapHatAxisToDpadButtons(mappedButtons, rawAxes); |
- |
- mapXYAxes(mappedAxes, rawAxes); |
- mapZAndRZAxesToRightStick(mappedAxes, rawAxes); |
- } |
- |
- /** |
- * Method for mapping Nvidia gamepad axis and button values |
- * to standard gamepad button and axes values. |
- */ |
- private static void mapShieldGamepad(float[] mappedButtons, float[] rawButtons, |
- float[] mappedAxes, float[] rawAxes) { |
- mapCommonXYABButtons(mappedButtons, rawButtons); |
- mapTriggerButtonsToTopShoulder(mappedButtons, rawButtons); |
- mapCommonThumbstickButtons(mappedButtons, rawButtons); |
- mapCommonStartSelectMetaButtons(mappedButtons, rawButtons); |
- mapTriggerAxesToBottomShoulder(mappedButtons, rawAxes); |
- mapHatAxisToDpadButtons(mappedButtons, rawAxes); |
- |
- mapXYAxes(mappedAxes, rawAxes); |
- mapZAndRZAxesToRightStick(mappedAxes, rawAxes); |
- } |
- |
- /** |
- * Method for mapping Microsoft XBox 360 gamepad axis and button values |
- * to standard gamepad button and axes values. |
- */ |
- private static void mapXBox360Gamepad(float[] mappedButtons, float[] rawButtons, |
- float[] mappedAxes, float[] rawAxes) { |
- // These are actually mapped the same way in Android. |
- mapShieldGamepad(mappedButtons, rawButtons, mappedAxes, rawAxes); |
- } |
- |
- private static void mapPS3SixAxisGamepad(float[] mappedButtons, float[] rawButtons, |
- float[] mappedAxes, float[] rawAxes) { |
- // On PS3 X/Y has higher priority. |
- float a = rawButtons[KeyEvent.KEYCODE_BUTTON_A]; |
- float b = rawButtons[KeyEvent.KEYCODE_BUTTON_B]; |
- float x = rawButtons[KeyEvent.KEYCODE_BUTTON_X]; |
- float y = rawButtons[KeyEvent.KEYCODE_BUTTON_Y]; |
- mappedButtons[CanonicalButtonIndex.PRIMARY] = x; |
- mappedButtons[CanonicalButtonIndex.SECONDARY] = y; |
- mappedButtons[CanonicalButtonIndex.TERTIARY] = a; |
- mappedButtons[CanonicalButtonIndex.QUATERNARY] = b; |
- |
- mapCommonTriggerButtons(mappedButtons, rawButtons); |
- mapCommonThumbstickButtons(mappedButtons, rawButtons); |
- mapCommonDpadButtons(mappedButtons, rawButtons); |
- mapCommonStartSelectMetaButtons(mappedButtons, rawButtons); |
- mapTriggerAxexToShoulderButtons(mappedButtons, rawAxes); |
- |
- mapXYAxes(mappedAxes, rawAxes); |
- mapZAndRZAxesToRightStick(mappedAxes, rawAxes); |
- } |
- |
- private static void mapSamsungEIGP20Gamepad(float[] mappedButtons, float[] rawButtons, |
- float[] mappedAxes, float[] rawAxes) { |
- mapCommonXYABButtons(mappedButtons, rawButtons); |
- mapCommonTriggerButtons(mappedButtons, rawButtons); |
- mapCommonThumbstickButtons(mappedButtons, rawButtons); |
- mapCommonStartSelectMetaButtons(mappedButtons, rawButtons); |
- mapHatAxisToDpadButtons(mappedButtons, rawAxes); |
- |
- mapXYAxes(mappedAxes, rawAxes); |
- mapRXAndRYAxesToRightStick(mappedAxes, rawAxes); |
- } |
- |
- /** |
- * Method for mapping Unkown gamepad axis and button values |
- * to standard gamepad button and axes values. |
- */ |
- private static void mapUnknownGamepad(float[] mappedButtons, float[] rawButtons, |
- float[] mappedAxes, float[] rawAxes) { |
- mapCommonXYABButtons(mappedButtons, rawButtons); |
- mapCommonTriggerButtons(mappedButtons, rawButtons); |
- mapCommonThumbstickButtons(mappedButtons, rawButtons); |
- mapCommonStartSelectMetaButtons(mappedButtons, rawButtons); |
- mapTriggerAxexToShoulderButtons(mappedButtons, rawAxes); |
- mapCommonDpadButtons(mappedButtons, rawButtons); |
- |
- mapXYAxes(mappedAxes, rawAxes); |
- mapRXAndRYAxesToRightStick(mappedAxes, rawAxes); |
- } |
-} |