1 // Copyright (c) 2012 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.
5 #ifndef CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_
6 #define CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_
8 #include "base/strings/string_piece.h"
9 #include "content/common/gamepad_hardware_buffer.h"
13 typedef void (*GamepadStandardMappingFunction
)(
14 const blink::WebGamepad
& original
,
15 blink::WebGamepad
* mapped
);
17 GamepadStandardMappingFunction
GetGamepadStandardMappingFunction(
18 const base::StringPiece
& vendor_id
,
19 const base::StringPiece
& product_id
);
21 // This defines our canonical mapping order for gamepad-like devices. If these
22 // items cannot all be satisfied, it is a case-by-case judgement as to whether
23 // it is better to leave the device unmapped, or to partially map it. In
24 // general, err towards leaving it *unmapped* so that content can handle
27 // A Java counterpart will be generated for this enum.
28 // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.content.browser.input
29 // GENERATED_JAVA_PREFIX_TO_STRIP: BUTTON_INDEX_
30 enum CanonicalButtonIndex
{
32 BUTTON_INDEX_SECONDARY
,
33 BUTTON_INDEX_TERTIARY
,
34 BUTTON_INDEX_QUATERNARY
,
35 BUTTON_INDEX_LEFT_SHOULDER
,
36 BUTTON_INDEX_RIGHT_SHOULDER
,
37 BUTTON_INDEX_LEFT_TRIGGER
,
38 BUTTON_INDEX_RIGHT_TRIGGER
,
39 BUTTON_INDEX_BACK_SELECT
,
41 BUTTON_INDEX_LEFT_THUMBSTICK
,
42 BUTTON_INDEX_RIGHT_THUMBSTICK
,
44 BUTTON_INDEX_DPAD_DOWN
,
45 BUTTON_INDEX_DPAD_LEFT
,
46 BUTTON_INDEX_DPAD_RIGHT
,
51 // A Java counterpart will be generated for this enum.
52 // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.content.browser.input
53 // GENERATED_JAVA_PREFIX_TO_STRIP: AXIS_INDEX_
54 enum CanonicalAxisIndex
{
55 AXIS_INDEX_LEFT_STICK_X
,
56 AXIS_INDEX_LEFT_STICK_Y
,
57 AXIS_INDEX_RIGHT_STICK_X
,
58 AXIS_INDEX_RIGHT_STICK_Y
,
62 // Matches XInput's trigger deadzone
63 const float kDefaultButtonPressedThreshold
= 30.f
/255.f
;
65 // Common mapping functions
66 blink::WebGamepadButton
AxisToButton(float input
);
67 blink::WebGamepadButton
AxisNegativeAsButton(float input
);
68 blink::WebGamepadButton
AxisPositiveAsButton(float input
);
69 blink::WebGamepadButton
ButtonFromButtonAndAxis(
70 blink::WebGamepadButton button
, float axis
);
71 blink::WebGamepadButton
NullButton();
72 void DpadFromAxis(blink::WebGamepad
* mapped
, float dir
);
74 } // namespace content
76 #endif // CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_