diff --git a/input.cpp b/input.cpp index 34ed3555bc..5fe96cb2c5 100644 --- a/input.cpp +++ b/input.cpp @@ -2092,7 +2092,6 @@ void InputRedirection::setupWorkspace() ); } ); - connect(workspace(), &Workspace::configChanged, this, &InputRedirection::reconfigure); m_keyboard->init(); m_pointer->init(); @@ -2148,11 +2147,17 @@ void InputRedirection::setupInputFilters() } } +void InputRedirection::handleInputConfigChanged(const KConfigGroup &group) +{ + if (group.name() == QLatin1String("Keyboard")) { + reconfigure(); + } +} + void InputRedirection::reconfigure() { if (Application::usesLibinput()) { - auto inputConfig = InputConfig::self()->inputConfig(); - inputConfig->reparseConfiguration(); + auto inputConfig = m_inputConfigWatcher->config(); const auto config = inputConfig->group(QStringLiteral("Keyboard")); const int delay = config.readEntry("RepeatDelay", 660); const int rate = config.readEntry("RepeatRate", 25); @@ -2293,10 +2298,14 @@ void InputRedirection::setupLibInput() } } ); + + m_inputConfigWatcher = KConfigWatcher::create(InputConfig::self()->inputConfig()); + connect(m_inputConfigWatcher.data(), &KConfigWatcher::configChanged, + this, &InputRedirection::handleInputConfigChanged); + reconfigure(); } setupTouchpadShortcuts(); - reconfigure(); } void InputRedirection::setupTouchpadShortcuts() diff --git a/input.h b/input.h index 18dc7f1aa9..8ab4d859f7 100644 --- a/input.h +++ b/input.h @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -296,6 +297,9 @@ Q_SIGNALS: void hasAlphaNumericKeyboardChanged(bool set); void hasTabletModeSwitchChanged(bool set); +private Q_SLOTS: + void handleInputConfigChanged(const KConfigGroup &group); + private: void setupLibInput(); void setupTouchpadShortcuts(); @@ -318,6 +322,7 @@ private: QVector m_filters; QVector m_spies; + KConfigWatcher::Ptr m_inputConfigWatcher; KWIN_SINGLETON(InputRedirection) friend InputRedirection *input();