File indexing completed on 2024-12-08 12:18:39

0001 /*
0002     SPDX-FileCopyrightText: 2009 Michael Leupold <lemma@confuego.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "kmodifierkeyinfo.h"
0008 #include "kmodifierkeyinfoprovider_p.h"
0009 #include <kguiaddons_debug.h>
0010 
0011 #include <QGuiApplication>
0012 
0013 #include "config.h"
0014 
0015 #if WITH_WAYLAND
0016 #include "kmodifierkeyinfoprovider_wayland.h"
0017 #endif
0018 
0019 #if WITH_X11
0020 #include "kmodifierkeyinfoprovider_xcb.h"
0021 #endif
0022 
0023 KModifierKeyInfoProvider *createProvider()
0024 {
0025 #if WITH_WAYLAND
0026     if (qGuiApp->platformName() == QLatin1String("wayland")) {
0027         return new KModifierKeyInfoProviderWayland;
0028     }
0029 #endif
0030 
0031 #if WITH_X11
0032     if (qGuiApp->platformName() == QLatin1String("xcb")) {
0033         return new KModifierKeyInfoProviderXcb;
0034     }
0035 #endif
0036 
0037     qCWarning(KGUIADDONS_LOG) << "No modifierkeyinfo backend for platform" << qGuiApp->platformName();
0038     return new KModifierKeyInfoProvider;
0039 }
0040 
0041 KModifierKeyInfo::KModifierKeyInfo(QObject *parent)
0042     : QObject(parent)
0043     , p(createProvider())
0044 {
0045     connect(p.data(), &KModifierKeyInfoProvider::keyPressed, this, &KModifierKeyInfo::keyPressed);
0046     connect(p.data(), &KModifierKeyInfoProvider::keyLatched, this, &KModifierKeyInfo::keyLatched);
0047     connect(p.data(), &KModifierKeyInfoProvider::keyLocked, this, &KModifierKeyInfo::keyLocked);
0048     connect(p.data(), &KModifierKeyInfoProvider::buttonPressed, this, &KModifierKeyInfo::buttonPressed);
0049     connect(p.data(), &KModifierKeyInfoProvider::keyAdded, this, &KModifierKeyInfo::keyAdded);
0050     connect(p.data(), &KModifierKeyInfoProvider::keyRemoved, this, &KModifierKeyInfo::keyRemoved);
0051 }
0052 
0053 KModifierKeyInfo::~KModifierKeyInfo()
0054 {
0055 }
0056 
0057 bool KModifierKeyInfo::knowsKey(Qt::Key key) const
0058 {
0059     return p->knowsKey(key);
0060 }
0061 
0062 const QList<Qt::Key> KModifierKeyInfo::knownKeys() const
0063 {
0064     return p->knownKeys();
0065 }
0066 
0067 bool KModifierKeyInfo::isKeyPressed(Qt::Key key) const
0068 {
0069     return p->isKeyPressed(key);
0070 }
0071 
0072 bool KModifierKeyInfo::isKeyLatched(Qt::Key key) const
0073 {
0074     return p->isKeyLatched(key);
0075 }
0076 
0077 bool KModifierKeyInfo::setKeyLatched(Qt::Key key, bool latched)
0078 {
0079     return p->setKeyLatched(key, latched);
0080 }
0081 
0082 bool KModifierKeyInfo::isKeyLocked(Qt::Key key) const
0083 {
0084     return p->isKeyLocked(key);
0085 }
0086 
0087 bool KModifierKeyInfo::setKeyLocked(Qt::Key key, bool locked)
0088 {
0089     return p->setKeyLocked(key, locked);
0090 }
0091 
0092 bool KModifierKeyInfo::isButtonPressed(Qt::MouseButton button) const
0093 {
0094     return p->isButtonPressed(button);
0095 }
0096 
0097 #include "moc_kmodifierkeyinfo.cpp"