1use indexmap::IndexSet;
2
3#[repr(i32)]
8#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
9pub enum KeyboardKey {
10 KeyNull = 0,
11 KeyApostrophe = 39,
12 KeyComma = 44,
13 KeyMinus = 45,
14 KeyPeriod = 46,
15 KeySlash = 47,
16 KeyZero = 48,
17 KeyOne = 49,
18 KeyTwo = 50,
19 KeyThree = 51,
20 KeyFour = 52,
21 KeyFive = 53,
22 KeySix = 54,
23 KeySeven = 55,
24 KeyEight = 56,
25 KeyNine = 57,
26 KeySemicolon = 59,
27 KeyEqual = 61,
28 KeyA = 65,
29 KeyB = 66,
30 KeyC = 67,
31 KeyD = 68,
32 KeyE = 69,
33 KeyF = 70,
34 KeyG = 71,
35 KeyH = 72,
36 KeyI = 73,
37 KeyJ = 74,
38 KeyK = 75,
39 KeyL = 76,
40 KeyM = 77,
41 KeyN = 78,
42 KeyO = 79,
43 KeyP = 80,
44 KeyQ = 81,
45 KeyR = 82,
46 KeyS = 83,
47 KeyT = 84,
48 KeyU = 85,
49 KeyV = 86,
50 KeyW = 87,
51 KeyX = 88,
52 KeyY = 89,
53 KeyZ = 90,
54 KeyLeftBracket = 91,
55 KeyBackslash = 92,
56 KeyRightBracket = 93,
57 KeyGrave = 96,
58 KeySpace = 32,
59 KeyEscape = 256,
60 KeyEnter = 257,
61 KeyTab = 258,
62 KeyBackspace = 259,
63 KeyInsert = 260,
64 KeyDelete = 261,
65 KeyRight = 262,
66 KeyLeft = 263,
67 KeyDown = 264,
68 KeyUp = 265,
69 KeyPageUp = 266,
70 KeyPageDown = 267,
71 KeyHome = 268,
72 KeyEnd = 269,
73 KeyCapsLock = 280,
74 KeyScrollLock = 281,
75 KeyNumLock = 282,
76 KeyPrintScreen = 283,
77 KeyPause = 284,
78 KeyF1 = 290,
79 KeyF2 = 291,
80 KeyF3 = 292,
81 KeyF4 = 293,
82 KeyF5 = 294,
83 KeyF6 = 295,
84 KeyF7 = 296,
85 KeyF8 = 297,
86 KeyF9 = 298,
87 KeyF10 = 299,
88 KeyF11 = 300,
89 KeyF12 = 301,
90 KeyLeftShift = 340,
91 KeyLeftControl = 341,
92 KeyLeftAlt = 342,
93 KeyLeftSuper = 343,
94 KeyRightShift = 344,
95 KeyRightControl = 345,
96 KeyRightAlt = 346,
97 KeyRightSuper = 347,
98 KeyKbMenu = 348,
99 KeyKp0 = 320,
100 KeyKp1 = 321,
101 KeyKp2 = 322,
102 KeyKp3 = 323,
103 KeyKp4 = 324,
104 KeyKp5 = 325,
105 KeyKp6 = 326,
106 KeyKp7 = 327,
107 KeyKp8 = 328,
108 KeyKp9 = 329,
109 KeyKpDecimal = 330,
110 KeyKpDivide = 331,
111 KeyKpMultiply = 332,
112 KeyKpSubtract = 333,
113 KeyKpAdd = 334,
114 KeyKpEnter = 335,
115 KeyKpEqual = 336,
116 KeyBack = 4,
117 KeyMenu = 5,
118 KeyVolumeUp = 24,
119 KeyVolumeDown = 25,
120}
121use KeyboardKey::*;
122pub const KEYBOARD_LIST: [KeyboardKey; 110] = [
124 KeyNull,
125 KeyApostrophe,
126 KeyComma,
127 KeyMinus,
128 KeyPeriod,
129 KeySlash,
130 KeyZero,
131 KeyOne,
132 KeyTwo,
133 KeyThree,
134 KeyFour,
135 KeyFive,
136 KeySix,
137 KeySeven,
138 KeyEight,
139 KeyNine,
140 KeySemicolon,
141 KeyEqual,
142 KeyA,
143 KeyB,
144 KeyC,
145 KeyD,
146 KeyE,
147 KeyF,
148 KeyG,
149 KeyH,
150 KeyI,
151 KeyJ,
152 KeyK,
153 KeyL,
154 KeyM,
155 KeyN,
156 KeyO,
157 KeyP,
158 KeyQ,
159 KeyR,
160 KeyS,
161 KeyT,
162 KeyU,
163 KeyV,
164 KeyW,
165 KeyX,
166 KeyY,
167 KeyZ,
168 KeyLeftBracket,
169 KeyBackslash,
170 KeyRightBracket,
171 KeyGrave,
172 KeySpace,
173 KeyEscape,
174 KeyEnter,
175 KeyTab,
176 KeyBackspace,
177 KeyInsert,
178 KeyDelete,
179 KeyRight,
180 KeyLeft,
181 KeyDown,
182 KeyUp,
183 KeyPageUp,
184 KeyPageDown,
185 KeyHome,
186 KeyEnd,
187 KeyCapsLock,
188 KeyScrollLock,
189 KeyNumLock,
190 KeyPrintScreen,
191 KeyPause,
192 KeyF1,
193 KeyF2,
194 KeyF3,
195 KeyF4,
196 KeyF5,
197 KeyF6,
198 KeyF7,
199 KeyF8,
200 KeyF9,
201 KeyF10,
202 KeyF11,
203 KeyF12,
204 KeyLeftShift,
205 KeyLeftControl,
206 KeyLeftAlt,
207 KeyLeftSuper,
208 KeyRightShift,
209 KeyRightControl,
210 KeyRightAlt,
211 KeyRightSuper,
212 KeyKbMenu,
213 KeyKp0,
214 KeyKp1,
215 KeyKp2,
216 KeyKp3,
217 KeyKp4,
218 KeyKp5,
219 KeyKp6,
220 KeyKp7,
221 KeyKp8,
222 KeyKp9,
223 KeyKpDecimal,
224 KeyKpDivide,
225 KeyKpMultiply,
226 KeyKpSubtract,
227 KeyKpAdd,
228 KeyKpEnter,
229 KeyKpEqual,
230 KeyBack,
231 KeyMenu,
232 KeyVolumeUp,
233 KeyVolumeDown,
234];
235
236pub trait SimpleKeyboardProvider {
240 fn get_pressed_keys(&self) -> IndexSet<KeyboardKey>;
242}
243
244pub trait SimpleTextProvider {
246 fn get_pressed_chars(&self) -> Vec<char>;
248}