1 /*
2  *  Copyright (C) 2020 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 enum class GCCONTROLLER_EXTENDED_GAMEPAD_BUTTON
12 {
13   UP = 0,
14   DOWN = 1,
15   LEFT = 2,
16   RIGHT = 3,
17   A = 4,
18   B = 5,
19   X = 6,
20   Y = 7,
21   LEFTSHOULDER = 8,
22   LEFTTRIGGER = 9,
23   RIGHTSHOULDER = 10,
24   RIGHTTRIGGER = 11,
25   MENU = 12,
26   OPTION = 13,
27   LEFTTHUMBSTICKBUTTON = 14,
28   RIGHTTHUMBSTICKBUTTON = 15,
29   UNUSED = 99
30 };
31 
32 enum class GCCONTROLLER_EXTENDED_GAMEPAD_AXIS
33 {
34   // Thumbstick Axis
35   LEFTTHUMB_X = 0,
36   LEFTTHUMB_Y = 1,
37   RIGHTTHUMB_X = 2,
38   RIGHTTHUMB_Y = 3,
39   // Thumbstick
40   LEFT = 90,
41   RIGHT = 91,
42   UNUSED = 99
43 };
44 
45 enum class GCCONTROLLER_MICRO_GAMEPAD_BUTTON
46 {
47   UP = 0,
48   DOWN = 1,
49   LEFT = 2,
50   RIGHT = 3,
51   MENU = 4,
52   A = 5,
53   X = 6,
54   UNUSED = 99
55 };
56 
57 enum class GCCONTROLLER_TYPE
58 {
59   UNKNOWN = 0,
60   EXTENDED = 1,
61   MICRO = 2,
62   NOTFOUND = 98,
63   UNUSED = 99
64 };
65 
66 struct InputValueInfo
67 {
68   GCCONTROLLER_TYPE controllerType;
69   GCCONTROLLER_EXTENDED_GAMEPAD_BUTTON extendedButton;
70   GCCONTROLLER_EXTENDED_GAMEPAD_AXIS extendedAxis;
71   GCCONTROLLER_MICRO_GAMEPAD_BUTTON microButton;
72 
InputValueInfoInputValueInfo73   InputValueInfo(GCCONTROLLER_TYPE controllerType)
74     : controllerType(controllerType),
75       extendedButton(GCCONTROLLER_EXTENDED_GAMEPAD_BUTTON::UNUSED),
76       extendedAxis(GCCONTROLLER_EXTENDED_GAMEPAD_AXIS::UNUSED),
77       microButton(GCCONTROLLER_MICRO_GAMEPAD_BUTTON::UNUSED)
78   {
79   }
80 
InputValueInfoInputValueInfo81   InputValueInfo(GCCONTROLLER_TYPE controllerType,
82                  GCCONTROLLER_EXTENDED_GAMEPAD_BUTTON extendedButton)
83     : controllerType(controllerType),
84       extendedButton(extendedButton),
85       extendedAxis(GCCONTROLLER_EXTENDED_GAMEPAD_AXIS::UNUSED),
86       microButton(GCCONTROLLER_MICRO_GAMEPAD_BUTTON::UNUSED)
87   {
88   }
89 
InputValueInfoInputValueInfo90   InputValueInfo(GCCONTROLLER_TYPE controllerType, GCCONTROLLER_MICRO_GAMEPAD_BUTTON microButton)
91     : controllerType(controllerType),
92       extendedButton(GCCONTROLLER_EXTENDED_GAMEPAD_BUTTON::UNUSED),
93       extendedAxis(GCCONTROLLER_EXTENDED_GAMEPAD_AXIS::UNUSED),
94       microButton(microButton)
95   {
96   }
97 
InputValueInfoInputValueInfo98   InputValueInfo(GCCONTROLLER_TYPE controllerType, GCCONTROLLER_EXTENDED_GAMEPAD_AXIS extendedAxis)
99     : controllerType(controllerType),
100       extendedButton(GCCONTROLLER_EXTENDED_GAMEPAD_BUTTON::UNUSED),
101       extendedAxis(extendedAxis),
102       microButton(GCCONTROLLER_MICRO_GAMEPAD_BUTTON::UNUSED)
103   {
104   }
105 };
106