From dff1ce1d84114018f7f2fb15279208050f640424 Mon Sep 17 00:00:00 2001 From: reionwong Date: Wed, 11 Aug 2021 23:45:20 +0800 Subject: [PATCH] Move the mouse interface to settings daemon --- CMakeLists.txt | 5 - README.md | 2 +- debian/control | 1 - src/application.cpp | 1 - src/cursor/inputdummydevice.cpp | 241 -------------------------- src/cursor/inputdummydevice.h | 297 -------------------------------- src/cursor/libinputsettings.cpp | 39 ----- src/cursor/libinputsettings.h | 20 --- src/cursor/mouse.cpp | 35 ++-- src/cursor/mouse.h | 4 +- 10 files changed, 20 insertions(+), 625 deletions(-) delete mode 100644 src/cursor/inputdummydevice.cpp delete mode 100644 src/cursor/inputdummydevice.h delete mode 100644 src/cursor/libinputsettings.cpp delete mode 100644 src/cursor/libinputsettings.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fa32ece..6db568e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,6 @@ find_package(KF5ModemManagerQt REQUIRED) pkg_search_module(FontConfig REQUIRED fontconfig IMPORTED_TARGET) pkg_search_module(ICU REQUIRED icu-i18n) -pkg_check_modules(XORGLIBINPUT xorg-libinput IMPORTED_TARGET) include_directories(${ICU_INCLUDE_DIRS}) @@ -46,8 +45,6 @@ set(SRCS src/cursor/cursorthememodel.cpp src/cursor/cursortheme.cpp src/cursor/mouse.cpp - src/cursor/inputdummydevice.cpp - src/cursor/libinputsettings.cpp ) set(RESOURCES @@ -83,8 +80,6 @@ target_link_libraries(${PROJECT_NAME} X11::X11 X11::Xi X11::Xcursor - - PkgConfig::XORGLIBINPUT ) file(GLOB TS_FILES translations/*.ts) diff --git a/README.md b/README.md index ea862d4..0307655 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ sudo pacman -S extra-cmake-modules qt5-base qt5-quickcontrols2 freetype2 fontcon Debian/Ubuntu Dependencies: ```shell -sudo apt install cmake debhelper extra-cmake-modules libicu-devlibcrypt-dev libfreetype6-dev libfontconfig1-dev xserver-xorg-input-libinput-dev libkf5networkmanagerqt-dev modemmanager-qt-dev qtbase5-dev qtdeclarative5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qml-module-qtquick-controls2 qml-module-qtquick2 qml-module-qtquick-layouts qml-module-qt-labs-platform qml-module-qt-labs-settings qml-module-qtqml qml-module-qtquick-window2 qml-module-qtquick-shapes qml-module-qtquick-dialogs qml-module-qtquick-particles2 +sudo apt install cmake debhelper extra-cmake-modules libicu-devlibcrypt-dev libfreetype6-dev libfontconfig1-dev libkf5networkmanagerqt-dev modemmanager-qt-dev qtbase5-dev qtdeclarative5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qml-module-qtquick-controls2 qml-module-qtquick2 qml-module-qtquick-layouts qml-module-qt-labs-platform qml-module-qt-labs-settings qml-module-qtqml qml-module-qtquick-window2 qml-module-qtquick-shapes qml-module-qtquick-dialogs qml-module-qtquick-particles2 ``` ## Build diff --git a/debian/control b/debian/control index 9f028b7..946683e 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,6 @@ Build-Depends: cmake, libfreetype6-dev, libfontconfig1-dev, libkf5networkmanagerqt-dev, - xserver-xorg-input-libinput-dev, modemmanager-qt-dev, qtbase5-dev, libqt5x11extras5-dev, diff --git a/src/application.cpp b/src/application.cpp index f8a36ca..833d583 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -19,7 +19,6 @@ #include "cursor/cursorthememodel.h" #include "cursor/mouse.h" -#include "cursor/inputdummydevice.h" static QObject *passwordSingleton(QQmlEngine *engine, QJSEngine *scriptEngine) { diff --git a/src/cursor/inputdummydevice.cpp b/src/cursor/inputdummydevice.cpp deleted file mode 100644 index 3e56c2b..0000000 --- a/src/cursor/inputdummydevice.cpp +++ /dev/null @@ -1,241 +0,0 @@ -/* - SPDX-FileCopyrightText: 2018 Roman Gilg - - SPDX-License-Identifier: GPL-2.0-or-later -*/ -#include "inputdummydevice.h" -#include "libinputsettings.h" -#include -#include - -#include -#include -#include - -static Atom s_touchpadAtom; - -template -static void XIForallPointerDevices(Display *dpy, const Callback &callback) -{ - int ndevices_return; - XDeviceInfo *info = XListInputDevices(dpy, &ndevices_return); - if (!info) { - return; - } - for (int i = 0; i < ndevices_return; ++i) { - XDeviceInfo *dev = info + i; - if ((dev->use == IsXPointer || dev->use == IsXExtensionPointer) && dev->type != s_touchpadAtom) { - callback(dev); - } - } - XFreeDeviceList(info); -} - -struct ScopedXDeleter { - static inline void cleanup(void *pointer) - { - if (pointer) { - XFree(pointer); - } - } -}; - -namespace -{ -template -void valueWriterPart(T val, Atom valAtom, Display *dpy) -{ - Q_UNUSED(val); - Q_UNUSED(valAtom); - Q_UNUSED(dpy); -} - -template<> -void valueWriterPart(bool val, Atom valAtom, Display *dpy) -{ - XIForallPointerDevices(dpy, [&](XDeviceInfo *info) { - int deviceid = info->id; - Status status; - Atom type_return; - int format_return; - unsigned long num_items_return; - unsigned long bytes_after_return; - - unsigned char *_data = nullptr; - // data returned is an 1 byte boolean - status = XIGetProperty(dpy, deviceid, valAtom, 0, 1, False, XA_INTEGER, &type_return, &format_return, &num_items_return, &bytes_after_return, &_data); - if (status != Success) { - return; - } - - QScopedArrayPointer data(_data); - _data = nullptr; - - if (type_return != XA_INTEGER || !data || format_return != 8) { - return; - } - - unsigned char sendVal[2] = {0}; - if (num_items_return == 1) { - sendVal[0] = val; - } else { - // Special case for acceleration profile. - const Atom accel = XInternAtom(dpy, LIBINPUT_PROP_ACCEL_PROFILE_ENABLED, True); - if (num_items_return != 2 || valAtom != accel) { - return; - } - sendVal[val] = 1; - } - - XIChangeProperty(dpy, deviceid, valAtom, XA_INTEGER, 8, XIPropModeReplace, sendVal, num_items_return); - }); -} - -template<> -void valueWriterPart(qreal val, Atom valAtom, Display *dpy) -{ - XIForallPointerDevices(dpy, [&](XDeviceInfo *info) { - int deviceid = info->id; - Status status; - Atom float_type = XInternAtom(dpy, "FLOAT", False); - Atom type_return; - int format_return; - unsigned long num_items_return; - unsigned long bytes_after_return; - - unsigned char *_data = nullptr; - // data returned is an 1 byte boolean - status = XIGetProperty(dpy, deviceid, valAtom, 0, 1, False, float_type, &type_return, &format_return, &num_items_return, &bytes_after_return, &_data); - if (status != Success) { - return; - } - - QScopedArrayPointer data(_data); - _data = nullptr; - - if (type_return != float_type || !data || format_return != 32 || num_items_return != 1) { - return; - } - - unsigned char buffer[4096]; - float *sendPtr = (float *)buffer; - *sendPtr = val; - - XIChangeProperty(dpy, deviceid, valAtom, float_type, format_return, XIPropModeReplace, buffer, 1); - }); -} -} - -X11LibinputDummyDevice::X11LibinputDummyDevice(QObject *parent, Display *dpy) - : QObject(parent) - , m_settings(new LibinputSettings()) - , m_dpy(dpy) -{ - m_leftHanded.atom = XInternAtom(dpy, LIBINPUT_PROP_LEFT_HANDED, True); - m_middleEmulation.atom = XInternAtom(dpy, LIBINPUT_PROP_MIDDLE_EMULATION_ENABLED, True); - m_naturalScroll.atom = XInternAtom(dpy, LIBINPUT_PROP_NATURAL_SCROLL, True); - m_pointerAcceleration.atom = XInternAtom(dpy, LIBINPUT_PROP_ACCEL, True); - m_pointerAccelerationProfileFlat.atom = XInternAtom(dpy, LIBINPUT_PROP_ACCEL_PROFILE_ENABLED, True); - - m_supportsDisableEvents.val = false; - m_enabled.val = true; - m_supportedButtons.val = Qt::LeftButton | Qt::MiddleButton | Qt::RightButton; - m_supportsLeftHanded.val = true; - m_supportsMiddleEmulation.val = true; - m_middleEmulationEnabledByDefault.val = false; - - m_supportsPointerAcceleration.val = true; - m_defaultPointerAcceleration.val = 0; - - m_supportsPointerAccelerationProfileAdaptive.val = true; - m_supportsPointerAccelerationProfileFlat.val = true; - - m_defaultPointerAccelerationProfileAdaptive.val = true; - m_defaultPointerAccelerationProfileFlat.val = false; - - m_supportsNaturalScroll.val = true; - m_naturalScrollEnabledByDefault.val = false; - - s_touchpadAtom = XInternAtom(m_dpy, XI_TOUCHPAD, True); - - // Init - getConfig(); -} - -X11LibinputDummyDevice::~X11LibinputDummyDevice() -{ - delete m_settings; -} - -bool X11LibinputDummyDevice::getConfig() -{ - auto reset = [this](Prop &prop, bool defVal) { - prop.reset(m_settings->load(prop.cfgName, defVal)); - }; - - reset(m_leftHanded, false); - - reset(m_middleEmulation, false); - reset(m_naturalScroll, false); - reset(m_pointerAccelerationProfileFlat, false); - - m_pointerAccelerationProfileAdaptive.reset(!m_settings->load(m_pointerAccelerationProfileFlat.cfgName, false)); - m_pointerAcceleration.reset(m_settings->load(m_pointerAcceleration.cfgName, 0.)); - - emit leftHandedChanged(); - emit naturalScrollChanged(); - emit pointerAccelerationProfileChanged(); - emit pointerAccelerationChanged(); - - return true; -} - -bool X11LibinputDummyDevice::getDefaultConfig() -{ - m_leftHanded.set(false); - - m_pointerAcceleration.set(m_defaultPointerAcceleration); - m_pointerAccelerationProfileFlat.set(m_defaultPointerAccelerationProfileFlat); - m_pointerAccelerationProfileAdaptive.set(m_defaultPointerAccelerationProfileAdaptive); - - m_middleEmulation.set(m_middleEmulationEnabledByDefault); - m_naturalScroll.set(m_naturalScrollEnabledByDefault); - - return true; -} - -bool X11LibinputDummyDevice::applyConfig() -{ - valueWriter(m_leftHanded); - valueWriter(m_middleEmulation); - valueWriter(m_naturalScroll); - valueWriter(m_pointerAcceleration); - valueWriter(m_pointerAccelerationProfileFlat); - - return true; -} - -template -bool X11LibinputDummyDevice::valueWriter(Prop &prop) -{ - // Check atom availability first. - if (prop.atom == None) { - return false; - } - - if (prop.val != prop.old) { - m_settings->save(prop.cfgName, prop.val); - } - - valueWriterPart(prop.val, prop.atom, m_dpy); - - prop.old = prop.val; - - return true; -} - -bool X11LibinputDummyDevice::isChangedConfig() const -{ - return m_leftHanded.changed() || m_pointerAcceleration.changed() || m_pointerAccelerationProfileFlat.changed() - || m_pointerAccelerationProfileAdaptive.changed() || m_middleEmulation.changed() || m_naturalScroll.changed(); -} diff --git a/src/cursor/inputdummydevice.h b/src/cursor/inputdummydevice.h deleted file mode 100644 index 2298626..0000000 --- a/src/cursor/inputdummydevice.h +++ /dev/null @@ -1,297 +0,0 @@ -/* - SPDX-FileCopyrightText: 2018 Roman Gilg - - SPDX-License-Identifier: GPL-2.0-or-later -*/ - -#ifndef X11LIBINPUTDUMMYDEVICE_H -#define X11LIBINPUTDUMMYDEVICE_H - -#include -#include -#include - -#include - -struct LibinputSettings; - -class X11LibinputDummyDevice : public QObject -{ - Q_OBJECT - - // - // general - Q_PROPERTY(QString name READ name CONSTANT) - Q_PROPERTY(bool supportsDisableEvents READ supportsDisableEvents CONSTANT) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) - - // - // advanced - Q_PROPERTY(Qt::MouseButtons supportedButtons READ supportedButtons CONSTANT) - - Q_PROPERTY(bool supportsLeftHanded READ supportsLeftHanded CONSTANT) - Q_PROPERTY(bool leftHandedEnabledByDefault READ leftHandedEnabledByDefault CONSTANT) - Q_PROPERTY(bool leftHanded READ isLeftHanded WRITE setLeftHanded NOTIFY leftHandedChanged) - - Q_PROPERTY(bool supportsMiddleEmulation READ supportsMiddleEmulation CONSTANT) - Q_PROPERTY(bool middleEmulationEnabledByDefault READ middleEmulationEnabledByDefault CONSTANT) - Q_PROPERTY(bool middleEmulation READ isMiddleEmulation WRITE setMiddleEmulation NOTIFY middleEmulationChanged) - - // - // acceleration speed and profile - Q_PROPERTY(bool supportsPointerAcceleration READ supportsPointerAcceleration CONSTANT) - Q_PROPERTY(qreal pointerAcceleration READ pointerAcceleration WRITE setPointerAcceleration NOTIFY pointerAccelerationChanged) - - Q_PROPERTY(bool supportsPointerAccelerationProfileFlat READ supportsPointerAccelerationProfileFlat CONSTANT) - Q_PROPERTY(bool defaultPointerAccelerationProfileFlat READ defaultPointerAccelerationProfileFlat CONSTANT) - Q_PROPERTY(bool pointerAccelerationProfileFlat READ pointerAccelerationProfileFlat WRITE setPointerAccelerationProfileFlat NOTIFY - pointerAccelerationProfileChanged) - - Q_PROPERTY(bool supportsPointerAccelerationProfileAdaptive READ supportsPointerAccelerationProfileAdaptive CONSTANT) - Q_PROPERTY(bool defaultPointerAccelerationProfileAdaptive READ defaultPointerAccelerationProfileAdaptive CONSTANT) - Q_PROPERTY(bool pointerAccelerationProfileAdaptive READ pointerAccelerationProfileAdaptive WRITE setPointerAccelerationProfileAdaptive NOTIFY - pointerAccelerationProfileChanged) - - // - // scrolling - Q_PROPERTY(bool supportsNaturalScroll READ supportsNaturalScroll CONSTANT) - Q_PROPERTY(bool naturalScrollEnabledByDefault READ naturalScrollEnabledByDefault CONSTANT) - Q_PROPERTY(bool naturalScroll READ isNaturalScroll WRITE setNaturalScroll NOTIFY naturalScrollChanged) - -public: - X11LibinputDummyDevice(QObject *parent, Display *dpy); - ~X11LibinputDummyDevice() override; - - bool getConfig(); - bool getDefaultConfig(); - bool applyConfig(); - bool isChangedConfig() const; - - // - // general - QString name() const - { - return m_name.val; - } - QString sysName() const - { - return m_sysName.val; - } - bool supportsDisableEvents() const - { - return m_supportsDisableEvents.val; - } - void setEnabled(bool enabled) - { - m_enabled.set(enabled); - } - bool isEnabled() const - { - return m_enabled.val; - } - Qt::MouseButtons supportedButtons() const - { - return m_supportedButtons.val; - } - - // - // advanced - bool supportsLeftHanded() const - { - return m_supportsLeftHanded.val; - } - bool leftHandedEnabledByDefault() const - { - return m_leftHandedEnabledByDefault.val; - } - bool isLeftHanded() const - { - return m_leftHanded.val; - } - void setLeftHanded(bool set) - { - m_leftHanded.set(set); - } - - bool supportsMiddleEmulation() const - { - return m_supportsMiddleEmulation.val; - } - bool middleEmulationEnabledByDefault() const - { - return m_middleEmulationEnabledByDefault.val; - } - bool isMiddleEmulation() const - { - return m_middleEmulation.val; - } - void setMiddleEmulation(bool set) - { - m_middleEmulation.set(set); - } - - // - // acceleration speed and profile - bool supportsPointerAcceleration() const - { - return m_supportsPointerAcceleration.val; - } - qreal pointerAcceleration() const - { - return m_pointerAcceleration.val; - } - void setPointerAcceleration(qreal acceleration) - { - m_pointerAcceleration.set(acceleration); - } - - bool supportsPointerAccelerationProfileFlat() const - { - return m_supportsPointerAccelerationProfileFlat.val; - } - bool defaultPointerAccelerationProfileFlat() const - { - return m_defaultPointerAccelerationProfileFlat.val; - } - bool pointerAccelerationProfileFlat() const - { - return m_pointerAccelerationProfileFlat.val; - } - void setPointerAccelerationProfileFlat(bool set) - { - m_pointerAccelerationProfileFlat.set(set); - } - - bool supportsPointerAccelerationProfileAdaptive() const - { - return m_supportsPointerAccelerationProfileAdaptive.val; - } - bool defaultPointerAccelerationProfileAdaptive() const - { - return m_defaultPointerAccelerationProfileAdaptive.val; - } - bool pointerAccelerationProfileAdaptive() const - { - return m_pointerAccelerationProfileAdaptive.val; - } - void setPointerAccelerationProfileAdaptive(bool set) - { - m_pointerAccelerationProfileAdaptive.set(set); - } - - // - // scrolling - bool supportsNaturalScroll() const - { - return m_supportsNaturalScroll.val; - } - bool naturalScrollEnabledByDefault() const - { - return m_naturalScrollEnabledByDefault.val; - } - bool isNaturalScroll() const - { - return m_naturalScroll.val; - } - void setNaturalScroll(bool set) - { - m_naturalScroll.set(set); - } - -Q_SIGNALS: - void leftHandedChanged(); - void pointerAccelerationChanged(); - void pointerAccelerationProfileChanged(); - void enabledChanged(); - void middleEmulationChanged(); - void naturalScrollChanged(); - -private: - template - struct Prop { - explicit Prop(const QString &_name, const QString &_cfgName = "") - : name(_name) - , cfgName(_cfgName) - { - } - - void set(T newVal) - { - if (avail && val != newVal) { - val = newVal; - } - } - void set(const Prop &p) - { - if (avail && val != p.val) { - val = p.val; - } - } - bool changed() const - { - return avail && (old != val); - } - - void reset(T newVal) - { - val = newVal; - old = newVal; - } - - QString name; - QString cfgName; - - bool avail = true; - T old; - T val; - - Atom atom; - }; - - template - bool valueWriter(Prop &prop); - - // - // general - Prop m_name = Prop("name"); - Prop m_sysName = Prop("sysName"); - Prop m_supportsDisableEvents = Prop("supportsDisableEvents"); - Prop m_enabled = Prop("enabled"); - - // - // advanced - Prop m_supportedButtons = Prop("supportedButtons"); - - Prop m_supportsLeftHanded = Prop("supportsLeftHanded"); - Prop m_leftHandedEnabledByDefault = Prop("leftHandedEnabledByDefault"); - Prop m_leftHanded = Prop("leftHanded", "XLbInptLeftHanded"); - - Prop m_supportsMiddleEmulation = Prop("supportsMiddleEmulation"); - Prop m_middleEmulationEnabledByDefault = Prop("middleEmulationEnabledByDefault"); - Prop m_middleEmulation = Prop("middleEmulation", "XLbInptMiddleEmulation"); - - // - // acceleration speed and profile - Prop m_supportsPointerAcceleration = Prop("supportsPointerAcceleration"); - Prop m_defaultPointerAcceleration = Prop("defaultPointerAcceleration"); - Prop m_pointerAcceleration = Prop("pointerAcceleration", "XLbInptPointerAcceleration"); - - Prop m_supportsPointerAccelerationProfileFlat = Prop("supportsPointerAccelerationProfileFlat"); - Prop m_defaultPointerAccelerationProfileFlat = Prop("defaultPointerAccelerationProfileFlat"); - Prop m_pointerAccelerationProfileFlat = Prop("pointerAccelerationProfileFlat", "XLbInptAccelProfileFlat"); - - Prop m_supportsPointerAccelerationProfileAdaptive = Prop("supportsPointerAccelerationProfileAdaptive"); - Prop m_defaultPointerAccelerationProfileAdaptive = Prop("defaultPointerAccelerationProfileAdaptive"); - Prop m_pointerAccelerationProfileAdaptive = Prop("pointerAccelerationProfileAdaptive"); - - // - // scrolling - Prop m_supportsNaturalScroll = Prop("supportsNaturalScroll"); - Prop m_naturalScrollEnabledByDefault = Prop("naturalScrollEnabledByDefault"); - Prop m_naturalScroll = Prop("naturalScroll", "XLbInptNaturalScroll"); - - LibinputSettings *m_settings; - Display *m_dpy = nullptr; -}; - -#endif // X11LIBINPUTDUMMYDEVICE_H diff --git a/src/cursor/libinputsettings.cpp b/src/cursor/libinputsettings.cpp deleted file mode 100644 index 7bfd61e..0000000 --- a/src/cursor/libinputsettings.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - SPDX-FileCopyrightText: 2018 Roman Gilg - - SPDX-License-Identifier: GPL-2.0-or-later -*/ -#include "libinputsettings.h" - -#include -#include - -template<> -bool LibinputSettings::load(QString key, bool defVal) -{ - QSettings settings("cutefishos", "mouse"); - return settings.value(key, defVal).toBool(); -} - -template<> -qreal LibinputSettings::load(QString key, qreal defVal) -{ - QSettings settings("cutefishos", "mouse"); - return settings.value(key, defVal).toReal(); -} - -template<> -void LibinputSettings::save(QString key, bool val) -{ - QSettings settings("cutefishos", "mouse"); - settings.setValue(key, val); - settings.sync(); -} - -template<> -void LibinputSettings::save(QString key, qreal val) -{ - QSettings settings("cutefishos", "mouse"); - settings.setValue(key, val); - settings.sync(); -} diff --git a/src/cursor/libinputsettings.h b/src/cursor/libinputsettings.h deleted file mode 100644 index 5941690..0000000 --- a/src/cursor/libinputsettings.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - SPDX-FileCopyrightText: 2018 Roman Gilg - - SPDX-License-Identifier: GPL-2.0-or-later -*/ - -#ifndef LIBINPUTSETTINGS_H -#define LIBINPUTSETTINGS_H - -#include - -struct LibinputSettings { - template - T load(QString key, T defVal); - - template - void save(QString key, T val); -}; - -#endif // LIBINPUTSETTINGS_H diff --git a/src/cursor/mouse.cpp b/src/cursor/mouse.cpp index 0535e78..802edea 100644 --- a/src/cursor/mouse.cpp +++ b/src/cursor/mouse.cpp @@ -21,59 +21,58 @@ Mouse::Mouse(QObject *parent) : QObject(parent) - , m_inputDummydevice(new X11LibinputDummyDevice(this, QX11Info::display())) + , m_interface("org.cutefish.Settings", + "/Mouse", + "org.cutefish.Mouse", + QDBusConnection::sessionBus()) { - connect(m_inputDummydevice, &X11LibinputDummyDevice::leftHandedChanged, this, &Mouse::leftHandedChanged); - connect(m_inputDummydevice, &X11LibinputDummyDevice::pointerAccelerationProfileChanged, this, &Mouse::accelerationChanged); - connect(m_inputDummydevice, &X11LibinputDummyDevice::naturalScrollChanged, this, &Mouse::naturalScrollChanged); - connect(m_inputDummydevice, &X11LibinputDummyDevice::pointerAccelerationChanged, this, &Mouse::pointerAccelerationChanged); + if (m_interface.isValid()) { + connect(&m_interface, SIGNAL(leftHandedChanged()), this, SIGNAL(leftHandedChanged())); + connect(&m_interface, SIGNAL(naturalScrollChanged()), this, SIGNAL(naturalScrollChanged())); + connect(&m_interface, SIGNAL(pointerAccelerationChanged()), this, SIGNAL(pointerAccelerationChanged())); + } } Mouse::~Mouse() { - delete m_inputDummydevice; } bool Mouse::leftHanded() const { - return m_inputDummydevice->isLeftHanded(); + return m_interface.property("leftHanded").toBool(); } void Mouse::setLeftHanded(bool enabled) { - m_inputDummydevice->setLeftHanded(enabled); - m_inputDummydevice->applyConfig(); + m_interface.asyncCall("setLeftHanded", enabled); } bool Mouse::acceleration() const { - return m_inputDummydevice->pointerAccelerationProfileFlat(); + return m_interface.property("acceleration").toBool(); } void Mouse::setAcceleration(bool enabled) { - m_inputDummydevice->setPointerAccelerationProfileFlat(enabled); - m_inputDummydevice->applyConfig(); + m_interface.asyncCall("setPointerAccelerationProfileFlat", enabled); } bool Mouse::naturalScroll() const { - return m_inputDummydevice->isNaturalScroll(); + return m_interface.property("naturalScroll").toBool(); } void Mouse::setNaturalScroll(bool enabled) { - m_inputDummydevice->setNaturalScroll(enabled); - m_inputDummydevice->applyConfig(); + m_interface.asyncCall("setNaturalScroll", enabled); } qreal Mouse::pointerAcceleration() const { - return m_inputDummydevice->pointerAcceleration(); + return m_interface.property("pointerAcceleration").toReal(); } void Mouse::setPointerAcceleration(qreal value) { - m_inputDummydevice->setPointerAcceleration(value); - m_inputDummydevice->applyConfig(); + m_interface.asyncCall("setPointerAcceleration", value); } diff --git a/src/cursor/mouse.h b/src/cursor/mouse.h index 0bf9c62..3304fd5 100644 --- a/src/cursor/mouse.h +++ b/src/cursor/mouse.h @@ -21,7 +21,7 @@ #define MOUSE_H #include -#include "inputdummydevice.h" +#include class Mouse : public QObject { @@ -54,7 +54,7 @@ signals: void pointerAccelerationChanged(); private: - X11LibinputDummyDevice *m_inputDummydevice; + QDBusInterface m_interface; }; #endif // MOUSE_H