| // Copyright (c) 2012 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. |
| |
| #ifndef CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_ |
| #define CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_ |
| |
| #include "base/strings/string_piece.h" |
| #include "content/common/gamepad_hardware_buffer.h" |
| |
| namespace content { |
| |
| typedef void (*GamepadStandardMappingFunction)( |
| const blink::WebGamepad& original, |
| blink::WebGamepad* mapped); |
| |
| GamepadStandardMappingFunction GetGamepadStandardMappingFunction( |
| const base::StringPiece& vendor_id, |
| const base::StringPiece& product_id); |
| |
| // This defines our canonical mapping order for gamepad-like devices. If these |
| // items cannot all be satisfied, it is a case-by-case judgement as to whether |
| // it is better to leave the device unmapped, or to partially map it. In |
| // general, err towards leaving it *unmapped* so that content can handle |
| // appropriately. |
| |
| enum CanonicalButtonIndex { |
| kButtonPrimary, |
| kButtonSecondary, |
| kButtonTertiary, |
| kButtonQuaternary, |
| kButtonLeftShoulder, |
| kButtonRightShoulder, |
| kButtonLeftTrigger, |
| kButtonRightTrigger, |
| kButtonBackSelect, |
| kButtonStart, |
| kButtonLeftThumbstick, |
| kButtonRightThumbstick, |
| kButtonDpadUp, |
| kButtonDpadDown, |
| kButtonDpadLeft, |
| kButtonDpadRight, |
| kButtonMeta, |
| kNumButtons |
| }; |
| |
| enum CanonicalAxisIndex { |
| kAxisLeftStickX, |
| kAxisLeftStickY, |
| kAxisRightStickX, |
| kAxisRightStickY, |
| kNumAxes |
| }; |
| |
| // Matches XInput's trigger deadzone |
| const float kDefaultButtonPressedThreshold = 30.f/255.f; |
| |
| // Common mapping functions |
| blink::WebGamepadButton AxisToButton(float input); |
| blink::WebGamepadButton AxisNegativeAsButton(float input); |
| blink::WebGamepadButton AxisPositiveAsButton(float input); |
| blink::WebGamepadButton ButtonFromButtonAndAxis( |
| blink::WebGamepadButton button, float axis); |
| void DpadFromAxis(blink::WebGamepad* mapped, float dir); |
| |
| } // namespace content |
| |
| #endif // CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_ |