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