1
Fork 0
tablet-simulator/devicemanager.h
Joshua Goins fa14e7d125 Add a spinbox to specify the number of pen buttons
It was only after building this feature, that it makes no sense as we
don't interact with libwacom yet. Oops?
2025-04-12 16:42:00 -04:00

58 lines
1.3 KiB
C++

#pragma once
#include <QObject>
#include <QtQml>
#include <libevdev/libevdev-uinput.h>
#include <cstdlib>
#include <linux/input.h>
#include <fcntl.h>
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)
Q_PROPERTY(int penButtons WRITE setPenButtons READ penButtons NOTIFY penButtonsChanged)
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);
int penButtons() const;
void setPenButtons(int num);
public Q_SLOTS:
void recreateDevice();
void testButton();
Q_SIGNALS:
void nameChanged();
void directChanged();
void padChanged();
void penButtonsChanged();
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;
int m_penButtons = 3;
};