1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#ifndef MMI_VKEYBOARD_H
17c29fa5a6Sopenharmony_ci#define MMI_VKEYBOARD_H
18c29fa5a6Sopenharmony_ci#include <string>
19c29fa5a6Sopenharmony_ci
20c29fa5a6Sopenharmony_cinamespace OHOS {
21c29fa5a6Sopenharmony_cinamespace MMI {
22c29fa5a6Sopenharmony_ciusing namespace std;
23c29fa5a6Sopenharmony_cistruct TOUCHPOINT
24c29fa5a6Sopenharmony_ci{
25c29fa5a6Sopenharmony_ci    /// <summary>
26c29fa5a6Sopenharmony_ci    /// Button name.
27c29fa5a6Sopenharmony_ci    /// </summary>
28c29fa5a6Sopenharmony_ci    string ButtonName;
29c29fa5a6Sopenharmony_ci
30c29fa5a6Sopenharmony_ci    /// <summary>
31c29fa5a6Sopenharmony_ci    /// Button width.
32c29fa5a6Sopenharmony_ci    /// </summary>
33c29fa5a6Sopenharmony_ci    double ButtonWidth = 0.0;
34c29fa5a6Sopenharmony_ci
35c29fa5a6Sopenharmony_ci    /// <summary>
36c29fa5a6Sopenharmony_ci    /// Button height.
37c29fa5a6Sopenharmony_ci    /// </summary>
38c29fa5a6Sopenharmony_ci    double ButtonHeight = 0.0;
39c29fa5a6Sopenharmony_ci
40c29fa5a6Sopenharmony_ci    /// <summary>
41c29fa5a6Sopenharmony_ci    /// touch area width (0 if not supported).
42c29fa5a6Sopenharmony_ci    /// </summary>
43c29fa5a6Sopenharmony_ci    int Width = 0;
44c29fa5a6Sopenharmony_ci
45c29fa5a6Sopenharmony_ci    /// <summary>
46c29fa5a6Sopenharmony_ci    /// touch area height (0 if not supported).
47c29fa5a6Sopenharmony_ci    /// </summary>
48c29fa5a6Sopenharmony_ci    int Height = 0;
49c29fa5a6Sopenharmony_ci
50c29fa5a6Sopenharmony_ci    /// <summary>
51c29fa5a6Sopenharmony_ci    /// raw touch x. (previous lower case x).
52c29fa5a6Sopenharmony_ci    /// </summary>
53c29fa5a6Sopenharmony_ci    int RawX = 0;
54c29fa5a6Sopenharmony_ci
55c29fa5a6Sopenharmony_ci    /// <summary>
56c29fa5a6Sopenharmony_ci    /// raw touch y. (previous lower case y).
57c29fa5a6Sopenharmony_ci    /// </summary>
58c29fa5a6Sopenharmony_ci    int RawY = 0;
59c29fa5a6Sopenharmony_ci
60c29fa5a6Sopenharmony_ci    /// <summary>
61c29fa5a6Sopenharmony_ci    /// canvas max x.
62c29fa5a6Sopenharmony_ci    /// </summary>
63c29fa5a6Sopenharmony_ci    int MaxX = 0;
64c29fa5a6Sopenharmony_ci
65c29fa5a6Sopenharmony_ci    /// <summary>
66c29fa5a6Sopenharmony_ci    /// canvas max y.
67c29fa5a6Sopenharmony_ci    /// </summary>
68c29fa5a6Sopenharmony_ci    int MaxY = 0;
69c29fa5a6Sopenharmony_ci
70c29fa5a6Sopenharmony_ci    /// <summary>
71c29fa5a6Sopenharmony_ci    /// canvas min x.
72c29fa5a6Sopenharmony_ci    /// </summary>
73c29fa5a6Sopenharmony_ci    int MinX = 0;
74c29fa5a6Sopenharmony_ci
75c29fa5a6Sopenharmony_ci    /// <summary>
76c29fa5a6Sopenharmony_ci    /// canvas min y.
77c29fa5a6Sopenharmony_ci    /// </summary>
78c29fa5a6Sopenharmony_ci    int MinY = 0;
79c29fa5a6Sopenharmony_ci
80c29fa5a6Sopenharmony_ci    /// <summary>
81c29fa5a6Sopenharmony_ci    /// scaled screen x. (previous upper case X).
82c29fa5a6Sopenharmony_ci    /// </summary>
83c29fa5a6Sopenharmony_ci    double ScreenX = 0.0;
84c29fa5a6Sopenharmony_ci
85c29fa5a6Sopenharmony_ci    /// <summary>
86c29fa5a6Sopenharmony_ci    /// scaled screen y. (previous upper case Y).
87c29fa5a6Sopenharmony_ci    /// </summary>
88c29fa5a6Sopenharmony_ci    double ScreenY = 0.0;
89c29fa5a6Sopenharmony_ci
90c29fa5a6Sopenharmony_ci    /// <summary>
91c29fa5a6Sopenharmony_ci    /// if the touch inside the keyboard.
92c29fa5a6Sopenharmony_ci    /// </summary>
93c29fa5a6Sopenharmony_ci    bool InKeyboard;
94c29fa5a6Sopenharmony_ci
95c29fa5a6Sopenharmony_ci    /// <summary>
96c29fa5a6Sopenharmony_ci    /// if the touch inside the trackpad.
97c29fa5a6Sopenharmony_ci    /// </summary>
98c29fa5a6Sopenharmony_ci    bool InTrackpad;
99c29fa5a6Sopenharmony_ci
100c29fa5a6Sopenharmony_ci    /// <summary>
101c29fa5a6Sopenharmony_ci    /// touch id.
102c29fa5a6Sopenharmony_ci    /// </summary>
103c29fa5a6Sopenharmony_ci    int TouchId = 0;
104c29fa5a6Sopenharmony_ci
105c29fa5a6Sopenharmony_ci    /// <summary>
106c29fa5a6Sopenharmony_ci    /// true - touch down; false - touch up.
107c29fa5a6Sopenharmony_ci    /// </summary>
108c29fa5a6Sopenharmony_ci    bool TipDown;
109c29fa5a6Sopenharmony_ci
110c29fa5a6Sopenharmony_ci    /// <summary>
111c29fa5a6Sopenharmony_ci    /// if Bayesian model effective.
112c29fa5a6Sopenharmony_ci    /// </summary>
113c29fa5a6Sopenharmony_ci    bool IsBayesian;
114c29fa5a6Sopenharmony_ci
115c29fa5a6Sopenharmony_ci    /// <summary>
116c29fa5a6Sopenharmony_ci    /// If Palm is Detected. (not implemented).
117c29fa5a6Sopenharmony_ci    /// </summary>
118c29fa5a6Sopenharmony_ci    bool IsPalmDetected;
119c29fa5a6Sopenharmony_ci};
120c29fa5a6Sopenharmony_ci
121c29fa5a6Sopenharmony_cistruct MMITouchpoint
122c29fa5a6Sopenharmony_ci{
123c29fa5a6Sopenharmony_ci    int PointerId;
124c29fa5a6Sopenharmony_ci    double X;
125c29fa5a6Sopenharmony_ci    double Y;
126c29fa5a6Sopenharmony_ci    string ButtonName;
127c29fa5a6Sopenharmony_ci};
128c29fa5a6Sopenharmony_ci
129c29fa5a6Sopenharmony_cienum StateMachineMessageType
130c29fa5a6Sopenharmony_ci{
131c29fa5a6Sopenharmony_ci    NoMessage = -1,
132c29fa5a6Sopenharmony_ci    KeyPressed = 0,
133c29fa5a6Sopenharmony_ci    CombinationKeyPressed,
134c29fa5a6Sopenharmony_ci    ButtonSound,
135c29fa5a6Sopenharmony_ci    TogglePinOn,
136c29fa5a6Sopenharmony_ci    TogglePinOff,
137c29fa5a6Sopenharmony_ci    DisableProtection,
138c29fa5a6Sopenharmony_ci    BuildButtonMotionSpace,
139c29fa5a6Sopenharmony_ci    ButtonHaptic,
140c29fa5a6Sopenharmony_ci    EnableTrackpadSeparator,
141c29fa5a6Sopenharmony_ci    DisableTrackpadSeparator,
142c29fa5a6Sopenharmony_ci    ShowTaskbar,
143c29fa5a6Sopenharmony_ci    SetButtonContent,
144c29fa5a6Sopenharmony_ci    StartBackspace,
145c29fa5a6Sopenharmony_ci    StopBackspace,
146c29fa5a6Sopenharmony_ci    ResetButtonColor,
147c29fa5a6Sopenharmony_ci    DelayUpdateButtonTouchDownVisual,
148c29fa5a6Sopenharmony_ci    StartLongPressControl,
149c29fa5a6Sopenharmony_ci    StopLongPressControl,
150c29fa5a6Sopenharmony_ci    SwitchLayout,
151c29fa5a6Sopenharmony_ci    SwipeUp,
152c29fa5a6Sopenharmony_ci    BackSwipeLeft,
153c29fa5a6Sopenharmony_ci    BackSwipeRight,
154c29fa5a6Sopenharmony_ci    BackspaceSwipeRelease,
155c29fa5a6Sopenharmony_ci};
156c29fa5a6Sopenharmony_ci
157c29fa5a6Sopenharmony_ciclass StateMachineMessage
158c29fa5a6Sopenharmony_ci{
159c29fa5a6Sopenharmony_cipublic:
160c29fa5a6Sopenharmony_ci    StateMachineMessageType type;
161c29fa5a6Sopenharmony_ci    string buttonName;
162c29fa5a6Sopenharmony_ci    string toggleButtonName;
163c29fa5a6Sopenharmony_ci    int buttonMode = 0;
164c29fa5a6Sopenharmony_ci    string RestList;
165c29fa5a6Sopenharmony_ci    double interval = 0.0;
166c29fa5a6Sopenharmony_ci    double locX = 0.0;
167c29fa5a6Sopenharmony_ci    double locY = 0.0;
168c29fa5a6Sopenharmony_ci};
169c29fa5a6Sopenharmony_ci
170c29fa5a6Sopenharmony_cienum class MotionSpaceType : int32_t {
171c29fa5a6Sopenharmony_ci    // Full keyboard with narrow key gap.
172c29fa5a6Sopenharmony_ci    NARROW = 0,
173c29fa5a6Sopenharmony_ci    // Full keyboard with wide key gap.
174c29fa5a6Sopenharmony_ci    WIDE = 1,
175c29fa5a6Sopenharmony_ci    // Floating keyboard
176c29fa5a6Sopenharmony_ci    FLOATING = 2,
177c29fa5a6Sopenharmony_ci    // Trackpad UI-related motion space.
178c29fa5a6Sopenharmony_ci    TRACKPAD = 3,
179c29fa5a6Sopenharmony_ci    // Init value.
180c29fa5a6Sopenharmony_ci    OTHERS = 10,
181c29fa5a6Sopenharmony_ci};
182c29fa5a6Sopenharmony_ci
183c29fa5a6Sopenharmony_ciclass MotionSpacePatternIndex {
184c29fa5a6Sopenharmony_cipublic:
185c29fa5a6Sopenharmony_ci	// Access to inside values from IPC package motion space pattern.
186c29fa5a6Sopenharmony_ci    // Top left x.
187c29fa5a6Sopenharmony_ci	static const int PATTERN_X = 0;
188c29fa5a6Sopenharmony_ci    // Top left y.
189c29fa5a6Sopenharmony_ci    static const int PATTERN_Y = 1;
190c29fa5a6Sopenharmony_ci    // Width.
191c29fa5a6Sopenharmony_ci    static const int PATTERN_WIDTH = 2;
192c29fa5a6Sopenharmony_ci    // Height.
193c29fa5a6Sopenharmony_ci    static const int PATTERN_HEIGHT = 3;
194c29fa5a6Sopenharmony_ci    // Key code.
195c29fa5a6Sopenharmony_ci    static const int PATTERN_KEYCODE = 4;
196c29fa5a6Sopenharmony_ci    // Motion space type id.
197c29fa5a6Sopenharmony_ci    static const int PATTERN_MST_ID = 5;
198c29fa5a6Sopenharmony_ci    // Page type id.
199c29fa5a6Sopenharmony_ci    static const int PATTERN_PT_ID = 6;
200c29fa5a6Sopenharmony_ci    // Size of the entire motion space pattern.
201c29fa5a6Sopenharmony_ci    static const size_t PATTERN_SIZE = 7;
202c29fa5a6Sopenharmony_ci};
203c29fa5a6Sopenharmony_ci
204c29fa5a6Sopenharmony_cienum TouchMode {
205c29fa5a6Sopenharmony_ci    NO_TOUCH = 0,
206c29fa5a6Sopenharmony_ci    TOUCH_ENTER_MODE = 1,
207c29fa5a6Sopenharmony_ci    LIGHT_TOUCH_MODE = 2,
208c29fa5a6Sopenharmony_ci    HEAVY_TOUCH_MODE = 3,
209c29fa5a6Sopenharmony_ci    REST_TOUCH_MODE = 4,
210c29fa5a6Sopenharmony_ci    ANCHORING_MODE = 5,
211c29fa5a6Sopenharmony_ci    FITTING_MODE = 6,
212c29fa5a6Sopenharmony_ci    LEAVE_SCREEN_MODE = 7,
213c29fa5a6Sopenharmony_ci    MULTI_TOUCH_MODE = 8,
214c29fa5a6Sopenharmony_ci};
215c29fa5a6Sopenharmony_ci
216c29fa5a6Sopenharmony_ci/// <summary>
217c29fa5a6Sopenharmony_ci/// GestureMode stands for a working pattern of gesture in a given time duration
218c29fa5a6Sopenharmony_ci/// </summary>
219c29fa5a6Sopenharmony_cienum class VGestureMode : int32_t {
220c29fa5a6Sopenharmony_ci    NO_GESTURE = 0,
221c29fa5a6Sopenharmony_ci    // Generic mode
222c29fa5a6Sopenharmony_ci    MOTION_MODE = 1,
223c29fa5a6Sopenharmony_ci    // Gestures in detailed defines
224c29fa5a6Sopenharmony_ci    // Gtart of window operation gesture
225c29fa5a6Sopenharmony_ci    WINDOW_GESTURE_BEGIN = 2,
226c29fa5a6Sopenharmony_ci    ONE_HAND_TAP = 2,
227c29fa5a6Sopenharmony_ci    ONE_HAND_UP = 3,
228c29fa5a6Sopenharmony_ci    ONE_HAND_DOWN = 4,
229c29fa5a6Sopenharmony_ci    TWO_HANDS_LOWER_TAP = 5,
230c29fa5a6Sopenharmony_ci    TWO_HANDS_UPPER_TAP = 6,
231c29fa5a6Sopenharmony_ci    TWO_HANDS_UP = 7,
232c29fa5a6Sopenharmony_ci    TWO_HANDS_DOWN = 8,
233c29fa5a6Sopenharmony_ci    TWO_HANDS_INWARDS = 9,
234c29fa5a6Sopenharmony_ci    TWO_HANDS_OUTWARDS = 10,
235c29fa5a6Sopenharmony_ci    // End of window operation gesture
236c29fa5a6Sopenharmony_ci    WINDOW_GESTURE_END = 10,
237c29fa5a6Sopenharmony_ci    PINCHING_MODE = 11,
238c29fa5a6Sopenharmony_ci    PANNING_MODE = 12,
239c29fa5a6Sopenharmony_ci    SWIPING_MODE = 13,
240c29fa5a6Sopenharmony_ci    SWIPE_BACKSPACE_LEFT = 14,
241c29fa5a6Sopenharmony_ci    SWIPE_BACKSPACE_RIGHT = 15,
242c29fa5a6Sopenharmony_ci};
243c29fa5a6Sopenharmony_ci} // namespace MMI
244c29fa5a6Sopenharmony_ci} // namespace OHOS
245c29fa5a6Sopenharmony_ci#endif // MMI_VKEYBOARD_H
246