Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9685)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/input/GamepadMappings.java

Issue 875813003: Gamepad: Add support for the Amazon Fire Game Controller (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
index f0c14d1ae88a60f248475173fe0d2d4876ca11e1..fee108bfecd4f9776e04ab24468bab1b9bfa99f6 100644
--- 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
@@ -1,4 +1,4 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
+// 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.
@@ -8,17 +8,23 @@ import android.view.KeyEvent;
import android.view.MotionEvent;
import org.chromium.base.JNINamespace;
+import org.chromium.base.VisibleForTesting;
/**
* Class to manage mapping information related to each supported gamepad controller device.
*/
@JNINamespace("content")
class GamepadMappings {
- private static final String NVIDIA_SHIELD_DEVICE_NAME_PREFIX =
- "NVIDIA Corporation NVIDIA Controller";
- private static final String MICROSOFT_XBOX_PAD_DEVICE_NAME = "Microsoft X-Box 360 pad";
- private static final String PS3_SIXAXIS_DEVICE_NAME = "Sony PLAYSTATION(R)3 Controller";
- private static final String SAMSUNG_EI_GP20_DEVICE_NAME = "Samsung Game Pad EI-GP20";
+ @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) {
@@ -34,6 +40,9 @@ class GamepadMappings {
} 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);
@@ -115,6 +124,13 @@ class GamepadMappings {
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];
@@ -122,11 +138,13 @@ class GamepadMappings {
mappedButtons[CanonicalButtonIndex.RIGHT_TRIGGER] = rTrigger;
}
- private static float negativeAxisValueAsButton(float input) {
+ @VisibleForTesting
+ static float negativeAxisValueAsButton(float input) {
return (input < -0.5f) ? 1.f : 0.f;
}
- private static float positiveAxisValueAsButton(float input) {
+ @VisibleForTesting
+ static float positiveAxisValueAsButton(float input) {
return (input > 0.5f) ? 1.f : 0.f;
}
@@ -140,6 +158,23 @@ class GamepadMappings {
}
/**
+ * 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.
*/

Powered by Google App Engine
This is Rietveld 408576698