GamepadInput Arduino 库 1.2.1
载入中...
搜索中...
未找到
gamepad_input_button.h
1#pragma once
2
3#ifndef GAMEPAD_INPUT_BUTTON_H
4#define GAMEPAD_INPUT_BUTTON_H
5
6#include <stdint.h>
7
8/**
9 * @~English
10 * @defgroup CommonEnums
11 * @brief Common enumerations used in the project.
12 * @ingroup Root
13 */
14/**
15 * @~Chinese
16 * @defgroup CommonEnums 公共枚举
17 * @brief 项目中通用的枚举
18 * @ingroup Root
19 */
20namespace gamepad::input {
21
22/**
23 * @~English
24 * @enum Button
25 * @ingroup CommonEnums
26 * @brief Button identifiers for a generic gamepad.
27 */
28/**
29 * @~Chinese
30 * @enum Button
31 * @ingroup CommonEnums
32 * @brief 通用游戏手柄按键枚举
33 */
34enum class Button : uint32_t {
35 /**
36 * @~English
37 * @brief Up direction
38 */
39 /**
40 * @~Chinese
41 * @brief 方向上
42 */
43 kUp = uint32_t{1} << 0,
44
45 /**
46 * @~English
47 * @brief Down direction
48 */
49 /**
50 * @~Chinese
51 * @brief 方向下
52 */
53 kDown = uint32_t{1} << 1,
54
55 /**
56 * @~English
57 * @brief Left direction
58 */
59 /**
60 * @~Chinese
61 * @brief 方向左
62 */
63 kLeft = uint32_t{1} << 2,
64
65 /**
66 * @~English
67 * @brief Right direction
68 */
69 /**
70 * @~Chinese
71 * @brief 方向右
72 */
73 kRight = uint32_t{1} << 3,
74
75 /**
76 * @~English
77 * @brief Square or X
78 */
79 /**
80 * @~Chinese
81 * @brief 方形或者X
82 */
83 kSquareX = uint32_t{1} << 4,
84
85 /**
86 * @~English
87 * @brief Triangle or Y
88 */
89 /**
90 * @~Chinese
91 * @brief 三角形或者Y
92 */
93 kTriangleY = uint32_t{1} << 5,
94
95 /**
96 * @~English
97 * @brief Cross or A
98 */
99 /**
100 * @~Chinese
101 * @brief 叉或者A
102 */
103 kCrossA = uint32_t{1} << 6,
104
105 /**
106 * @~English
107 * @brief Circle or B
108 */
109 /**
110 * @~Chinese
111 * @brief 圆形或者B
112 */
113 kCircleB = uint32_t{1} << 7,
114
115 /**
116 * @~English
117 * @brief Left shoulder button 1
118 */
119 /**
120 * @~Chinese
121 * @brief 左肩键 L1
122 */
123 kL1 = uint32_t{1} << 8,
124
125 /**
126 * @~English
127 * @brief Left trigger button
128 */
129 /**
130 * @~Chinese
131 * @brief 左扳机 L2
132 */
133 kL2 = uint32_t{1} << 9,
134
135 /**
136 * @~English
137 * @brief Left stick click
138 */
139 /**
140 * @~Chinese
141 * @brief 左摇杆按下 L3
142 */
143 kL3 = uint32_t{1} << 10,
144
145 /**
146 * @~English
147 * @brief Right shoulder button 1
148 */
149 /**
150 * @~Chinese
151 * @brief 右肩键 R1
152 */
153 kR1 = uint32_t{1} << 11,
154
155 /**
156 * @~English
157 * @brief Right trigger button
158 */
159 /**
160 * @~Chinese
161 * @brief 右扳机 R2
162 */
163 kR2 = uint32_t{1} << 12,
164
165 /**
166 * @~English
167 * @brief Right stick click
168 */
169 /**
170 * @~Chinese
171 * @brief 右摇杆按下 R3
172 */
173 kR3 = uint32_t{1} << 13,
174
175 /**
176 * @~English
177 * @brief Select button
178 */
179 /**
180 * @~Chinese
181 * @brief 选择键
182 */
183 kSelect = uint32_t{1} << 14,
184
185 /**
186 * @~English
187 * @brief Start button
188 */
189 /**
190 * @~Chinese
191 * @brief 开始键
192 */
193 kStart = uint32_t{1} << 15,
194
195 /**
196 * @~English
197 * @brief Home button
198 */
199 /**
200 * @~Chinese
201 * @brief 主页键
202 */
203 kHome = uint32_t{1} << 16,
204};
205
206constexpr inline Button operator|(Button a, Button b) noexcept {
207 return static_cast<Button>(static_cast<uint32_t>(a) | static_cast<uint32_t>(b));
208}
209
210constexpr inline bool operator&(uint32_t bits, Button b) noexcept {
211 return (bits & static_cast<uint32_t>(b)) == static_cast<uint32_t>(b);
212}
213} // namespace gamepad::input
214#endif
Button
通用游戏手柄按键枚举