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 #ifndef INPUT_MANAGER_COMMAND_H 17 #define INPUT_MANAGER_COMMAND_H 18 19 #include <string> 20 #include <vector> 21 22 #include "nocopyable.h" 23 #include "pointer_event.h" 24 25 namespace OHOS { 26 namespace MMI { 27 class InputManagerCommand { 28 public: 29 InputManagerCommand() = default; 30 DISALLOW_COPY_AND_MOVE(InputManagerCommand); 31 int32_t ParseCommand(int32_t argc, char *argv[]); 32 int32_t ConnectService(); 33 void ShowUsage(); 34 private: 35 void InitializeMouseDeathStub(); 36 void SleepAndUpdateTime(int64_t ¤tTimeMs); 37 void PrintMouseUsage(); 38 void PrintKeyboardUsage(); 39 void PrintStylusUsage(); 40 void PrintTouchUsage(); 41 void PrintKnuckleUsage(); 42 void PrintTouchPadUsage(); 43 bool IsCoordinateInvalid(int32_t firstDownX, int32_t firstDownY, int32_t secondDownX, int32_t secondDownY); 44 int32_t SingleKnuckleClickEvent(int32_t downX, int32_t downY); 45 int32_t DoubleKnuckleClickEvent(int32_t downX, int32_t downY); 46 int32_t KnuckleGestureInputProcess(int32_t argc, char *argv[], int32_t c, int32_t optionIndex); 47 int32_t SingleKnuckleGestureProcesser(int32_t argc, char *argv[]); 48 int32_t DoubleKnuckleGestureProcesser(int32_t argc, char *argv[]); 49 int32_t NextPos(int64_t begTimeMs, int64_t curtTimeMs, int32_t totalTimeMs, int32_t begPos, int32_t endPos); 50 int32_t ProcessTouchPadGestureInput(int32_t argc, char *argv[], int32_t optionIndex); 51 int32_t ProcessPinchGesture(int32_t argc, char *argv[]); 52 int32_t InjectPinchEvent(int32_t fingerCount, int32_t scaleNumberator); 53 int32_t ProcessRotateGesture(int32_t argc, char *argv[]); 54 int32_t ProcessTouchPadFingerAction(int32_t argc, char *argv[]); 55 int32_t ActionEvent(int32_t fingerCount); 56 int32_t ProcessTouchPadFingerSwipe(int32_t argc, char *argv[]); 57 int32_t SwipeActionEvent(int32_t startX, int32_t startY, int32_t endX, int32_t endY); 58 void SendTouchDownForPinch(int32_t topX, int32_t topY, int32_t bottomX, int32_t bottomY); 59 std::shared_ptr<PointerEvent> CreateEvent(int32_t id, int32_t type, int32_t pId, int32_t srcType, int32_t finCount); 60 void FillPointerItem(PointerEvent::PointerItem &itemFirst, int32_t pointX, int32_t pointY, int32_t id, bool press); 61 int32_t ActionPinchEvent(int32_t centerX, int32_t centerY, int32_t scalePercentNumerator); 62 int32_t ProcessKeyboardTextInput(char *optarg, int32_t count); 63 int32_t PrintKeyboardTextChar(int32_t keyCode, bool isPressShift); 64 bool IsSpecialChar(char character, int32_t &keyCode, bool &isPressShift); 65 }; 66 } // namespace MMI 67 } // namespace OHOS 68 #endif // INPUT_MANAGER_COMMAND_H 69