1 /*
2 * Copyright (c) 2021-2024 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 "multimodal_input_connect_manager.h"
17
18
19 #include "iservice_registry.h"
20
21 #include "input_binder_client_server.h"
22 #include "multimodal_input_connect_death_recipient.h"
23
24 #undef MMI_LOG_DOMAIN
25 #define MMI_LOG_DOMAIN MMI_LOG_SERVER
26 #undef MMI_LOG_TAG
27 #define MMI_LOG_TAG "MultimodalInputConnectManager"
28
29 namespace OHOS {
30 namespace MMI {
31 namespace {
32 std::shared_ptr<MultimodalInputConnectManager> g_instance = nullptr;
33 } // namespace
34
GetInstance()35 std::shared_ptr<MultimodalInputConnectManager> MultimodalInputConnectManager::GetInstance()
36 {
37 static std::once_flag flag;
38 std::call_once(flag, [&]() { g_instance.reset(new (std::nothrow) MultimodalInputConnectManager()); });
39
40 CHKPP(g_instance);
41 if (g_instance != nullptr) {
42 g_instance->ConnectMultimodalInputService();
43 }
44 return g_instance;
45 }
46
AllocSocketPair(const int32_t moduleType)47 int32_t MultimodalInputConnectManager::AllocSocketPair(const int32_t moduleType)
48 {
49 CALL_DEBUG_ENTER;
50 std::lock_guard<std::mutex> guard(lock_);
51 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
52
53 const std::string programName(GetProgramName());
54 int32_t result = multimodalInputConnectService_->AllocSocketFd(programName, moduleType, socketFd_, tokenType_);
55 if (result != RET_OK) {
56 MMI_HILOGE("AllocSocketFd has error:%{public}d", result);
57 return RET_ERR;
58 }
59
60 MMI_HILOGD("AllocSocketPair success. socketFd_:%{public}d tokenType_:%{public}d", socketFd_, tokenType_);
61 return RET_OK;
62 }
63
GetClientSocketFdOfAllocedSocketPair() const64 int32_t MultimodalInputConnectManager::GetClientSocketFdOfAllocedSocketPair() const
65 {
66 CALL_DEBUG_ENTER;
67 return socketFd_;
68 }
69
GetDisplayBindInfo(DisplayBindInfos & infos)70 int32_t MultimodalInputConnectManager::GetDisplayBindInfo(DisplayBindInfos &infos)
71 {
72 std::lock_guard<std::mutex> guard(lock_);
73 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
74 return multimodalInputConnectService_->GetDisplayBindInfo(infos);
75 }
76
GetAllMmiSubscribedEvents(std::map<std::tuple<int32_t,int32_t,std::string>,int32_t> & datas)77 int32_t MultimodalInputConnectManager::GetAllMmiSubscribedEvents(std::map<std::tuple<int32_t, int32_t, std::string>,
78 int32_t> &datas)
79 {
80 std::lock_guard<std::mutex> guard(lock_);
81 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
82 return multimodalInputConnectService_->GetAllMmiSubscribedEvents(datas);
83 }
84
SetDisplayBind(int32_t deviceId,int32_t displayId,std::string & msg)85 int32_t MultimodalInputConnectManager::SetDisplayBind(int32_t deviceId, int32_t displayId, std::string &msg)
86 {
87 std::lock_guard<std::mutex> guard(lock_);
88 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
89 return multimodalInputConnectService_->SetDisplayBind(deviceId, displayId, msg);
90 }
91
GetWindowPid(int32_t windowId)92 int32_t MultimodalInputConnectManager::GetWindowPid(int32_t windowId)
93 {
94 std::lock_guard<std::mutex> guard(lock_);
95 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
96 return multimodalInputConnectService_->GetWindowPid(windowId);
97 }
98
AddInputEventFilter(sptr<IEventFilter> filter,int32_t filterId,int32_t priority,uint32_t deviceTags)99 int32_t MultimodalInputConnectManager::AddInputEventFilter(sptr<IEventFilter> filter, int32_t filterId,
100 int32_t priority, uint32_t deviceTags)
101 {
102 std::lock_guard<std::mutex> guard(lock_);
103 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
104 return multimodalInputConnectService_->AddInputEventFilter(filter, filterId, priority, deviceTags);
105 }
106
NotifyNapOnline()107 int32_t MultimodalInputConnectManager::NotifyNapOnline()
108 {
109 std::lock_guard<std::mutex> guard(lock_);
110 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
111 return multimodalInputConnectService_->NotifyNapOnline();
112 }
113
RemoveInputEventObserver()114 int32_t MultimodalInputConnectManager::RemoveInputEventObserver()
115 {
116 std::lock_guard<std::mutex> guard(lock_);
117 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
118 return multimodalInputConnectService_->RemoveInputEventObserver();
119 }
120
RemoveInputEventFilter(int32_t filterId)121 int32_t MultimodalInputConnectManager::RemoveInputEventFilter(int32_t filterId)
122 {
123 std::lock_guard<std::mutex> guard(lock_);
124 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
125 return multimodalInputConnectService_->RemoveInputEventFilter(filterId);
126 }
127
SetMouseScrollRows(int32_t rows)128 int32_t MultimodalInputConnectManager::SetMouseScrollRows(int32_t rows)
129 {
130 std::lock_guard<std::mutex> guard(lock_);
131 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
132 return multimodalInputConnectService_->SetMouseScrollRows(rows);
133 }
134
SetCustomCursor(int32_t windowId,int32_t focusX,int32_t focusY,void * pixelMap)135 int32_t MultimodalInputConnectManager::SetCustomCursor(int32_t windowId, int32_t focusX, int32_t focusY,
136 void* pixelMap)
137 {
138 std::lock_guard<std::mutex> guard(lock_);
139 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
140 return multimodalInputConnectService_->SetCustomCursor(windowId, focusX, focusY, pixelMap);
141 }
142
SetMouseIcon(int32_t windowId,void * pixelMap)143 int32_t MultimodalInputConnectManager::SetMouseIcon(int32_t windowId, void* pixelMap)
144 {
145 std::lock_guard<std::mutex> guard(lock_);
146 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
147 return multimodalInputConnectService_->SetMouseIcon(windowId, pixelMap);
148 }
149
SetMouseHotSpot(int32_t pid,int32_t windowId,int32_t hotSpotX,int32_t hotSpotY)150 int32_t MultimodalInputConnectManager::SetMouseHotSpot(
151 int32_t pid, int32_t windowId, int32_t hotSpotX, int32_t hotSpotY)
152 {
153 std::lock_guard<std::mutex> guard(lock_);
154 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
155 return multimodalInputConnectService_->SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
156 }
157
GetMouseScrollRows(int32_t & rows)158 int32_t MultimodalInputConnectManager::GetMouseScrollRows(int32_t &rows)
159 {
160 std::lock_guard<std::mutex> guard(lock_);
161 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
162 return multimodalInputConnectService_->GetMouseScrollRows(rows);
163 }
164
SetPointerSize(int32_t size)165 int32_t MultimodalInputConnectManager::SetPointerSize(int32_t size)
166 {
167 std::lock_guard<std::mutex> guard(lock_);
168 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
169 return multimodalInputConnectService_->SetPointerSize(size);
170 }
171
SetNapStatus(int32_t pid,int32_t uid,std::string bundleName,int32_t napStatus)172 int32_t MultimodalInputConnectManager::SetNapStatus(int32_t pid, int32_t uid, std::string bundleName, int32_t napStatus)
173 {
174 std::lock_guard<std::mutex> guard(lock_);
175 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
176 return multimodalInputConnectService_->SetNapStatus(pid, uid, bundleName, napStatus);
177 }
178
GetPointerSize(int32_t & size)179 int32_t MultimodalInputConnectManager::GetPointerSize(int32_t &size)
180 {
181 std::lock_guard<std::mutex> guard(lock_);
182 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
183 return multimodalInputConnectService_->GetPointerSize(size);
184 }
185
GetCursorSurfaceId(uint64_t & surfaceId)186 int32_t MultimodalInputConnectManager::GetCursorSurfaceId(uint64_t &surfaceId)
187 {
188 std::lock_guard<std::mutex> guard(lock_);
189 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
190 return multimodalInputConnectService_->GetCursorSurfaceId(surfaceId);
191 }
192
SetMousePrimaryButton(int32_t primaryButton)193 int32_t MultimodalInputConnectManager::SetMousePrimaryButton(int32_t primaryButton)
194 {
195 std::lock_guard<std::mutex> guard(lock_);
196 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
197 return multimodalInputConnectService_->SetMousePrimaryButton(primaryButton);
198 }
199
GetMousePrimaryButton(int32_t & primaryButton)200 int32_t MultimodalInputConnectManager::GetMousePrimaryButton(int32_t &primaryButton)
201 {
202 std::lock_guard<std::mutex> guard(lock_);
203 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
204 return multimodalInputConnectService_->GetMousePrimaryButton(primaryButton);
205 }
206
SetHoverScrollState(bool state)207 int32_t MultimodalInputConnectManager::SetHoverScrollState(bool state)
208 {
209 std::lock_guard<std::mutex> guard(lock_);
210 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
211 return multimodalInputConnectService_->SetHoverScrollState(state);
212 }
213
GetHoverScrollState(bool & state)214 int32_t MultimodalInputConnectManager::GetHoverScrollState(bool &state)
215 {
216 std::lock_guard<std::mutex> guard(lock_);
217 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
218 return multimodalInputConnectService_->GetHoverScrollState(state);
219 }
220
SetPointerVisible(bool visible,int32_t priority)221 int32_t MultimodalInputConnectManager::SetPointerVisible(bool visible, int32_t priority)
222 {
223 std::lock_guard<std::mutex> guard(lock_);
224 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
225 return multimodalInputConnectService_->SetPointerVisible(visible, priority);
226 }
227
IsPointerVisible(bool & visible)228 int32_t MultimodalInputConnectManager::IsPointerVisible(bool &visible)
229 {
230 std::lock_guard<std::mutex> guard(lock_);
231 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
232 return multimodalInputConnectService_->IsPointerVisible(visible);
233 }
234
MarkProcessed(int32_t eventType,int32_t eventId)235 int32_t MultimodalInputConnectManager::MarkProcessed(int32_t eventType, int32_t eventId)
236 {
237 std::lock_guard<std::mutex> guard(lock_);
238 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
239 return multimodalInputConnectService_->MarkProcessed(eventType, eventId);
240 }
241
SetPointerColor(int32_t color)242 int32_t MultimodalInputConnectManager::SetPointerColor(int32_t color)
243 {
244 std::lock_guard<std::mutex> guard(lock_);
245 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
246 return multimodalInputConnectService_->SetPointerColor(color);
247 }
248
GetPointerColor(int32_t & color)249 int32_t MultimodalInputConnectManager::GetPointerColor(int32_t &color)
250 {
251 std::lock_guard<std::mutex> guard(lock_);
252 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
253 return multimodalInputConnectService_->GetPointerColor(color);
254 }
255
SetPointerSpeed(int32_t speed)256 int32_t MultimodalInputConnectManager::SetPointerSpeed(int32_t speed)
257 {
258 std::lock_guard<std::mutex> guard(lock_);
259 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
260 return multimodalInputConnectService_->SetPointerSpeed(speed);
261 }
262
GetPointerSpeed(int32_t & speed)263 int32_t MultimodalInputConnectManager::GetPointerSpeed(int32_t &speed)
264 {
265 std::lock_guard<std::mutex> guard(lock_);
266 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
267 return multimodalInputConnectService_->GetPointerSpeed(speed);
268 }
269
SetPointerStyle(int32_t windowId,PointerStyle pointerStyle,bool isUiExtension)270 int32_t MultimodalInputConnectManager::SetPointerStyle(int32_t windowId, PointerStyle pointerStyle, bool isUiExtension)
271 {
272 std::lock_guard<std::mutex> guard(lock_);
273 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
274 return multimodalInputConnectService_->SetPointerStyle(windowId, pointerStyle, isUiExtension);
275 }
276
ClearWindowPointerStyle(int32_t pid,int32_t windowId)277 int32_t MultimodalInputConnectManager::ClearWindowPointerStyle(int32_t pid, int32_t windowId)
278 {
279 std::lock_guard<std::mutex> guard(lock_);
280 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
281 return multimodalInputConnectService_->ClearWindowPointerStyle(pid, windowId);
282 }
283
GetPointerStyle(int32_t windowId,PointerStyle & pointerStyle,bool isUiExtension)284 int32_t MultimodalInputConnectManager::GetPointerStyle(int32_t windowId, PointerStyle &pointerStyle, bool isUiExtension)
285 {
286 std::lock_guard<std::mutex> guard(lock_);
287 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
288 return multimodalInputConnectService_->GetPointerStyle(windowId, pointerStyle, isUiExtension);
289 }
290
RegisterDevListener()291 int32_t MultimodalInputConnectManager::RegisterDevListener()
292 {
293 std::lock_guard<std::mutex> guard(lock_);
294 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
295 return multimodalInputConnectService_->RegisterDevListener();
296 }
297
UnregisterDevListener()298 int32_t MultimodalInputConnectManager::UnregisterDevListener()
299 {
300 std::lock_guard<std::mutex> guard(lock_);
301 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
302 return multimodalInputConnectService_->UnregisterDevListener();
303 }
304
SupportKeys(int32_t deviceId,std::vector<int32_t> & keys,std::vector<bool> & keystroke)305 int32_t MultimodalInputConnectManager::SupportKeys(int32_t deviceId, std::vector<int32_t> &keys,
306 std::vector<bool> &keystroke)
307 {
308 std::lock_guard<std::mutex> guard(lock_);
309 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
310 return multimodalInputConnectService_->SupportKeys(deviceId, keys, keystroke);
311 }
312
GetDeviceIds(std::vector<int32_t> & ids)313 int32_t MultimodalInputConnectManager::GetDeviceIds(std::vector<int32_t> &ids)
314 {
315 std::lock_guard<std::mutex> guard(lock_);
316 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
317 return multimodalInputConnectService_->GetDeviceIds(ids);
318 }
319
GetDevice(int32_t deviceId,std::shared_ptr<InputDevice> & inputDevice)320 int32_t MultimodalInputConnectManager::GetDevice(int32_t deviceId, std::shared_ptr<InputDevice> &inputDevice)
321 {
322 std::lock_guard<std::mutex> guard(lock_);
323 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
324 return multimodalInputConnectService_->GetDevice(deviceId, inputDevice);
325 }
326
GetKeyboardType(int32_t deviceId,int32_t & keyboardType)327 int32_t MultimodalInputConnectManager::GetKeyboardType(int32_t deviceId, int32_t &keyboardType)
328 {
329 std::lock_guard<std::mutex> guard(lock_);
330 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
331 return multimodalInputConnectService_->GetKeyboardType(deviceId, keyboardType);
332 }
333
SetKeyboardRepeatDelay(int32_t delay)334 int32_t MultimodalInputConnectManager::SetKeyboardRepeatDelay(int32_t delay)
335 {
336 std::lock_guard<std::mutex> guard(lock_);
337 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
338 return multimodalInputConnectService_->SetKeyboardRepeatDelay(delay);
339 }
340
SetKeyboardRepeatRate(int32_t rate)341 int32_t MultimodalInputConnectManager::SetKeyboardRepeatRate(int32_t rate)
342 {
343 std::lock_guard<std::mutex> guard(lock_);
344 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
345 return multimodalInputConnectService_->SetKeyboardRepeatRate(rate);
346 }
347
GetKeyboardRepeatDelay(int32_t & delay)348 int32_t MultimodalInputConnectManager::GetKeyboardRepeatDelay(int32_t &delay)
349 {
350 std::lock_guard<std::mutex> guard(lock_);
351 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
352 return multimodalInputConnectService_->GetKeyboardRepeatDelay(delay);
353 }
354
GetKeyboardRepeatRate(int32_t & rate)355 int32_t MultimodalInputConnectManager::GetKeyboardRepeatRate(int32_t &rate)
356 {
357 std::lock_guard<std::mutex> guard(lock_);
358 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
359 return multimodalInputConnectService_->GetKeyboardRepeatRate(rate);
360 }
361
AddInputHandler(InputHandlerType handlerType,HandleEventType eventType,int32_t priority,uint32_t deviceTags,std::vector<int32_t> actionsType)362 int32_t MultimodalInputConnectManager::AddInputHandler(InputHandlerType handlerType, HandleEventType eventType,
363 int32_t priority, uint32_t deviceTags, std::vector<int32_t> actionsType)
364 {
365 std::lock_guard<std::mutex> guard(lock_);
366 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
367 return multimodalInputConnectService_->AddInputHandler(handlerType, eventType, priority, deviceTags, actionsType);
368 }
369
RemoveInputHandler(InputHandlerType handlerType,HandleEventType eventType,int32_t priority,uint32_t deviceTags,std::vector<int32_t> actionsType)370 int32_t MultimodalInputConnectManager::RemoveInputHandler(InputHandlerType handlerType, HandleEventType eventType,
371 int32_t priority, uint32_t deviceTags, std::vector<int32_t> actionsType)
372 {
373 std::lock_guard<std::mutex> guard(lock_);
374 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
375 return multimodalInputConnectService_->RemoveInputHandler(handlerType, eventType, priority, deviceTags,
376 actionsType);
377 }
378
AddPreInputHandler(int32_t handlerId,HandleEventType eventType,std::vector<int32_t> keys)379 int32_t MultimodalInputConnectManager::AddPreInputHandler(int32_t handlerId, HandleEventType eventType,
380 std::vector<int32_t> keys)
381 {
382 std::lock_guard<std::mutex> guard(lock_);
383 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
384 return multimodalInputConnectService_->AddPreInputHandler(handlerId, eventType, keys);
385 }
386
RemovePreInputHandler(int32_t handlerId)387 int32_t MultimodalInputConnectManager::RemovePreInputHandler(int32_t handlerId)
388 {
389 std::lock_guard<std::mutex> guard(lock_);
390 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
391 return multimodalInputConnectService_->RemovePreInputHandler(handlerId);
392 }
393
AddGestureMonitor(InputHandlerType handlerType,HandleEventType eventType,TouchGestureType gestureType,int32_t fingers)394 int32_t MultimodalInputConnectManager::AddGestureMonitor(InputHandlerType handlerType,
395 HandleEventType eventType, TouchGestureType gestureType, int32_t fingers)
396 {
397 std::lock_guard<std::mutex> guard(lock_);
398 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
399 return multimodalInputConnectService_->AddGestureMonitor(handlerType, eventType, gestureType, fingers);
400 }
401
RemoveGestureMonitor(InputHandlerType handlerType,HandleEventType eventType,TouchGestureType gestureType,int32_t fingers)402 int32_t MultimodalInputConnectManager::RemoveGestureMonitor(InputHandlerType handlerType,
403 HandleEventType eventType, TouchGestureType gestureType, int32_t fingers)
404 {
405 std::lock_guard<std::mutex> guard(lock_);
406 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
407 return multimodalInputConnectService_->RemoveGestureMonitor(handlerType, eventType, gestureType, fingers);
408 }
409
MarkEventConsumed(int32_t eventId)410 int32_t MultimodalInputConnectManager::MarkEventConsumed(int32_t eventId)
411 {
412 std::lock_guard<std::mutex> guard(lock_);
413 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
414 return multimodalInputConnectService_->MarkEventConsumed(eventId);
415 }
416
SubscribeKeyEvent(int32_t subscribeId,const std::shared_ptr<KeyOption> option)417 int32_t MultimodalInputConnectManager::SubscribeKeyEvent(int32_t subscribeId, const std::shared_ptr<KeyOption> option)
418 {
419 std::lock_guard<std::mutex> guard(lock_);
420 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
421 return multimodalInputConnectService_->SubscribeKeyEvent(subscribeId, option);
422 }
423
UnsubscribeKeyEvent(int32_t subscribeId)424 int32_t MultimodalInputConnectManager::UnsubscribeKeyEvent(int32_t subscribeId)
425 {
426 std::lock_guard<std::mutex> guard(lock_);
427 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
428 return multimodalInputConnectService_->UnsubscribeKeyEvent(subscribeId);
429 }
430
SubscribeHotkey(int32_t subscribeId,const std::shared_ptr<KeyOption> option)431 int32_t MultimodalInputConnectManager::SubscribeHotkey(int32_t subscribeId, const std::shared_ptr<KeyOption> option)
432 {
433 std::lock_guard<std::mutex> guard(lock_);
434 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
435 return multimodalInputConnectService_->SubscribeHotkey(subscribeId, option);
436 }
437
UnsubscribeHotkey(int32_t subscribeId)438 int32_t MultimodalInputConnectManager::UnsubscribeHotkey(int32_t subscribeId)
439 {
440 std::lock_guard<std::mutex> guard(lock_);
441 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
442 return multimodalInputConnectService_->UnsubscribeHotkey(subscribeId);
443 }
444
SubscribeKeyMonitor(const KeyMonitorOption & keyOption)445 int32_t MultimodalInputConnectManager::SubscribeKeyMonitor(const KeyMonitorOption &keyOption)
446 {
447 std::lock_guard<std::mutex> guard(lock_);
448 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
449 return multimodalInputConnectService_->SubscribeKeyMonitor(keyOption);
450 }
451
UnsubscribeKeyMonitor(const KeyMonitorOption & keyOption)452 int32_t MultimodalInputConnectManager::UnsubscribeKeyMonitor(const KeyMonitorOption &keyOption)
453 {
454 std::lock_guard<std::mutex> guard(lock_);
455 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
456 return multimodalInputConnectService_->UnsubscribeKeyMonitor(keyOption);
457 }
458
SubscribeSwitchEvent(int32_t subscribeId,int32_t switchType)459 int32_t MultimodalInputConnectManager::SubscribeSwitchEvent(int32_t subscribeId, int32_t switchType)
460 {
461 std::lock_guard<std::mutex> guard(lock_);
462 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
463 return multimodalInputConnectService_->SubscribeSwitchEvent(subscribeId, switchType);
464 }
465
UnsubscribeSwitchEvent(int32_t subscribeId)466 int32_t MultimodalInputConnectManager::UnsubscribeSwitchEvent(int32_t subscribeId)
467 {
468 std::lock_guard<std::mutex> guard(lock_);
469 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
470 return multimodalInputConnectService_->UnsubscribeSwitchEvent(subscribeId);
471 }
472
SubscribeTabletProximity(int32_t subscribeId)473 int32_t MultimodalInputConnectManager::SubscribeTabletProximity(int32_t subscribeId)
474 {
475 std::lock_guard<std::mutex> guard(lock_);
476 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
477 return multimodalInputConnectService_->SubscribeTabletProximity(subscribeId);
478 }
479
UnsubscribetabletProximity(int32_t subscribeId)480 int32_t MultimodalInputConnectManager::UnsubscribetabletProximity(int32_t subscribeId)
481 {
482 std::lock_guard<std::mutex> guard(lock_);
483 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
484 return multimodalInputConnectService_->UnsubscribetabletProximity(subscribeId);
485 }
486
SubscribeLongPressEvent(int32_t subscribeId,const LongPressRequest & longPressRequest)487 int32_t MultimodalInputConnectManager::SubscribeLongPressEvent(int32_t subscribeId,
488 const LongPressRequest &longPressRequest)
489 {
490 std::lock_guard<std::mutex> guard(lock_);
491 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
492 return multimodalInputConnectService_->SubscribeLongPressEvent(subscribeId, longPressRequest);
493 }
494
UnsubscribeLongPressEvent(int32_t subscribeId)495 int32_t MultimodalInputConnectManager::UnsubscribeLongPressEvent(int32_t subscribeId)
496 {
497 std::lock_guard<std::mutex> guard(lock_);
498 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
499 return multimodalInputConnectService_->UnsubscribeLongPressEvent(subscribeId);
500 }
501
MoveMouseEvent(int32_t offsetX,int32_t offsetY)502 int32_t MultimodalInputConnectManager::MoveMouseEvent(int32_t offsetX, int32_t offsetY)
503 {
504 std::lock_guard<std::mutex> guard(lock_);
505 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
506 return multimodalInputConnectService_->MoveMouseEvent(offsetX, offsetY);
507 }
508
InjectKeyEvent(const std::shared_ptr<KeyEvent> event,bool isNativeInject)509 int32_t MultimodalInputConnectManager::InjectKeyEvent(const std::shared_ptr<KeyEvent> event, bool isNativeInject)
510 {
511 std::lock_guard<std::mutex> guard(lock_);
512 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
513 return multimodalInputConnectService_->InjectKeyEvent(event, isNativeInject);
514 }
515
InjectPointerEvent(const std::shared_ptr<PointerEvent> pointerEvent,bool isNativeInject)516 int32_t MultimodalInputConnectManager::InjectPointerEvent(const std::shared_ptr<PointerEvent> pointerEvent,
517 bool isNativeInject)
518 {
519 std::lock_guard<std::mutex> guard(lock_);
520 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
521 return multimodalInputConnectService_->InjectPointerEvent(pointerEvent, isNativeInject);
522 }
523
InjectTouchPadEvent(std::shared_ptr<PointerEvent> pointerEvent,const TouchpadCDG & touchpadCDG,bool isNativeInject)524 int32_t MultimodalInputConnectManager::InjectTouchPadEvent(std::shared_ptr<PointerEvent> pointerEvent,
525 const TouchpadCDG &touchpadCDG, bool isNativeInject)
526 {
527 std::lock_guard<std::mutex> guard(lock_);
528 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
529 return multimodalInputConnectService_->InjectTouchPadEvent(pointerEvent, touchpadCDG, isNativeInject);
530 }
531
SetAnrObserver()532 int32_t MultimodalInputConnectManager::SetAnrObserver()
533 {
534 std::lock_guard<std::mutex> guard(lock_);
535 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
536 return multimodalInputConnectService_->SetAnrObserver();
537 }
538
GetFunctionKeyState(int32_t funcKey,bool & state)539 int32_t MultimodalInputConnectManager::GetFunctionKeyState(int32_t funcKey, bool &state)
540 {
541 std::lock_guard<std::mutex> guard(lock_);
542 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
543 return multimodalInputConnectService_->GetFunctionKeyState(funcKey, state);
544 }
545
SetFunctionKeyState(int32_t funcKey,bool enable)546 int32_t MultimodalInputConnectManager::SetFunctionKeyState(int32_t funcKey, bool enable)
547 {
548 std::lock_guard<std::mutex> guard(lock_);
549 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
550 return multimodalInputConnectService_->SetFunctionKeyState(funcKey, enable);
551 }
552
SetPointerLocation(int32_t x,int32_t y,int32_t displayId)553 int32_t MultimodalInputConnectManager::SetPointerLocation(int32_t x, int32_t y, int32_t displayId)
554 {
555 std::lock_guard<std::mutex> guard(lock_);
556 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
557 return multimodalInputConnectService_->SetPointerLocation(x, y, displayId);
558 }
559
ConnectMultimodalInputService()560 bool MultimodalInputConnectManager::ConnectMultimodalInputService() __attribute__((no_sanitize("cfi")))
561 {
562 CALL_DEBUG_ENTER;
563 std::lock_guard<std::mutex> guard(lock_);
564 if (multimodalInputConnectService_ != nullptr) {
565 return true;
566 }
567 auto sm = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
568 CHKPF(sm);
569 auto sa = sm->CheckSystemAbility(IMultimodalInputConnect::MULTIMODAL_INPUT_CONNECT_SERVICE_ID);
570 CHKPF(sa);
571
572 std::weak_ptr<MultimodalInputConnectManager> weakPtr = shared_from_this();
573 auto deathCallback = [weakPtr](const wptr<IRemoteObject> &object) {
574 auto sharedPtr = weakPtr.lock();
575 if (sharedPtr != nullptr) {
576 sharedPtr->OnDeath(object);
577 }
578 };
579
580 multimodalInputConnectRecipient_ = new (std::nothrow) MultimodalInputConnectDeathRecipient(deathCallback);
581 CHKPF(multimodalInputConnectRecipient_);
582 if (!sa->AddDeathRecipient(multimodalInputConnectRecipient_)) {
583 MMI_HILOGE("Failed to add death recipient");
584 return false;
585 }
586 multimodalInputConnectService_ = iface_cast<IMultimodalInputConnect>(sa);
587 CHKPF(multimodalInputConnectService_);
588 sptr<IRemoteObject> remoteObject = INPUT_BINDER_CLIENT_SERVICE->GetClientSrv();
589 CHKPF(remoteObject);
590 multimodalInputConnectService_->TransferBinderClientSrv(remoteObject);
591 MMI_HILOGI("Get multimodalinput service successful");
592 return true;
593 }
594
OnDeath(const wptr<IRemoteObject> & remoteObj)595 void MultimodalInputConnectManager::OnDeath(const wptr<IRemoteObject> &remoteObj)
596 {
597 CALL_DEBUG_ENTER;
598 Clean(remoteObj);
599 NotifyServiceDeath();
600 NotifyDeath();
601 }
602
Clean(const wptr<IRemoteObject> & remoteObj)603 void MultimodalInputConnectManager::Clean(const wptr<IRemoteObject> &remoteObj)
604 {
605 std::lock_guard<std::mutex> guard(lock_);
606 if (multimodalInputConnectService_ != nullptr) {
607 auto serviceObj = multimodalInputConnectService_->AsObject();
608 if (serviceObj != nullptr) {
609 if (serviceObj != remoteObj.promote()) {
610 return;
611 }
612 if (multimodalInputConnectRecipient_ != nullptr) {
613 MMI_HILOGI("Remove death recipient on service death");
614 serviceObj->RemoveDeathRecipient(multimodalInputConnectRecipient_);
615 }
616 }
617 MMI_HILOGI("Reset proxy on service death");
618 multimodalInputConnectRecipient_ = nullptr;
619 multimodalInputConnectService_ = nullptr;
620 }
621 }
622
NotifyServiceDeath()623 void MultimodalInputConnectManager::NotifyServiceDeath()
624 {
625 std::lock_guard<std::mutex> guard(lock_);
626 for (const auto &watcher : watchers_) {
627 watcher->OnServiceDied();
628 }
629 }
630
NotifyDeath()631 void MultimodalInputConnectManager::NotifyDeath()
632 {
633 CALL_DEBUG_ENTER;
634 int32_t retryCount = 50;
635 do {
636 std::this_thread::sleep_for(std::chrono::seconds(1));
637 if (ConnectMultimodalInputService()) {
638 MMI_HILOGD("Connect multimodalinput service successful");
639 return;
640 }
641 } while (--retryCount > 0);
642 }
643
SetMouseCaptureMode(int32_t windowId,bool isCaptureMode)644 int32_t MultimodalInputConnectManager::SetMouseCaptureMode(int32_t windowId, bool isCaptureMode)
645 {
646 std::lock_guard<std::mutex> guard(lock_);
647 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
648 return multimodalInputConnectService_->SetMouseCaptureMode(windowId, isCaptureMode);
649 }
650
AppendExtraData(const ExtraData & extraData)651 int32_t MultimodalInputConnectManager::AppendExtraData(const ExtraData &extraData)
652 {
653 std::lock_guard<std::mutex> guard(lock_);
654 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
655 return multimodalInputConnectService_->AppendExtraData(extraData);
656 }
657
EnableCombineKey(bool enable)658 int32_t MultimodalInputConnectManager::EnableCombineKey(bool enable)
659 {
660 std::lock_guard<std::mutex> guard(lock_);
661 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
662 return multimodalInputConnectService_->EnableCombineKey(enable);
663 }
664
EnableInputDevice(bool enable)665 int32_t MultimodalInputConnectManager::EnableInputDevice(bool enable)
666 {
667 std::lock_guard<std::mutex> guard(lock_);
668 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
669 return multimodalInputConnectService_->EnableInputDevice(enable);
670 }
671
SetKeyDownDuration(const std::string & businessId,int32_t delay)672 int32_t MultimodalInputConnectManager::SetKeyDownDuration(const std::string &businessId, int32_t delay)
673 {
674 std::lock_guard<std::mutex> guard(lock_);
675 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
676 return multimodalInputConnectService_->SetKeyDownDuration(businessId, delay);
677 }
678
SetTouchpadScrollSwitch(bool switchFlag)679 int32_t MultimodalInputConnectManager::SetTouchpadScrollSwitch(bool switchFlag)
680 {
681 std::lock_guard<std::mutex> guard(lock_);
682 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
683 return multimodalInputConnectService_->SetTouchpadScrollSwitch(switchFlag);
684 }
685
GetTouchpadScrollSwitch(bool & switchFlag)686 int32_t MultimodalInputConnectManager::GetTouchpadScrollSwitch(bool &switchFlag)
687 {
688 std::lock_guard<std::mutex> guard(lock_);
689 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
690 return multimodalInputConnectService_->GetTouchpadScrollSwitch(switchFlag);
691 }
692
SetTouchpadScrollDirection(bool state)693 int32_t MultimodalInputConnectManager::SetTouchpadScrollDirection(bool state)
694 {
695 std::lock_guard<std::mutex> guard(lock_);
696 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
697 return multimodalInputConnectService_->SetTouchpadScrollDirection(state);
698 }
699
GetTouchpadScrollDirection(bool & state)700 int32_t MultimodalInputConnectManager::GetTouchpadScrollDirection(bool &state)
701 {
702 std::lock_guard<std::mutex> guard(lock_);
703 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
704 return multimodalInputConnectService_->GetTouchpadScrollDirection(state);
705 }
706
SetTouchpadTapSwitch(bool switchFlag)707 int32_t MultimodalInputConnectManager::SetTouchpadTapSwitch(bool switchFlag)
708 {
709 std::lock_guard<std::mutex> guard(lock_);
710 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
711 return multimodalInputConnectService_->SetTouchpadTapSwitch(switchFlag);
712 }
713
GetTouchpadTapSwitch(bool & switchFlag)714 int32_t MultimodalInputConnectManager::GetTouchpadTapSwitch(bool &switchFlag)
715 {
716 std::lock_guard<std::mutex> guard(lock_);
717 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
718 return multimodalInputConnectService_->GetTouchpadTapSwitch(switchFlag);
719 }
720
SetTouchpadPointerSpeed(int32_t speed)721 int32_t MultimodalInputConnectManager::SetTouchpadPointerSpeed(int32_t speed)
722 {
723 std::lock_guard<std::mutex> guard(lock_);
724 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
725 return multimodalInputConnectService_->SetTouchpadPointerSpeed(speed);
726 }
727
GetTouchpadPointerSpeed(int32_t & speed)728 int32_t MultimodalInputConnectManager::GetTouchpadPointerSpeed(int32_t &speed)
729 {
730 std::lock_guard<std::mutex> guard(lock_);
731 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
732 return multimodalInputConnectService_->GetTouchpadPointerSpeed(speed);
733 }
734
GetTouchpadCDG(TouchpadCDG & touchpadCDG)735 int32_t MultimodalInputConnectManager::GetTouchpadCDG(TouchpadCDG &touchpadCDG)
736 {
737 std::lock_guard<std::mutex> guard(lock_);
738 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
739 return multimodalInputConnectService_->GetTouchpadCDG(touchpadCDG);
740 }
741
SetTouchpadPinchSwitch(bool switchFlag)742 int32_t MultimodalInputConnectManager::SetTouchpadPinchSwitch(bool switchFlag)
743 {
744 std::lock_guard<std::mutex> guard(lock_);
745 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
746 return multimodalInputConnectService_->SetTouchpadPinchSwitch(switchFlag);
747 }
748
GetTouchpadPinchSwitch(bool & switchFlag)749 int32_t MultimodalInputConnectManager::GetTouchpadPinchSwitch(bool &switchFlag)
750 {
751 std::lock_guard<std::mutex> guard(lock_);
752 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
753 return multimodalInputConnectService_->GetTouchpadPinchSwitch(switchFlag);
754 }
755
SetTouchpadSwipeSwitch(bool switchFlag)756 int32_t MultimodalInputConnectManager::SetTouchpadSwipeSwitch(bool switchFlag)
757 {
758 std::lock_guard<std::mutex> guard(lock_);
759 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
760 return multimodalInputConnectService_->SetTouchpadSwipeSwitch(switchFlag);
761 }
762
GetTouchpadSwipeSwitch(bool & switchFlag)763 int32_t MultimodalInputConnectManager::GetTouchpadSwipeSwitch(bool &switchFlag)
764 {
765 std::lock_guard<std::mutex> guard(lock_);
766 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
767 return multimodalInputConnectService_->GetTouchpadSwipeSwitch(switchFlag);
768 }
769
SetTouchpadRightClickType(int32_t type)770 int32_t MultimodalInputConnectManager::SetTouchpadRightClickType(int32_t type)
771 {
772 std::lock_guard<std::mutex> guard(lock_);
773 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
774 return multimodalInputConnectService_->SetTouchpadRightClickType(type);
775 }
776
GetTouchpadRightClickType(int32_t & type)777 int32_t MultimodalInputConnectManager::GetTouchpadRightClickType(int32_t &type)
778 {
779 std::lock_guard<std::mutex> guard(lock_);
780 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
781 return multimodalInputConnectService_->GetTouchpadRightClickType(type);
782 }
783
SetTouchpadRotateSwitch(bool rotateSwitch)784 int32_t MultimodalInputConnectManager::SetTouchpadRotateSwitch(bool rotateSwitch)
785 {
786 std::lock_guard<std::mutex> guard(lock_);
787 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
788 return multimodalInputConnectService_->SetTouchpadRotateSwitch(rotateSwitch);
789 }
790
GetTouchpadRotateSwitch(bool & rotateSwitch)791 int32_t MultimodalInputConnectManager::GetTouchpadRotateSwitch(bool &rotateSwitch)
792 {
793 std::lock_guard<std::mutex> guard(lock_);
794 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
795 return multimodalInputConnectService_->GetTouchpadRotateSwitch(rotateSwitch);
796 }
797
SetTouchpadDoubleTapAndDragState(bool switchFlag)798 int32_t MultimodalInputConnectManager::SetTouchpadDoubleTapAndDragState(bool switchFlag)
799 {
800 std::lock_guard<std::mutex> guard(lock_);
801 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
802 return multimodalInputConnectService_->SetTouchpadDoubleTapAndDragState(switchFlag);
803 }
804
GetTouchpadDoubleTapAndDragState(bool & switchFlag)805 int32_t MultimodalInputConnectManager::GetTouchpadDoubleTapAndDragState(bool &switchFlag)
806 {
807 std::lock_guard<std::mutex> guard(lock_);
808 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
809 return multimodalInputConnectService_->GetTouchpadDoubleTapAndDragState(switchFlag);
810 }
811
SetShieldStatus(int32_t shieldMode,bool isShield)812 int32_t MultimodalInputConnectManager::SetShieldStatus(int32_t shieldMode, bool isShield)
813 {
814 std::lock_guard<std::mutex> guard(lock_);
815 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
816 return multimodalInputConnectService_->SetShieldStatus(shieldMode, isShield);
817 }
818
GetShieldStatus(int32_t shieldMode,bool & isShield)819 int32_t MultimodalInputConnectManager::GetShieldStatus(int32_t shieldMode, bool &isShield)
820 {
821 std::lock_guard<std::mutex> guard(lock_);
822 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
823 return multimodalInputConnectService_->GetShieldStatus(shieldMode, isShield);
824 }
825
GetKeyState(std::vector<int32_t> & pressedKeys,std::map<int32_t,int32_t> & specialKeysState)826 int32_t MultimodalInputConnectManager::GetKeyState(std::vector<int32_t> &pressedKeys,
827 std::map<int32_t, int32_t> &specialKeysState)
828 {
829 std::lock_guard<std::mutex> guard(lock_);
830 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
831 return multimodalInputConnectService_->GetKeyState(pressedKeys, specialKeysState);
832 }
833
AddServiceWatcher(std::shared_ptr<IInputServiceWatcher> watcher)834 void MultimodalInputConnectManager::AddServiceWatcher(std::shared_ptr<IInputServiceWatcher> watcher)
835 {
836 CHKPV(watcher);
837 std::lock_guard<std::mutex> guard(lock_);
838 watchers_.insert(watcher);
839 }
840
RemoveServiceWatcher(std::shared_ptr<IInputServiceWatcher> watcher)841 void MultimodalInputConnectManager::RemoveServiceWatcher(std::shared_ptr<IInputServiceWatcher> watcher)
842 {
843 std::lock_guard<std::mutex> guard(lock_);
844 watchers_.erase(watcher);
845 }
846
Authorize(bool isAuthorize)847 int32_t MultimodalInputConnectManager::Authorize(bool isAuthorize)
848 {
849 std::lock_guard<std::mutex> guard(lock_);
850 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
851 return multimodalInputConnectService_->Authorize(isAuthorize);
852 }
853
CancelInjection()854 int32_t MultimodalInputConnectManager::CancelInjection()
855 {
856 std::lock_guard<std::mutex> guard(lock_);
857 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
858 return multimodalInputConnectService_->CancelInjection();
859 }
860
HasIrEmitter(bool & hasIrEmitter)861 int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter)
862 {
863 std::lock_guard<std::mutex> guard(lock_);
864 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
865 return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter);
866 }
867
GetInfraredFrequencies(std::vector<InfraredFrequency> & requencys)868 int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector<InfraredFrequency>& requencys)
869 {
870 std::lock_guard<std::mutex> guard(lock_);
871 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
872 return multimodalInputConnectService_->GetInfraredFrequencies(requencys);
873 }
874
TransmitInfrared(int64_t number,std::vector<int64_t> & pattern)875 int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector<int64_t>& pattern)
876 {
877 std::lock_guard<std::mutex> guard(lock_);
878 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
879 return multimodalInputConnectService_->TransmitInfrared(number, pattern);
880 }
881
882 #ifdef OHOS_BUILD_ENABLE_VKEYBOARD
CreateVKeyboardDevice(sptr<IRemoteObject> & vkeyboardDevice)883 int32_t MultimodalInputConnectManager::CreateVKeyboardDevice(sptr<IRemoteObject> &vkeyboardDevice)
884 {
885 std::lock_guard<std::mutex> guard(lock_);
886 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
887 return multimodalInputConnectService_->CreateVKeyboardDevice(vkeyboardDevice);
888 }
889 #endif // OHOS_BUILD_ENABLE_VKEYBOARD
890
SetPixelMapData(int32_t infoId,void * pixelMap)891 int32_t MultimodalInputConnectManager::SetPixelMapData(int32_t infoId, void* pixelMap)
892 {
893 std::lock_guard<std::mutex> guard(lock_);
894 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
895 return multimodalInputConnectService_->SetPixelMapData(infoId, pixelMap);
896 }
897
SetCurrentUser(int32_t userId)898 int32_t MultimodalInputConnectManager::SetCurrentUser(int32_t userId)
899 {
900 std::lock_guard<std::mutex> guard(lock_);
901 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
902 return multimodalInputConnectService_->SetCurrentUser(userId);
903 }
904
SetTouchpadThreeFingersTapSwitch(bool switchFlag)905 int32_t MultimodalInputConnectManager::SetTouchpadThreeFingersTapSwitch(bool switchFlag)
906 {
907 std::lock_guard<std::mutex> guard(lock_);
908 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
909 return multimodalInputConnectService_->SetTouchpadThreeFingersTapSwitch(switchFlag);
910 }
911
GetTouchpadThreeFingersTapSwitch(bool & switchFlag)912 int32_t MultimodalInputConnectManager::GetTouchpadThreeFingersTapSwitch(bool &switchFlag)
913 {
914 std::lock_guard<std::mutex> guard(lock_);
915 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
916 return multimodalInputConnectService_->GetTouchpadThreeFingersTapSwitch(switchFlag);
917 }
918
SetMoveEventFilters(bool flag)919 int32_t MultimodalInputConnectManager::SetMoveEventFilters(bool flag)
920 {
921 std::lock_guard<std::mutex> guard(lock_);
922 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
923 return multimodalInputConnectService_->SetMoveEventFilters(flag);
924 }
925
EnableHardwareCursorStats(bool enable)926 int32_t MultimodalInputConnectManager::EnableHardwareCursorStats(bool enable)
927 {
928 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
929 return multimodalInputConnectService_->EnableHardwareCursorStats(enable);
930 }
931
GetHardwareCursorStats(uint32_t & frameCount,uint32_t & vsyncCount)932 int32_t MultimodalInputConnectManager::GetHardwareCursorStats(uint32_t &frameCount, uint32_t &vsyncCount)
933 {
934 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
935 return multimodalInputConnectService_->GetHardwareCursorStats(frameCount, vsyncCount);
936 }
937
938 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
GetPointerSnapshot(void * pixelMapPtr)939 int32_t MultimodalInputConnectManager::GetPointerSnapshot(void *pixelMapPtr)
940 {
941 std::lock_guard<std::mutex> guard(lock_);
942 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
943 return multimodalInputConnectService_->GetPointerSnapshot(pixelMapPtr);
944 }
945 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
946
SetTouchpadScrollRows(int32_t rows)947 int32_t MultimodalInputConnectManager::SetTouchpadScrollRows(int32_t rows)
948 {
949 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
950 return multimodalInputConnectService_->SetTouchpadScrollRows(rows);
951 }
952
GetTouchpadScrollRows(int32_t & rows)953 int32_t MultimodalInputConnectManager::GetTouchpadScrollRows(int32_t &rows)
954 {
955 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
956 return multimodalInputConnectService_->GetTouchpadScrollRows(rows);
957 }
958
AddVirtualInputDevice(std::shared_ptr<InputDevice> device,int32_t & deviceId)959 int32_t MultimodalInputConnectManager::AddVirtualInputDevice(std::shared_ptr<InputDevice> device, int32_t &deviceId)
960 {
961 std::lock_guard<std::mutex> guard(lock_);
962 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
963 return multimodalInputConnectService_->AddVirtualInputDevice(device, deviceId);
964 }
965
RemoveVirtualInputDevice(int32_t deviceId)966 int32_t MultimodalInputConnectManager::RemoveVirtualInputDevice(int32_t deviceId)
967 {
968 std::lock_guard<std::mutex> guard(lock_);
969 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
970 return multimodalInputConnectService_->RemoveVirtualInputDevice(deviceId);
971 }
972
973 #ifdef OHOS_BUILD_ENABLE_ANCO
AncoAddChannel(sptr<IAncoChannel> channel)974 int32_t MultimodalInputConnectManager::AncoAddChannel(sptr<IAncoChannel> channel)
975 {
976 std::lock_guard<std::mutex> guard(lock_);
977 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
978 return multimodalInputConnectService_->AncoAddChannel(channel);
979 }
980
AncoRemoveChannel(sptr<IAncoChannel> channel)981 int32_t MultimodalInputConnectManager::AncoRemoveChannel(sptr<IAncoChannel> channel)
982 {
983 std::lock_guard<std::mutex> guard(lock_);
984 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
985 return multimodalInputConnectService_->AncoRemoveChannel(channel);
986 }
987
CheckKnuckleEvent(float pointX,float pointY,bool & touchType)988 int32_t MultimodalInputConnectManager::CheckKnuckleEvent(float pointX, float pointY, bool &touchType)
989 {
990 CALL_INFO_TRACE;
991 std::lock_guard<std::mutex> guard(lock_);
992 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
993 return multimodalInputConnectService_->CheckKnuckleEvent(pointX, pointY, touchType);
994 }
995 #endif // OHOS_BUILD_ENABLE_ANCO
996
SkipPointerLayer(bool isSkip)997 int32_t MultimodalInputConnectManager::SkipPointerLayer(bool isSkip)
998 {
999 std::lock_guard<std::mutex> guard(lock_);
1000 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1001 return multimodalInputConnectService_->SkipPointerLayer(isSkip);
1002 }
1003
SetClientInfo(int32_t pid,uint64_t readThreadId)1004 int32_t MultimodalInputConnectManager::SetClientInfo(int32_t pid, uint64_t readThreadId)
1005 {
1006 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1007 return multimodalInputConnectService_->SetClientInfo(pid, readThreadId);
1008 }
1009
GetIntervalSinceLastInput(int64_t & timeInterval)1010 int32_t MultimodalInputConnectManager::GetIntervalSinceLastInput(int64_t &timeInterval)
1011 {
1012 std::lock_guard<std::mutex> guard(lock_);
1013 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1014 return multimodalInputConnectService_->GetIntervalSinceLastInput(timeInterval);
1015 }
1016
GetAllSystemHotkeys(std::vector<std::unique_ptr<KeyOption>> & keyOptions)1017 int32_t MultimodalInputConnectManager::GetAllSystemHotkeys(std::vector<std::unique_ptr<KeyOption>> &keyOptions)
1018 {
1019 CALL_INFO_TRACE;
1020 std::lock_guard<std::mutex> guard(lock_);
1021 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1022 return multimodalInputConnectService_->GetAllSystemHotkeys(keyOptions);
1023 }
1024
SetInputDeviceEnabled(int32_t deviceId,bool enable,int32_t index)1025 int32_t MultimodalInputConnectManager::SetInputDeviceEnabled(int32_t deviceId, bool enable, int32_t index)
1026 {
1027 std::lock_guard<std::mutex> guard(lock_);
1028 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1029 return multimodalInputConnectService_->SetInputDeviceEnabled(deviceId, enable, index);
1030 }
1031
ShiftAppPointerEvent(const ShiftWindowParam & param,bool autoGenDown)1032 int32_t MultimodalInputConnectManager::ShiftAppPointerEvent(const ShiftWindowParam ¶m, bool autoGenDown)
1033 {
1034 CALL_INFO_TRACE;
1035 std::lock_guard<std::mutex> guard(lock_);
1036 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1037 return multimodalInputConnectService_->ShiftAppPointerEvent(param, autoGenDown);
1038 }
1039
SetCustomCursor(int32_t windowId,CustomCursor cursor,CursorOptions options)1040 int32_t MultimodalInputConnectManager::SetCustomCursor(int32_t windowId, CustomCursor cursor, CursorOptions options)
1041 {
1042 std::lock_guard<std::mutex> guard(lock_);
1043 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1044 return multimodalInputConnectService_->SetCustomCursor(windowId, cursor, options);
1045 }
1046
SetMultiWindowScreenId(uint64_t screenId,uint64_t displayNodeScreenId)1047 int32_t MultimodalInputConnectManager::SetMultiWindowScreenId(uint64_t screenId, uint64_t displayNodeScreenId)
1048 {
1049 std::lock_guard<std::mutex> guard(lock_);
1050 CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
1051 return multimodalInputConnectService_->SetMultiWindowScreenId(screenId, displayNodeScreenId);
1052 }
1053 } // namespace MMI
1054 } // namespace OHOS
1055