1fb299fa2Sopenharmony_ci/*
2fb299fa2Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3fb299fa2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb299fa2Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb299fa2Sopenharmony_ci * You may obtain a copy of the License at
6fb299fa2Sopenharmony_ci *
7fb299fa2Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8fb299fa2Sopenharmony_ci *
9fb299fa2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb299fa2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb299fa2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb299fa2Sopenharmony_ci * See the License for the specific language governing permissions and
13fb299fa2Sopenharmony_ci * limitations under the License.
14fb299fa2Sopenharmony_ci */
15fb299fa2Sopenharmony_ci#ifndef UPDATER_UI_POINTERS_INPUT_DEVICE_H
16fb299fa2Sopenharmony_ci#define UPDATER_UI_POINTERS_INPUT_DEVICE_H
17fb299fa2Sopenharmony_ci#include <linux/input.h>
18fb299fa2Sopenharmony_ci#include "input_manager.h"
19fb299fa2Sopenharmony_ci#include "macros_updater.h"
20fb299fa2Sopenharmony_ci#include "dock/pointer_input_device.h"
21fb299fa2Sopenharmony_ci#include "dock/input_device.h"
22fb299fa2Sopenharmony_ci
23fb299fa2Sopenharmony_cinamespace Updater {
24fb299fa2Sopenharmony_civoid AddInputDevice();
25fb299fa2Sopenharmony_civoid HandlePointersEvent(const input_event &ev, uint32_t type);
26fb299fa2Sopenharmony_ciclass PointersInputDevice : public OHOS::PointerInputDevice {
27fb299fa2Sopenharmony_ci    DISALLOW_COPY_MOVE(PointersInputDevice);
28fb299fa2Sopenharmony_cipublic:
29fb299fa2Sopenharmony_ci    PointersInputDevice() = default;
30fb299fa2Sopenharmony_ci    virtual ~PointersInputDevice() = default;
31fb299fa2Sopenharmony_ci    static PointersInputDevice &GetInstance();
32fb299fa2Sopenharmony_ci    bool Read(OHOS::DeviceData &data) override;
33fb299fa2Sopenharmony_ci    bool ReadPoint(OHOS::DeviceData& data, OHOS::Point pos, bool fingerPressDown);
34fb299fa2Sopenharmony_ci    bool ReadTouch(OHOS::DeviceData &data);
35fb299fa2Sopenharmony_ci    void SetFingerDown(bool isPressed);
36fb299fa2Sopenharmony_ci    int HandlePointEvent(const input_event &ev, uint32_t type);
37fb299fa2Sopenharmony_ci    void HandleEvAbsMt(const input_event &ev);
38fb299fa2Sopenharmony_ci
39fb299fa2Sopenharmony_ciprivate:
40fb299fa2Sopenharmony_ci    OHOS::Point reportAbsMt_ {};
41fb299fa2Sopenharmony_ci    bool touchFingerDown_ { false };
42fb299fa2Sopenharmony_ci};
43fb299fa2Sopenharmony_ci} // namespace Updater
44fb299fa2Sopenharmony_ci#endif // UPDATER_UI_POINTERS_INPUT_DEVICE_H