/* SPDX-FileCopyrightText: 2023 Joshua Goins SPDX-FileCopyrightText: 2023 Jeremy Whiting SPDX-FileCopyrightText: 2023 Niccolò Venerandi SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include #include #include #include #include #include #include #include class Gamepad : public QObject { Q_OBJECT Q_PROPERTY(QVector2D axisValue READ axisValue NOTIFY axisValueChanged) public: Gamepad(SDL_Joystick *joystick, SDL_GameController *controller, QObject *parent = nullptr); QString name() const; QString path() const; SDL_Joystick *joystick() const; SDL_GameController *gamecontroller() const; QVector2D axisValue() const; Q_SIGNALS: void buttonStateChanged(SDL_GameControllerButton button); void axisStateChanged(int index); void axisValueChanged(); private: friend class DeviceModel; void onButtonEvent(SDL_ControllerButtonEvent sdlEvent); void onAxisEvent(SDL_ControllerAxisEvent sdlEvent); SDL_Joystick *m_joystick = nullptr; SDL_GameController *m_gameController = nullptr; QString m_name; QString m_path; QPointF m_axis = QPointF(0.0, 0.0); };