1a69a01cdSopenharmony_ci/* 2a69a01cdSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3a69a01cdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a69a01cdSopenharmony_ci * you may not use this file except in compliance with the License. 5a69a01cdSopenharmony_ci * You may obtain a copy of the License at 6a69a01cdSopenharmony_ci * 7a69a01cdSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a69a01cdSopenharmony_ci * 9a69a01cdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a69a01cdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a69a01cdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a69a01cdSopenharmony_ci * See the License for the specific language governing permissions and 13a69a01cdSopenharmony_ci * limitations under the License. 14a69a01cdSopenharmony_ci */ 15a69a01cdSopenharmony_ci 16a69a01cdSopenharmony_ci#include "mouse_input.h" 17a69a01cdSopenharmony_ci#include "multimode_manager.h" 18a69a01cdSopenharmony_ci#include "wukong_define.h" 19a69a01cdSopenharmony_ci#include "report.h" 20a69a01cdSopenharmony_ci 21a69a01cdSopenharmony_cinamespace OHOS { 22a69a01cdSopenharmony_cinamespace WuKong { 23a69a01cdSopenharmony_cinamespace { 24a69a01cdSopenharmony_ciconst int ONEHUNDRED = 100; 25a69a01cdSopenharmony_ciconst int MOUSE_RIGHT_PERCENT = 20; 26a69a01cdSopenharmony_ciconst int MOUSE_MID_PERCENT = 10; 27a69a01cdSopenharmony_ci} // namespace 28a69a01cdSopenharmony_ciMouseInput::MouseInput() : InputAction() 29a69a01cdSopenharmony_ci{ 30a69a01cdSopenharmony_ci std::shared_ptr<MultimodeInputMsg> multimodeInputMsg = std::make_shared<MultimodeInputMsg>(); 31a69a01cdSopenharmony_ci multimodeInputMsg->inputType_ = INPUTTYPE_MOUSEINPUT; 32a69a01cdSopenharmony_ci inputedMsgObject_ = multimodeInputMsg; 33a69a01cdSopenharmony_ci} 34a69a01cdSopenharmony_ci 35a69a01cdSopenharmony_ciMouseInput::~MouseInput() 36a69a01cdSopenharmony_ci{ 37a69a01cdSopenharmony_ci} 38a69a01cdSopenharmony_ci 39a69a01cdSopenharmony_ciErrCode MouseInput::RandomInput() 40a69a01cdSopenharmony_ci{ 41a69a01cdSopenharmony_ci int32_t screenWidth = -1; 42a69a01cdSopenharmony_ci int32_t screenHeight = -1; 43a69a01cdSopenharmony_ci int mouseType; 44a69a01cdSopenharmony_ci // get the size of screen 45a69a01cdSopenharmony_ci ErrCode result = WuKongUtil::GetInstance()->GetScreenSize(screenWidth, screenHeight); 46a69a01cdSopenharmony_ci if (result != OHOS::ERR_OK) { 47a69a01cdSopenharmony_ci return result; 48a69a01cdSopenharmony_ci } 49a69a01cdSopenharmony_ci // generate random point on the screen 50a69a01cdSopenharmony_ci int xClickPosition = rand() % screenWidth; 51a69a01cdSopenharmony_ci int yClickPosition = rand() % screenHeight; 52a69a01cdSopenharmony_ci // distrbute type accord to percentage 53a69a01cdSopenharmony_ci int randomInt = rand() % ONEHUNDRED; 54a69a01cdSopenharmony_ci if (randomInt < MOUSE_MID_PERCENT) { 55a69a01cdSopenharmony_ci mouseType = MMI::PointerEvent::MOUSE_BUTTON_MIDDLE; 56a69a01cdSopenharmony_ci } else if (randomInt < (MOUSE_RIGHT_PERCENT + MOUSE_MID_PERCENT)) { 57a69a01cdSopenharmony_ci mouseType = MMI::PointerEvent::MOUSE_BUTTON_RIGHT; 58a69a01cdSopenharmony_ci } else { 59a69a01cdSopenharmony_ci mouseType = MMI::PointerEvent::MOUSE_BUTTON_LEFT; 60a69a01cdSopenharmony_ci } 61a69a01cdSopenharmony_ci INFO_LOG_STR("Mouse: (%d, %d) Mouse Type: (%s)", xClickPosition, yClickPosition, 62a69a01cdSopenharmony_ci MouseTypeToString(mouseType).c_str()); 63a69a01cdSopenharmony_ci auto multiinput = MultimodeManager::GetInstance(); 64a69a01cdSopenharmony_ci result = 65a69a01cdSopenharmony_ci multiinput->PointerInput(xClickPosition, yClickPosition, mouseType, MMI::PointerEvent::POINTER_ACTION_DOWN); 66a69a01cdSopenharmony_ci if (result != OHOS::ERR_OK) { 67a69a01cdSopenharmony_ci return result; 68a69a01cdSopenharmony_ci } 69a69a01cdSopenharmony_ci result = multiinput->PointerInput(xClickPosition, yClickPosition, mouseType, MMI::PointerEvent::POINTER_ACTION_UP); 70a69a01cdSopenharmony_ci if (result != OHOS::ERR_OK) { 71a69a01cdSopenharmony_ci return result; 72a69a01cdSopenharmony_ci } 73a69a01cdSopenharmony_ci Report::GetInstance()->SyncInputInfo(inputedMsgObject_); 74a69a01cdSopenharmony_ci return result; 75a69a01cdSopenharmony_ci} 76a69a01cdSopenharmony_ci 77a69a01cdSopenharmony_ciInputType MouseInput::GetInputInfo() 78a69a01cdSopenharmony_ci{ 79a69a01cdSopenharmony_ci return INPUTTYPE_MOUSEINPUT; 80a69a01cdSopenharmony_ci} 81a69a01cdSopenharmony_ci 82a69a01cdSopenharmony_cistd::string MouseInput::MouseTypeToString(int mousetype) 83a69a01cdSopenharmony_ci{ 84a69a01cdSopenharmony_ci switch (mousetype) { 85a69a01cdSopenharmony_ci case MMI::PointerEvent::MOUSE_BUTTON_MIDDLE: 86a69a01cdSopenharmony_ci return "MOUSE_MIDDLE"; 87a69a01cdSopenharmony_ci break; 88a69a01cdSopenharmony_ci case MMI::PointerEvent::MOUSE_BUTTON_RIGHT: 89a69a01cdSopenharmony_ci return "MOUSE_RIGHT"; 90a69a01cdSopenharmony_ci break; 91a69a01cdSopenharmony_ci case MMI::PointerEvent::MOUSE_BUTTON_LEFT: 92a69a01cdSopenharmony_ci return "MOUSE_LEFT"; 93a69a01cdSopenharmony_ci break; 94a69a01cdSopenharmony_ci default: 95a69a01cdSopenharmony_ci return "BUTTON_NONE"; 96a69a01cdSopenharmony_ci break; 97a69a01cdSopenharmony_ci } 98a69a01cdSopenharmony_ci} 99a69a01cdSopenharmony_ci} // namespace WuKong 100a69a01cdSopenharmony_ci} // namespace OHOS 101