#pragma once #include #include #include #include #include #include class DeviceManager : public QObject { Q_OBJECT QML_ELEMENT Q_PROPERTY(QString name WRITE setName READ name NOTIFY nameChanged) Q_PROPERTY(bool direct WRITE setDirect READ direct NOTIFY directChanged) Q_PROPERTY(bool pad WRITE setPad READ pad NOTIFY padChanged) public: ~DeviceManager() override; QString name() const; void setName(const QString &name); bool direct() const; void setDirect(bool direct); bool pad() const; void setPad(bool pad); public Q_SLOTS: void recreateDevice(); void testButton(); Q_SIGNALS: void nameChanged(); void directChanged(); void padChanged(); private: void destroyDevice(); struct libevdev *dev = nullptr; struct libevdev_uinput *uidev = nullptr; int fd = 0, uinput_fd = 0; unsigned int type = 0, code = 0; int rc = 0; const char *devnode = nullptr; QString m_name; bool m_direct = false; bool m_pad = false; };