Scare Crowe d2ebfd0519 QortalOS Titan 5.60.12
Screw the description like that inbred T3Q
2022-03-05 21:17:59 +05:00

101 lines
2.4 KiB
C++

/*
SPDX-FileCopyrightText: 2013 Alexander Mezin <mezin.alexander@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef XLIBBACKEND_H
#define XLIBBACKEND_H
#include <QLatin1String>
#include <QMap>
#include <QScopedPointer>
#include <QSet>
#include <QSharedPointer>
#include <QStringList>
#include <QX11Info>
#include "libinputtouchpad.h"
#include "synapticstouchpad.h"
#include "touchpadbackend.h"
#include "xlibtouchpad.h"
#include <xcb/xcb.h>
#include "propertyinfo.h"
#include "xcbatom.h"
class XlibTouchpad;
class XlibNotifications;
class XRecordKeyboardMonitor;
class XlibBackend : public TouchpadBackend
{
Q_OBJECT
Q_PROPERTY(int touchpadCount READ touchpadCount CONSTANT)
public:
static XlibBackend *initialize(QObject *parent = nullptr);
~XlibBackend();
bool applyConfig(const QVariantHash &) override;
bool applyConfig() override;
bool getConfig(QVariantHash &) override;
bool getConfig() override;
bool getDefaultConfig() override;
bool isChangedConfig() const override;
QStringList supportedParameters() const override
{
return m_device ? m_device->supportedParameters() : QStringList();
}
QString errorString() const override
{
return m_errorString;
}
int touchpadCount() const override
{
return m_device ? 1 : 0;
}
void setTouchpadOff(TouchpadOffState) override;
TouchpadOffState getTouchpadOff() override;
bool isTouchpadAvailable() override;
bool isTouchpadEnabled() override;
void setTouchpadEnabled(bool) override;
void watchForEvents(bool keyboard) override;
QStringList listMouses(const QStringList &blacklist) override;
QVector<QObject *> getDevices() const override;
private Q_SLOTS:
void propertyChanged(xcb_atom_t);
void touchpadDetached();
void devicePlugged(int);
protected:
explicit XlibBackend(QObject *parent);
struct XDisplayCleanup {
static void cleanup(Display *);
};
QScopedPointer<Display, XDisplayCleanup> m_display;
xcb_connection_t *m_connection;
XcbAtom m_enabledAtom, m_mouseAtom, m_keyboardAtom, m_touchpadAtom;
XcbAtom m_synapticsIdentifierAtom;
XcbAtom m_libinputIdentifierAtom;
XlibTouchpad *findTouchpad();
QScopedPointer<XlibTouchpad> m_device;
QString m_errorString;
QScopedPointer<XlibNotifications> m_notifications;
QScopedPointer<XRecordKeyboardMonitor> m_keyboard;
};
#endif // XLIBBACKEND_H