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