• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef EVENT_UTILS_H
17 #define EVENT_UTILS_H
18 
19 #include <string>
20 #include <unordered_map>
21 
22 #include <linux/input.h>
23 
24 #include "common.h"
25 
26 namespace OHOS {
27 namespace MMI {
28 
29 // Event type string mapping
30 static const std::unordered_map<uint16_t, std::string> EVENT_TYPE_MAP = {
31     {EV_SYN, "EV_SYN"},
32     {EV_KEY, "EV_KEY"},
33     {EV_REL, "EV_REL"},
34     {EV_ABS, "EV_ABS"},
35     {EV_MSC, "EV_MSC"},
36     {EV_SW, "EV_SW"},
37     {EV_LED, "EV_LED"},
38     {EV_SND, "EV_SND"},
39     {EV_REP, "EV_REP"},
40     {EV_FF, "EV_FF"},
41     {EV_PWR, "EV_PWR"},
42     {EV_FF_STATUS, "EV_FF_STATUS"}
43 };
44 
45 // SYN event code mapping
46 static const std::unordered_map<uint16_t, std::string> SYN_CODE_MAP = {
47     {SYN_REPORT, "SYN_REPORT"},
48     {SYN_CONFIG, "SYN_CONFIG"},
49     {SYN_MT_REPORT, "SYN_MT_REPORT"},
50     {SYN_DROPPED, "SYN_DROPPED"}
51 };
52 
53 // Keyboard and button event code mapping
54 static const std::unordered_map<uint16_t, std::string> KEY_CODE_MAP = {
55     // Regular keyboard keys
56     {KEY_ESC, "KEY_ESC"},
57     {KEY_1, "KEY_1"},
58     {KEY_2, "KEY_2"},
59     {KEY_3, "KEY_3"},
60     {KEY_4, "KEY_4"},
61     {KEY_5, "KEY_5"},
62     {KEY_6, "KEY_6"},
63     {KEY_7, "KEY_7"},
64     {KEY_8, "KEY_8"},
65     {KEY_9, "KEY_9"},
66     {KEY_0, "KEY_0"},
67     {KEY_MINUS, "KEY_MINUS"},
68     {KEY_EQUAL, "KEY_EQUAL"},
69     {KEY_BACKSPACE, "KEY_BACKSPACE"},
70     {KEY_TAB, "KEY_TAB"},
71     {KEY_Q, "KEY_Q"},
72     {KEY_W, "KEY_W"},
73     {KEY_E, "KEY_E"},
74     {KEY_R, "KEY_R"},
75     {KEY_T, "KEY_T"},
76     {KEY_Y, "KEY_Y"},
77     {KEY_U, "KEY_U"},
78     {KEY_I, "KEY_I"},
79     {KEY_O, "KEY_O"},
80     {KEY_P, "KEY_P"},
81     {KEY_LEFTBRACE, "KEY_LEFTBRACE"},
82     {KEY_RIGHTBRACE, "KEY_RIGHTBRACE"},
83     {KEY_ENTER, "KEY_ENTER"},
84     {KEY_LEFTCTRL, "KEY_LEFTCTRL"},
85     {KEY_A, "KEY_A"},
86     {KEY_S, "KEY_S"},
87     {KEY_D, "KEY_D"},
88     {KEY_F, "KEY_F"},
89     {KEY_G, "KEY_G"},
90     {KEY_H, "KEY_H"},
91     {KEY_J, "KEY_J"},
92     {KEY_K, "KEY_K"},
93     {KEY_L, "KEY_L"},
94     {KEY_SEMICOLON, "KEY_SEMICOLON"},
95     {KEY_APOSTROPHE, "KEY_APOSTROPHE"},
96     {KEY_GRAVE, "KEY_GRAVE"},
97     {KEY_LEFTSHIFT, "KEY_LEFTSHIFT"},
98     {KEY_BACKSLASH, "KEY_BACKSLASH"},
99     {KEY_Z, "KEY_Z"},
100     {KEY_X, "KEY_X"},
101     {KEY_C, "KEY_C"},
102     {KEY_V, "KEY_V"},
103     {KEY_B, "KEY_B"},
104     {KEY_N, "KEY_N"},
105     {KEY_M, "KEY_M"},
106     {KEY_COMMA, "KEY_COMMA"},
107     {KEY_DOT, "KEY_DOT"},
108     {KEY_SLASH, "KEY_SLASH"},
109     {KEY_RIGHTSHIFT, "KEY_RIGHTSHIFT"},
110     {KEY_KPASTERISK, "KEY_KPASTERISK"},
111     {KEY_LEFTALT, "KEY_LEFTALT"},
112     {KEY_SPACE, "KEY_SPACE"},
113     {KEY_CAPSLOCK, "KEY_CAPSLOCK"},
114 
115     // Function keys
116     {KEY_F1, "KEY_F1"},
117     {KEY_F2, "KEY_F2"},
118     {KEY_F3, "KEY_F3"},
119     {KEY_F4, "KEY_F4"},
120     {KEY_F5, "KEY_F5"},
121     {KEY_F6, "KEY_F6"},
122     {KEY_F7, "KEY_F7"},
123     {KEY_F8, "KEY_F8"},
124     {KEY_F9, "KEY_F9"},
125     {KEY_F10, "KEY_F10"},
126     {KEY_F11, "KEY_F11"},
127     {KEY_F12, "KEY_F12"},
128 
129     // Navigation keys
130     {KEY_HOME, "KEY_HOME"},
131     {KEY_UP, "KEY_UP"},
132     {KEY_PAGEUP, "KEY_PAGEUP"},
133     {KEY_LEFT, "KEY_LEFT"},
134     {KEY_RIGHT, "KEY_RIGHT"},
135     {KEY_END, "KEY_END"},
136     {KEY_DOWN, "KEY_DOWN"},
137     {KEY_PAGEDOWN, "KEY_PAGEDOWN"},
138     {KEY_INSERT, "KEY_INSERT"},
139     {KEY_DELETE, "KEY_DELETE"},
140 
141     // Multimedia control keys
142     {KEY_MUTE, "KEY_MUTE"},
143     {KEY_VOLUMEDOWN, "KEY_VOLUMEDOWN"},
144     {KEY_VOLUMEUP, "KEY_VOLUMEUP"},
145     {KEY_POWER, "KEY_POWER"},
146     {KEY_PAUSE, "KEY_PAUSE"},
147     {KEY_PLAYPAUSE, "KEY_PLAYPAUSE"},
148     {KEY_NEXTSONG, "KEY_NEXTSONG"},
149     {KEY_PREVIOUSSONG, "KEY_PREVIOUSSONG"},
150 
151     // Mouse buttons
152     {BTN_LEFT, "BTN_LEFT"},
153     {BTN_RIGHT, "BTN_RIGHT"},
154     {BTN_MIDDLE, "BTN_MIDDLE"},
155     {BTN_SIDE, "BTN_SIDE"},
156     {BTN_EXTRA, "BTN_EXTRA"},
157     {BTN_FORWARD, "BTN_FORWARD"},
158     {BTN_BACK, "BTN_BACK"},
159 
160     // Gamepad buttons
161     {BTN_SOUTH, "BTN_SOUTH"},
162     {BTN_EAST, "BTN_EAST"},
163     {BTN_NORTH, "BTN_NORTH"},
164     {BTN_WEST, "BTN_WEST"},
165     {BTN_TL, "BTN_TL"},
166     {BTN_TR, "BTN_TR"},
167     {BTN_TL2, "BTN_TL2"},
168     {BTN_TR2, "BTN_TR2"},
169     {BTN_SELECT, "BTN_SELECT"},
170     {BTN_START, "BTN_START"},
171     {BTN_MODE, "BTN_MODE"},
172     {BTN_THUMBL, "BTN_THUMBL"},
173     {BTN_THUMBR, "BTN_THUMBR"},
174 
175     // D-Pad buttons
176     {BTN_DPAD_UP, "BTN_DPAD_UP"},
177     {BTN_DPAD_DOWN, "BTN_DPAD_DOWN"},
178     {BTN_DPAD_LEFT, "BTN_DPAD_LEFT"},
179     {BTN_DPAD_RIGHT, "BTN_DPAD_RIGHT"},
180 
181     // Pen/digitizer
182     {BTN_TOOL_PEN, "BTN_TOOL_PEN"},
183     {BTN_TOOL_RUBBER, "BTN_TOOL_RUBBER"},
184     {BTN_TOOL_BRUSH, "BTN_TOOL_BRUSH"},
185     {BTN_TOOL_PENCIL, "BTN_TOOL_PENCIL"},
186     {BTN_TOOL_FINGER, "BTN_TOOL_FINGER"},
187     {BTN_TOUCH, "BTN_TOUCH"},
188     {BTN_STYLUS, "BTN_STYLUS"},
189     {BTN_STYLUS2, "BTN_STYLUS2"}
190 };
191 
192 // Relative coordinate event code mapping
193 static const std::unordered_map<uint16_t, std::string> REL_CODE_MAP = {
194     {REL_X, "REL_X"},
195     {REL_Y, "REL_Y"},
196     {REL_Z, "REL_Z"},
197     {REL_RX, "REL_RX"},
198     {REL_RY, "REL_RY"},
199     {REL_RZ, "REL_RZ"},
200     {REL_HWHEEL, "REL_HWHEEL"},
201     {REL_DIAL, "REL_DIAL"},
202     {REL_WHEEL, "REL_WHEEL"},
203     {REL_MISC, "REL_MISC"},
204     {REL_WHEEL_HI_RES, "REL_WHEEL_HI_RES"},
205     {REL_HWHEEL_HI_RES, "REL_HWHEEL_HI_RES"}
206 };
207 
208 // Absolute coordinate event code mapping
209 static const std::unordered_map<uint16_t, std::string> ABS_CODE_MAP = {
210     {ABS_X, "ABS_X"},
211     {ABS_Y, "ABS_Y"},
212     {ABS_Z, "ABS_Z"},
213     {ABS_RX, "ABS_RX"},
214     {ABS_RY, "ABS_RY"},
215     {ABS_RZ, "ABS_RZ"},
216     {ABS_THROTTLE, "ABS_THROTTLE"},
217     {ABS_RUDDER, "ABS_RUDDER"},
218     {ABS_WHEEL, "ABS_WHEEL"},
219     {ABS_GAS, "ABS_GAS"},
220     {ABS_BRAKE, "ABS_BRAKE"},
221     {ABS_HAT0X, "ABS_HAT0X"},
222     {ABS_HAT0Y, "ABS_HAT0Y"},
223     {ABS_HAT1X, "ABS_HAT1X"},
224     {ABS_HAT1Y, "ABS_HAT1Y"},
225     {ABS_HAT2X, "ABS_HAT2X"},
226     {ABS_HAT2Y, "ABS_HAT2Y"},
227     {ABS_HAT3X, "ABS_HAT3X"},
228     {ABS_HAT3Y, "ABS_HAT3Y"},
229     {ABS_PRESSURE, "ABS_PRESSURE"},
230     {ABS_DISTANCE, "ABS_DISTANCE"},
231     {ABS_TILT_X, "ABS_TILT_X"},
232     {ABS_TILT_Y, "ABS_TILT_Y"},
233     {ABS_TOOL_WIDTH, "ABS_TOOL_WIDTH"},
234     {ABS_VOLUME, "ABS_VOLUME"},
235     {ABS_MISC, "ABS_MISC"},
236 
237     // Multi-touch
238     {ABS_MT_SLOT, "ABS_MT_SLOT"},
239     {ABS_MT_TOUCH_MAJOR, "ABS_MT_TOUCH_MAJOR"},
240     {ABS_MT_TOUCH_MINOR, "ABS_MT_TOUCH_MINOR"},
241     {ABS_MT_WIDTH_MAJOR, "ABS_MT_WIDTH_MAJOR"},
242     {ABS_MT_WIDTH_MINOR, "ABS_MT_WIDTH_MINOR"},
243     {ABS_MT_ORIENTATION, "ABS_MT_ORIENTATION"},
244     {ABS_MT_POSITION_X, "ABS_MT_POSITION_X"},
245     {ABS_MT_POSITION_Y, "ABS_MT_POSITION_Y"},
246     {ABS_MT_TOOL_TYPE, "ABS_MT_TOOL_TYPE"},
247     {ABS_MT_BLOB_ID, "ABS_MT_BLOB_ID"},
248     {ABS_MT_TRACKING_ID, "ABS_MT_TRACKING_ID"},
249     {ABS_MT_PRESSURE, "ABS_MT_PRESSURE"},
250     {ABS_MT_DISTANCE, "ABS_MT_DISTANCE"},
251     {ABS_MT_TOOL_X, "ABS_MT_TOOL_X"},
252     {ABS_MT_TOOL_Y, "ABS_MT_TOOL_Y"}
253 };
254 
255 // Switch event code mapping
256 static const std::unordered_map<uint16_t, std::string> SW_CODE_MAP = {
257     {SW_LID, "SW_LID"},
258     {SW_TABLET_MODE, "SW_TABLET_MODE"},
259     {SW_HEADPHONE_INSERT, "SW_HEADPHONE_INSERT"},
260     {SW_RFKILL_ALL, "SW_RFKILL_ALL"},
261     {SW_MICROPHONE_INSERT, "SW_MICROPHONE_INSERT"},
262     {SW_DOCK, "SW_DOCK"},
263     {SW_LINEOUT_INSERT, "SW_LINEOUT_INSERT"},
264     {SW_JACK_PHYSICAL_INSERT, "SW_JACK_PHYSICAL_INSERT"},
265     {SW_VIDEOOUT_INSERT, "SW_VIDEOOUT_INSERT"},
266     {SW_CAMERA_LENS_COVER, "SW_CAMERA_LENS_COVER"},
267     {SW_KEYPAD_SLIDE, "SW_KEYPAD_SLIDE"},
268     {SW_FRONT_PROXIMITY, "SW_FRONT_PROXIMITY"},
269     {SW_ROTATE_LOCK, "SW_ROTATE_LOCK"},
270     {SW_LINEIN_INSERT, "SW_LINEIN_INSERT"},
271     {SW_MUTE_DEVICE, "SW_MUTE_DEVICE"},
272     {SW_PEN_INSERTED, "SW_PEN_INSERTED"},
273     {SW_MACHINE_COVER, "SW_MACHINE_COVER"}
274 };
275 
276 // Miscellaneous event code mapping
277 static const std::unordered_map<uint16_t, std::string> MSC_CODE_MAP = {
278     {MSC_SERIAL, "MSC_SERIAL"},
279     {MSC_PULSELED, "MSC_PULSELED"},
280     {MSC_GESTURE, "MSC_GESTURE"},
281     {MSC_RAW, "MSC_RAW"},
282     {MSC_SCAN, "MSC_SCAN"},
283     {MSC_TIMESTAMP, "MSC_TIMESTAMP"}
284 };
285 
286 // LED event code mapping
287 static const std::unordered_map<uint16_t, std::string> LED_CODE_MAP = {
288     {LED_NUML, "LED_NUML"},
289     {LED_CAPSL, "LED_CAPSL"},
290     {LED_SCROLLL, "LED_SCROLLL"},
291     {LED_COMPOSE, "LED_COMPOSE"},
292     {LED_KANA, "LED_KANA"},
293     {LED_SLEEP, "LED_SLEEP"},
294     {LED_SUSPEND, "LED_SUSPEND"},
295     {LED_MUTE, "LED_MUTE"},
296     {LED_MISC, "LED_MISC"},
297     {LED_MAIL, "LED_MAIL"},
298     {LED_CHARGING, "LED_CHARGING"}
299 };
300 
301 // Auto-repeat event code mapping
302 static const std::unordered_map<uint16_t, std::string> REP_CODE_MAP = {
303     {REP_DELAY, "REP_DELAY"},
304     {REP_PERIOD, "REP_PERIOD"}
305 };
306 
307 // Sound event code mapping
308 static const std::unordered_map<uint16_t, std::string> SND_CODE_MAP = {
309     {SND_CLICK, "SND_CLICK"},
310     {SND_BELL, "SND_BELL"},
311     {SND_TONE, "SND_TONE"}
312 };
313 } // namespace MMI
314 } // namespace OHOS
315 #endif // EVENT_UTILS_H