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

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

Issue 133943002: Gamepad API support for chrome on android (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 6 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.content.browser.input;
6
7 import android.view.KeyEvent;
8
9 /**
10 * Class to manage mapping information related to each supported gamepad control ler device.
11 */
12 class GamepadMappings {
13 public static boolean mapToStandardGamepad(float[] mappedAxis, float[] mappe dButtons,
14 float[] rawAxes, float[] rawButtons, String deviceName) {
15 if (deviceName.contains("NVIDIA Corporation NVIDIA Controller")) {
16 mapShieldGamepad(mappedButtons, rawButtons, mappedAxis, rawAxes);
17 return true;
18 } else if (deviceName.contains("Microsoft X-Box 360 pad")) {
19 mapXBox360Gamepad(mappedButtons, rawButtons, mappedAxis, rawAxes);
20 return true;
21 }
22
23 mapUnkownGamepad(mappedButtons, rawButtons, mappedAxis, rawAxes);
24 return false;
25 }
26
27 private static void mapCommonButtons(float[] mappedButtons, float[] rawButto ns) {
28 mappedButtons[CanonicalButtonIndex.BUTTON_PRIMARY] = rawButtons[KeyEvent .KEYCODE_BUTTON_A];
29 mappedButtons[CanonicalButtonIndex.BUTTON_SECONDARY] =
30 rawButtons[KeyEvent.KEYCODE_BUTTON_B];
31 mappedButtons[CanonicalButtonIndex.BUTTON_TERTIARY] =
32 rawButtons[KeyEvent.KEYCODE_BUTTON_X];
33 mappedButtons[CanonicalButtonIndex.BUTTON_QUATERNARY] =
34 rawButtons[KeyEvent.KEYCODE_BUTTON_Y];
35 mappedButtons[CanonicalButtonIndex.BUTTON_LEFT_SHOULDER] =
36 rawButtons[KeyEvent.KEYCODE_BUTTON_L1];
37 mappedButtons[CanonicalButtonIndex.BUTTON_RIGHT_SHOULDER] =
38 rawButtons[KeyEvent.KEYCODE_BUTTON_R1];
39 mappedButtons[CanonicalButtonIndex.BUTTON_BACK_SELECT] =
40 rawButtons[KeyEvent.KEYCODE_BUTTON_SELECT];
41 mappedButtons[CanonicalButtonIndex.BUTTON_START] =
42 rawButtons[KeyEvent.KEYCODE_BUTTON_START];
43 mappedButtons[CanonicalButtonIndex.BUTTON_LEFT_THUMBSTICK] =
44 rawButtons[KeyEvent.KEYCODE_BUTTON_THUMBL];
45 mappedButtons[CanonicalButtonIndex.BUTTON_RIGHT_THUMBSTICK] =
46 rawButtons[KeyEvent.KEYCODE_BUTTON_THUMBR];
47 mappedButtons[CanonicalButtonIndex.BUTTON_META] = rawButtons[KeyEvent.KE YCODE_BUTTON_MODE];
48 }
49
50 private static void mapDpadButtonsToAxes(float[] mappedButtons, float[] rawA xes) {
51 // Negative value indicates dpad up.
52 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_UP] = negativeAxisValueAs Button(rawAxes[9]);
53 // Positive axis value indicates dpad down.
54 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_DOWN] =
55 positiveAxisValueAsButton(rawAxes[9]);
56 // Positive axis value indicates dpad right.
57 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_RIGHT] =
58 positiveAxisValueAsButton(rawAxes[8]);
59 // Negative value indicates dpad left.
60 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_LEFT] =
61 negativeAxisValueAsButton(rawAxes[8]);
62 }
63
64 private static void mapAxes(float[] mappedAxis, float[] rawAxes) {
65 // Standard gamepad can have only four axes.
66 mappedAxis[CanonicalAxisIndex.AXIS_LEFT_STICK_X] = rawAxes[0];
67 mappedAxis[CanonicalAxisIndex.AXIS_LEFT_STICK_Y] = rawAxes[1];
68 mappedAxis[CanonicalAxisIndex.AXIS_RIGHT_STICK_X] = rawAxes[4];
69 mappedAxis[CanonicalAxisIndex.AXIS_RIGHT_STICK_Y] = rawAxes[5];
70 }
71
72 private static float negativeAxisValueAsButton(float input) {
73 return (input < -0.5f) ? 1.f : 0.f;
74 }
75
76 private static float positiveAxisValueAsButton(float input) {
77 return (input > 0.5f) ? 1.f : 0.f;
78 }
79
80 /**
81 * Method for mapping Nvidia gamepad axis and button values
82 * to standard gamepad button and axes values.
83 */
84 private static void mapShieldGamepad(float[] mappedButtons, float[] rawButto ns,
85 float[] mappedAxis, float[] rawAxes) {
86 mapCommonButtons(mappedButtons, rawButtons);
87
88 mappedButtons[CanonicalButtonIndex.BUTTON_LEFT_TRIGGER] = rawAxes[2]; // or rawAxes[3];
Ted C 2014/04/16 23:36:53 I'm confused of what the comment // or rawAxes[3]
SaurabhK 2014/04/18 14:51:57 On 2014/04/16 23:36:53, Ted C wrote: No there is
kbalazs 2014/04/18 15:21:20 I agree :)
89 mappedButtons[CanonicalButtonIndex.BUTTON_RIGHT_TRIGGER] = rawAxes[6]; / / or rawAxes[7];
90
91 mapDpadButtonsToAxes(mappedButtons, rawAxes);
92 mapAxes(mappedAxis, rawAxes);
93 }
94
95 /**
96 * Method for mapping Microsoft XBox 360 gamepad axis and button values
97 * to standard gamepad button and axes values.
98 */
99 private static void mapXBox360Gamepad(float[] mappedButtons, float[] rawButt ons,
100 float[] mappedAxis, float[] rawAxes) {
101 mapCommonButtons(mappedButtons, rawButtons);
102
103 mappedButtons[CanonicalButtonIndex.BUTTON_LEFT_TRIGGER] = rawAxes[2]; // or rawAxes[3];
104 mappedButtons[CanonicalButtonIndex.BUTTON_RIGHT_TRIGGER] = rawAxes[6]; / / or rawAxes[7];
105
106 mapDpadButtonsToAxes(mappedButtons, rawAxes);
107 mapAxes(mappedAxis, rawAxes);
108 }
109
110 /**
111 * Method for mapping Unkown gamepad axis and button values
112 * to standard gamepad button and axes values.
113 */
114 private static void mapUnkownGamepad(float[] mappedButtons, float[] rawButto ns,
115 float[] mappedAxis, float[] rawAxes) {
116 mapCommonButtons(mappedButtons, rawButtons);
117
118 mappedButtons[CanonicalButtonIndex.BUTTON_LEFT_TRIGGER] =
119 rawButtons[KeyEvent.KEYCODE_BUTTON_L2];
120 mappedButtons[CanonicalButtonIndex.BUTTON_RIGHT_TRIGGER] =
121 rawButtons[KeyEvent.KEYCODE_BUTTON_R2];
122
123 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_UP] = rawButtons[KeyEvent .KEYCODE_DPAD_UP];
124 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_DOWN] =
125 rawButtons[KeyEvent.KEYCODE_DPAD_DOWN];
126 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_RIGHT] =
127 rawButtons[KeyEvent.KEYCODE_DPAD_RIGHT];
128 mappedButtons[CanonicalButtonIndex.BUTTON_DPAD_LEFT] =
129 rawButtons[KeyEvent.KEYCODE_DPAD_LEFT];
130
131 mapAxes(mappedAxis, rawAxes);
132 }
133
134 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698