diff --git a/autotests/libinput/CMakeLists.txt b/autotests/libinput/CMakeLists.txt index dc7a1b2901..225f5733ea 100644 --- a/autotests/libinput/CMakeLists.txt +++ b/autotests/libinput/CMakeLists.txt @@ -5,7 +5,7 @@ include_directories(${UDEV_INCLUDE_DIR}) ######################################################## set( testLibinputDevice_SRCS device_test.cpp mock_libinput.cpp ../../libinput/device.cpp ) add_executable(testLibinputDevice ${testLibinputDevice_SRCS}) -target_link_libraries( testLibinputDevice Qt5::Test) +target_link_libraries( testLibinputDevice Qt5::Test Qt5::DBus) add_test(kwin-testLibinputDevice testLibinputDevice) ecm_mark_as_test(testLibinputDevice) @@ -19,7 +19,7 @@ set( testLibinputKeyEvent_SRCS ../../libinput/events.cpp ) add_executable(testLibinputKeyEvent ${testLibinputKeyEvent_SRCS}) -target_link_libraries( testLibinputKeyEvent Qt5::Test Qt5::Widgets KF5::ConfigCore) +target_link_libraries( testLibinputKeyEvent Qt5::Test Qt5::DBus Qt5::Widgets KF5::ConfigCore) add_test(kwin-testLibinputKeyEvent testLibinputKeyEvent) ecm_mark_as_test(testLibinputKeyEvent) @@ -33,7 +33,7 @@ set( testLibinputPointerEvent_SRCS ../../libinput/events.cpp ) add_executable(testLibinputPointerEvent ${testLibinputPointerEvent_SRCS}) -target_link_libraries( testLibinputPointerEvent Qt5::Test Qt5::Widgets KF5::ConfigCore) +target_link_libraries( testLibinputPointerEvent Qt5::Test Qt5::DBus Qt5::Widgets KF5::ConfigCore) add_test(kwin-testLibinputPointerEvent testLibinputPointerEvent) ecm_mark_as_test(testLibinputPointerEvent) @@ -47,7 +47,7 @@ set( testLibinputTouchEvent_SRCS ../../libinput/events.cpp ) add_executable(testLibinputTouchEvent ${testLibinputTouchEvent_SRCS}) -target_link_libraries( testLibinputTouchEvent Qt5::Test Qt5::Widgets KF5::ConfigCore) +target_link_libraries( testLibinputTouchEvent Qt5::Test Qt5::DBus Qt5::Widgets KF5::ConfigCore) add_test(kwin-testLibinputTouchEvent testLibinputTouchEvent) ecm_mark_as_test(testLibinputTouchEvent) @@ -61,7 +61,7 @@ set( testLibinputGestureEvent_SRCS ../../libinput/events.cpp ) add_executable(testLibinputGestureEvent ${testLibinputGestureEvent_SRCS}) -target_link_libraries( testLibinputGestureEvent Qt5::Test Qt5::Widgets KF5::ConfigCore) +target_link_libraries( testLibinputGestureEvent Qt5::Test Qt5::DBus Qt5::Widgets KF5::ConfigCore) add_test(kwin-testLibinputGestureEvent testLibinputGestureEvent) ecm_mark_as_test(testLibinputGestureEvent) @@ -94,6 +94,6 @@ ecm_mark_as_test(testLibinputContext) ######################################################## set( testInputEvents_SRCS input_event_test.cpp mock_libinput.cpp ../../libinput/device.cpp ../../input_event.cpp ) add_executable(testInputEvents ${testInputEvents_SRCS}) -target_link_libraries( testInputEvents Qt5::Test Qt5::Gui) +target_link_libraries( testInputEvents Qt5::Test Qt5::DBus Qt5::Gui) add_test(kwin-testInputEvents testInputEvents) ecm_mark_as_test(testInputEvents) diff --git a/libinput/connection.cpp b/libinput/connection.cpp index 08e39aa2b4..e39dc1e455 100644 --- a/libinput/connection.cpp +++ b/libinput/connection.cpp @@ -88,6 +88,7 @@ Connection *Connection::create(QObject *parent) } static const QString s_touchpadComponent = QStringLiteral("kcm_touchpad"); +static const QString s_serviceName = QStringLiteral("org.kde.KWin.InputDevice"); Connection::Connection(Context *input, QObject *parent) : QObject(parent) @@ -140,10 +141,13 @@ Connection::Connection(Context *input, QObject *parent) // need to connect to KGlobalSettings as the mouse KCM does not emit a dedicated signal QDBusConnection::sessionBus().connect(QString(), QStringLiteral("/KGlobalSettings"), QStringLiteral("org.kde.KGlobalSettings"), QStringLiteral("notifyChange"), this, SLOT(slotKGlobalSettingsNotifyChange(int,int))); + + QDBusConnection::sessionBus().registerService(s_serviceName); } Connection::~Connection() { + QDBusConnection::sessionBus().unregisterService(s_serviceName); s_self = nullptr; delete s_context; s_context = nullptr; diff --git a/libinput/device.cpp b/libinput/device.cpp index 0c38ac7002..74a654db08 100644 --- a/libinput/device.cpp +++ b/libinput/device.cpp @@ -20,6 +20,8 @@ along with this program. If not, see . #include "device.h" #include +#include + #include #include @@ -143,11 +145,17 @@ Device::Device(libinput_device *device, QObject *parent) } s_devices << this; + QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/kde/KWin/InputDevice/") + m_sysName, + QStringLiteral("org.kde.KWin.InputDevice"), + this, + QDBusConnection::ExportAllProperties + ); } Device::~Device() { s_devices.removeOne(this); + QDBusConnection::sessionBus().unregisterObject(QStringLiteral("/org/kde/KWin/InputDevice/") + m_sysName); libinput_device_unref(m_device); } diff --git a/libinput/device.h b/libinput/device.h index 384eeba687..a24b77afa8 100644 --- a/libinput/device.h +++ b/libinput/device.h @@ -34,6 +34,7 @@ namespace LibInput class Device : public QObject { Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.KWin.InputDevice") Q_PROPERTY(bool keyboard READ isKeyboard CONSTANT) Q_PROPERTY(bool alphaNumericKeyboard READ isAlphaNumericKeyboard CONSTANT) Q_PROPERTY(bool pointer READ isPointer CONSTANT)