xbmc
IButtonMap.h
1 /*
2  * Copyright (C) 2014-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "input/joysticks/DriverPrimitive.h"
13 
14 #include <string>
15 #include <vector>
16 
17 namespace KODI
18 {
19 namespace JOYSTICK
20 {
29 {
30 public:
31  virtual ~IButtonMap() = default;
32 
41  virtual std::string ControllerID(void) const = 0;
42 
48  virtual std::string Location(void) const = 0;
49 
55  virtual bool Load(void) = 0;
56 
60  virtual void Reset(void) = 0;
61 
67  virtual bool IsEmpty(void) const = 0;
68 
81  virtual bool GetFeature(const CDriverPrimitive& primitive, FeatureName& feature) = 0;
82 
90  virtual FEATURE_TYPE GetFeatureType(const FeatureName& feature) = 0;
91 
111  virtual bool GetScalar(const FeatureName& feature, CDriverPrimitive& primitive) = 0;
112 
122  virtual void AddScalar(const FeatureName& feature, const CDriverPrimitive& primitive) = 0;
123 
133  virtual bool GetAnalogStick(const FeatureName& feature,
134  ANALOG_STICK_DIRECTION direction,
135  CDriverPrimitive& primitive) = 0;
136 
146  virtual void AddAnalogStick(const FeatureName& feature,
147  ANALOG_STICK_DIRECTION direction,
148  const CDriverPrimitive& primitive) = 0;
149 
159  virtual bool GetRelativePointer(const FeatureName& feature,
160  RELATIVE_POINTER_DIRECTION direction,
161  CDriverPrimitive& primitive) = 0;
162 
172  virtual void AddRelativePointer(const FeatureName& feature,
173  RELATIVE_POINTER_DIRECTION direction,
174  const CDriverPrimitive& primitive) = 0;
175 
186  virtual bool GetAccelerometer(const FeatureName& feature,
187  CDriverPrimitive& positiveX,
188  CDriverPrimitive& positiveY,
189  CDriverPrimitive& positiveZ) = 0;
190 
203  virtual void AddAccelerometer(const FeatureName& feature,
204  const CDriverPrimitive& positiveX,
205  const CDriverPrimitive& positiveY,
206  const CDriverPrimitive& positiveZ) = 0;
207 
217  virtual bool GetWheel(const FeatureName& feature,
218  WHEEL_DIRECTION direction,
219  CDriverPrimitive& primitive) = 0;
220 
230  virtual void AddWheel(const FeatureName& feature,
231  WHEEL_DIRECTION direction,
232  const CDriverPrimitive& primitive) = 0;
233 
243  virtual bool GetThrottle(const FeatureName& feature,
244  THROTTLE_DIRECTION direction,
245  CDriverPrimitive& primitive) = 0;
246 
256  virtual void AddThrottle(const FeatureName& feature,
257  THROTTLE_DIRECTION direction,
258  const CDriverPrimitive& primitive) = 0;
259 
269  virtual bool GetKey(const FeatureName& feature, CDriverPrimitive& primitive) = 0;
270 
280  virtual void AddKey(const FeatureName& feature, const CDriverPrimitive& primitive) = 0;
281 
291  virtual void SetIgnoredPrimitives(const std::vector<CDriverPrimitive>& primitives) = 0;
292 
300  virtual bool IsIgnored(const CDriverPrimitive& primitive) = 0;
301 
311  virtual bool GetAxisProperties(unsigned int axisIndex, int& center, unsigned int& range) = 0;
312 
316  virtual void SaveButtonMap() = 0;
317 
322  virtual void RevertButtonMap() = 0;
323 };
324 } // namespace JOYSTICK
325 } // namespace KODI
THROTTLE_DIRECTION
Directions on a throttle.
Definition: JoystickTypes.h:130
virtual void AddAnalogStick(const FeatureName &feature, ANALOG_STICK_DIRECTION direction, const CDriverPrimitive &primitive)=0
Add or update an analog stick direction.
virtual bool GetRelativePointer(const FeatureName &feature, RELATIVE_POINTER_DIRECTION direction, CDriverPrimitive &primitive)=0
Get a relative pointer direction from the button map.
virtual bool GetWheel(const FeatureName &feature, WHEEL_DIRECTION direction, CDriverPrimitive &primitive)=0
Get a wheel direction from the button map.
virtual bool GetFeature(const CDriverPrimitive &primitive, FeatureName &feature)=0
Get the feature associated with a driver primitive.
virtual void AddAccelerometer(const FeatureName &feature, const CDriverPrimitive &positiveX, const CDriverPrimitive &positiveY, const CDriverPrimitive &positiveZ)=0
Get or update an accelerometer.
virtual bool GetAxisProperties(unsigned int axisIndex, int &center, unsigned int &range)=0
Get the properties of an axis.
virtual bool GetKey(const FeatureName &feature, CDriverPrimitive &primitive)=0
Get the driver primitive for a keyboard key.
virtual bool GetAccelerometer(const FeatureName &feature, CDriverPrimitive &positiveX, CDriverPrimitive &positiveY, CDriverPrimitive &positiveZ)=0
Get an accelerometer from the button map.
FEATURE_TYPE
Types of features used in the joystick library.
Definition: JoystickTypes.h:49
Button map interface to translate between the driver&#39;s raw button/hat/axis elements and physical joys...
Definition: IButtonMap.h:28
virtual void SetIgnoredPrimitives(const std::vector< CDriverPrimitive > &primitives)=0
Set a list of driver primitives to be ignored.
virtual void AddKey(const FeatureName &feature, const CDriverPrimitive &primitive)=0
Add or update a key.
virtual bool Load(void)=0
Load the button map into memory.
WHEEL_DIRECTION
Directions on a wheel.
Definition: JoystickTypes.h:120
Controller configuration window.
Definition: AudioDecoder.h:18
virtual bool IsIgnored(const CDriverPrimitive &primitive)=0
Check if a primitive is in the list of primitives to be ignored.
Basic driver element associated with input events.
Definition: DriverPrimitive.h:69
virtual void AddRelativePointer(const FeatureName &feature, RELATIVE_POINTER_DIRECTION direction, const CDriverPrimitive &primitive)=0
Add or update a relative pointer direction.
virtual void AddScalar(const FeatureName &feature, const CDriverPrimitive &primitive)=0
Add or update a scalar feature.
std::string FeatureName
Name of a physical feature belonging to the joystick.
Definition: JoystickTypes.h:28
virtual FEATURE_TYPE GetFeatureType(const FeatureName &feature)=0
Get the type of the feature for the given name.
virtual void SaveButtonMap()=0
Save the button map.
virtual bool GetThrottle(const FeatureName &feature, THROTTLE_DIRECTION direction, CDriverPrimitive &primitive)=0
Get a throttle direction from the button map.
virtual void RevertButtonMap()=0
Revert changes to the button map since the last time it was loaded or committed to disk...
virtual std::string Location(void) const =0
The Location of the peripheral associated with this button map.
virtual void Reset(void)=0
Reset the button map to its defaults, or clear button map if no defaults.
virtual bool IsEmpty(void) const =0
Check if the button map is empty.
virtual void AddThrottle(const FeatureName &feature, THROTTLE_DIRECTION direction, const CDriverPrimitive &primitive)=0
Add or update a throttle direction.
virtual void AddWheel(const FeatureName &feature, WHEEL_DIRECTION direction, const CDriverPrimitive &primitive)=0
Add or update a wheel direction.
virtual bool GetScalar(const FeatureName &feature, CDriverPrimitive &primitive)=0
Get the driver primitive for a scalar feature.
virtual bool GetAnalogStick(const FeatureName &feature, ANALOG_STICK_DIRECTION direction, CDriverPrimitive &primitive)=0
Get an analog stick direction from the button map.
virtual std::string ControllerID(void) const =0
The add-on ID of the game controller associated with this button map.