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 "keyboard_input.h" 17a69a01cdSopenharmony_ci 18a69a01cdSopenharmony_ci#include "multimode_manager.h" 19a69a01cdSopenharmony_ci#include "report.h" 20a69a01cdSopenharmony_ci 21a69a01cdSopenharmony_cinamespace OHOS { 22a69a01cdSopenharmony_cinamespace WuKong { 23a69a01cdSopenharmony_cinamespace { 24a69a01cdSopenharmony_ciconst int SINGLE_CODE_PER = 30; 25a69a01cdSopenharmony_ciconst int ONE_HUNDRED_PERCENT = 100; 26a69a01cdSopenharmony_ciconst int DOWN_TIME = 100; 27a69a01cdSopenharmony_ci} // namespace 28a69a01cdSopenharmony_ciKeyboardInput::KeyboardInput() : InputAction() 29a69a01cdSopenharmony_ci{ 30a69a01cdSopenharmony_ci std::shared_ptr<MultimodeInputMsg> multimodeInputMsg = std::make_shared<MultimodeInputMsg>(); 31a69a01cdSopenharmony_ci multimodeInputMsg->inputType_ = INPUTTYPE_KEYBOARDINPUT; 32a69a01cdSopenharmony_ci inputedMsgObject_ = multimodeInputMsg; 33a69a01cdSopenharmony_ci} 34a69a01cdSopenharmony_ciKeyboardInput::~KeyboardInput() 35a69a01cdSopenharmony_ci{ 36a69a01cdSopenharmony_ci} 37a69a01cdSopenharmony_ciErrCode KeyboardInput::RandomInput() 38a69a01cdSopenharmony_ci{ 39a69a01cdSopenharmony_ci ErrCode result = OHOS::ERR_OK; 40a69a01cdSopenharmony_ci std::vector<int> keycodelist; 41a69a01cdSopenharmony_ci int keyCodePercent = rand() % ONE_HUNDRED_PERCENT; 42a69a01cdSopenharmony_ci MultimodeManager::GetInstance()->GetKeycodeList(keycodelist); 43a69a01cdSopenharmony_ci if (keycodelist.size() > 0) { 44a69a01cdSopenharmony_ci if (keyCodePercent < SINGLE_CODE_PER) { 45a69a01cdSopenharmony_ci int keycode = keycodelist[(uint32_t)(rand()) % keycodelist.size()]; 46a69a01cdSopenharmony_ci result = MultimodeManager::GetInstance()->SingleKeyCodeInput(keycode, DOWN_TIME); 47a69a01cdSopenharmony_ci } else { 48a69a01cdSopenharmony_ci result = MultimodeManager::GetInstance()->MultiKeyCodeInput(DOWN_TIME); 49a69a01cdSopenharmony_ci } 50a69a01cdSopenharmony_ci } else { 51a69a01cdSopenharmony_ci return OHOS::ERR_NO_INIT; 52a69a01cdSopenharmony_ci } 53a69a01cdSopenharmony_ci if (result != OHOS::ERR_OK) { 54a69a01cdSopenharmony_ci return result; 55a69a01cdSopenharmony_ci } 56a69a01cdSopenharmony_ci Report::GetInstance()->SyncInputInfo(inputedMsgObject_); 57a69a01cdSopenharmony_ci return result; 58a69a01cdSopenharmony_ci} 59a69a01cdSopenharmony_ci 60a69a01cdSopenharmony_ciInputType KeyboardInput::GetInputInfo() 61a69a01cdSopenharmony_ci{ 62a69a01cdSopenharmony_ci return INPUTTYPE_KEYBOARDINPUT; 63a69a01cdSopenharmony_ci} 64a69a01cdSopenharmony_ci} // namespace WuKong 65a69a01cdSopenharmony_ci} // namespace OHOS 66