1
Fork 0

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?
This commit is contained in:
Joshua Goins 2025-04-12 16:42:00 -04:00
parent c36610633a
commit fa14e7d125
3 changed files with 37 additions and 3 deletions

View file

@ -44,6 +44,20 @@ void DeviceManager::setPad(bool pad)
} }
} }
int DeviceManager::penButtons() const
{
return m_penButtons;
}
void DeviceManager::setPenButtons(int num)
{
if (m_penButtons != num)
{
m_penButtons = num;
Q_EMIT penButtonsChanged();
}
}
void DeviceManager::recreateDevice() void DeviceManager::recreateDevice()
{ {
destroyDevice(); destroyDevice();
@ -78,9 +92,15 @@ void DeviceManager::recreateDevice()
libevdev_enable_event_type(dev, EV_KEY); libevdev_enable_event_type(dev, EV_KEY);
if (!m_pad) if (!m_pad)
{ {
if (m_penButtons >= 1) {
libevdev_enable_event_code(dev, EV_KEY, BTN_TOOL_PEN, NULL); libevdev_enable_event_code(dev, EV_KEY, BTN_TOOL_PEN, NULL);
}
if (m_penButtons >= 2) {
libevdev_enable_event_code(dev, EV_KEY, BTN_TOOL_RUBBER, NULL); libevdev_enable_event_code(dev, EV_KEY, BTN_TOOL_RUBBER, NULL);
}
if (m_penButtons >= 3) {
libevdev_enable_event_code(dev, EV_KEY, BTN_TOUCH, NULL); libevdev_enable_event_code(dev, EV_KEY, BTN_TOUCH, NULL);
}
libevdev_enable_event_code(dev, EV_KEY, BTN_STYLUS, NULL); libevdev_enable_event_code(dev, EV_KEY, BTN_STYLUS, NULL);
libevdev_enable_event_type(dev, EV_ABS); libevdev_enable_event_type(dev, EV_ABS);

View file

@ -14,6 +14,7 @@ class DeviceManager : public QObject {
Q_PROPERTY(QString name WRITE setName READ name NOTIFY nameChanged) Q_PROPERTY(QString name WRITE setName READ name NOTIFY nameChanged)
Q_PROPERTY(bool direct WRITE setDirect READ direct NOTIFY directChanged) Q_PROPERTY(bool direct WRITE setDirect READ direct NOTIFY directChanged)
Q_PROPERTY(bool pad WRITE setPad READ pad NOTIFY padChanged) Q_PROPERTY(bool pad WRITE setPad READ pad NOTIFY padChanged)
Q_PROPERTY(int penButtons WRITE setPenButtons READ penButtons NOTIFY penButtonsChanged)
public: public:
~DeviceManager() override; ~DeviceManager() override;
@ -27,6 +28,9 @@ public:
bool pad() const; bool pad() const;
void setPad(bool pad); void setPad(bool pad);
int penButtons() const;
void setPenButtons(int num);
public Q_SLOTS: public Q_SLOTS:
void recreateDevice(); void recreateDevice();
void testButton(); void testButton();
@ -35,6 +39,7 @@ Q_SIGNALS:
void nameChanged(); void nameChanged();
void directChanged(); void directChanged();
void padChanged(); void padChanged();
void penButtonsChanged();
private: private:
void destroyDevice(); void destroyDevice();
@ -49,4 +54,5 @@ private:
QString m_name; QString m_name;
bool m_direct = false; bool m_direct = false;
bool m_pad = false; bool m_pad = false;
int m_penButtons = 3;
}; };

View file

@ -33,6 +33,14 @@ Kirigami.ApplicationWindow {
onTextChanged: deviceManager.name = text onTextChanged: deviceManager.name = text
} }
FormCard.FormSpinBoxDelegate {
label: "Pen Buttons"
from: 0
to: 3
value: deviceManager.penButtons
onValueChanged: deviceManager.penButtons = value
}
FormCard.FormDelegateSeparator {} FormCard.FormDelegateSeparator {}
FormCard.FormCheckDelegate { FormCard.FormCheckDelegate {