• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "multimodal_input_connect_manager.h"
17 
18 #include <chrono>
19 #include <thread>
20 
21 #include "iservice_registry.h"
22 #include "system_ability_definition.h"
23 
24 #include "mmi_log.h"
25 #include "multimodal_input_connect_death_recipient.h"
26 #include "multimodal_input_connect_define.h"
27 #include "util.h"
28 
29 namespace OHOS {
30 namespace MMI {
31 namespace {
32 std::shared_ptr<MultimodalInputConnectManager> g_instance = nullptr;
33 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "MultimodalInputConnectManager" };
34 } // namespace
35 
GetInstance()36 std::shared_ptr<MultimodalInputConnectManager> MultimodalInputConnectManager::GetInstance()
37 {
38     static std::once_flag flag;
39     std::call_once(flag, [&]() { g_instance.reset(new (std::nothrow) MultimodalInputConnectManager()); });
40 
41     CHKPP(g_instance);
42     if (g_instance != nullptr) {
43         g_instance->ConnectMultimodalInputService();
44     }
45     return g_instance;
46 }
47 
AllocSocketPair(const int32_t moduleType)48 int32_t MultimodalInputConnectManager::AllocSocketPair(const int32_t moduleType)
49 {
50     CALL_DEBUG_ENTER;
51     std::lock_guard<std::mutex> guard(lock_);
52     if (multimodalInputConnectService_ == nullptr) {
53         MMI_HILOGE("Client has not connect server");
54         return RET_ERR;
55     }
56 
57     const std::string programName(GetProgramName());
58     int32_t result = multimodalInputConnectService_->AllocSocketFd(programName, moduleType, socketFd_, tokenType_);
59     if (result != RET_OK) {
60         MMI_HILOGE("AllocSocketFd has error:%{public}d", result);
61         return RET_ERR;
62     }
63 
64     MMI_HILOGD("AllocSocketPair success. socketFd_:%{public}d tokenType_:%{public}d", socketFd_, tokenType_);
65     return RET_OK;
66 }
67 
GetClientSocketFdOfAllocedSocketPair() const68 int32_t MultimodalInputConnectManager::GetClientSocketFdOfAllocedSocketPair() const
69 {
70     CALL_DEBUG_ENTER;
71     return socketFd_;
72 }
73 
GetDisplayBindInfo(DisplayBindInfos & infos)74 int32_t MultimodalInputConnectManager::GetDisplayBindInfo(DisplayBindInfos &infos)
75 {
76     std::lock_guard<std::mutex> guard(lock_);
77     if (multimodalInputConnectService_ == nullptr) {
78         MMI_HILOGE("The multimodalInputConnectService_ is nullptr");
79         return RET_ERR;
80     }
81     return multimodalInputConnectService_->GetDisplayBindInfo(infos);
82 }
83 
SetDisplayBind(int32_t deviceId,int32_t displayId,std::string & msg)84 int32_t MultimodalInputConnectManager::SetDisplayBind(int32_t deviceId, int32_t displayId, std::string &msg)
85 {
86     std::lock_guard<std::mutex> guard(lock_);
87     if (multimodalInputConnectService_ == nullptr) {
88         MMI_HILOGE("The multimodalInputConnectService_ is nullptr");
89         return RET_ERR;
90     }
91     return multimodalInputConnectService_->SetDisplayBind(deviceId, displayId, msg);
92 }
93 
GetWindowPid(int32_t windowId)94 int32_t MultimodalInputConnectManager::GetWindowPid(int32_t windowId)
95 {
96     std::lock_guard<std::mutex> guard(lock_);
97     if (multimodalInputConnectService_ == nullptr) {
98         MMI_HILOGE("The multimodalInputConnectService_ is nullptr");
99         return RET_ERR;
100     }
101     return multimodalInputConnectService_->GetWindowPid(windowId);
102 }
103 
AddInputEventFilter(sptr<IEventFilter> filter,int32_t filterId,int32_t priority,uint32_t deviceTags)104 int32_t MultimodalInputConnectManager::AddInputEventFilter(sptr<IEventFilter> filter, int32_t filterId,
105     int32_t priority, uint32_t deviceTags)
106 {
107     std::lock_guard<std::mutex> guard(lock_);
108     if (multimodalInputConnectService_ == nullptr) {
109         MMI_HILOGE("The multimodalInputConnectService_ is nullptr");
110         return RET_ERR;
111     }
112     return multimodalInputConnectService_->AddInputEventFilter(filter, filterId, priority, deviceTags);
113 }
114 
RemoveInputEventFilter(int32_t filterId)115 int32_t MultimodalInputConnectManager::RemoveInputEventFilter(int32_t filterId)
116 {
117     std::lock_guard<std::mutex> guard(lock_);
118     if (multimodalInputConnectService_ == nullptr) {
119         MMI_HILOGE("The multimodalInputConnectService_ is nullptr");
120         return RET_ERR;
121     }
122     return multimodalInputConnectService_->RemoveInputEventFilter(filterId);
123 }
124 
SetMouseScrollRows(int32_t rows)125 int32_t MultimodalInputConnectManager::SetMouseScrollRows(int32_t rows)
126 {
127     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
128     return multimodalInputConnectService_->SetMouseScrollRows(rows);
129 }
130 
SetMouseIcon(int32_t windowId,void * pixelMap)131 int32_t MultimodalInputConnectManager::SetMouseIcon(int32_t windowId, void* pixelMap)
132 {
133     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
134     return multimodalInputConnectService_->SetMouseIcon(windowId, pixelMap);
135 }
136 
SetMouseHotSpot(int32_t windowId,int32_t hotSpotX,int32_t hotSpotY)137 int32_t MultimodalInputConnectManager::SetMouseHotSpot(int32_t windowId, int32_t hotSpotX, int32_t hotSpotY)
138 {
139     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
140     return multimodalInputConnectService_->SetMouseHotSpot(windowId, hotSpotX, hotSpotY);
141 }
142 
GetMouseScrollRows(int32_t & rows)143 int32_t MultimodalInputConnectManager::GetMouseScrollRows(int32_t &rows)
144 {
145     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
146     return multimodalInputConnectService_->GetMouseScrollRows(rows);
147 }
148 
SetPointerSize(int32_t size)149 int32_t MultimodalInputConnectManager::SetPointerSize(int32_t size)
150 {
151     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
152     return multimodalInputConnectService_->SetPointerSize(size);
153 }
154 
GetPointerSize(int32_t & size)155 int32_t MultimodalInputConnectManager::GetPointerSize(int32_t &size)
156 {
157     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
158     return multimodalInputConnectService_->GetPointerSize(size);
159 }
160 
SetMousePrimaryButton(int32_t primaryButton)161 int32_t MultimodalInputConnectManager::SetMousePrimaryButton(int32_t primaryButton)
162 {
163     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
164     return multimodalInputConnectService_->SetMousePrimaryButton(primaryButton);
165 }
166 
GetMousePrimaryButton(int32_t & primaryButton)167 int32_t MultimodalInputConnectManager::GetMousePrimaryButton(int32_t &primaryButton)
168 {
169     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
170     return multimodalInputConnectService_->GetMousePrimaryButton(primaryButton);
171 }
172 
SetHoverScrollState(bool state)173 int32_t MultimodalInputConnectManager::SetHoverScrollState(bool state)
174 {
175     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
176     return multimodalInputConnectService_->SetHoverScrollState(state);
177 }
178 
GetHoverScrollState(bool & state)179 int32_t MultimodalInputConnectManager::GetHoverScrollState(bool &state)
180 {
181     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
182     return multimodalInputConnectService_->GetHoverScrollState(state);
183 }
184 
SetPointerVisible(bool visible)185 int32_t MultimodalInputConnectManager::SetPointerVisible(bool visible)
186 {
187     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
188     return multimodalInputConnectService_->SetPointerVisible(visible);
189 }
190 
IsPointerVisible(bool & visible)191 int32_t MultimodalInputConnectManager::IsPointerVisible(bool &visible)
192 {
193     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
194     return multimodalInputConnectService_->IsPointerVisible(visible);
195 }
196 
MarkProcessed(int32_t eventType,int32_t eventId)197 int32_t MultimodalInputConnectManager::MarkProcessed(int32_t eventType, int32_t eventId)
198 {
199     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
200     return multimodalInputConnectService_->MarkProcessed(eventType, eventId);
201 }
202 
SetPointerColor(int32_t color)203 int32_t MultimodalInputConnectManager::SetPointerColor(int32_t color)
204 {
205     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
206     return multimodalInputConnectService_->SetPointerColor(color);
207 }
208 
GetPointerColor(int32_t & color)209 int32_t MultimodalInputConnectManager::GetPointerColor(int32_t &color)
210 {
211     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
212     return multimodalInputConnectService_->GetPointerColor(color);
213 }
214 
SetPointerSpeed(int32_t speed)215 int32_t MultimodalInputConnectManager::SetPointerSpeed(int32_t speed)
216 {
217     CHKPR(multimodalInputConnectService_, RET_ERR);
218     return multimodalInputConnectService_->SetPointerSpeed(speed);
219 }
220 
GetPointerSpeed(int32_t & speed)221 int32_t MultimodalInputConnectManager::GetPointerSpeed(int32_t &speed)
222 {
223     CHKPR(multimodalInputConnectService_, RET_ERR);
224     return multimodalInputConnectService_->GetPointerSpeed(speed);
225 }
226 
SetPointerStyle(int32_t windowId,PointerStyle pointerStyle)227 int32_t MultimodalInputConnectManager::SetPointerStyle(int32_t windowId, PointerStyle pointerStyle)
228 {
229     CHKPR(multimodalInputConnectService_, RET_ERR);
230     return multimodalInputConnectService_->SetPointerStyle(windowId, pointerStyle);
231 }
232 
GetPointerStyle(int32_t windowId,PointerStyle & pointerStyle)233 int32_t MultimodalInputConnectManager::GetPointerStyle(int32_t windowId, PointerStyle &pointerStyle)
234 {
235     CHKPR(multimodalInputConnectService_, RET_ERR);
236     return multimodalInputConnectService_->GetPointerStyle(windowId, pointerStyle);
237 }
238 
RegisterDevListener()239 int32_t MultimodalInputConnectManager::RegisterDevListener()
240 {
241     CHKPR(multimodalInputConnectService_, RET_ERR);
242     return multimodalInputConnectService_->RegisterDevListener();
243 }
244 
UnregisterDevListener()245 int32_t MultimodalInputConnectManager::UnregisterDevListener()
246 {
247     CHKPR(multimodalInputConnectService_, RET_ERR);
248     return multimodalInputConnectService_->UnregisterDevListener();
249 }
250 
SupportKeys(int32_t deviceId,std::vector<int32_t> & keys,std::vector<bool> & keystroke)251 int32_t MultimodalInputConnectManager::SupportKeys(int32_t deviceId, std::vector<int32_t> &keys,
252     std::vector<bool> &keystroke)
253 {
254     CHKPR(multimodalInputConnectService_, RET_ERR);
255     return multimodalInputConnectService_->SupportKeys(deviceId, keys, keystroke);
256 }
257 
GetDeviceIds(std::vector<int32_t> & ids)258 int32_t MultimodalInputConnectManager::GetDeviceIds(std::vector<int32_t> &ids)
259 {
260     CHKPR(multimodalInputConnectService_, RET_ERR);
261     return multimodalInputConnectService_->GetDeviceIds(ids);
262 }
263 
GetDevice(int32_t deviceId,std::shared_ptr<InputDevice> & inputDevice)264 int32_t MultimodalInputConnectManager::GetDevice(int32_t deviceId, std::shared_ptr<InputDevice> &inputDevice)
265 {
266     CHKPR(multimodalInputConnectService_, RET_ERR);
267     return multimodalInputConnectService_->GetDevice(deviceId, inputDevice);
268 }
269 
GetKeyboardType(int32_t deviceId,int32_t & keyboardType)270 int32_t MultimodalInputConnectManager::GetKeyboardType(int32_t deviceId, int32_t &keyboardType)
271 {
272     CHKPR(multimodalInputConnectService_, RET_ERR);
273     return multimodalInputConnectService_->GetKeyboardType(deviceId, keyboardType);
274 }
275 
SetKeyboardRepeatDelay(int32_t delay)276 int32_t MultimodalInputConnectManager::SetKeyboardRepeatDelay(int32_t delay)
277 {
278     CHKPR(multimodalInputConnectService_, RET_ERR);
279     return multimodalInputConnectService_->SetKeyboardRepeatDelay(delay);
280 }
281 
SetKeyboardRepeatRate(int32_t rate)282 int32_t MultimodalInputConnectManager::SetKeyboardRepeatRate(int32_t rate)
283 {
284     CHKPR(multimodalInputConnectService_, RET_ERR);
285     return multimodalInputConnectService_->SetKeyboardRepeatRate(rate);
286 }
287 
GetKeyboardRepeatDelay(int32_t & delay)288 int32_t MultimodalInputConnectManager::GetKeyboardRepeatDelay(int32_t &delay)
289 {
290     CHKPR(multimodalInputConnectService_, RET_ERR);
291     return multimodalInputConnectService_->GetKeyboardRepeatDelay(delay);
292 }
293 
GetKeyboardRepeatRate(int32_t & rate)294 int32_t MultimodalInputConnectManager::GetKeyboardRepeatRate(int32_t &rate)
295 {
296     CHKPR(multimodalInputConnectService_, RET_ERR);
297     return multimodalInputConnectService_->GetKeyboardRepeatRate(rate);
298 }
299 
AddInputHandler(InputHandlerType handlerType,HandleEventType eventType,int32_t priority,uint32_t deviceTags)300 int32_t MultimodalInputConnectManager::AddInputHandler(InputHandlerType handlerType, HandleEventType eventType,
301     int32_t priority, uint32_t deviceTags)
302 {
303     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
304     return multimodalInputConnectService_->AddInputHandler(handlerType, eventType, priority, deviceTags);
305 }
306 
RemoveInputHandler(InputHandlerType handlerType,HandleEventType eventType,int32_t priority,uint32_t deviceTags)307 int32_t MultimodalInputConnectManager::RemoveInputHandler(InputHandlerType handlerType, HandleEventType eventType,
308     int32_t priority, uint32_t deviceTags)
309 {
310     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
311     return multimodalInputConnectService_->RemoveInputHandler(handlerType, eventType, priority, deviceTags);
312 }
313 
MarkEventConsumed(int32_t eventId)314 int32_t MultimodalInputConnectManager::MarkEventConsumed(int32_t eventId)
315 {
316     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
317     return multimodalInputConnectService_->MarkEventConsumed(eventId);
318 }
319 
SubscribeKeyEvent(int32_t subscribeId,const std::shared_ptr<KeyOption> option)320 int32_t MultimodalInputConnectManager::SubscribeKeyEvent(int32_t subscribeId, const std::shared_ptr<KeyOption> option)
321 {
322     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
323     return multimodalInputConnectService_->SubscribeKeyEvent(subscribeId, option);
324 }
325 
UnsubscribeKeyEvent(int32_t subscribeId)326 int32_t MultimodalInputConnectManager::UnsubscribeKeyEvent(int32_t subscribeId)
327 {
328     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
329     return multimodalInputConnectService_->UnsubscribeKeyEvent(subscribeId);
330 }
331 
SubscribeSwitchEvent(int32_t subscribeId)332 int32_t MultimodalInputConnectManager::SubscribeSwitchEvent(int32_t subscribeId)
333 {
334     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
335     return multimodalInputConnectService_->SubscribeSwitchEvent(subscribeId);
336 }
337 
UnsubscribeSwitchEvent(int32_t subscribeId)338 int32_t MultimodalInputConnectManager::UnsubscribeSwitchEvent(int32_t subscribeId)
339 {
340     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
341     return multimodalInputConnectService_->SubscribeSwitchEvent(subscribeId);
342 }
343 
MoveMouseEvent(int32_t offsetX,int32_t offsetY)344 int32_t MultimodalInputConnectManager::MoveMouseEvent(int32_t offsetX, int32_t offsetY)
345 {
346     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
347     return multimodalInputConnectService_->MoveMouseEvent(offsetX, offsetY);
348 }
349 
InjectKeyEvent(const std::shared_ptr<KeyEvent> event)350 int32_t MultimodalInputConnectManager::InjectKeyEvent(const std::shared_ptr<KeyEvent> event)
351 {
352     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
353     return multimodalInputConnectService_->InjectKeyEvent(event);
354 }
355 
InjectPointerEvent(const std::shared_ptr<PointerEvent> pointerEvent)356 int32_t MultimodalInputConnectManager::InjectPointerEvent(const std::shared_ptr<PointerEvent> pointerEvent)
357 {
358     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
359     return multimodalInputConnectService_->InjectPointerEvent(pointerEvent);
360 }
361 
SetAnrObserver()362 int32_t MultimodalInputConnectManager::SetAnrObserver()
363 {
364     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
365     return multimodalInputConnectService_->SetAnrObserver();
366 }
367 
GetFunctionKeyState(int32_t funcKey,bool & state)368 int32_t MultimodalInputConnectManager::GetFunctionKeyState(int32_t funcKey, bool &state)
369 {
370     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
371     return multimodalInputConnectService_->GetFunctionKeyState(funcKey, state);
372 }
373 
SetFunctionKeyState(int32_t funcKey,bool enable)374 int32_t MultimodalInputConnectManager::SetFunctionKeyState(int32_t funcKey, bool enable)
375 {
376     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
377     return multimodalInputConnectService_->SetFunctionKeyState(funcKey, enable);
378 }
379 
SetPointerLocation(int32_t x,int32_t y)380 int32_t MultimodalInputConnectManager::SetPointerLocation(int32_t x, int32_t y)
381 {
382     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
383     return multimodalInputConnectService_->SetPointerLocation(x, y);
384 }
385 
ConnectMultimodalInputService()386 bool MultimodalInputConnectManager::ConnectMultimodalInputService()
387 {
388     CALL_DEBUG_ENTER;
389     std::lock_guard<std::mutex> guard(lock_);
390     if (multimodalInputConnectService_ != nullptr) {
391         return true;
392     }
393     auto sm = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
394     if (sm == nullptr) {
395         MMI_HILOGE("Get system ability manager failed");
396         return false;
397     }
398     auto sa = sm->GetSystemAbility(IMultimodalInputConnect::MULTIMODAL_INPUT_CONNECT_SERVICE_ID);
399     if (sa == nullptr) {
400         MMI_HILOGE("Get sa failed");
401         return false;
402     }
403 
404     std::weak_ptr<MultimodalInputConnectManager> weakPtr = shared_from_this();
405     auto deathCallback = [weakPtr](const wptr<IRemoteObject> &object) {
406         auto sharedPtr = weakPtr.lock();
407         if (sharedPtr != nullptr) {
408             sharedPtr->OnDeath();
409         }
410     };
411 
412     multimodalInputConnectRecipient_ = new (std::nothrow) MultimodalInputConnectDeathRecipient(deathCallback);
413     CHKPF(multimodalInputConnectRecipient_);
414     sa->AddDeathRecipient(multimodalInputConnectRecipient_);
415     multimodalInputConnectService_ = iface_cast<IMultimodalInputConnect>(sa);
416     if (multimodalInputConnectService_ == nullptr) {
417         MMI_HILOGE("Get multimodalinput service failed");
418         return false;
419     }
420     MMI_HILOGI("Get multimodalinput service successful");
421     return true;
422 }
423 
OnDeath()424 void MultimodalInputConnectManager::OnDeath()
425 {
426     CALL_DEBUG_ENTER;
427     Clean();
428     NotifyDeath();
429 }
430 
Clean()431 void MultimodalInputConnectManager::Clean()
432 {
433     CALL_DEBUG_ENTER;
434     std::lock_guard<std::mutex> guard(lock_);
435     if (multimodalInputConnectService_ != nullptr) {
436         multimodalInputConnectService_.clear();
437         multimodalInputConnectService_ = nullptr;
438     }
439 
440     if (multimodalInputConnectRecipient_ != nullptr) {
441         multimodalInputConnectRecipient_.clear();
442         multimodalInputConnectRecipient_ = nullptr;
443     }
444 }
445 
NotifyDeath()446 void MultimodalInputConnectManager::NotifyDeath()
447 {
448     CALL_DEBUG_ENTER;
449 
450     int32_t retryCount = 50;
451     do {
452         std::this_thread::sleep_for(std::chrono::seconds(1));
453         if (ConnectMultimodalInputService()) {
454             MMI_HILOGD("Connect multimodalinput service successful");
455             return;
456         }
457     } while (--retryCount > 0);
458 }
459 
SetMouseCaptureMode(int32_t windowId,bool isCaptureMode)460 int32_t MultimodalInputConnectManager::SetMouseCaptureMode(int32_t windowId, bool isCaptureMode)
461 {
462     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
463     return multimodalInputConnectService_->SetMouseCaptureMode(windowId, isCaptureMode);
464 }
465 
AppendExtraData(const ExtraData & extraData)466 int32_t MultimodalInputConnectManager::AppendExtraData(const ExtraData &extraData)
467 {
468     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
469     return multimodalInputConnectService_->AppendExtraData(extraData);
470 }
471 
EnableInputDevice(bool enable)472 int32_t MultimodalInputConnectManager::EnableInputDevice(bool enable)
473 {
474     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
475     return multimodalInputConnectService_->EnableInputDevice(enable);
476 }
477 
SetKeyDownDuration(const std::string & businessId,int32_t delay)478 int32_t MultimodalInputConnectManager::SetKeyDownDuration(const std::string &businessId, int32_t delay)
479 {
480     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
481     return multimodalInputConnectService_->SetKeyDownDuration(businessId, delay);
482 }
483 
SetTouchpadScrollSwitch(bool switchFlag)484 int32_t MultimodalInputConnectManager::SetTouchpadScrollSwitch(bool switchFlag)
485 {
486     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
487     return multimodalInputConnectService_->SetTouchpadScrollSwitch(switchFlag);
488 }
489 
GetTouchpadScrollSwitch(bool & switchFlag)490 int32_t MultimodalInputConnectManager::GetTouchpadScrollSwitch(bool &switchFlag)
491 {
492     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
493     return multimodalInputConnectService_->GetTouchpadScrollSwitch(switchFlag);
494 }
495 
SetTouchpadScrollDirection(bool state)496 int32_t MultimodalInputConnectManager::SetTouchpadScrollDirection(bool state)
497 {
498     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
499     return multimodalInputConnectService_->SetTouchpadScrollDirection(state);
500 }
501 
GetTouchpadScrollDirection(bool & state)502 int32_t MultimodalInputConnectManager::GetTouchpadScrollDirection(bool &state)
503 {
504     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
505     return multimodalInputConnectService_->GetTouchpadScrollDirection(state);
506 }
507 
SetTouchpadTapSwitch(bool switchFlag)508 int32_t MultimodalInputConnectManager::SetTouchpadTapSwitch(bool switchFlag)
509 {
510     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
511     return multimodalInputConnectService_->SetTouchpadTapSwitch(switchFlag);
512 }
513 
GetTouchpadTapSwitch(bool & switchFlag)514 int32_t MultimodalInputConnectManager::GetTouchpadTapSwitch(bool &switchFlag)
515 {
516     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
517     return multimodalInputConnectService_->GetTouchpadTapSwitch(switchFlag);
518 }
519 
SetTouchpadPointerSpeed(int32_t speed)520 int32_t MultimodalInputConnectManager::SetTouchpadPointerSpeed(int32_t speed)
521 {
522     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
523     return multimodalInputConnectService_->SetTouchpadPointerSpeed(speed);
524 }
525 
GetTouchpadPointerSpeed(int32_t & speed)526 int32_t MultimodalInputConnectManager::GetTouchpadPointerSpeed(int32_t &speed)
527 {
528     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
529     return multimodalInputConnectService_->GetTouchpadPointerSpeed(speed);
530 }
531 
SetTouchpadPinchSwitch(bool switchFlag)532 int32_t MultimodalInputConnectManager::SetTouchpadPinchSwitch(bool switchFlag)
533 {
534     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
535     return multimodalInputConnectService_->SetTouchpadPinchSwitch(switchFlag);
536 }
537 
GetTouchpadPinchSwitch(bool & switchFlag)538 int32_t MultimodalInputConnectManager::GetTouchpadPinchSwitch(bool &switchFlag)
539 {
540     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
541     return multimodalInputConnectService_->GetTouchpadPinchSwitch(switchFlag);
542 }
543 
SetTouchpadSwipeSwitch(bool switchFlag)544 int32_t MultimodalInputConnectManager::SetTouchpadSwipeSwitch(bool switchFlag)
545 {
546     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
547     return multimodalInputConnectService_->SetTouchpadSwipeSwitch(switchFlag);
548 }
549 
GetTouchpadSwipeSwitch(bool & switchFlag)550 int32_t MultimodalInputConnectManager::GetTouchpadSwipeSwitch(bool &switchFlag)
551 {
552     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
553     return multimodalInputConnectService_->GetTouchpadSwipeSwitch(switchFlag);
554 }
555 
SetTouchpadRightClickType(int32_t type)556 int32_t MultimodalInputConnectManager::SetTouchpadRightClickType(int32_t type)
557 {
558     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
559     return multimodalInputConnectService_->SetTouchpadRightClickType(type);
560 }
561 
GetTouchpadRightClickType(int32_t & type)562 int32_t MultimodalInputConnectManager::GetTouchpadRightClickType(int32_t &type)
563 {
564     CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID);
565     return multimodalInputConnectService_->GetTouchpadRightClickType(type);
566 }
567 } // namespace MMI
568 } // namespace OHOS
569