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