Home | History | Annotate | Download | only in gamepad
      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.
      4 
      5 #ifndef CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_
      6 #define CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_
      7 
      8 #include "base/strings/string_piece.h"
      9 #include "content/common/gamepad_hardware_buffer.h"
     10 
     11 namespace content {
     12 
     13 typedef void (*GamepadStandardMappingFunction)(
     14     const blink::WebGamepad& original,
     15     blink::WebGamepad* mapped);
     16 
     17 GamepadStandardMappingFunction GetGamepadStandardMappingFunction(
     18     const base::StringPiece& vendor_id,
     19     const base::StringPiece& product_id);
     20 
     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
     25 // appropriately.
     26 
     27 enum CanonicalButtonIndex {
     28   kButtonPrimary,
     29   kButtonSecondary,
     30   kButtonTertiary,
     31   kButtonQuaternary,
     32   kButtonLeftShoulder,
     33   kButtonRightShoulder,
     34   kButtonLeftTrigger,
     35   kButtonRightTrigger,
     36   kButtonBackSelect,
     37   kButtonStart,
     38   kButtonLeftThumbstick,
     39   kButtonRightThumbstick,
     40   kButtonDpadUp,
     41   kButtonDpadDown,
     42   kButtonDpadLeft,
     43   kButtonDpadRight,
     44   kButtonMeta,
     45   kNumButtons
     46 };
     47 
     48 enum CanonicalAxisIndex {
     49   kAxisLeftStickX,
     50   kAxisLeftStickY,
     51   kAxisRightStickX,
     52   kAxisRightStickY,
     53   kNumAxes
     54 };
     55 
     56 // Matches XInput's trigger deadzone
     57 const float kDefaultButtonPressedThreshold = 30.f/255.f;
     58 
     59 // Common mapping functions
     60 blink::WebGamepadButton AxisToButton(float input);
     61 blink::WebGamepadButton AxisNegativeAsButton(float input);
     62 blink::WebGamepadButton AxisPositiveAsButton(float input);
     63 blink::WebGamepadButton ButtonFromButtonAndAxis(
     64     blink::WebGamepadButton button, float axis);
     65 blink::WebGamepadButton NullButton();
     66 void DpadFromAxis(blink::WebGamepad* mapped, float dir);
     67 
     68 }  // namespace content
     69 
     70 #endif  // CONTENT_BROWSER_GAMEPAD_GAMEPAD_STANDARD_MAPPINGS_H_
     71