kodi
JoystickTypes.h
1 /*
2  * Copyright (C) 2014-2024 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/InputTypes.h"
12 
13 #include <set>
14 #include <string>
15 
18 
19 namespace KODI
20 {
21 namespace JOYSTICK
22 {
26 using FeatureName = std::string;
27 
47 enum class FEATURE_TYPE
48 {
49  UNKNOWN,
50  SCALAR,
51  ANALOG_STICK,
52  ACCELEROMETER,
53  MOTOR,
54  RELPOINTER,
55  ABSPOINTER,
56  WHEEL,
57  THROTTLE,
58  KEY,
59 };
60 
64 enum class FEATURE_CATEGORY
65 {
66  UNKNOWN,
67  FACE,
68  SHOULDER,
69  TRIGGER,
70  ANALOG_STICK,
71  ACCELEROMETER,
72  HAPTICS,
73  MOUSE_BUTTON,
74  POINTER,
75  LIGHTGUN,
76  OFFSCREEN, // Virtual button to shoot light gun offscreen
77  KEY, // A keyboard key
78  KEYPAD, // A key on a numeric keymap, including star and pound
79  HARDWARE, // A button or functionality on the console
80  WHEEL,
81  JOYSTICK,
82  PADDLE,
83 };
84 
88 using HAT_DIRECTION = INPUT::CARDINAL_DIRECTION;
89 
93 using HAT_STATE = INPUT::INTERCARDINAL_DIRECTION;
94 
98 using ANALOG_STICK_DIRECTION = INPUT::CARDINAL_DIRECTION;
99 
103 using RELATIVE_POINTER_DIRECTION = INPUT::CARDINAL_DIRECTION;
104 
108 enum class SEMIAXIS_DIRECTION
109 {
110  NEGATIVE = -1, // semiaxis lies in the interval [-1.0, 0.0]
111  ZERO = 0, // semiaxis is unknown or invalid
112  POSITIVE = 1, // semiaxis lies in the interval [0.0, 1.0]
113 };
114 
118 enum class WHEEL_DIRECTION
119 {
120  NONE,
121  RIGHT,
122  LEFT,
123 };
124 
128 enum class THROTTLE_DIRECTION
129 {
130  NONE,
131  UP,
132  DOWN,
133 };
134 
138 enum class INPUT_TYPE
139 {
140  UNKNOWN,
141  DIGITAL,
142  ANALOG,
143 };
144 
148 enum class PRIMITIVE_TYPE
149 {
150  UNKNOWN = 0, // primitive has no type (invalid)
151  BUTTON, // a digital button
152  HAT, // one of the four direction arrows on a D-pad
153  SEMIAXIS, // the positive or negative half of an axis
154  MOTOR, // a rumble motor
155  KEY, // a keyboard key
156  MOUSE_BUTTON, // a mouse button
157  RELATIVE_POINTER, // a relative pointer, such as on a mouse
158 };
159 } // namespace JOYSTICK
160 } // namespace KODI
161 
Definition: AudioDecoder.h:18