1 /*
2  * Copyright (c) 2021-2022 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 #include "device_base.h"
17 
18 namespace OHOS {
19 namespace MMI {
20 namespace {
21 constexpr int32_t FIRST_FINGER { 1 };
22 constexpr int32_t SECOND_FINGER { 2 };
23 constexpr int32_t THIRD_FINGER { 3 };
24 constexpr int32_t FOURTH_FINGER { 4 };
25 constexpr int32_t FIFTH_FINGER { 5 };
26 constexpr int32_t EV_ABS_MISC_DEFAULT_VALUE { 15 };
27 } // namespace
28 
SetTimeToLibinputEvent(InjectEvent & injectEvent)29 void DeviceBase::SetTimeToLibinputEvent(InjectEvent &injectEvent)
30 {
31     struct timeval tm;
32     gettimeofday(&tm, 0);
33     injectEvent.event.input_event_sec = tm.tv_sec;
34     injectEvent.event.input_event_usec = tm.tv_usec;
35 }
36 
SetSynConfigReport(InputEventArray & inputEventArray,int64_t blockTime)37 void DeviceBase::SetSynConfigReport(InputEventArray &inputEventArray, int64_t blockTime)
38 {
39     InjectEvent injectEvent = {};
40     injectEvent.blockTime = blockTime;
41     injectEvent.event.type = EV_SYN;
42     injectEvent.event.code = SYN_REPORT;
43     injectEvent.event.value = SYN_CONFIG;
44     SetTimeToLibinputEvent(injectEvent);
45     inputEventArray.events.push_back(injectEvent);
46 }
47 
SetKeyLongPressEvent(InputEventArray & inputEventArray,int64_t blockTime,int32_t code)48 void DeviceBase::SetKeyLongPressEvent(InputEventArray& inputEventArray, int64_t blockTime, int32_t code)
49 {
50     InjectEvent injectEvent = {};
51     injectEvent.blockTime = blockTime;
52     injectEvent.event.type = EV_KEY;
53     injectEvent.event.code = static_cast<uint16_t>(code);
54     injectEvent.event.value = LONG_PRESS;
55     SetTimeToLibinputEvent(injectEvent);
56     inputEventArray.events.push_back(injectEvent);
57 }
58 
SetSynReport(InputEventArray & inputEventArray,int64_t blockTime)59 void DeviceBase::SetSynReport(InputEventArray& inputEventArray, int64_t blockTime)
60 {
61     InjectEvent injectEvent = {};
62     injectEvent.blockTime = blockTime;
63     injectEvent.event.type = EV_SYN;
64     injectEvent.event.code = SYN_REPORT;
65     injectEvent.event.value = 0;
66     SetTimeToLibinputEvent(injectEvent);
67     inputEventArray.events.push_back(injectEvent);
68 }
69 
SetKeyPressEvent(InputEventArray & inputEventArray,int64_t blockTime,uint16_t code)70 void DeviceBase::SetKeyPressEvent(InputEventArray& inputEventArray, int64_t blockTime, uint16_t code)
71 {
72     InjectEvent injectEvent = {};
73     injectEvent.blockTime = blockTime;
74     injectEvent.event.type = EV_KEY;
75     injectEvent.event.code = code;
76     injectEvent.event.value = 1;
77     SetTimeToLibinputEvent(injectEvent);
78     inputEventArray.events.push_back(injectEvent);
79 }
80 
SetKeyReleaseEvent(InputEventArray & inputEventArray,int64_t blockTime,uint16_t code)81 void DeviceBase::SetKeyReleaseEvent(InputEventArray& inputEventArray, int64_t blockTime, uint16_t code)
82 {
83     InjectEvent injectEvent = {};
84     injectEvent.blockTime = blockTime;
85     injectEvent.event.type = EV_KEY;
86     injectEvent.event.code = code;
87     injectEvent.event.value = 0;
88     SetTimeToLibinputEvent(injectEvent);
89     inputEventArray.events.push_back(injectEvent);
90 }
91 
SetMtSlot(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)92 void DeviceBase::SetMtSlot(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
93 {
94     InjectEvent injectEvent = {};
95     injectEvent.blockTime = blockTime;
96     injectEvent.event.type = EV_ABS;
97     injectEvent.event.code = ABS_MT_SLOT;
98     injectEvent.event.value = value;
99     SetTimeToLibinputEvent(injectEvent);
100     inputEventArray.events.push_back(injectEvent);
101 }
102 
SetTrackingId(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)103 void DeviceBase::SetTrackingId(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
104 {
105     InjectEvent injectEvent = {};
106     injectEvent.blockTime = blockTime;
107     injectEvent.event.type = EV_ABS;
108     injectEvent.event.code = ABS_MT_TRACKING_ID;
109     static int32_t trackingId = 0;
110     injectEvent.event.value = ((value == 0) ? trackingId++ : value);
111     SetTimeToLibinputEvent(injectEvent);
112     inputEventArray.events.push_back(injectEvent);
113 }
114 
SetPositionX(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)115 void DeviceBase::SetPositionX(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
116 {
117     InjectEvent injectEvent = {};
118     injectEvent.blockTime = blockTime;
119     injectEvent.event.type = EV_ABS;
120     injectEvent.event.code = ABS_MT_POSITION_X;
121     injectEvent.event.value = value;
122     SetTimeToLibinputEvent(injectEvent);
123     inputEventArray.events.push_back(injectEvent);
124 }
125 
SetPositionY(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)126 void DeviceBase::SetPositionY(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
127 {
128     InjectEvent injectEvent = {};
129     injectEvent.blockTime = blockTime;
130     injectEvent.event.type = EV_ABS;
131     injectEvent.event.code = ABS_MT_POSITION_Y;
132     injectEvent.event.value = value;
133     SetTimeToLibinputEvent(injectEvent);
134     inputEventArray.events.push_back(injectEvent);
135 }
136 
SetMtTouchMajor(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)137 void DeviceBase::SetMtTouchMajor(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
138 {
139     InjectEvent injectEvent = {};
140     injectEvent.blockTime = blockTime;
141     injectEvent.event.type = EV_ABS;
142     injectEvent.event.code = ABS_MT_TOUCH_MAJOR;
143     injectEvent.event.value = value;
144     SetTimeToLibinputEvent(injectEvent);
145     inputEventArray.events.push_back(injectEvent);
146 }
147 
SetMtTouchMinor(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)148 void DeviceBase::SetMtTouchMinor(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
149 {
150     InjectEvent injectEvent = {};
151     injectEvent.blockTime = blockTime;
152     injectEvent.event.type = EV_ABS;
153     injectEvent.event.code = ABS_MT_TOUCH_MINOR;
154     injectEvent.event.value = value;
155     SetTimeToLibinputEvent(injectEvent);
156     inputEventArray.events.push_back(injectEvent);
157 }
158 
SetMtOrientation(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)159 void DeviceBase::SetMtOrientation(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
160 {
161     InjectEvent injectEvent = {};
162     injectEvent.blockTime = blockTime;
163     injectEvent.event.type = EV_ABS;
164     injectEvent.event.code = ABS_MT_ORIENTATION;
165     injectEvent.event.value = value;
166     SetTimeToLibinputEvent(injectEvent);
167     inputEventArray.events.push_back(injectEvent);
168 }
169 
SetBtnTouch(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)170 void DeviceBase::SetBtnTouch(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
171 {
172     InjectEvent injectEvent = {};
173     injectEvent.blockTime = blockTime;
174     injectEvent.event.type = EV_KEY;
175     injectEvent.event.code = BTN_TOUCH;
176     injectEvent.event.value = value;
177     SetTimeToLibinputEvent(injectEvent);
178     inputEventArray.events.push_back(injectEvent);
179 }
180 
SetEvAbsX(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)181 void DeviceBase::SetEvAbsX(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
182 {
183     InjectEvent injectEvent = {};
184     injectEvent.blockTime = blockTime;
185     injectEvent.event.type = EV_ABS;
186     injectEvent.event.code = ABS_X;
187     injectEvent.event.value = value;
188     SetTimeToLibinputEvent(injectEvent);
189     inputEventArray.events.push_back(injectEvent);
190 }
191 
SetEvAbsY(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)192 void DeviceBase::SetEvAbsY(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
193 {
194     InjectEvent injectEvent = {};
195     injectEvent.blockTime = blockTime;
196     injectEvent.event.type = EV_ABS;
197     injectEvent.event.code = ABS_Y;
198     injectEvent.event.value = value;
199     SetTimeToLibinputEvent(injectEvent);
200     inputEventArray.events.push_back(injectEvent);
201 }
202 
SetMtTouchFingerType(InputEventArray & inputEventArray,int64_t blockTime,int32_t value,int32_t status)203 void DeviceBase::SetMtTouchFingerType(InputEventArray& inputEventArray, int64_t blockTime,
204     int32_t value, int32_t status)
205 {
206     InjectEvent injectEvent = {};
207     injectEvent.blockTime = blockTime;
208     injectEvent.event.type = EV_KEY;
209     if (value == FIRST_FINGER) {
210         injectEvent.event.code = BTN_TOOL_FINGER;
211     } else if (value == SECOND_FINGER) {
212         injectEvent.event.code = BTN_TOOL_DOUBLETAP;
213     } else if (value == THIRD_FINGER) {
214         injectEvent.event.code = BTN_TOOL_TRIPLETAP;
215     } else if (value == FOURTH_FINGER) {
216         injectEvent.event.code = BTN_TOOL_QUADTAP;
217     } else if (value == FIFTH_FINGER) {
218         injectEvent.event.code = BTN_TOOL_QUINTTAP;
219     } else {
220         injectEvent.event.code = BTN_TOOL_FINGER;
221     }
222     injectEvent.event.value = status;
223     SetTimeToLibinputEvent(injectEvent);
224     inputEventArray.events.push_back(injectEvent);
225 }
226 
SetEvAbsZ(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)227 void DeviceBase::SetEvAbsZ(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
228 {
229     InjectEvent injectEvent = {};
230     injectEvent.blockTime = blockTime;
231     injectEvent.event.type = EV_ABS;
232     injectEvent.event.code = ABS_Z;
233     injectEvent.event.value = value;
234     SetTimeToLibinputEvent(injectEvent);
235     inputEventArray.events.push_back(injectEvent);
236 }
237 
SetEvAbsRx(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)238 void DeviceBase::SetEvAbsRx(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
239 {
240     InjectEvent injectEvent = {};
241     injectEvent.blockTime = blockTime;
242     injectEvent.event.type = EV_ABS;
243     injectEvent.event.code = ABS_RX;
244     injectEvent.event.value = value;
245     SetTimeToLibinputEvent(injectEvent);
246     inputEventArray.events.push_back(injectEvent);
247 }
248 
SetEvAbsRy(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)249 void DeviceBase::SetEvAbsRy(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
250 {
251     InjectEvent injectEvent = {};
252     injectEvent.blockTime = blockTime;
253     injectEvent.event.type = EV_ABS;
254     injectEvent.event.code = ABS_RY;
255     injectEvent.event.value = value;
256     SetTimeToLibinputEvent(injectEvent);
257     inputEventArray.events.push_back(injectEvent);
258 }
259 
SetEvAbsHat0X(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)260 void DeviceBase::SetEvAbsHat0X(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
261 {
262     InjectEvent injectEvent = {};
263     injectEvent.blockTime = blockTime;
264     injectEvent.event.type = EV_ABS;
265     injectEvent.event.code = ABS_HAT0X;
266     injectEvent.event.value = value;
267     SetTimeToLibinputEvent(injectEvent);
268     inputEventArray.events.push_back(injectEvent);
269 }
270 
SetEvAbsHat0Y(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)271 void DeviceBase::SetEvAbsHat0Y(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
272 {
273     InjectEvent injectEvent = {};
274     injectEvent.blockTime = blockTime;
275     injectEvent.event.type = EV_ABS;
276     injectEvent.event.code = ABS_HAT0Y;
277     injectEvent.event.value = value;
278     SetTimeToLibinputEvent(injectEvent);
279     inputEventArray.events.push_back(injectEvent);
280 }
281 
SetEvAbsRz(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)282 void DeviceBase::SetEvAbsRz(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
283 {
284     InjectEvent injectEvent = {};
285     injectEvent.blockTime = blockTime;
286     injectEvent.event.type = EV_ABS;
287     injectEvent.event.code = ABS_RZ;
288     injectEvent.event.value = value;
289     SetTimeToLibinputEvent(injectEvent);
290     inputEventArray.events.push_back(injectEvent);
291 }
292 
SetEvAbs(InputEventArray & inputEventArray,int64_t blockTime,uint16_t code,int32_t value)293 void DeviceBase::SetEvAbs(InputEventArray& inputEventArray, int64_t blockTime, uint16_t code, int32_t value)
294 {
295     InjectEvent injectEvent = {};
296     injectEvent.blockTime = blockTime;
297     injectEvent.event.type = EV_ABS;
298     injectEvent.event.code = code;
299     injectEvent.event.value = value;
300     SetTimeToLibinputEvent(injectEvent);
301     inputEventArray.events.push_back(injectEvent);
302 }
303 
SetRelX(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)304 void DeviceBase::SetRelX(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
305 {
306     InjectEvent injectEvent = {};
307     injectEvent.blockTime = blockTime;
308     injectEvent.event.type = EV_REL;
309     injectEvent.event.code = REL_X;
310     injectEvent.event.value = value;
311     SetTimeToLibinputEvent(injectEvent);
312     inputEventArray.events.push_back(injectEvent);
313 }
314 
SetRelY(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)315 void DeviceBase::SetRelY(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
316 {
317     InjectEvent injectEvent = {};
318     injectEvent.blockTime = blockTime;
319     injectEvent.event.type = EV_REL;
320     injectEvent.event.code = REL_Y;
321     injectEvent.event.value = value;
322     SetTimeToLibinputEvent(injectEvent);
323     inputEventArray.events.push_back(injectEvent);
324 }
325 
SetRelWheel(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)326 void DeviceBase::SetRelWheel(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
327 {
328     InjectEvent injectEvent = {};
329     injectEvent.blockTime = blockTime;
330     injectEvent.event.type = EV_REL;
331     injectEvent.event.code = REL_WHEEL;
332     injectEvent.event.value = value;
333     SetTimeToLibinputEvent(injectEvent);
334     inputEventArray.events.push_back(injectEvent);
335 }
336 
SetRelHwheel(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)337 void DeviceBase::SetRelHwheel(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
338 {
339     InjectEvent injectEvent = {};
340     injectEvent.blockTime = blockTime;
341     injectEvent.event.type = EV_REL;
342     injectEvent.event.code = REL_HWHEEL;
343     injectEvent.event.value = value;
344     SetTimeToLibinputEvent(injectEvent);
345     inputEventArray.events.push_back(injectEvent);
346 }
347 
SetEvAbsWheel(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)348 void DeviceBase::SetEvAbsWheel(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
349 {
350     InjectEvent injectEvent = {};
351     injectEvent.blockTime = blockTime;
352     injectEvent.event.type = EV_ABS;
353     injectEvent.event.code = ABS_WHEEL;
354     injectEvent.event.value = value;
355     SetTimeToLibinputEvent(injectEvent);
356     inputEventArray.events.push_back(injectEvent);
357 }
358 
SetAbsMisc(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)359 void DeviceBase::SetAbsMisc(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
360 {
361     InjectEvent injectEvent = {};
362     injectEvent.blockTime = blockTime;
363     injectEvent.event.type = EV_ABS;
364     injectEvent.event.code = ABS_MISC;
365     if (value == 1) {
366         injectEvent.event.value = EV_ABS_MISC_DEFAULT_VALUE;
367     } else {
368         injectEvent.event.value = 0;
369     }
370     SetTimeToLibinputEvent(injectEvent);
371     inputEventArray.events.push_back(injectEvent);
372 }
373 
SetAbsTiltX(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)374 void DeviceBase::SetAbsTiltX(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
375 {
376     InjectEvent injectEvent = {};
377     injectEvent.blockTime = blockTime;
378     injectEvent.event.type = EV_ABS;
379     injectEvent.event.code = ABS_TILT_X;
380     injectEvent.event.value = value;
381     SetTimeToLibinputEvent(injectEvent);
382     inputEventArray.events.push_back(injectEvent);
383 }
384 
SetAbsTiltY(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)385 void DeviceBase::SetAbsTiltY(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
386 {
387     InjectEvent injectEvent = {};
388     injectEvent.blockTime = blockTime;
389     injectEvent.event.type = EV_ABS;
390     injectEvent.event.code = ABS_TILT_Y;
391     injectEvent.event.value = value;
392     SetTimeToLibinputEvent(injectEvent);
393     inputEventArray.events.push_back(injectEvent);
394 }
395 
SetAbsPressure(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)396 void DeviceBase::SetAbsPressure(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
397 {
398     InjectEvent injectEvent = {};
399     injectEvent.blockTime = blockTime;
400     injectEvent.event.type = EV_ABS;
401     injectEvent.event.code = ABS_PRESSURE;
402     injectEvent.event.value = value;
403     SetTimeToLibinputEvent(injectEvent);
404     inputEventArray.events.push_back(injectEvent);
405 }
406 
SetAbsDistance(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)407 void DeviceBase::SetAbsDistance(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
408 {
409     InjectEvent injectEvent = {};
410     injectEvent.blockTime = blockTime;
411     injectEvent.event.type = EV_ABS;
412     injectEvent.event.code = ABS_DISTANCE;
413     injectEvent.event.value = value;
414     SetTimeToLibinputEvent(injectEvent);
415     inputEventArray.events.push_back(injectEvent);
416 }
417 
SetBtnPen(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)418 void DeviceBase::SetBtnPen(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
419 {
420     InjectEvent injectEvent = {};
421     injectEvent.blockTime = blockTime;
422     injectEvent.event.type = EV_KEY;
423     injectEvent.event.code = BTN_TOOL_PEN;
424     injectEvent.event.value = value;
425     SetTimeToLibinputEvent(injectEvent);
426     inputEventArray.events.push_back(injectEvent);
427 }
428 
SetBtnStylus(InputEventArray & inputEventArray,int64_t blockTime,uint16_t code,int32_t value)429 void DeviceBase::SetBtnStylus(InputEventArray& inputEventArray, int64_t blockTime, uint16_t code,
430     int32_t value)
431 {
432     InjectEvent injectEvent = {};
433     injectEvent.blockTime = blockTime;
434     injectEvent.event.type = EV_KEY;
435     injectEvent.event.code = code;
436     injectEvent.event.value = value;
437     SetTimeToLibinputEvent(injectEvent);
438     inputEventArray.events.push_back(injectEvent);
439 }
440 
SetBtnRubber(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)441 void DeviceBase::SetBtnRubber(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
442 {
443     InjectEvent injectEvent = {};
444     injectEvent.blockTime = blockTime;
445     injectEvent.event.type = EV_KEY;
446     injectEvent.event.code = BTN_TOOL_RUBBER;
447     injectEvent.event.value = value;
448     SetTimeToLibinputEvent(injectEvent);
449     inputEventArray.events.push_back(injectEvent);
450 }
451 
SetMscSerial(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)452 void DeviceBase::SetMscSerial(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
453 {
454     InjectEvent injectEvent = {};
455     injectEvent.blockTime = blockTime;
456     injectEvent.event.type = EV_MSC;
457     injectEvent.event.code = MSC_SERIAL;
458     injectEvent.event.value = value;
459     SetTimeToLibinputEvent(injectEvent);
460     inputEventArray.events.push_back(injectEvent);
461 }
462 
SetSynMtReport(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)463 void DeviceBase::SetSynMtReport(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
464 {
465     InjectEvent injectEvent = {};
466     injectEvent.blockTime = blockTime;
467     injectEvent.event.type = EV_SYN;
468     injectEvent.event.code = SYN_MT_REPORT;
469     injectEvent.event.value = value;
470     SetTimeToLibinputEvent(injectEvent);
471     inputEventArray.events.push_back(injectEvent);
472 }
473 
SetThrottle(InputEventArray & inputEventArray,int64_t blockTime,int32_t value)474 void DeviceBase::SetThrottle(InputEventArray& inputEventArray, int64_t blockTime, int32_t value)
475 {
476     InjectEvent injectEvent = {};
477     injectEvent.blockTime = blockTime;
478     injectEvent.event.type = EV_ABS;
479     injectEvent.event.code = ABS_THROTTLE;
480     injectEvent.event.value = value;
481     SetTimeToLibinputEvent(injectEvent);
482     inputEventArray.events.push_back(injectEvent);
483 }
484 } // namespace MMI
485 } // namespace OHOS