• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 FOUNDATION_ACE_FRAMEWORKS_CORE_EVENT_KEY_EVENT_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_EVENT_KEY_EVENT_H
18 
19 #include <cstdint>
20 #include <initializer_list>
21 #include <list>
22 #include <string>
23 #include <vector>
24 
25 #include "stdarg.h"
26 
27 #include "base/utils/type_definition.h"
28 #include "core/event/ace_events.h"
29 
30 namespace OHOS::Ace {
31 enum class KeyCode : int32_t {
32     KEY_UNKNOWN = -1,
33     KEY_FN = 0, // New
34     KEY_HOME = 1,
35     KEY_BACK = 2,
36     KEY_CALL = 3,
37     KEY_ENDCALL = 4,
38     KEY_CLEAR = 5,
39     KEY_HEADSETHOOK = 6,
40     KEY_FOCUS = 7,
41     KEY_NOTIFICATION = 8,
42     KEY_SEARCH = 9,
43     KEY_MEDIA_PLAY_PAUSE = 10,
44     KEY_MEDIA_STOP = 11,
45     KEY_MEDIA_NEXT = 12,
46     KEY_MEDIA_PREVIOUS = 13,
47     KEY_MEDIA_REWIND = 14,
48     KEY_MEDIA_FAST_FORWARD = 15,
49     KEY_VOLUME_UP = 16,
50     KEY_VOLUME_DOWN = 17,
51     KEY_POWER = 18,
52     KEY_CAMERA = 19,
53     KEY_VOICE_ASSISTANT = 20,
54     KEY_CUSTOM1 = 21,
55     KEY_VOLUME_MUTE = 22, // New
56     KEY_MUTE = 23,        // New
57     KEY_BRIGHTNESS_UP = 40,
58     KEY_BRIGHTNESS_DOWN = 41,
59     KEY_WEAR_1 = 1001,
60     KEY_0 = 2000,
61     KEY_1 = 2001,
62     KEY_2 = 2002,
63     KEY_3 = 2003,
64     KEY_4 = 2004,
65     KEY_5 = 2005,
66     KEY_6 = 2006,
67     KEY_7 = 2007,
68     KEY_8 = 2008,
69     KEY_9 = 2009,
70     KEY_STAR = 2010,
71     KEY_POUND = 2011,
72     KEY_DPAD_UP = 2012,
73     KEY_DPAD_DOWN = 2013,
74     KEY_DPAD_LEFT = 2014,
75     KEY_DPAD_RIGHT = 2015,
76     KEY_DPAD_CENTER = 2016,
77     KEY_A = 2017,
78     KEY_B = 2018,
79     KEY_C = 2019,
80     KEY_D = 2020,
81     KEY_E = 2021,
82     KEY_F = 2022,
83     KEY_G = 2023,
84     KEY_H = 2024,
85     KEY_I = 2025,
86     KEY_J = 2026,
87     KEY_K = 2027,
88     KEY_L = 2028,
89     KEY_M = 2029,
90     KEY_N = 2030,
91     KEY_O = 2031,
92     KEY_P = 2032,
93     KEY_Q = 2033,
94     KEY_R = 2034,
95     KEY_S = 2035,
96     KEY_T = 2036,
97     KEY_U = 2037,
98     KEY_V = 2038,
99     KEY_W = 2039,
100     KEY_X = 2040,
101     KEY_Y = 2041,
102     KEY_Z = 2042,
103     KEY_COMMA = 2043,
104     KEY_PERIOD = 2044,
105     KEY_ALT_LEFT = 2045,
106     KEY_ALT_RIGHT = 2046,
107     KEY_SHIFT_LEFT = 2047,
108     KEY_SHIFT_RIGHT = 2048,
109     KEY_TAB = 2049,
110     KEY_SPACE = 2050,
111     KEY_SYM = 2051,
112     KEY_EXPLORER = 2052,
113     KEY_ENVELOPE = 2053,
114     KEY_ENTER = 2054,
115     KEY_DEL = 2055,
116     KEY_GRAVE = 2056,
117     KEY_MINUS = 2057,
118     KEY_EQUALS = 2058,
119     KEY_LEFT_BRACKET = 2059,
120     KEY_RIGHT_BRACKET = 2060,
121     KEY_BACKSLASH = 2061,
122     KEY_SEMICOLON = 2062,
123     KEY_APOSTROPHE = 2063,
124     KEY_SLASH = 2064,
125     KEY_AT = 2065,
126     KEY_PLUS = 2066,
127     KEY_MENU = 2067,
128     KEY_PAGE_UP = 2068,
129     KEY_PAGE_DOWN = 2069,
130     KEY_ESCAPE = 2070,
131     KEY_FORWARD_DEL = 2071,
132     KEY_CTRL_LEFT = 2072,
133     KEY_CTRL_RIGHT = 2073,
134     KEY_CAPS_LOCK = 2074,
135     KEY_SCROLL_LOCK = 2075,
136     KEY_META_LEFT = 2076,
137     KEY_META_RIGHT = 2077,
138     KEY_FUNCTION = 2078,
139     KEY_SYSRQ = 2079,
140     KEY_BREAK = 2080,
141     KEY_MOVE_HOME = 2081,
142     KEY_MOVE_END = 2082,
143     KEY_INSERT = 2083,
144     KEY_FORWARD = 2084,
145     KEY_MEDIA_PLAY = 2085,
146     KEY_MEDIA_PAUSE = 2086,
147     KEY_MEDIA_CLOSE = 2087,
148     KEY_MEDIA_EJECT = 2088,
149     KEY_MEDIA_RECORD = 2089,
150     KEY_F1 = 2090,
151     KEY_F2 = 2091,
152     KEY_F3 = 2092,
153     KEY_F4 = 2093,
154     KEY_F5 = 2094,
155     KEY_F6 = 2095,
156     KEY_F7 = 2096,
157     KEY_F8 = 2097,
158     KEY_F9 = 2098,
159     KEY_F10 = 2099,
160     KEY_F11 = 2100,
161     KEY_F12 = 2101,
162     KEY_NUM_LOCK = 2102,
163     KEY_NUMPAD_0 = 2103,
164     KEY_NUMPAD_1 = 2104,
165     KEY_NUMPAD_2 = 2105,
166     KEY_NUMPAD_3 = 2106,
167     KEY_NUMPAD_4 = 2107,
168     KEY_NUMPAD_5 = 2108,
169     KEY_NUMPAD_6 = 2109,
170     KEY_NUMPAD_7 = 2110,
171     KEY_NUMPAD_8 = 2111,
172     KEY_NUMPAD_9 = 2112,
173     KEY_NUMPAD_DIVIDE = 2113,
174     KEY_NUMPAD_MULTIPLY = 2114,
175     KEY_NUMPAD_SUBTRACT = 2115,
176     KEY_NUMPAD_ADD = 2116,
177     KEY_NUMPAD_DOT = 2117,
178     KEY_NUMPAD_COMMA = 2118,
179     KEY_NUMPAD_ENTER = 2119,
180     KEY_NUMPAD_EQUALS = 2120,
181     KEY_NUMPAD_LEFT_PAREN = 2121,
182     KEY_NUMPAD_RIGHT_PAREN = 2122,
183     // New Start
184     KEY_VIRTUAL_MULTITASK = 2210,
185     KEY_BUTTON_A = 2301,
186     KEY_BUTTON_B = 2302,
187     KEY_BUTTON_C = 2303,
188     KEY_BUTTON_X = 2304,
189     KEY_BUTTON_Y = 2305,
190     KEY_BUTTON_Z = 2306,
191     KEY_BUTTON_L1 = 2307,
192     KEY_BUTTON_R1 = 2308,
193     KEY_BUTTON_L2 = 2309,
194     KEY_BUTTON_R2 = 2310,
195     KEY_BUTTON_SELECT = 2311,
196     KEY_BUTTON_START = 2312,
197     KEY_BUTTON_MODE = 2313,
198     KEY_BUTTON_THUMBL = 2314,
199     KEY_BUTTON_THUMBR = 2315,
200     KEY_BUTTON_TRIGGER = 2401,
201     KEY_BUTTON_THUMB = 2402,
202     KEY_BUTTON_THUMB2 = 2403,
203     KEY_BUTTON_TOP = 2404,
204     KEY_BUTTON_TOP2 = 2405,
205     KEY_BUTTON_PINKIE = 2406,
206     KEY_BUTTON_BASE1 = 2407,
207     KEY_BUTTON_BASE2 = 2408,
208     KEY_BUTTON_BASE3 = 2409,
209     KEY_BUTTON_BASE4 = 2410,
210     KEY_BUTTON_BASE5 = 2411,
211     KEY_BUTTON_BASE6 = 2412,
212     KEY_BUTTON_BASE7 = 2413,
213     KEY_BUTTON_BASE8 = 2414,
214     KEY_BUTTON_BASE9 = 2415,
215     KEY_BUTTON_DEAD = 2416,
216     KEY_SLEEP = 2600,
217     KEY_ZENKAKU_HANKAKU = 2601,
218     KEY_102ND = 2602,
219     KEY_RO = 2603,
220     KEY_KATAKANA = 2604,
221     KEY_HIRAGANA = 2605,
222     KEY_HENKAN = 2606,
223     KEY_KATAKANA_HIRAGANA = 2607,
224     KEY_MUHENKAN = 2608,
225     KEY_LINEFEED = 2609,
226     KEY_MACRO = 2610,
227     KEY_NUMPAD_PLUSMINUS = 2611,
228     KEY_SCALE = 2612,
229     KEY_HANGUEL = 2613,
230     KEY_HANJA = 2614,
231     KEY_YEN = 2615,
232     KEY_STOP = 2616,
233     KEY_AGAIN = 2617,
234     KEY_PROPS = 2618,
235     KEY_UNDO = 2619,
236     KEY_COPY = 2620,
237     KEY_OPEN = 2621,
238     KEY_PASTE = 2622,
239     KEY_FIND = 2623,
240     KEY_CUT = 2624,
241     KEY_HELP = 2625,
242     KEY_CALC = 2626,
243     KEY_FILE = 2627,
244     KEY_BOOKMARKS = 2628,
245     KEY_NEXT = 2629,
246     KEY_PLAYPAUSE = 2630,
247     KEY_PREVIOUS = 2631,
248     KEY_STOPCD = 2632,
249     KEY_CONFIG = 2634,
250     KEY_REFRESH = 2635,
251     KEY_EXIT = 2636,
252     KEY_EDIT = 2637,
253     KEY_SCROLLUP = 2638,
254     KEY_SCROLLDOWN = 2639,
255     KEY_NEW = 2640,
256     KEY_REDO = 2641,
257     KEY_CLOSE = 2642,
258     KEY_PLAY = 2643,
259     KEY_BASSBOOST = 2644,
260     KEY_PRINT = 2645,
261     KEY_CHAT = 2646,
262     KEY_FINANCE = 2647,
263     KEY_CANCEL = 2648,
264     KEY_KBDILLUM_TOGGLE = 2649,
265     KEY_KBDILLUM_DOWN = 2650,
266     KEY_KBDILLUM_UP = 2651,
267     KEY_SEND = 2652,
268     KEY_REPLY = 2653,
269     KEY_FORWARDMAIL = 2654,
270     KEY_SAVE = 2655,
271     KEY_DOCUMENTS = 2656,
272     KEY_VIDEO_NEXT = 2657,
273     KEY_VIDEO_PREV = 2658,
274     KEY_BRIGHTNESS_CYCLE = 2659,
275     KEY_BRIGHTNESS_ZERO = 2660,
276     KEY_DISPLAY_OFF = 2661,
277     KEY_BTN_MISC = 2662,
278     KEY_GOTO = 2663,
279     KEY_INFO = 2664,
280     KEY_PROGRAM = 2665,
281     KEY_PVR = 2666,
282     KEY_SUBTITLE = 2667,
283     KEY_FULL_SCREEN = 2668,
284     KEY_KEYBOARD = 2669,
285     KEY_ASPECT_RATIO = 2670,
286     KEY_PC = 2671,
287     KEY_TV = 2672,
288     KEY_TV2 = 2673,
289     KEY_VCR = 2674,
290     KEY_VCR2 = 2675,
291     KEY_SAT = 2676,
292     KEY_CD = 2677,
293     KEY_TAPE = 2678,
294     KEY_TUNER = 2679,
295     KEY_PLAYER = 2680,
296     KEY_DVD = 2681,
297     KEY_AUDIO = 2682,
298     KEY_VIDEO = 2683,
299     KEY_MEMO = 2684,
300     KEY_CALENDAR = 2685,
301     KEY_RED = 2686,
302     KEY_GREEN = 2687,
303     KEY_YELLOW = 2688,
304     KEY_BLUE = 2689,
305     KEY_CHANNELUP = 2690,
306     KEY_CHANNELDOWN = 2691,
307     KEY_LAST = 2692,
308     KEY_RESTART = 2693,
309     KEY_SLOW = 2694,
310     KEY_SHUFFLE = 2695,
311     KEY_VIDEOPHONE = 2696,
312     KEY_GAMES = 2697,
313     KEY_ZOOMIN = 2698,
314     KEY_ZOOMOUT = 2699,
315     KEY_ZOOMRESET = 2700,
316     KEY_WORDPROCESSOR = 2701,
317     KEY_EDITOR = 2702,
318     KEY_SPREADSHEET = 2703,
319     KEY_GRAPHICSEDITOR = 2704,
320     KEY_PRESENTATION = 2705,
321     KEY_DATABASE = 2706,
322     KEY_NEWS = 2707,
323     KEY_VOICEMAIL = 2708,
324     KEY_ADDRESSBOOK = 2709,
325     KEY_MESSENGER = 2710,
326     KEY_BRIGHTNESS_TOGGLE = 2711,
327     KEY_SPELLCHECK = 2712,
328     KEY_COFFEE = 2713,
329     KEY_MEDIA_REPEAT = 2714,
330     KEY_IMAGES = 2715,
331     KEY_BUTTONCONFIG = 2716,
332     KEY_TASKMANAGER = 2717,
333     KEY_JOURNAL = 2718,
334     KEY_CONTROLPANEL = 2719,
335     KEY_APPSELECT = 2720,
336     KEY_SCREENSAVER = 2721,
337     KEY_ASSISTANT = 2722,
338     KEY_KBD_LAYOUT_NEXT = 2723,
339     KEY_BRIGHTNESS_MIN = 2724,
340     KEY_BRIGHTNESS_MAX = 2725,
341     KEY_KBDINPUTASSIST_PREV = 2726,
342     KEY_KBDINPUTASSIST_NEXT = 2727,
343     KEY_KBDINPUTASSIST_PREVGROUP = 2728,
344     KEY_KBDINPUTASSIST_NEXTGROUP = 2729,
345     KEY_KBDINPUTASSIST_ACCEPT = 2730,
346     KEY_KBDINPUTASSIST_CANCEL = 2731,
347     KEY_FRONT = 2800,
348     KEY_SETUP = 2801,
349     KEY_WAKEUP = 2802,
350     KEY_SENDFILE = 2803,
351     KEY_DELETEFILE = 2804,
352     KEY_XFER = 2805,
353     KEY_PROG1 = 2806,
354     KEY_PROG2 = 2807,
355     KEY_MSDOS = 2808,
356     KEY_SCREENLOCK = 2809,
357     KEY_DIRECTION_ROTATE_DISPLAY = 2810,
358     KEY_CYCLEWINDOWS = 2811,
359     KEY_COMPUTER = 2812,
360     KEY_EJECTCLOSECD = 2813,
361     KEY_ISO = 2814,
362     KEY_MOVE = 2815,
363     KEY_F13 = 2816,
364     KEY_F14 = 2817,
365     KEY_F15 = 2818,
366     KEY_F16 = 2819,
367     KEY_F17 = 2820,
368     KEY_F18 = 2821,
369     KEY_F19 = 2822,
370     KEY_F20 = 2823,
371     KEY_F21 = 2824,
372     KEY_F22 = 2825,
373     KEY_F23 = 2826,
374     KEY_F24 = 2827,
375     KEY_PROG3 = 2828,
376     KEY_PROG4 = 2829,
377     KEY_DASHBOARD = 2830,
378     KEY_SUSPEND = 2831,
379     KEY_HP = 2832,
380     KEY_SOUND = 2833,
381     KEY_QUESTION = 2834,
382     KEY_CONNECT = 2836,
383     KEY_SPORT = 2837,
384     KEY_SHOP = 2838,
385     KEY_ALTERASE = 2839,
386     KEY_SWITCHVIDEOMODE = 2841,
387     KEY_BATTERY = 2842,
388     KEY_BLUETOOTH = 2843,
389     KEY_WLAN = 2844,
390     KEY_UWB = 2845,
391     KEY_WWAN_WIMAX = 2846,
392     KEY_RFKILL = 2847,
393     KEY_CHANNEL = 3001,
394     KEY_BTN_0 = 3100,
395     KEY_BTN_1 = 3101,
396     KEY_BTN_2 = 3102,
397     KEY_BTN_3 = 3103,
398     KEY_BTN_4 = 3104,
399     KEY_BTN_5 = 3105,
400     KEY_BTN_6 = 3106,
401     KEY_BTN_7 = 3107,
402     KEY_BTN_8 = 3108,
403     KEY_BTN_9 = 3109,
404     KEY_BRL_DOT1 = 3201,
405     KEY_BRL_DOT2 = 3202,
406     KEY_BRL_DOT3 = 3203,
407     KEY_BRL_DOT4 = 3204,
408     KEY_BRL_DOT5 = 3205,
409     KEY_BRL_DOT6 = 3206,
410     KEY_BRL_DOT7 = 3207,
411     KEY_BRL_DOT8 = 3208,
412     KEY_BRL_DOT9 = 3209,
413     KEY_BRL_DOT10 = 3210,
414     // New End
415     KEY_LEFT_KNOB_ROLL_UP = 10001,
416     KEY_LEFT_KNOB_ROLL_DOWN = 10002,
417     KEY_LEFT_KNOB = 10003,
418     KEY_RIGHT_KNOB_ROLL_UP = 10004,
419     KEY_RIGHT_KNOB_ROLL_DOWN = 10005,
420     KEY_RIGHT_KNOB = 10006,
421     KEY_VOICE_SOURCE_SWITCH = 10007,
422     KEY_LAUNCHER_MENU = 10008,
423 
424     TV_CONTROL_BACK = KEY_BACK,
425     TV_CONTROL_UP = KEY_DPAD_UP,
426     TV_CONTROL_DOWN = KEY_DPAD_DOWN,
427     TV_CONTROL_LEFT = KEY_DPAD_LEFT,
428     TV_CONTROL_RIGHT = KEY_DPAD_RIGHT,
429     TV_CONTROL_CENTER = KEY_DPAD_CENTER,
430     TV_CONTROL_ENTER = KEY_ENTER,
431     TV_CONTROL_MEDIA_PLAY = KEY_MEDIA_PLAY,
432 };
433 
434 enum class KeyAction : int32_t {
435     UNKNOWN = -1,
436     DOWN = 0,
437     UP = 1,
438     LONG_PRESS = 2,
439     CLICK = 3,
440 };
441 
442 constexpr int32_t ASCII_START_UPPER_CASE_LETTER = 65;
443 constexpr int32_t ASCII_START_LOWER_CASE_LETTER = 97;
444 
445 const char* KeyToString(int32_t code);
446 
447 struct KeyEvent final {
KeyEventfinal448     KeyEvent()
449     {
450         key = KeyToString(static_cast<int32_t>(code));
451     }
KeyEventfinal452     KeyEvent(KeyCode code, KeyAction action, std::vector<KeyCode> pressedCodes, int32_t repeatTime, TimeStamp timeStamp,
453         int32_t metaKey, int64_t deviceId, SourceType sourceType)
454         : code(code), action(action), pressedCodes(pressedCodes), repeatTime(repeatTime), timeStamp(timeStamp),
455           metaKey(metaKey), deviceId(deviceId), sourceType(sourceType)
456     {
457         key = KeyToString(static_cast<int32_t>(code));
458     }
459     KeyEvent(KeyCode code, KeyAction action, int32_t repeatTime = 0, int64_t timeStamp = 0, int64_t deviceId = 0,
460         SourceType sourceType = SourceType::KEYBOARD)
461     {
462         std::vector<KeyCode> pCodes;
463         std::chrono::milliseconds milliseconds(timeStamp);
464         TimeStamp time(milliseconds);
465         new (this) KeyEvent(code, action, pCodes, repeatTime, time, 0, deviceId, sourceType);
466     }
467     ~KeyEvent() = default;
468 
SetTimeStampfinal469     void SetTimeStamp(int64_t timeInt)
470     {
471         std::chrono::milliseconds milliseconds(timeInt);
472         TimeStamp time(milliseconds);
473         timeStamp = time;
474     }
475 
IsKeyfinal476     bool IsKey(std::vector<KeyCode> expectCodes) const
477     {
478         if (expectCodes.size() > pressedCodes.size() || pressedCodes.size() <= 0) {
479             return false;
480         }
481         auto curExpectCode = expectCodes.rbegin();
482         auto curPressedCode = pressedCodes.rbegin();
483         while (curExpectCode != expectCodes.rend()) {
484             if (*curExpectCode != *curPressedCode) {
485                 return false;
486             }
487             ++curExpectCode;
488             ++curPressedCode;
489         }
490         return true;
491     }
492 
IsNumberKeyfinal493     bool IsNumberKey() const
494     {
495         return ((KeyCode::KEY_0 <= code && code <= KeyCode::KEY_9) ||
496                 (KeyCode::KEY_NUMPAD_0 <= code && code <= KeyCode::KEY_NUMPAD_9));
497     }
IsLetterKeyfinal498     bool IsLetterKey() const
499     {
500         return (KeyCode::KEY_A <= code && code <= KeyCode::KEY_Z);
501     }
ConvertCodeToStringfinal502     std::string ConvertCodeToString() const
503     {
504         if (KeyCode::KEY_0 <= code && code <= KeyCode::KEY_9) {
505             return std::to_string(static_cast<int32_t>(code) - static_cast<int32_t>(KeyCode::KEY_0));
506         } else if (KeyCode::KEY_NUMPAD_0 <= code && code <= KeyCode::KEY_NUMPAD_9) {
507             return std::to_string(static_cast<int32_t>(code) - static_cast<int32_t>(KeyCode::KEY_NUMPAD_0));
508         } else if (IsLetterKey()) {
509             int32_t codeValue = static_cast<int32_t>(code) - static_cast<int32_t>(KeyCode::KEY_A);
510             if (IsKey({ KeyCode::KEY_SHIFT_LEFT, code }) || IsKey({ KeyCode::KEY_SHIFT_RIGHT, code })) {
511                 return std::string(1, static_cast<char>(codeValue + ASCII_START_UPPER_CASE_LETTER));
512             } else {
513                 return std::string(1, static_cast<char>(codeValue + ASCII_START_LOWER_CASE_LETTER));
514             }
515         }
516         return "";
517     }
518 
519     KeyCode code { KeyCode::KEY_UNKNOWN };
520     const char* key = nullptr;
521     KeyAction action { KeyAction::UNKNOWN };
522     std::vector<KeyCode> pressedCodes;
523     // When the key is held down for a long period of time, it will be accumulated once in a while.
524     // Note that In the long press scene, you will receive a DOWN and an extra LONG_PRESS event. If you only want to
525     // identify the click event, you can use CLICK event.
526     int32_t repeatTime = 0;
527     TimeStamp timeStamp;
528     int32_t metaKey = 0;
529     int64_t deviceId = 0;
530     SourceType sourceType { SourceType::NONE };
531 };
532 
533 class ACE_EXPORT KeyEventInfo : public BaseEventInfo {
DECLARE_RELATIONSHIP_OF_CLASSES(KeyEventInfo,BaseEventInfo)534     DECLARE_RELATIONSHIP_OF_CLASSES(KeyEventInfo, BaseEventInfo)
535 
536 public:
537     explicit KeyEventInfo(const KeyEvent& event) : BaseEventInfo("keyEvent")
538     {
539         keyType_ = event.action;
540         keyCode_ = event.code;
541         keyText_ = event.key;
542         keySource_ = event.sourceType;
543         SetDeviceId(event.deviceId);
544         SetTimeStamp(event.timeStamp);
545     };
546     ~KeyEventInfo() override = default;
547 
GetKeyType()548     KeyAction GetKeyType() const
549     {
550         return keyType_;
551     }
GetKeyCode()552     KeyCode GetKeyCode() const
553     {
554         return keyCode_;
555     }
GetKeyText()556     const char* GetKeyText() const
557     {
558         return keyText_;
559     }
GetMetaKey()560     int32_t GetMetaKey() const
561     {
562         return metaKey_;
563     }
GetKeySource()564     SourceType GetKeySource() const
565     {
566         return keySource_;
567     }
568 
569 private:
570     KeyAction keyType_ = KeyAction::UNKNOWN;
571     KeyCode keyCode_ = KeyCode::KEY_UNKNOWN;
572     const char* keyText_ = nullptr;
573     int32_t metaKey_ = 0;
574     SourceType keySource_ = SourceType::NONE;
575 };
576 } // namespace OHOS::Ace
577 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_EVENT_KEY_EVENT_H
578